From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <ffmpeg-devel-bounces@ffmpeg.org> Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id C24B5475B3 for <ffmpegdev@gitmailbox.com>; Sun, 23 Mar 2025 18:58:48 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 62B0A687A0C; Sun, 23 Mar 2025 20:58:44 +0200 (EET) Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.51]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 806636879DB for <ffmpeg-devel@ffmpeg.org>; Sun, 23 Mar 2025 20:58:37 +0200 (EET) Received: by mail-wm1-f51.google.com with SMTP id 5b1f17b1804b1-4394a0c65fcso33096695e9.1 for <ffmpeg-devel@ffmpeg.org>; Sun, 23 Mar 2025 11:58:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1742756317; x=1743361117; darn=ffmpeg.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:to:subject:user-agent:mime-version:date:message-id:from :to:cc:subject:date:message-id:reply-to; bh=lnLW1+AQX673hPTNSGK9PJ/fEn8FOhiTwUjHMcJJiZ4=; b=il459uAL0poEyn1ZMJI2Ef3pr8R3Tt8WMpZm0TN6feUcAgkiK8Zdcig7wjwma/bgJe IQl7cyJXosyL1FJKwZ2XK9LChgJibKCO74oNVAdZ5N1/UhUNnx/tpchVvxoqDP82qjG/ RaNcm10WVayVvwGSZzOb9pFA0v3taLxha7PzoPnEfzRhR8gCzsvVh0tbG5C+iE/p7hJp /M5hIk1IdPDyU5tRMlartg6Zmzs8j0W3kMTukeVfaLWqnSmv0ARtPlceRg5lQBv9fLyq h4M6ap6NF0+C9woJE/mQQ4mOz5qTq4NggHo6oGVsHsRMTzGCMNERIz2nqYaU7ipGSQHm kPBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742756317; x=1743361117; h=content-transfer-encoding:in-reply-to:from:content-language :references:to:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=lnLW1+AQX673hPTNSGK9PJ/fEn8FOhiTwUjHMcJJiZ4=; b=j51VeYYrt4tqF83N3mRKtRMBMCuXgJv5qPCwmV05Cmk5L4hgTWtAtG6d5iUg0NEpsf HqVyXnMR2UmV5y4DPaLIm8SeQdCFkfBb1BkqBCKnenbuJaJn9Wia/aQePQ5kGBV4bskX bVP9/8HGxD91AohXoImE810Ft7oStOkCO4Nq86A0nWZHLN1FXB1YSKzgWjh4YHppWEwl PRloMQR5NNh7+Ci6FRNKgMoS+mZTHyqTYMQOcP221w7kcInVS3LrA+M6qX6FKr7YtMdF p3DLljAEmsC/g7SS8VIieEHI56pEgBOcQc5Xw1K+UkVOuRHaZYExbup6zNuK4rZznOkX VGnw== X-Gm-Message-State: AOJu0YzZdmXjBhTI9no6zrspiJPrjn43b0nE1niq1CfRGawsH5qSOBzS Rdk9GzRJHNQzl44bfus8oPJh8puynTYcMKUxfTWH/we+zLC5IPdSXEKrIA== X-Gm-Gg: ASbGncvpPg6Ua3ccyNXuTpJN3gaOXfszu7w9c54sVPNeWY478DwSKDUk5ZaPWN73ZfY IJfu+UYF2zSZ7X1lbA1UjrluZWBRSCIhgTWL6vinjugRXiwyCRJWdqJIrzI9QuUTxChDzN2g+yV 8KyCp/GHWf2pm68SK3MTEv2r6RydKpnhPknnY9lM00sJJ5+6P2LpaHkafd2U9Dos16ytoMUn68V 4+vE5gwe+Ab0PWlQeZmpPAgIeg23D5mt6BhnpJ+xw/sknDPknhMnTAQ0r+LtB272CgC5V2MJiv5 Ys552SDNnfkqI7QJ3wNp7n60OBMJjUPxk4HtTKRqG+UoZ7kjPVzHT/F8GoW+uxGYrYfdf5eG/TN A001OGlx9N7qChuf2Jbq+ X-Google-Smtp-Source: AGHT+IEXvghX1XNfkVvxm0YHQjjV3IA8DN8XnDKeecBmrg87XmOVh1J81zsj8fwE+0F5kXgrbObhKw== X-Received: by 2002:a05:600c:4e56:b0:43c:fb95:c752 with SMTP id 5b1f17b1804b1-43d509e4386mr111083115e9.3.1742756316306; Sun, 23 Mar 2025 11:58:36 -0700 (PDT) Received: from ?IPV6:2a01:e0a:ac5:bb70:614d:bbbb:5f2e:983c? ([2a01:e0a:ac5:bb70:614d:bbbb:5f2e:983c]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43d4fdbd1c7sm96611765e9.40.2025.03.23.11.58.35 for <ffmpeg-devel@ffmpeg.org> (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 23 Mar 2025 11:58:35 -0700 (PDT) Message-ID: <2624fe3b-ef84-41a5-ac9c-2796969485a1@gmail.com> Date: Sun, 23 Mar 2025 19:58:35 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird To: ffmpeg-devel@ffmpeg.org References: <20250322174949.531092-1-eynard.massimo@gmail.com> <70a141e1-f3f0-45ec-939e-990fe6e80400@lynne.ee> Content-Language: en-US From: Massimo Eynard <eynard.massimo@gmail.com> In-Reply-To: <70a141e1-f3f0-45ec-939e-990fe6e80400@lynne.ee> Subject: Re: [FFmpeg-devel] [PATCH] avcodec/mlpdec: Add decoding of object audio data X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches <ffmpeg-devel.ffmpeg.org> List-Unsubscribe: <https://ffmpeg.org/mailman/options/ffmpeg-devel>, <mailto:ffmpeg-devel-request@ffmpeg.org?subject=unsubscribe> List-Archive: <https://ffmpeg.org/pipermail/ffmpeg-devel> List-Post: <mailto:ffmpeg-devel@ffmpeg.org> List-Help: <mailto:ffmpeg-devel-request@ffmpeg.org?subject=help> List-Subscribe: <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel>, <mailto:ffmpeg-devel-request@ffmpeg.org?subject=subscribe> Reply-To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" <ffmpeg-devel-bounces@ffmpeg.org> Archived-At: <https://master.gitmailbox.com/ffmpegdev/2624fe3b-ef84-41a5-ac9c-2796969485a1@gmail.com/> List-Archive: <https://master.gitmailbox.com/ffmpegdev/> List-Post: <mailto:ffmpegdev@gitmailbox.com> SGkhCkZpcnN0IHRoYW5rIHlvdSBmb3IgeW91ciBmZWVkYmFjay4KCk9uIDIzLzAzLzIwMjUgMTg6 MzEsIEx5bm5lIHdyb3RlOgo+IE9uIDIyLzAzLzIwMjUgMTg6NDksIE1hc3NpbW8gRXluYXJkIHdy b3RlOgo+PiBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgZGVjb2RpbmcgdGhlIGZvdXJ0aCBN TFAgc3Vic3RyZWFtCj4+IHdoaWNoIGNvbnRhaW5zIHRoZSAxNi1jaGFubmVsIHByZXNlbnRhdGlv biB1c2VkIGZvciBBdG1vcwo+PiBhdWRpbyBvYmplY3RzLgo+Pgo+PiBCeSBkZWZhdWx0IG9ubHkg dGhlIGZpcnN0IHRocmVlIHN1YnN0cmVhbXMgYXJlIGRlY29kZWQKPj4gdW5sZXNzIHRoZSBuZXcg ZXh0cmFjdF9vYmplY3RzIGZsYWcgaXMgZW5hYmxlZCBhcyB0aGUgcmVzdWx0aW5nCj4+IHByZXNl bnRhdGlvbiBjb250YWlucyBhdWRpbyBvYmplY3QgZmVlZHMgaW5zdGVhZCBvZiBjbGFzc2ljCj4+ IGxvdWRzcGVha2VyIGZlZWRzLgo+Pgo+PiBBcyB0aGlzIGludHJvZHVjZXMgaW50ZXJwb2xhdGlv biBvZiBwcmltaXRpdmUgbWF0cmljZXMsIHByZWNpc2lvbgo+PiBoYXMgYmVlbiBpbmNyZWFzZWQg dG8gMi4xOCBmaXhlZCBwb2ludC4gVGhlcmVmb3JlIHRoaXMgcmVxdWlyZXMKPj4gRFNQIGNvZGUg dXBncmFkZSB3aGljaCBoYXMgYmVlbiBkb25lIGZvciBDIGFuZCB4ODYgaW1wbGVtZW50YXRpb25z Cj4+IGJ1dCBub3QgdGhlIEFSTSBpbXBsZW1lbnRhdGlvbi4KPj4KPj4gQWRkcyB0d28gRkFURSB0 ZXN0cyB1c2luZyBleGlzdGluZyBhdG1vcy50aGQgc2FtcGxlIHRvIHJlZmxlY3QKPj4gY2hhbmdl cy4KPj4KPj4gU2lnbmVkLW9mZi1ieTogTWFzc2ltbyBFeW5hcmQgPGV5bmFyZC5tYXNzaW1vQGdt YWlsLmNvbT4KPj4gLS0tCj4+IMKgIGxpYmF2Y29kZWMvYXJtL21scGRzcF9hcm12NXRlLlPCoCB8 wqDCoCAyICstCj4+IMKgIGxpYmF2Y29kZWMvYXJtL21scGRzcF9pbml0X2FybS5jIHzCoMKgIDMg Ky0KPj4gwqAgbGliYXZjb2RlYy9tbHAuaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHzCoCAxMCArLQo+PiDCoCBsaWJhdmNvZGVjL21scF9wYXJzZS5jwqDCoMKgwqDCoMKgwqDCoMKg wqAgfMKgIDMxICsrLQo+PiDCoCBsaWJhdmNvZGVjL21scF9wYXJzZS5owqDCoMKgwqDCoMKgwqDC oMKgwqAgfMKgwqAgMSArCj4+IMKgIGxpYmF2Y29kZWMvbWxwX3BhcnNlci5jwqDCoMKgwqDCoMKg wqDCoMKgIHzCoCAxMSArLQo+PiDCoCBsaWJhdmNvZGVjL21scGRlYy5jwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfCAzODkgKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQo+PiDCoCBs aWJhdmNvZGVjL21scGRzcC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDUwICsrKy0K Pj4gwqAgbGliYXZjb2RlYy9tbHBkc3AuaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCAy NSArKwo+PiDCoCBsaWJhdmNvZGVjL3g4Ni9tbHBkc3AuYXNtwqDCoMKgwqDCoMKgwqAgfMKgIDE5 ICstCj4+IMKgIHRlc3RzL2ZhdGUvdHJ1ZWhkLm1ha8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKg IDEwICsKPj4gwqAgMTEgZmlsZXMgY2hhbmdlZCwgNDc2IGluc2VydGlvbnMoKyksIDc1IGRlbGV0 aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9hcm0vbWxwZHNwX2FybXY1dGUu UyBiL2xpYmF2Y29kZWMvYXJtL21scGRzcF9hcm12NXRlLlMKPj4gaW5kZXggZDMxNTY4NjExYy4u NTIxMGYzOTFhYiAxMDA2NDQKPj4gLS0tIGEvbGliYXZjb2RlYy9hcm0vbWxwZHNwX2FybXY1dGUu Uwo+PiArKysgYi9saWJhdmNvZGVjL2FybS9tbHBkc3BfYXJtdjV0ZS5TCj4+IEBAIC0yMSw3ICsy MSw3IEBACj4+IMKgIMKgICNpbmNsdWRlICJsaWJhdnV0aWwvYXJtL2FzbS5TIgo+PiDCoCAtI2Rl ZmluZSBNQVhfQ0hBTk5FTFPCoMKgwqDCoMKgwqDCoCA4Cj4+ICsjZGVmaW5lIE1BWF9DSEFOTkVM U8KgwqDCoMKgwqDCoCAxNgo+PiDCoCAjZGVmaW5lIE1BWF9GSVJfT1JERVLCoMKgwqDCoMKgwqAg OAo+PiDCoCAjZGVmaW5lIE1BWF9JSVJfT1JERVLCoMKgwqDCoMKgwqAgNAo+PiDCoCAjZGVmaW5l IE1BWF9SQVRFRkFDVE9SwqDCoMKgwqDCoCA0Cj4+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2Fy bS9tbHBkc3BfaW5pdF9hcm0uYyBiL2xpYmF2Y29kZWMvYXJtL21scGRzcF9pbml0X2FybS5jCj4+ IGluZGV4IDM0YTVmNjFlMWQuLjUwYzNjZjU0ODggMTAwNjQ0Cj4+IC0tLSBhL2xpYmF2Y29kZWMv YXJtL21scGRzcF9pbml0X2FybS5jCj4+ICsrKyBiL2xpYmF2Y29kZWMvYXJtL21scGRzcF9pbml0 X2FybS5jCj4+IEBAIC0xMTMsNiArMTEzLDcgQEAgc3RhdGljIGludDMyX3QgKCptbHBfc2VsZWN0 X3BhY2tfb3V0cHV0X2FybXY2KHVpbnQ4X3QgKmNoX2Fzc2lnbiwKPj4gwqDCoMKgwqDCoMKgwqDC oMKgIGNoX2luZGV4ID0gMjsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+PiDCoMKgwqDC oMKgIGRlZmF1bHQ6Cj4+ICvCoMKgwqDCoMKgwqDCoCAvLyBtYXhfbWF0cml4X2NoYW5uZWwgPiA3 IHJlcXVpcmVzICY3IGxvc3NsZXNzIGJ1ZmZlciBjaGFubmVsIHNoaWZ0Cj4+IMKgwqDCoMKgwqDC oMKgwqDCoCByZXR1cm4gZmZfbWxwX3BhY2tfb3V0cHV0Owo+PiDCoMKgwqDCoMKgIH0KPj4gwqAg QEAgLTEzOSw3ICsxNDAsNyBAQCBhdl9jb2xkIHZvaWQgZmZfbWxwZHNwX2luaXRfYXJtKE1MUERT UENvbnRleHQgKmMpCj4+IMKgIMKgwqDCoMKgwqAgaWYgKGhhdmVfYXJtdjV0ZShjcHVfZmxhZ3Mp KSB7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBjLT5tbHBfZmlsdGVyX2NoYW5uZWwgPSBmZl9tbHBf ZmlsdGVyX2NoYW5uZWxfYXJtOwo+PiAtwqDCoMKgwqDCoMKgwqAgYy0+bWxwX3JlbWF0cml4X2No YW5uZWwgPSBmZl9tbHBfcmVtYXRyaXhfY2hhbm5lbF9hcm07Cj4+ICvCoMKgwqDCoMKgwqDCoCAv LyBjLT5tbHBfcmVtYXRyaXhfY2hhbm5lbCA9IGZmX21scF9yZW1hdHJpeF9jaGFubmVsX2FybTsg Ly8gVE9ETzogdXBkYXRlIHRvIDIuMTggY29lZmYKPj4gwqDCoMKgwqDCoCB9Cj4+IMKgwqDCoMKg wqAgaWYgKGhhdmVfYXJtdjYoY3B1X2ZsYWdzKSkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGMtPm1s cF9zZWxlY3RfcGFja19vdXRwdXQgPSBtbHBfc2VsZWN0X3BhY2tfb3V0cHV0X2FybXY2Owo+PiBk aWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9tbHAuaCBiL2xpYmF2Y29kZWMvbWxwLmgKPj4gaW5kZXgg YmVjNDE0YzY4MC4uMjY0ZWY2NGNmMSAxMDA2NDQKPj4gLS0tIGEvbGliYXZjb2RlYy9tbHAuaAo+ PiArKysgYi9saWJhdmNvZGVjL21scC5oCj4+IEBAIC0zMSwxOSArMzEsMTkgQEAKPj4gwqAgwqAg LyoqIExhc3QgcG9zc2libGUgbWF0cml4IGNoYW5uZWwgZm9yIGVhY2ggY29kZWMgKi8KPj4gwqAg I2RlZmluZSBNQVhfTUFUUklYX0NIQU5ORUxfTUxQwqDCoMKgwqDCoCA1Cj4+IC0jZGVmaW5lIE1B WF9NQVRSSVhfQ0hBTk5FTF9UUlVFSETCoMKgIDcKPj4gKyNkZWZpbmUgTUFYX01BVFJJWF9DSEFO TkVMX1RSVUVIRMKgIDE1Cj4+IMKgIC8qKiBNYXhpbXVtIG51bWJlciBvZiBjaGFubmVscyBpbiBh IHZhbGlkIHN0cmVhbS4KPj4gwqDCoCAqwqAgTUxQwqDCoCA6IDUuMSArIDIgbm9pc2UgY2hhbm5l bHMgLT4gOCBjaGFubmVscwo+PiAtICrCoCBUcnVlSEQ6IDcuMcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIC0+IDggY2hhbm5lbHMKPj4gKyAqwqAgVHJ1ZUhEOiB1cCB0byAx Ni1jaCBwcmVzwqDCoMKgwqDCoMKgIC0+IDE2IGNoYW5uZWxzCj4+IMKgwqAgKi8KPj4gLSNkZWZp bmUgTUFYX0NIQU5ORUxTwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDgKPj4gKyNkZWZp bmUgTUFYX0NIQU5ORUxTwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAxNgo+PiDCoCDCoCAv KiogTWF4aW11bSBudW1iZXIgb2YgbWF0cmljZXMgdXNlZCBpbiBkZWNvZGluZzsgbW9zdCBzdHJl YW1zIGhhdmUgb25lIG1hdHJpeAo+PiDCoMKgICrCoCBwZXIgb3V0cHV0IGNoYW5uZWwsIGJ1dCBz b21lIHJlbWF0cml4IGEgY2hhbm5lbCAodXN1YWxseSAwKSBtb3JlIHRoYW4gb25jZS4KPj4gwqDC oCAqLwo+PiDCoCAjZGVmaW5lIE1BWF9NQVRSSUNFU19NTFDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IDYKPj4gLSNkZWZpbmUgTUFYX01BVFJJQ0VTX1RSVUVIRMKgwqDCoMKgwqDCoMKgwqAgOAo+PiAt I2RlZmluZSBNQVhfTUFUUklDRVPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgOAo+PiAr I2RlZmluZSBNQVhfTUFUUklDRVNfVFJVRUhEwqDCoMKgwqDCoMKgwqAgMTYKPj4gKyNkZWZpbmUg TUFYX01BVFJJQ0VTwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAxNgo+PiDCoCDCoCAvKiog TWF4aW11bSBudW1iZXIgb2Ygc3Vic3RyZWFtcyB0aGF0IGNhbiBiZSBkZWNvZGVkLgo+PiDCoMKg ICrCoCBNTFAncyBsaW1pdCBpcyAyLiBUcnVlSEQgc3VwcG9ydHMgYXQgbGVhc3QgdXAgdG8gMy4K Pj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvbWxwX3BhcnNlLmMgYi9saWJhdmNvZGVjL21scF9w YXJzZS5jCj4+IGluZGV4IDkyNGM3MzE0MzkuLmM5NGRhODYwZDAgMTAwNjQ0Cj4+IC0tLSBhL2xp YmF2Y29kZWMvbWxwX3BhcnNlLmMKPj4gKysrIGIvbGliYXZjb2RlYy9tbHBfcGFyc2UuYwo+PiBA QCAtODUsNyArODUsNyBAQCBzdGF0aWMgaW50IG1scF9nZXRfbWFqb3Jfc3luY19zaXplKGNvbnN0 IHVpbnQ4X3QgKiBidWYsIGludCBidWZzaXplKQo+PiDCoCDCoCBpbnQgZmZfbWxwX3JlYWRfbWFq b3Jfc3luYyh2b2lkICpsb2csIE1MUEhlYWRlckluZm8gKm1oLCBHZXRCaXRDb250ZXh0ICpnYikK Pj4gwqAgewo+PiAtwqDCoMKgIGludCByYXRlYml0cywgY2hhbm5lbF9hcnJhbmdlbWVudCwgaGVh ZGVyX3NpemU7Cj4+ICvCoMKgwqAgaW50IHJhdGViaXRzLCBjaGFubmVsX2FycmFuZ2VtZW50LCBo ZWFkZXJfc2l6ZSwgZXh0cmFfY2hfbGVuZ3RoOwo+PiDCoMKgwqDCoMKgIHVpbnQxNl90IGNoZWNr c3VtOwo+PiDCoCDCoMKgwqDCoMKgIGF2X2Fzc2VydDEoZ2V0X2JpdHNfY291bnQoZ2IpID09IDAp Owo+PiBAQCAtMTYzLDcgKzE2MywzNCBAQCBpbnQgZmZfbWxwX3JlYWRfbWFqb3Jfc3luYyh2b2lk ICpsb2csIE1MUEhlYWRlckluZm8gKm1oLCBHZXRCaXRDb250ZXh0ICpnYikKPj4gwqDCoMKgwqDC oCBtaC0+ZXh0ZW5kZWRfc3Vic3RyZWFtX2luZm8gPSBnZXRfYml0cyhnYiwgMik7Cj4+IMKgwqDC oMKgwqAgbWgtPnN1YnN0cmVhbV9pbmZvID0gZ2V0X2JpdHMoZ2IsIDgpOwo+PiDCoCAtwqDCoMKg IHNraXBfYml0c19sb25nKGdiLCAoaGVhZGVyX3NpemUgLSAxOCkgKiA4KTsKPj4gK8KgwqDCoCBl eHRyYV9jaF9sZW5ndGggPSAwOwo+PiArwqDCoMKgIG1oLT5jaGFubmVsc190aGRfc3RyZWFtMyA9 IDA7Cj4+ICsKPj4gK8KgwqDCoCBpZiAobWgtPnN0cmVhbV90eXBlID09IDB4YmEpIHsKPj4gK8Kg wqDCoMKgwqDCoMKgIHNraXBfYml0c19sb25nKGdiLCA2Myk7Cj4+ICsKPj4gK8KgwqDCoMKgwqDC oMKgIGV4dHJhX2NoX2xlbmd0aCA9IDY0Owo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKGdldF9iaXRz MShnYikgJiYgKG1oLT5zdWJzdHJlYW1faW5mbyAmIDB4ODApKSB7Cj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIC8qIDE2Y2hfY2hhbm5lbF9tZWFuaW5nICovCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGludCBsZW5ndGggPSAoZ2V0X2JpdHMoZ2IsIDQpICsgMSkgPDwgMTsKPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqAgaWYgKGhlYWRlcl9zaXplIC0gMjYgPCBsZW5ndGgpIHsKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhdl9sb2cobG9nLCBBVl9MT0dfRVJST1IsICJw YWNrZXQgdG9vIHNob3J0LCAiCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAidW5hYmxlIHRvIHJlYWQgMTZjaCBleHRyYSBtZWFuaW5nIGluIG1ham9yIHN5bmMgJWQg JWRcbiIsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBoZWFkZXJf c2l6ZSwgbGVuZ3RoKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4g LTE7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBza2lwX2JpdHNfbG9uZyhnYiwgNSs2KTsgLy8gZGlhbG9ndWUgbm9ybS9taXggbGV2 ZWwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbWgtPmNoYW5uZWxzX3RoZF9zdHJlYW0zID0g Z2V0X2JpdHMoZ2IsIDUpICsgMTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKCFnZXRf Yml0czEoZ2IpKSB7IC8vIGR5bl9vYmplY3Rfb25seQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGF2cHJpdl9yZXF1ZXN0X3NhbXBsZShsb2csICIxNmNoIHByZXNlbnRhdGlvbiB3 aXRoIGEgbWl4dHVyZSBvZiBjaGFubmVscyIpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHJldHVybiBBVkVSUk9SX1BBVENIV0VMQ09NRTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBleHRyYV9jaF9sZW5ndGggKz0gMjE7 Cj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqAgc2tpcF9i aXRzX2xvbmcoZ2IsIChoZWFkZXJfc2l6ZSAtIDE4KSAqIDggLSBleHRyYV9jaF9sZW5ndGgpOwo+ PiDCoCDCoMKgwqDCoMKgIHJldHVybiAwOwo+PiDCoCB9Cj4+IGRpZmYgLS1naXQgYS9saWJhdmNv ZGVjL21scF9wYXJzZS5oIGIvbGliYXZjb2RlYy9tbHBfcGFyc2UuaAo+PiBpbmRleCA1ZjFmOTUz Y2ZlLi44MDExNTY2ZmY3IDEwMDY0NAo+PiAtLS0gYS9saWJhdmNvZGVjL21scF9wYXJzZS5oCj4+ ICsrKyBiL2xpYmF2Y29kZWMvbWxwX3BhcnNlLmgKPj4gQEAgLTQ3LDYgKzQ3LDcgQEAgdHlwZWRl ZiBzdHJ1Y3QgTUxQSGVhZGVySW5mbwo+PiDCoMKgwqDCoMKgIGludCBjaGFubmVsc19tbHA7wqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLy8vPCBDaGFubmVsIGNv dW50IGZvciBNTFAgc3RyZWFtcwo+PiDCoMKgwqDCoMKgIGludCBjaGFubmVsc190aGRfc3RyZWFt MTvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8vLzwgQ2hhbm5lbCBjb3VudCBmb3Igc3Vi c3RyZWFtIDEgb2YgVHJ1ZUhEIHN0cmVhbXMgKCI2LWNoYW5uZWwgcHJlc2VudGF0aW9uIikKPj4g wqDCoMKgwqDCoCBpbnQgY2hhbm5lbHNfdGhkX3N0cmVhbTI7wqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAvLy88IENoYW5uZWwgY291bnQgZm9yIHN1YnN0cmVhbSAyIG9mIFRydWVIRCBzdHJl YW1zICgiOC1jaGFubmVsIHByZXNlbnRhdGlvbiIpCj4+ICvCoMKgwqAgaW50IGNoYW5uZWxzX3Ro ZF9zdHJlYW0zO8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLy8vPCBDaGFubmVsIGNvdW50 IGZvciBzdWJzdHJlYW0gMyBvZiBUcnVlSEQgc3RyZWFtcyAoIjE2LWNoYW5uZWwgcHJlc2VudGF0 aW9uIikKPj4gwqDCoMKgwqDCoCB1aW50NjRfdCBjaGFubmVsX2xheW91dF9tbHA7wqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAvLy88IENoYW5uZWwgbGF5b3V0IGZvciBNTFAgc3RyZWFtcwo+PiDCoMKg wqDCoMKgIHVpbnQ2NF90IGNoYW5uZWxfbGF5b3V0X3RoZF9zdHJlYW0xO8KgwqDCoCAvLy88IENo YW5uZWwgbGF5b3V0IGZvciBzdWJzdHJlYW0gMSBvZiBUcnVlSEQgc3RyZWFtcyAoIjYtY2hhbm5l bCBwcmVzZW50YXRpb24iKQo+PiDCoMKgwqDCoMKgIHVpbnQ2NF90IGNoYW5uZWxfbGF5b3V0X3Ro ZF9zdHJlYW0yO8KgwqDCoCAvLy88IENoYW5uZWwgbGF5b3V0IGZvciBzdWJzdHJlYW0gMiBvZiBU cnVlSEQgc3RyZWFtcyAoIjgtY2hhbm5lbCBwcmVzZW50YXRpb24iKQo+PiBkaWZmIC0tZ2l0IGEv bGliYXZjb2RlYy9tbHBfcGFyc2VyLmMgYi9saWJhdmNvZGVjL21scF9wYXJzZXIuYwo+PiBpbmRl eCBkMzkxMzkwZGQ1Li5mM2Q1NGM0MGU3IDEwMDY0NAo+PiAtLS0gYS9saWJhdmNvZGVjL21scF9w YXJzZXIuYwo+PiArKysgYi9saWJhdmNvZGVjL21scF9wYXJzZXIuYwo+PiBAQCAtMTgxLDEwICsx ODEsMTUgQEAgc3RhdGljIGludCBtbHBfcGFyc2UoQVZDb2RlY1BhcnNlckNvbnRleHQgKnMsCj4+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGF2X2NoYW5uZWxfbGF5b3V0X2Zyb21fbWFzaygm YXZjdHgtPmNoX2xheW91dCwgbWguY2hhbm5lbF9sYXlvdXRfbWxwKTsKPj4gwqDCoMKgwqDCoMKg wqDCoMKgIH0gZWxzZSB7IC8qIG1oLnN0cmVhbV90eXBlID09IDB4YmEgKi8KPj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgLyogVHJ1ZUhEIHN0cmVhbSAqLwo+PiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBpZiAoIW1oLmNoYW5uZWxzX3RoZF9zdHJlYW0yKSB7Cj4+IC3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgYXZfY2hhbm5lbF9sYXlvdXRfZnJvbV9tYXNrKCZhdmN0eC0+Y2hf bGF5b3V0LCBtaC5jaGFubmVsX2xheW91dF90aGRfc3RyZWFtMSk7Cj4+IC3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgIH0gZWxzZSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChtaC5jaGFu bmVsc190aGRfc3RyZWFtMykgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGF2 Y3R4LT5jaF9sYXlvdXQgPSAoQVZDaGFubmVsTGF5b3V0KSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBVl9DSEFOTkVMX09SREVSX1VOU1BFQywKPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1oLmNoYW5uZWxzX3RoZF9zdHJlYW0z Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfTsKPiAKPiBJcyB0aGUgb3JkZXIg cmVhbGx5IHVuc3BlY2lmaWVkPyBTdXJlbHkgdGhlcmUncyBzb21lIHVuZGVyc3RhbmRpbmcgd2hp Y2ggY2hhbm5lbHMgbWFwIHRvIHdoaWNoIHBvc2l0aW9uLgo+IAoKQWN0dWFsbHksIGluIGN1cnJl bnQgdXNlIG9mIE1MUC9UcnVlSEQgd2hlbiBkZWNvZGluZyB1c2luZyB0aGUgZm91cnRoIHN1YnN0 cmVhbSwgcmVjb25zdHJ1Y3RlZCBjaGFubmVscyBjYW5ub3QgYmUgbWFwcGVkIHRvIHNpbmdsZSBs b3Vkc3BlYWtlcnMgb3IgZml4ZWQgcG9zaXRpb24gYW5kIGFjdHMgbW9yZSBsaWtlICJ0cmFja3Mi IHdoaWNoIGFyZSBmZWVkcyBmb3IgYXVkaW8gb2JqZWN0cy4KVGhlc2UgYXVkaW8gb2JqZWN0cyBh cmUgaW5kZWVkIG5vdCBmaXhlZCBpbiBzcGFjZSwgdGhlaXIgcG9zaXRpb24gaXMgZGVmaW5lZCBi eSBhZGRpdGlvbmFsIHRpbWUtdmFyeWluZyBtZXRhZGF0YS4KCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIH0gZWxzZSBpZiAobWguY2hhbm5lbHNfdGhkX3N0cmVhbTIpIHsKPj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhdl9jaGFubmVsX2xheW91dF9mcm9tX21hc2soJmF2 Y3R4LT5jaF9sYXlvdXQsIG1oLmNoYW5uZWxfbGF5b3V0X3RoZF9zdHJlYW0yKTsKPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfSBlbHNlIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBhdl9jaGFubmVsX2xheW91dF9mcm9tX21hc2soJmF2Y3R4LT5jaF9sYXlvdXQsIG1oLmNo YW5uZWxfbGF5b3V0X3RoZF9zdHJlYW0xKTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg fQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+PiDCoCBkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9t bHBkZWMuYyBiL2xpYmF2Y29kZWMvbWxwZGVjLmMKPj4gaW5kZXggZTg1ZGFjMzZhNy4uMTRmYjk1 MzI2NSAxMDA2NDQKPj4gLS0tIGEvbGliYXZjb2RlYy9tbHBkZWMuYwo+PiArKysgYi9saWJhdmNv ZGVjL21scGRlYy5jCj4+IEBAIC02MSw4ICs2MSw4IEBAIHR5cGVkZWYgc3RydWN0IFN1YlN0cmVh bSB7Cj4+IMKgIMKgwqDCoMKgwqAgLy9Aewo+PiDCoMKgwqDCoMKgIC8qKiByZXN0YXJ0IGhlYWRl ciBkYXRhICovCj4+IC3CoMKgwqAgLy8vIFRoZSB0eXBlIG9mIG5vaXNlIHRvIGJlIHVzZWQgaW4g dGhlIHJlbWF0cml4IHN0YWdlLgo+PiAtwqDCoMKgIHVpbnQxNl90wqDCoMKgIG5vaXNlX3R5cGU7 Cj4+ICvCoMKgwqAgLy8vIFRoZSB0eXBlIG9mIHN1YnN0cmVhbSBnaXZlbiBieSB0aGUgcmVzdGFy dCBoZWFkZXIgc3luYyB3b3JkLgo+PiArwqDCoMKgIHVpbnQxNl90wqDCoMKgIHN1YnN0cmVhbV90 eXBlOwo+PiDCoCDCoMKgwqDCoMKgIC8vLyBUaGUgaW5kZXggb2YgdGhlIGZpcnN0IGNoYW5uZWwg Y29kZWQgaW4gdGhpcyBzdWJzdHJlYW0uCj4+IMKgwqDCoMKgwqAgdWludDhfdMKgwqDCoMKgIG1p bl9jaGFubmVsOwo+PiBAQCAtODgsNiArODgsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgU3ViU3RyZWFt IHsKPj4gwqDCoMKgwqDCoCAvLy8gVGhlIGN1cnJlbnQgc2VlZCB2YWx1ZSBmb3IgdGhlIHBzZXVk b3JhbmRvbSBub2lzZSBnZW5lcmF0b3IocykuCj4+IMKgwqDCoMKgwqAgdWludDMyX3TCoMKgwqAg bm9pc2VnZW5fc2VlZDsKPj4gwqAgK8KgwqDCoCAvLy8gTWF4aW11bSBvdXRwdXRfc2hpZnQgdmFs dWUuCj4+ICvCoMKgwqAgaW50OF90wqDCoMKgwqDCoCBtYXhfc2hpZnQ7Cj4+ICvCoMKgwqAgLy8v IE1heGltdW0gc2l6ZSBvZiBjb2RlZCBhdWRpbyBzYW1wbGVzIExTQnMgcGFydC4KPj4gK8KgwqDC oCBpbnQ4X3TCoMKgwqDCoMKgIG1heF9sc2JzOwo+PiArwqDCoMKgIC8vLyBNYXhpbXVtIGJpdC1k ZXB0aCBvZiBvdXRwdXQgYXVkaW8gc2FtcGxlcy4KPj4gK8KgwqDCoCBpbnQ4X3TCoMKgwqDCoMKg IG1heF9iaXRzOwo+PiArCj4+IMKgwqDCoMKgwqAgLy8vIFNldCBpZiB0aGUgc3Vic3RyZWFtIGNv bnRhaW5zIGV4dHJhIGluZm8gdG8gY2hlY2sgdGhlIHNpemUgb2YgVkxDIGJsb2Nrcy4KPj4gwqDC oMKgwqDCoCB1aW50OF90wqDCoMKgwqAgZGF0YV9jaGVja19wcmVzZW50Owo+PiDCoCBAQCAtMTA0 LDExICsxMTEsMjMgQEAgdHlwZWRlZiBzdHJ1Y3QgU3ViU3RyZWFtIHsKPj4gwqDCoMKgwqDCoCAv Ly8gbWF0cml4IG91dHB1dCBjaGFubmVsCj4+IMKgwqDCoMKgwqAgdWludDhfdMKgwqDCoMKgIG1h dHJpeF9vdXRfY2hbTUFYX01BVFJJQ0VTXTsKPj4gwqAgLcKgwqDCoCAvLy8gV2hldGhlciB0aGUg TFNCcyBvZiB0aGUgbWF0cml4IG91dHB1dCBhcmUgZW5jb2RlZCBpbiB0aGUgYml0c3RyZWFtLgo+ PiArwqDCoMKgIC8vLyBTaXplIG9mIHRoZSBMU0JzIG9mIHRoZSBtYXRyaXggb3V0cHV0IGVuY29k ZWQgaW4gdGhlIGJpdHN0cmVhbS4KPj4gwqDCoMKgwqDCoCB1aW50OF90wqDCoMKgwqAgbHNiX2J5 cGFzc1tNQVhfTUFUUklDRVNdOwo+PiAtwqDCoMKgIC8vLyBNYXRyaXggY29lZmZpY2llbnRzLCBz dG9yZWQgYXMgMi4xNCBmaXhlZCBwb2ludC4KPj4gK8KgwqDCoCAvLy8gTWF0cml4IGNvZWZmaWNp ZW50cyBmcmFjdGlvbmFsIHBhcnQgc2l6ZSBpbiBiaXRzLgo+PiArwqDCoMKgIHVpbnQ4X3TCoMKg wqDCoCBtYXRyaXhfY29lZmZfZnJhY19iaXRzW01BWF9NQVRSSUNFU107Cj4+ICvCoMKgwqAgLy8v IE1hdHJpeCBjb2VmZmljaWVudHMgc2hpZnQgYW1vdW50Lgo+PiArwqDCoMKgIGludDhfdMKgwqDC oMKgwqAgbWF0cml4X2NvZWZmX3NoaWZ0W01BWF9NQVRSSUNFU107Cj4+ICvCoMKgwqAgLy8vIE1h dHJpeCBjb2VmZmljaWVudHMgcHJlc2VuY2UgbWFzay4KPj4gK8KgwqDCoCB1aW50MTZfdMKgwqDC oCBtYXRyaXhfY29lZmZfbWFza1tNQVhfTUFUUklDRVNdOwo+PiArwqDCoMKgIC8vLyBNYXRyaXgg Y29lZmZpY2llbnRzLCBzdG9yZWQgYXMgMi4xOCBmaXhlZCBwb2ludC4KPj4gwqDCoMKgwqDCoCBE RUNMQVJFX0FMSUdORUQoMzIsIGludDMyX3QsIG1hdHJpeF9jb2VmZilbTUFYX01BVFJJQ0VTXVtN QVhfQ0hBTk5FTFNdOwo+PiAtwqDCoMKgIC8vLyBMZWZ0IHNoaWZ0IHRvIGFwcGx5IHRvIG5vaXNl IHZhbHVlcyBpbiAweDMxZWIgc3Vic3RyZWFtcy4KPj4gK8KgwqDCoCAvLy8gRGVsdGEgbWF0cml4 IGNvZWZmaWNpZW50cyBzaXplIGluIGJpdHMgZm9yIDB4MzFlYyBzdWJzdHJlYW1zLgo+PiArwqDC oMKgIHVpbnQ4X3TCoMKgwqDCoCBkZWx0YV9tYXRyaXhfY29lZmZfYml0c1tNQVhfTUFUUklDRVNd Owo+PiArwqDCoMKgIC8vLyBEZWx0YSBtYXRyaXggY29lZmZpY2llbnRzIHByZWNpc2lvbi4KPj4g K8KgwqDCoCB1aW50OF90wqDCoMKgwqAgZGVsdGFfbWF0cml4X2NvZWZmX3ByZWNbTUFYX01BVFJJ Q0VTXTsKPj4gK8KgwqDCoCAvLy8gRGVsdGEgbWF0cml4IGNvZWZmaWNpZW50cywgc3RvcmVkIGFz IDIuMTggZml4ZWQgcG9pbnQuCj4+ICvCoMKgwqAgREVDTEFSRV9BTElHTkVEKDMyLCBpbnQzMl90 LCBkZWx0YV9tYXRyaXhfY29lZmYpW01BWF9NQVRSSUNFU11bTUFYX0NIQU5ORUxTXTsKPj4gK8Kg wqDCoCAvLy8gTGVmdCBzaGlmdCB0byBhcHBseSB0byBub2lzZSB2YWx1ZXMgaW4gMHgzMWViIGFu ZCAweDMxZWMgc3Vic3RyZWFtcy4KPj4gwqDCoMKgwqDCoCB1aW50OF90wqDCoMKgwqAgbWF0cml4 X25vaXNlX3NoaWZ0W01BWF9NQVRSSUNFU107Cj4+IMKgwqDCoMKgwqAgLy9AfQo+PiDCoCBAQCAt MTMzLDYgKzE1Miw4IEBAIHR5cGVkZWYgc3RydWN0IE1MUERlY29kZUNvbnRleHQgewo+PiDCoMKg wqDCoMKgIEFWQ29kZWNDb250ZXh0ICphdmN0eDsKPj4gwqAgwqDCoMKgwqDCoCBBVkNoYW5uZWxM YXlvdXQgZG93bm1peF9sYXlvdXQ7Cj4+ICvCoMKgwqAgLy8vIFNldCB0byBlbmFibGUgZGVjb2Rp bmcgb2Ygbm9uLWxvdWRzcGVha2VyIGZlZWQgKG9iamVjdHMpIGF1ZGlvIGNoYW5uZWxzCj4+ICvC oMKgwqAgaW50IGV4dHJhY3Rfb2JqZWN0czsKPj4gwqAgwqDCoMKgwqDCoCAvLy8gQ3VycmVudCBh Y2Nlc3MgdW5pdCBiZWluZyByZWFkIGhhcyBhIG1ham9yIHN5bmMuCj4+IMKgwqDCoMKgwqAgaW50 wqDCoMKgwqDCoMKgwqDCoCBpc19tYWpvcl9zeW5jX3VuaXQ7Cj4+IEBAIC0yNjcsMTQgKzI4OCwx NCBAQCBzdGF0aWMgaW5saW5lIGludCByZWFkX2h1ZmZfY2hhbm5lbHMoTUxQRGVjb2RlQ29udGV4 dCAqbSwgR2V0Qml0Q29udGV4dCAqZ2JwLAo+PiDCoCDCoMKgwqDCoMKgIGZvciAobWF0ID0gMDsg bWF0IDwgcy0+bnVtX3ByaW1pdGl2ZV9tYXRyaWNlczsgbWF0KyspCj4+IMKgwqDCoMKgwqDCoMKg wqDCoCBpZiAocy0+bHNiX2J5cGFzc1ttYXRdKQo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBt LT5ieXBhc3NlZF9sc2JzW3BvcyArIHMtPmJsb2NrcG9zXVttYXRdID0gZ2V0X2JpdHMxKGdicCk7 Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG0tPmJ5cGFzc2VkX2xzYnNbcG9zICsgcy0+Ymxv Y2twb3NdW21hdF0gPSBnZXRfYml0cyhnYnAsIHMtPmxzYl9ieXBhc3NbbWF0XSk7Cj4+IMKgIMKg wqDCoMKgwqAgZm9yIChjaGFubmVsID0gcy0+bWluX2NoYW5uZWw7IGNoYW5uZWwgPD0gcy0+bWF4 X2NoYW5uZWw7IGNoYW5uZWwrKykgewo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgQ2hhbm5lbFBhcmFt cyAqY3AgPSAmcy0+Y2hhbm5lbF9wYXJhbXNbY2hhbm5lbF07Cj4+IMKgwqDCoMKgwqDCoMKgwqDC oCBpbnQgY29kZWJvb2sgPSBjcC0+Y29kZWJvb2s7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQg cXVhbnRfc3RlcF9zaXplID0gcy0+cXVhbnRfc3RlcF9zaXplW2NoYW5uZWxdOwo+PiDCoMKgwqDC oMKgwqDCoMKgwqAgaW50IGxzYl9iaXRzID0gY3AtPmh1ZmZfbHNicyAtIHF1YW50X3N0ZXBfc2l6 ZTsKPj4gLcKgwqDCoMKgwqDCoMKgIGludCByZXN1bHQgPSAwOwo+PiArwqDCoMKgwqDCoMKgwqAg aW50MzJfdCByZXN1bHQgPSAwOwo+PiDCoCDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGNvZGVib29r ID4gMCkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmVzdWx0ID0gZ2V0X3ZsYzIoZ2Jw LCBodWZmX3ZsY1tjb2RlYm9vay0xXS50YWJsZSwKPj4gQEAgLTQxMCw4ICs0MzEsMTIgQEAgc3Rh dGljIGludCByZWFkX21ham9yX3N5bmMoTUxQRGVjb2RlQ29udGV4dCAqbSwgR2V0Qml0Q29udGV4 dCAqZ2IpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBtLT5hdmN0eC0+cHJvZmlsZcKgwqDCoMKgID0g QVZfUFJPRklMRV9UUlVFSERfQVRNT1M7Cj4+IMKgwqDCoMKgwqAgfQo+PiDCoCAtwqDCoMKgIC8q IGxpbWl0IHRvIGRlY29kaW5nIDMgc3Vic3RyZWFtcywgYXMgdGhlIDR0aCBpcyB1c2VkIGJ5IERv bGJ5IEF0bW9zIGZvciBub24tYXVkaW8gZGF0YSAqLwo+PiAtwqDCoMKgIG0tPm1heF9kZWNvZGVk X3N1YnN0cmVhbSA9IEZGTUlOKG0tPm51bV9zdWJzdHJlYW1zIC0gMSwgMik7Cj4+ICvCoMKgwqAg LyogTGltaXQgdG8gZGVjb2RpbmcgdGhlIGZpcnN0IDMgc3Vic3RyZWFtcyAob3IgYWxsb3cgdGhl IDR0aCBmb3Igb2JqZWN0cykgKi8KPj4gK8KgwqDCoCBtLT5tYXhfZGVjb2RlZF9zdWJzdHJlYW0g PSBGRk1JTihtLT5udW1fc3Vic3RyZWFtcyAtIDEsCj4+ICvCoMKgwqDCoMKgwqDCoCBtLT5leHRy YWN0X29iamVjdHMgPyAzIDogMik7Cj4+ICsKPj4gK8KgwqDCoCBhdl9sb2cobS0+YXZjdHgsIEFW X0xPR19ERUJVRywgImRlY29kaW5nIHVwIHRvIHN1YnN0cmVhbSAlIiBQUkl1OCAiXG4iLAo+PiAr wqDCoMKgwqDCoMKgwqAgbS0+bWF4X2RlY29kZWRfc3Vic3RyZWFtKTsKPj4gwqAgwqDCoMKgwqDC oCBtLT5hdmN0eC0+c2FtcGxlX3JhdGXCoMKgwqAgPSBtaC5ncm91cDFfc2FtcGxlcmF0ZTsKPj4g wqDCoMKgwqDCoCBtLT5hdmN0eC0+ZnJhbWVfc2l6ZcKgwqDCoMKgID0gbWguYWNjZXNzX3VuaXRf c2l6ZTsKPj4gQEAgLTUzMSwyMyArNTU2LDIyIEBAIHN0YXRpYyBpbnQgcmVhZF9yZXN0YXJ0X2hl YWRlcihNTFBEZWNvZGVDb250ZXh0ICptLCBHZXRCaXRDb250ZXh0ICpnYnAsCj4+IMKgwqDCoMKg wqAgaW50IHN5bmNfd29yZCwgdG1wOwo+PiDCoMKgwqDCoMKgIHVpbnQ4X3QgY2hlY2tzdW07Cj4+ IMKgwqDCoMKgwqAgdWludDhfdCBsb3NzbGVzc19jaGVjazsKPj4gK8KgwqDCoCB1aW50OF90IG1h eF9iaXRfZGVwdGg7Cj4+IMKgwqDCoMKgwqAgaW50IHN0YXJ0X2NvdW50ID0gZ2V0X2JpdHNfY291 bnQoZ2JwKTsKPj4gLcKgwqDCoCBpbnQgbWluX2NoYW5uZWwsIG1heF9jaGFubmVsLCBtYXhfbWF0 cml4X2NoYW5uZWwsIG5vaXNlX3R5cGU7Cj4+ICvCoMKgwqAgaW50IG1pbl9jaGFubmVsLCBtYXhf Y2hhbm5lbCwgbWF4X21hdHJpeF9jaGFubmVsOwo+PiDCoMKgwqDCoMKgIGNvbnN0IGludCBzdGRf bWF4X21hdHJpeF9jaGFubmVsID0gbS0+YXZjdHgtPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01M UAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgID8gTUFYX01BVFJJWF9DSEFOTkVMX01MUAo+PiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIDogTUFYX01BVFJJWF9DSEFOTkVMX1RSVUVIRDsKPj4gwqAgLcKgwqDC oCBzeW5jX3dvcmQgPSBnZXRfYml0cyhnYnAsIDEzKTsKPj4gK8KgwqDCoCBzeW5jX3dvcmQgPSBn ZXRfYml0cyhnYnAsIDE0KTsKPj4gwqAgLcKgwqDCoCBpZiAoc3luY193b3JkICE9IDB4MzFlYSA+ PiAxKSB7Cj4+ICvCoMKgwqAgaWYgKHN5bmNfd29yZCA8IDB4MzFlYSB8fCAweDMxZWMgPCBzeW5j X3dvcmQpIHsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGF2X2xvZyhtLT5hdmN0eCwgQVZfTE9HX0VS Uk9SLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAicmVzdGFydCBoZWFkZXIg c3luYyBpbmNvcnJlY3QgKGdvdCAweCUwNHgpXG4iLCBzeW5jX3dvcmQpOwo+PiDCoMKgwqDCoMKg wqDCoMKgwqAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4+IMKgwqDCoMKgwqAgfQo+PiDC oCAtwqDCoMKgIG5vaXNlX3R5cGUgPSBnZXRfYml0czEoZ2JwKTsKPj4gLQo+PiAtwqDCoMKgIGlm IChtLT5hdmN0eC0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfTUxQICYmIG5vaXNlX3R5cGUpIHsK Pj4gK8KgwqDCoCBpZiAobS0+YXZjdHgtPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01MUCAmJiAw eDMxZWEgIT0gc3luY193b3JkKSB7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBhdl9sb2cobS0+YXZj dHgsIEFWX0xPR19FUlJPUiwgIk1MUCBtdXN0IGhhdmUgMHgzMWVhIHN5bmMgd29yZC5cbiIpOwo+ PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4+IMKgwqDC oMKgwqAgfQo+PiBAQCAtNTY3LDcgKzU5MSw3IEBAIHN0YXRpYyBpbnQgcmVhZF9yZXN0YXJ0X2hl YWRlcihNTFBEZWNvZGVDb250ZXh0ICptLCBHZXRCaXRDb250ZXh0ICpnYnAsCj4+IMKgIMKgwqDC oMKgwqAgLyogVGhpcyBzaG91bGQgaGFwcGVuIGZvciBUcnVlSEQgc3RyZWFtcyB3aXRoID42IGNo YW5uZWxzIGFuZCBNTFAncyBub2lzZQo+PiDCoMKgwqDCoMKgwqAgKiB0eXBlLiBJdCBpcyBub3Qg eWV0IGtub3duIGlmIHRoaXMgaXMgYWxsb3dlZC4gKi8KPj4gLcKgwqDCoCBpZiAobWF4X21hdHJp eF9jaGFubmVsID4gTUFYX01BVFJJWF9DSEFOTkVMX01MUCAmJiAhbm9pc2VfdHlwZSkgewo+PiAr wqDCoMKgIGlmIChtYXhfbWF0cml4X2NoYW5uZWwgPiBNQVhfTUFUUklYX0NIQU5ORUxfTUxQICYm IDB4MzFlYSA9PSBzeW5jX3dvcmQpIHsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGF2cHJpdl9yZXF1 ZXN0X3NhbXBsZShtLT5hdmN0eCwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIiVkIGNoYW5uZWxzIChtb3JlIHRoYW4gdGhl ICIKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgIm1heGltdW0gc3VwcG9ydGVkIGJ5IHRoZSBkZWNvZGVyKSIsCj4+IEBAIC01 ODIsNyArNjA2LDcgQEAgc3RhdGljIGludCByZWFkX3Jlc3RhcnRfaGVhZGVyKE1MUERlY29kZUNv bnRleHQgKm0sIEdldEJpdENvbnRleHQgKmdicCwKPj4gwqDCoMKgwqDCoCBzLT5tYXhfY2hhbm5l bMKgwqDCoMKgwqDCoMKgID0gbWF4X2NoYW5uZWw7Cj4+IMKgwqDCoMKgwqAgcy0+Y29kZWRfY2hh bm5lbHPCoMKgwqDCoCA9ICgoMUxMIDw8IChtYXhfY2hhbm5lbCAtIG1pbl9jaGFubmVsICsgMSkp IC0gMSkgPDwgbWluX2NoYW5uZWw7Cj4+IMKgwqDCoMKgwqAgcy0+bWF4X21hdHJpeF9jaGFubmVs ID0gbWF4X21hdHJpeF9jaGFubmVsOwo+PiAtwqDCoMKgIHMtPm5vaXNlX3R5cGXCoMKgwqDCoMKg wqDCoMKgID0gbm9pc2VfdHlwZTsKPj4gK8KgwqDCoCBzLT5zdWJzdHJlYW1fdHlwZcKgwqDCoMKg ID0gc3luY193b3JkOwo+PiDCoCDCoMKgwqDCoMKgIGlmIChtbHBfY2hhbm5lbF9sYXlvdXRfc3Vi c2V0KCZtLT5kb3dubWl4X2xheW91dCwgcy0+bWFzaykgJiYKPj4gwqDCoMKgwqDCoMKgwqDCoMKg IG0tPm1heF9kZWNvZGVkX3N1YnN0cmVhbSA+IHN1YnN0cikgewo+PiBAQCAtNTk1LDggKzYxOSwy OCBAQCBzdGF0aWMgaW50IHJlYWRfcmVzdGFydF9oZWFkZXIoTUxQRGVjb2RlQ29udGV4dCAqbSwg R2V0Qml0Q29udGV4dCAqZ2JwLAo+PiDCoCDCoMKgwqDCoMKgIHMtPm5vaXNlX3NoaWZ0wqDCoCA9 IGdldF9iaXRzKGdicCzCoCA0KTsKPj4gwqDCoMKgwqDCoCBzLT5ub2lzZWdlbl9zZWVkID0gZ2V0 X2JpdHMoZ2JwLCAyMyk7Cj4+ICvCoMKgwqAgcy0+bWF4X3NoaWZ0wqDCoMKgwqAgPSBnZXRfYml0 cyhnYnAswqAgNCk7Cj4+ICvCoMKgwqAgcy0+bWF4X2xzYnPCoMKgwqDCoMKgID0gZ2V0X2JpdHMo Z2JwLMKgIDUpOwo+PiArwqDCoMKgIHMtPm1heF9iaXRzwqDCoMKgwqDCoCA9IGdldF9iaXRzKGdi cCzCoCA1KTsKPj4gKwo+PiArwqDCoMKgIG1heF9iaXRfZGVwdGggPSAoMHgzMWVjID09IHN5bmNf d29yZCkgPyAzMSA6IDI0Owo+PiArwqDCoMKgIGlmIChtYXhfYml0X2RlcHRoIDwgcy0+bWF4X2xz YnMpIHsKPj4gK8KgwqDCoMKgwqDCoMKgIGF2X2xvZyhtLT5hdmN0eCwgQVZfTE9HX0VSUk9SLAo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiTWF4IExTQiBzaXplICUiIFBSSXU4ICIg Zm9yIHN1YnN0cmVhbSAldSBleGNlZWRzICIKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgIiUiIFBSSXU4ICIgYml0cy5cbiIsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHMtPm1heF9sc2JzLCBzdWJzdHIsIG1heF9iaXRfZGVwdGgpOwo+PiArwqDCoMKgwqDCoMKgwqAg cmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4+ICvCoMKgwqAgfQo+PiDCoCAtwqDCoMKgIHNr aXBfYml0cyhnYnAsIDE5KTsKPj4gK8KgwqDCoCBpZiAobWF4X2JpdF9kZXB0aCA8IHMtPm1heF9i aXRzKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBhdl9sb2cobS0+YXZjdHgsIEFWX0xPR19FUlJPUiwK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIk1heCBvdXRwdXQgYml0LWRlcHRoICUi IFBSSXU4ICIgZm9yIHN1YnN0cmVhbSAldSBleGNlZWRzICIKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgIiUiIFBSSXU4ICIgYml0cy5cbiIsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHMtPm1heF9iaXRzLCBzdWJzdHIsIG1heF9iaXRfZGVwdGgpOwo+PiArwqDCoMKg wqDCoMKgwqAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4+ICvCoMKgwqAgfQo+PiArCj4+ ICvCoMKgwqAgc2tpcF9iaXRzKGdicCwgNSk7Cj4+IMKgIMKgwqDCoMKgwqAgcy0+ZGF0YV9jaGVj a19wcmVzZW50ID0gZ2V0X2JpdHMxKGdicCk7Cj4+IMKgwqDCoMKgwqAgbG9zc2xlc3NfY2hlY2sg PSBnZXRfYml0cyhnYnAsIDgpOwo+PiBAQCAtNjE1LDcgKzY1OSw3IEBAIHN0YXRpYyBpbnQgcmVh ZF9yZXN0YXJ0X2hlYWRlcihNTFBEZWNvZGVDb250ZXh0ICptLCBHZXRCaXRDb250ZXh0ICpnYnAs Cj4+IMKgIMKgwqDCoMKgwqAgZm9yIChjaCA9IDA7IGNoIDw9IHMtPm1heF9tYXRyaXhfY2hhbm5l bDsgY2grKykgewo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgaW50IGNoX2Fzc2lnbiA9IGdldF9iaXRz KGdicCwgNik7Cj4+IC3CoMKgwqDCoMKgwqDCoCBpZiAobS0+YXZjdHgtPmNvZGVjX2lkID09IEFW X0NPREVDX0lEX1RSVUVIRCkgewo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKG0tPmF2Y3R4LT5jb2Rl Y19pZCA9PSBBVl9DT0RFQ19JRF9UUlVFSEQgJiYgcy0+bWFzaykgewo+PiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBBVkNoYW5uZWxMYXlvdXQgbDsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgZW51bSBBVkNoYW5uZWwgY2hhbm5lbCA9IHRoZF9jaGFubmVsX2xheW91dF9leHRyYWN0 X2NoYW5uZWwocy0+bWFzaywgY2hfYXNzaWduKTsKPj4gwqAgQEAgLTY1NiwxMiArNzAwLDE5IEBA IHN0YXRpYyBpbnQgcmVhZF9yZXN0YXJ0X2hlYWRlcihNTFBEZWNvZGVDb250ZXh0ICptLCBHZXRC aXRDb250ZXh0ICpnYnAsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBjcC0+aHVmZl9vZmZzZXTCoMKg wqDCoMKgID0gMDsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGNwLT5zaWduX2h1ZmZfb2Zmc2V0ID0g LSgxIDw8IDIzKTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGNwLT5jb2RlYm9va8KgwqDCoMKgwqDC oMKgwqAgPSAwOwo+PiAtwqDCoMKgwqDCoMKgwqAgY3AtPmh1ZmZfbHNic8KgwqDCoMKgwqDCoMKg ID0gMjQ7Cj4+ICvCoMKgwqDCoMKgwqDCoCBjcC0+aHVmZl9sc2JzwqDCoMKgwqDCoMKgwqAgPSAo MyA9PSBzdWJzdHIpID8gMzEgOiAyNDsKPj4gwqDCoMKgwqDCoCB9Cj4+IMKgIMKgwqDCoMKgwqAg aWYgKHN1YnN0ciA9PSBtLT5tYXhfZGVjb2RlZF9zdWJzdHJlYW0pIHsKPj4gwqDCoMKgwqDCoMKg wqDCoMKgIGF2X2NoYW5uZWxfbGF5b3V0X3VuaW5pdCgmbS0+YXZjdHgtPmNoX2xheW91dCk7Cj4+ IC3CoMKgwqDCoMKgwqDCoCBhdl9jaGFubmVsX2xheW91dF9mcm9tX21hc2soJm0tPmF2Y3R4LT5j aF9sYXlvdXQsIHMtPm1hc2spOwo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKHN1YnN0ciA8IDMpIC8q IExvdWRzcGVha2VyIGZlZWQgY2hhbm5lbHMgKi8KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAg YXZfY2hhbm5lbF9sYXlvdXRfZnJvbV9tYXNrKCZtLT5hdmN0eC0+Y2hfbGF5b3V0LCBzLT5tYXNr KTsKPj4gK8KgwqDCoMKgwqDCoMKgIGVsc2UgLyogT2JqZWN0IGNoYW5uZWxzICovCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIG0tPmF2Y3R4LT5jaF9sYXlvdXQgPSAoQVZDaGFubmVsTGF5b3V0 KSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQVZfQ0hBTk5FTF9PUkRFUl9V TlNQRUMsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcy0+bWF4X2NoYW5uZWwr MQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Owo+PiArCj4+IMKgwqDCoMKgwqDCoMKgwqDC oCBtLT5wYWNrX291dHB1dCA9IG0tPmRzcC5tbHBfc2VsZWN0X3BhY2tfb3V0cHV0KHMtPmNoX2Fz c2lnbiwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBzLT5vdXRwdXRfc2hpZnQsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcy0+bWF4X21hdHJpeF9jaGFubmVsLAo+PiBAQCAt NzYwLDE3ICs4MTEsNDMgQEAgc3RhdGljIGludCByZWFkX2ZpbHRlcl9wYXJhbXMoTUxQRGVjb2Rl Q29udGV4dCAqbSwgR2V0Qml0Q29udGV4dCAqZ2JwLAo+PiDCoMKgwqDCoMKgIHJldHVybiAwOwo+ PiDCoCB9Cj4+IMKgIC0vKiogUmVhZCBwYXJhbWV0ZXJzIGZvciBwcmltaXRpdmUgbWF0cmljZXMu ICovCj4+ICsvKiogR2V0IHRoZSBtYXhpbXVtIG51bWJlciBvZiBwcmltaXRpdmUgbWF0cmljZXMg YWxsb3dlZC4gKi8KPj4gwqAgLXN0YXRpYyBpbnQgcmVhZF9tYXRyaXhfcGFyYW1zKE1MUERlY29k ZUNvbnRleHQgKm0sIHVuc2lnbmVkIGludCBzdWJzdHIsIEdldEJpdENvbnRleHQgKmdicCkKPj4g K3N0YXRpYyBpbnQgZ2V0X21heF9uYl9wcmltaXRpdmVfbWF0cmljZXMoTUxQRGVjb2RlQ29udGV4 dCAqbSwgdW5zaWduZWQgaW50IHN1YnN0cikKPj4gK3sKPj4gK8KgwqDCoCBzd2l0Y2ggKHN1YnN0 cikgewo+PiArwqDCoMKgIGNhc2UgMDogLy8gc3Vic3RyZWFtIDAgKHVwIHRvIDIgbWF0cml4IGNo YW5uZWxzKQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIDI7Cj4+ICvCoMKgwqAgY2FzZSAxOiAv LyBzdWJzdHJlYW0gMQo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKG0tPnN1YnN0cmVhbV9pbmZvICYg MHg4KSAvLyA2LWNoIHByZXMgY2FycmllZAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1 cm4gNjsKPj4gK8KgwqDCoMKgwqDCoMKgIGlmIChtLT5zdWJzdHJlYW1faW5mbyAmIDB4MjApIC8v IDgtY2ggcHJlcyBjYXJyaWVkCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiA4Owo+ PiArwqDCoMKgwqDCoMKgwqAgYnJlYWs7Cj4+ICvCoMKgwqAgY2FzZSAyOiAvLyBzdWJzdHJlYW0g Mgo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKG0tPnN1YnN0cmVhbV9pbmZvICYgMHg0MCkgLy8gOC1j aCBwcmVzIGNhcnJpZWQKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIDg7Cj4+ICvC oMKgwqDCoMKgwqDCoCBicmVhazsKPj4gK8KgwqDCoCBjYXNlIDM6IC8vIHN1YnN0cmVhbSAzCj4+ ICvCoMKgwqDCoMKgwqDCoCBpZiAobS0+c3Vic3RyZWFtX2luZm8gJiA4MCkgLy8gMTYtY2ggcHJl cyBjYXJyaWVkCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAxNjsKPj4gK8KgwqDC oMKgwqDCoMKgIGJyZWFrOwo+PiArwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgIHJldHVybiBNQVhf TUFUUklDRVNfVFJVRUhEOwo+PiArfQo+PiArCj4+ICsvKiogUmVhZCBwYXJhbWV0ZXJzIGZvciBw cmltaXRpdmUgbWF0cmljZXMgKDB4MzFlYSBhbmQgMHgzMWViIHN1YnN0cmVhbXMpLiAqLwo+PiAr Cj4+ICtzdGF0aWMgaW50IHJlYWRfMzFlYV8zMWViX21hdHJpeF9wYXJhbXMoTUxQRGVjb2RlQ29u dGV4dCAqbSwgdW5zaWduZWQgaW50IHN1YnN0ciwgR2V0Qml0Q29udGV4dCAqZ2JwKQo+PiDCoCB7 Cj4+IMKgwqDCoMKgwqAgU3ViU3RyZWFtICpzID0gJm0tPnN1YnN0cmVhbVtzdWJzdHJdOwo+PiDC oMKgwqDCoMKgIHVuc2lnbmVkIGludCBtYXQsIGNoOwo+PiDCoMKgwqDCoMKgIGNvbnN0IGludCBt YXhfcHJpbWl0aXZlX21hdHJpY2VzID0gbS0+YXZjdHgtPmNvZGVjX2lkID09IEFWX0NPREVDX0lE X01MUAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgID8gTUFYX01BVFJJQ0VTX01MUAo+PiAtwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIDogTUFYX01BVFJJQ0VTX1RSVUVIRDsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA6IGdl dF9tYXhfbmJfcHJpbWl0aXZlX21hdHJpY2VzKG0sIHN1YnN0cik7Cj4+IMKgIC3CoMKgwqAgaWYg KG0tPm1hdHJpeF9jaGFuZ2VkKysgPiAxKSB7Cj4+ICvCoMKgwqAgaWYgKCsrbS0+bWF0cml4X2No YW5nZWQgPiAxKSB7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBhdl9sb2cobS0+YXZjdHgsIEFWX0xP R19FUlJPUiwgIk1hdHJpY2VzIG1heSBjaGFuZ2Ugb25seSBvbmNlIHBlciBhY2Nlc3MgdW5pdC5c biIpOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4+ IMKgwqDCoMKgwqAgfQo+PiBAQCAtNzc5LDggKzg1Niw5IEBAIHN0YXRpYyBpbnQgcmVhZF9tYXRy aXhfcGFyYW1zKE1MUERlY29kZUNvbnRleHQgKm0sIHVuc2lnbmVkIGludCBzdWJzdHIsIEdldEJp dENvCj4+IMKgIMKgwqDCoMKgwqAgaWYgKHMtPm51bV9wcmltaXRpdmVfbWF0cmljZXMgPiBtYXhf cHJpbWl0aXZlX21hdHJpY2VzKSB7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBhdl9sb2cobS0+YXZj dHgsIEFWX0xPR19FUlJPUiwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIk51bWJl ciBvZiBwcmltaXRpdmUgbWF0cmljZXMgY2Fubm90IGJlIGdyZWF0ZXIgdGhhbiAlZC5cbiIsCj4+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1heF9wcmltaXRpdmVfbWF0cmljZXMpOwo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiTnVtYmVyIG9mIHByaW1pdGl2ZSBtYXRy aWNlcyBjYW5ub3QgYmUgZ3JlYXRlciB0aGFuICVkICIKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgImZvciBzdWJzdHJlYW0gJXUgb2YgdHlwZSAweCUwNHguXG4iLAo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtYXhfcHJpbWl0aXZlX21hdHJpY2VzLCBzdWJzdHIsIHMt PnN1YnN0cmVhbV90eXBlKTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gZXJyb3I7Cj4+IMKg wqDCoMKgwqAgfQo+PiDCoCBAQCAtODAzLDcgKzg4MSw3IEBAIHN0YXRpYyBpbnQgcmVhZF9tYXRy aXhfcGFyYW1zKE1MUERlY29kZUNvbnRleHQgKm0sIHVuc2lnbmVkIGludCBzdWJzdHIsIEdldEJp dENvCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+IMKgIMKgwqDCoMKgwqDCoMKgwqDCoCBtYXhf Y2hhbiA9IHMtPm1heF9tYXRyaXhfY2hhbm5lbDsKPj4gLcKgwqDCoMKgwqDCoMKgIGlmICghcy0+ bm9pc2VfdHlwZSkKPj4gK8KgwqDCoMKgwqDCoMKgIGlmICgweDMxZWEgPT0gcy0+c3Vic3RyZWFt X3R5cGUpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1heF9jaGFuKz0yOwo+PiDCoCDC oMKgwqDCoMKgwqDCoMKgwqAgZm9yIChjaCA9IDA7IGNoIDw9IG1heF9jaGFuOyBjaCsrKSB7Cj4+ IEBAIC04MTEsMTAgKzg4OSwxMCBAQCBzdGF0aWMgaW50IHJlYWRfbWF0cml4X3BhcmFtcyhNTFBE ZWNvZGVDb250ZXh0ICptLCB1bnNpZ25lZCBpbnQgc3Vic3RyLCBHZXRCaXRDbwo+PiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoZ2V0X2JpdHMxKGdicCkpCj4+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgY29lZmZfdmFsID0gZ2V0X3NiaXRzKGdicCwgZnJhY19iaXRz ICsgMik7Cj4+IMKgIC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHMtPm1hdHJpeF9jb2VmZlttYXRd W2NoXSA9IGNvZWZmX3ZhbCAqICgxIDw8ICgxNCAtIGZyYWNfYml0cykpOwo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBzLT5tYXRyaXhfY29lZmZbbWF0XVtjaF0gPSBjb2VmZl92YWwgKiAoMSA8 PCAoKDE0ICsgNCkgLSBmcmFjX2JpdHMpKTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4gwqAg LcKgwqDCoMKgwqDCoMKgIGlmIChzLT5ub2lzZV90eXBlKQo+PiArwqDCoMKgwqDCoMKgwqAgaWYg KDB4MzFlYiA9PSBzLT5zdWJzdHJlYW1fdHlwZSkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgcy0+bWF0cml4X25vaXNlX3NoaWZ0W21hdF0gPSBnZXRfYml0cyhnYnAsIDQpOwo+PiDCoMKg wqDCoMKgwqDCoMKgwqAgZWxzZQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzLT5tYXRy aXhfbm9pc2Vfc2hpZnRbbWF0XSA9IDA7Cj4+IEBAIC04MjgsNiArOTA2LDEyNCBAQCBlcnJvcjoK Pj4gwqDCoMKgwqDCoCByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPj4gwqAgfQo+PiDCoCAr LyoqIFJlYWQgcGFyYW1ldGVycyBmb3IgcHJpbWl0aXZlIG1hdHJpY2VzICgweDMxZWMgc3Vic3Ry ZWFtcykuICovCj4+ICsKPj4gK3N0YXRpYyBpbnQgcmVhZF8zMWVjX21hdHJpeF9wYXJhbXMoTUxQ RGVjb2RlQ29udGV4dCAqbSwgdW5zaWduZWQgaW50IHN1YnN0ciwgR2V0Qml0Q29udGV4dCAqZ2Jw KQo+PiArewo+PiArwqDCoMKgIFN1YlN0cmVhbSAqcyA9ICZtLT5zdWJzdHJlYW1bc3Vic3RyXTsK Pj4gK8KgwqDCoCB1bnNpZ25lZCBpbnQgbWF0LCBjaDsKPj4gKwo+PiArwqDCoMKgIGNvbnN0IGlu dCBtYXhfcHJpbWl0aXZlX21hdHJpY2VzID0gZ2V0X21heF9uYl9wcmltaXRpdmVfbWF0cmljZXMo bSwgc3Vic3RyKTsKPj4gKwo+PiArwqDCoMKgIGlmICgrK20tPm1hdHJpeF9jaGFuZ2VkID4gMSkg ewo+PiArwqDCoMKgwqDCoMKgwqAgYXZfbG9nKG0tPmF2Y3R4LCBBVl9MT0dfRVJST1IsICJNYXRy aWNlcyBtYXkgY2hhbmdlIG9ubHkgb25jZSBwZXIgYWNjZXNzIHVuaXQuXG4iKTsKPj4gK8KgwqDC oMKgwqDCoMKgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+PiArwqDCoMKgIH0KPj4gKwo+ PiArwqDCoMKgIC8qIFNlZWQgcHJpbWl0aXZlIG1hdHJpY2VzICovCj4+ICsKPj4gK8KgwqDCoCBp ZiAoZ2V0X2JpdHMxKGdicCkpIHsKPj4gK8KgwqDCoMKgwqDCoMKgIC8qIE5ldyBzZWVkIHByaW1p dGl2ZSBtYXRyaWNlcyAqLwo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoZ2V0X2JpdHMxKGdi cCkpIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogTmV3IHNlZWQgbWF0cmljZXMgcGFy YW1ldGVycyAqLwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzLT5udW1fcHJpbWl0aXZlX21h dHJpY2VzID0gZ2V0X2JpdHMoZ2JwLCA0KSArIDE7Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgaWYgKHMtPm51bV9wcmltaXRpdmVfbWF0cmljZXMgPiBtYXhfcHJpbWl0aXZlX21hdHJp Y2VzKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXZfbG9nKG0tPmF2Y3R4 LCBBVl9MT0dfRVJST1IsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAiTnVtYmVyIG9mIHByaW1pdGl2ZSBtYXRyaWNlcyBjYW5ub3QgYmUgZ3JlYXRlciB0aGFuICVk ICIKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJpbiBzdWJzdHJl YW0gJXUgb2YgdHlwZSAweCUwNHguXG4iLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgbWF4X3ByaW1pdGl2ZV9tYXRyaWNlcywgc3Vic3RyLCBzLT5zdWJzdHJlYW1f dHlwZSk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBlcnJvcjsKPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGZvciAobWF0ID0gMDsgbWF0IDwgcy0+bnVtX3ByaW1pdGl2ZV9tYXRyaWNlczsgbWF0KyspIHsK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzLT5tYXRyaXhfb3V0X2NowqDCoMKg wqDCoMKgwqDCoCBbbWF0XSA9IGdldF9iaXRzKGdicCwgNCk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgcy0+bWF0cml4X2NvZWZmX2ZyYWNfYml0c1ttYXRdID0gZ2V0X2JpdHMo Z2JwLCA0KTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzLT5tYXRyaXhfY29l ZmZfc2hpZnTCoMKgwqAgW21hdF0gPSAoKGludCkgZ2V0X2JpdHMoZ2JwLCAzKSkgLSAxOwo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHMtPmxzYl9ieXBhc3PCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIFttYXRdID0gZ2V0X2JpdHMoZ2JwLCAyKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBzLT5tYXRyaXhfbm9pc2Vfc2hpZnTCoMKgwqAgW21hdF0gPSBnZXRfYml0 cyhnYnAsIDQpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHMtPm1hdHJpeF9j b2VmZl9tYXNrwqDCoMKgwqAgW21hdF0gPSBnZXRfYml0cyhnYnAsIHMtPm1heF9tYXRyaXhfY2hh bm5lbCArIDEpOwo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHMt Pm1hdHJpeF9vdXRfY2hbbWF0XSA+IHMtPm1heF9tYXRyaXhfY2hhbm5lbCkgewo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXZfbG9nKG0tPmF2Y3R4LCBBVl9MT0df RVJST1IsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgIkludmFsaWQgY2hhbm5lbCAlZCBzcGVjaWZpZWQgYXMgb3V0cHV0IGZyb20gbWF0 cml4LlxuIiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBzLT5tYXRyaXhfb3V0X2NoW21hdF0pOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBlcnJvcjsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHMtPm1h dHJpeF9jb2VmZl9mcmFjX2JpdHNbbWF0XSA+IDE0KSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBhdl9sb2cobS0+YXZjdHgsIEFWX0xPR19FUlJPUiwKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiVG9v IG1hbnkgZnJhY3Rpb25hbCBiaXRzIHNwZWNpZmllZC5cbiIpOwo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBlcnJvcjsKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4gK8KgwqDCoMKg wqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgwqDCoMKgwqAgLyogU2VlZCBtYXRyaWNlcyBjb2VmZmlj aWVudHMgKi8KPj4gK8KgwqDCoMKgwqDCoMKgIGZvciAobWF0ID0gMDsgbWF0IDwgcy0+bnVtX3By aW1pdGl2ZV9tYXRyaWNlczsgbWF0KyspIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29u c3QgaW50IGNvZWZmX3NoaWZ0ID0gcy0+bWF0cml4X2NvZWZmX3NoaWZ0W21hdF0KPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAtIHMtPm1hdHJpeF9jb2VmZl9mcmFjX2JpdHNbbWF0 XTsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtZW1zZXQocy0+bWF0cml4X2NvZWZm W21hdF0sIDAsIHNpemVvZihzLT5tYXRyaXhfY29lZmZbbWF0XSkpOwo+PiArCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGZvciAoY2ggPSAwOyBjaCA8PSBzLT5tYXhfbWF0cml4X2NoYW5uZWw7 IGNoKyspIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQ2NF90IGNvZWZm X3ZhbDsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICghKChzLT5t YXRyaXhfY29lZmZfbWFza1ttYXRdID4+IGNoKSAmIDB4MSkpCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb250aW51ZTsgLy8gc2tpcCBjaGFubmVsCj4+ICsKPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb2VmZl92YWwgPSBnZXRfc2JpdHMoZ2Jw LCBzLT5tYXRyaXhfY29lZmZfZnJhY19iaXRzW21hdF0gKyAyKTsKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBzLT5tYXRyaXhfY29lZmZbbWF0XVtjaF0gPSBjb2VmZl92YWwgKiAo MSA8PCAoMTggKyBjb2VmZl9zaGlmdCkpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+ ICvCoMKgwqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqAgaWYgKCFnZXRf Yml0czEoZ2JwKSkgewo+PiArwqDCoMKgwqDCoMKgwqAgLyogTm8gcHJpbWl0aXZlIG1hdHJpY2Vz IGludGVycG9sYXRpb24gKi8KPj4gK8KgwqDCoMKgwqDCoMKgIG1lbXNldChzLT5kZWx0YV9tYXRy aXhfY29lZmYsIDAsIHNpemVvZihzLT5kZWx0YV9tYXRyaXhfY29lZmYpKTsKPj4gK8KgwqDCoCB9 Cj4+ICvCoMKgwqAgZWxzZSBpZiAoZ2V0X2JpdHMxKGdicCkpIHsKPj4gK8KgwqDCoMKgwqDCoMKg IC8qIE5ldyBkZWx0YSBwcmltaXRpdmUgbWF0cmljZXMgKi8KPj4gKwo+PiArwqDCoMKgwqDCoMKg wqAgaWYgKGdldF9iaXRzMShnYnApKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIE5l dyBkZWx0YSBwcmltaXRpdmUgbWF0cmljZXMgcGFyYW1ldGVycyAqLwo+PiArCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGZvciAobWF0ID0gMDsgbWF0IDwgcy0+bnVtX3ByaW1pdGl2ZV9tYXRy aWNlczsgbWF0KyspIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzLT5kZWx0 YV9tYXRyaXhfY29lZmZfYml0c1ttYXRdID0gZ2V0X2JpdHMoZ2JwLCA0KSArIDE7Cj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcy0+ZGVsdGFfbWF0cml4X2NvZWZmX3ByZWNbbWF0 XSA9IGdldF9iaXRzKGdicCwgMik7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4gK8Kg wqDCoMKgwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgwqDCoMKgwqAgZm9yIChtYXQgPSAwOyBtYXQg PCBzLT5udW1fcHJpbWl0aXZlX21hdHJpY2VzOyBtYXQrKykgewo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBjb25zdCBpbnQgY29lZmZfc2hpZnQgPSBzLT5tYXRyaXhfY29lZmZfc2hpZnRbbWF0 XQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC0gcy0+ZGVsdGFfbWF0cml4X2Nv ZWZmX3ByZWNbbWF0XQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC0gcy0+bWF0 cml4X2NvZWZmX2ZyYWNfYml0c1ttYXRdOwo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IG1lbXNldChzLT5kZWx0YV9tYXRyaXhfY29lZmZbbWF0XSwgMCwgc2l6ZW9mKHMtPmRlbHRhX21h dHJpeF9jb2VmZlttYXRdKSk7Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHMt PmRlbHRhX21hdHJpeF9jb2VmZl9iaXRzW21hdF0gPD0gMSkKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBjb250aW51ZTsgLy8gc2tpcCBtYXRyaWNlCj4+ICsKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgZm9yIChjaCA9IDA7IGNoIDw9IHMtPm1heF9tYXRyaXhfY2hhbm5lbDsg Y2grKykgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludDY0X3QgY29lZmZf dmFsOwo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKCEoKHMtPm1h dHJpeF9jb2VmZl9tYXNrW21hdF0gPj4gY2gpICYgMHgxKSkKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnRpbnVlOyAvLyBza2lwIGNoYW5uZWwKPj4gKwo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvZWZmX3ZhbCA9IGdldF9zYml0cyhnYnAs IHMtPmRlbHRhX21hdHJpeF9jb2VmZl9iaXRzW21hdF0pOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHMtPmRlbHRhX21hdHJpeF9jb2VmZlttYXRdW2NoXSA9IGNvZWZmX3ZhbCAq ICgxIDw8ICgxOCArIGNvZWZmX3NoaWZ0KSk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0K Pj4gK8KgwqDCoMKgwqDCoMKgIH0KPj4gK8KgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoCByZXR1cm4g MDsKPj4gK2Vycm9yOgo+PiArwqDCoMKgIHMtPm51bV9wcmltaXRpdmVfbWF0cmljZXMgPSAwOwo+ PiArwqDCoMKgIG1lbXNldChzLT5tYXRyaXhfb3V0X2NoLCAwLCBzaXplb2Yocy0+bWF0cml4X291 dF9jaCkpOwo+PiArCj4+ICvCoMKgwqAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4+ICt9 Cj4+ICsKPj4gwqAgLyoqIFJlYWQgY2hhbm5lbCBwYXJhbWV0ZXJzLiAqLwo+PiDCoCDCoCBzdGF0 aWMgaW50IHJlYWRfY2hhbm5lbF9wYXJhbXMoTUxQRGVjb2RlQ29udGV4dCAqbSwgdW5zaWduZWQg aW50IHN1YnN0ciwKPj4gQEAgLTg3NSw4ICsxMDcxLDEwIEBAIHN0YXRpYyBpbnQgcmVhZF9jaGFu bmVsX3BhcmFtcyhNTFBEZWNvZGVDb250ZXh0ICptLCB1bnNpZ25lZCBpbnQgc3Vic3RyLAo+PiDC oMKgwqDCoMKgIGNwLT5jb2RlYm9va8KgID0gZ2V0X2JpdHMoZ2JwLCAyKTsKPj4gwqDCoMKgwqDC oCBjcC0+aHVmZl9sc2JzID0gZ2V0X2JpdHMoZ2JwLCA1KTsKPj4gwqAgLcKgwqDCoCBpZiAoY3At PmNvZGVib29rID4gMCAmJiBjcC0+aHVmZl9sc2JzID4gMjQpIHsKPj4gLcKgwqDCoMKgwqDCoMKg IGF2X2xvZyhtLT5hdmN0eCwgQVZfTE9HX0VSUk9SLCAiSW52YWxpZCBodWZmX2xzYnMuXG4iKTsK Pj4gK8KgwqDCoCBpZiAoY3AtPmNvZGVib29rID4gMCAmJiBjcC0+aHVmZl9sc2JzID4gcy0+bWF4 X2xzYnMpIHsKPj4gK8KgwqDCoMKgwqDCoMKgIGF2X2xvZyhtLT5hdmN0eCwgQVZfTE9HX0VSUk9S LCAiSW52YWxpZCBodWZmX2xzYnM9JSIgUFJJdTggIiwgIgo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAiZXhjZWVkcyBtYXhfbHNicz0lIiBQUkl1OCAiLlxuIiwKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgY3AtPmh1ZmZfbHNicywgcy0+bWF4X2xzYnMpOwo+PiDCoMKg wqDCoMKgwqDCoMKgwqAgY3AtPmh1ZmZfbHNicyA9IDA7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBy ZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPj4gwqDCoMKgwqDCoCB9Cj4+IEBAIC05MTAsOSAr MTEwOCwxNCBAQCBzdGF0aWMgaW50IHJlYWRfZGVjb2RpbmdfcGFyYW1zKE1MUERlY29kZUNvbnRl eHQgKm0sIEdldEJpdENvbnRleHQgKmdicCwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4gwqAg wqDCoMKgwqDCoCBpZiAocy0+cGFyYW1fcHJlc2VuY2VfZmxhZ3MgJiBQQVJBTV9NQVRSSVgpCj4+ IC3CoMKgwqDCoMKgwqDCoCBpZiAoZ2V0X2JpdHMxKGdicCkpCj4+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGlmICgocmV0ID0gcmVhZF9tYXRyaXhfcGFyYW1zKG0sIHN1YnN0ciwgZ2JwKSkgPCAw KQo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKGdldF9iaXRzMShnYnApKSB7Cj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGlmICgweDMxZWMgPT0gcy0+c3Vic3RyZWFtX3R5cGUpCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0ID0gcmVhZF8zMWVjX21hdHJpeF9wYXJhbXMobSwg c3Vic3RyLCBnYnApOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbHNlCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0ID0gcmVhZF8zMWVhXzMxZWJfbWF0cml4X3BhcmFt cyhtLCBzdWJzdHIsIGdicCk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChyZXQgPCAw KQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7Cj4+ICvC oMKgwqDCoMKgwqDCoCB9Cj4+IMKgIMKgwqDCoMKgwqAgaWYgKHMtPnBhcmFtX3ByZXNlbmNlX2Zs YWdzICYgUEFSQU1fT1VUU0hJRlQpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoZ2V0X2JpdHMx KGdicCkpIHsKPj4gQEAgLTkyMiw2ICsxMTI1LDEwIEBAIHN0YXRpYyBpbnQgcmVhZF9kZWNvZGlu Z19wYXJhbXMoTUxQRGVjb2RlQ29udGV4dCAqbSwgR2V0Qml0Q29udGV4dCAqZ2JwLAo+PiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXZwcml2X3JlcXVlc3Rfc2Ft cGxlKG0tPmF2Y3R4LCAiTmVnYXRpdmUgb3V0cHV0X3NoaWZ0Iik7Cj4+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzLT5vdXRwdXRfc2hpZnRbY2hdID0gMDsKPj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgaWYgKHMtPm1heF9zaGlmdCA8IHMtPm91dHB1dF9zaGlmdFtjaF0pCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhdl9sb2cobS0+YXZjdHgs IEFWX0xPR19XQVJOSU5HLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAib3V0cHV0X3NoaWZ0PSVkIGV4Y2VlZHMgbWF4X3NoaWZ0PSVkXG4i LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBzLT5vdXRwdXRfc2hpZnRbY2hdLCBzLT5tYXhfc2hpZnQpOwo+PiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB9Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChzdWJzdHIgPT0g bS0+bWF4X2RlY29kZWRfc3Vic3RyZWFtKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIG0tPnBhY2tfb3V0cHV0ID0gbS0+ZHNwLm1scF9zZWxlY3RfcGFja19vdXRwdXQocy0+ Y2hfYXNzaWduLAo+PiBAQCAtMTEwMyw2ICsxMzEwLDU2IEBAIHN0YXRpYyB2b2lkIGZpbGxfbm9p c2VfYnVmZmVyKE1MUERlY29kZUNvbnRleHQgKm0sIHVuc2lnbmVkIGludCBzdWJzdHIpCj4+IMKg wqDCoMKgwqAgcy0+bm9pc2VnZW5fc2VlZCA9IHNlZWQ7Cj4+IMKgIH0KPj4gwqAgKyNpZiBkZWZp bmVkKEFTU0VSVF9MRVZFTCkgJiYgQVNTRVJUX0xFVkVMID49IDIKPj4gKwo+PiArLyoqIENoZWNr IG1hdHJpY2VzLWJhc2VkIGNoYW5uZWwgcmVtYXBwaW5nIG91dHB1dCBmb3Igc2F0dXJhdGlvbi4g Ki8KPj4gKwo+PiArc3RhdGljIHZvaWQgY2hlY2tfcmVtYXRyaXhfb3V0cHV0KE1MUERlY29kZUNv bnRleHQgKm0sIHVuc2lnbmVkIGludCBzdWJzdHIpCj4+ICt7Cj4+ICvCoMKgwqAgU3ViU3RyZWFt ICpzID0gJm0tPnN1YnN0cmVhbVtzdWJzdHJdOwo+PiArwqDCoMKgIHVuc2lnbmVkIGludCBtYXQs IHNhbXBsZTsKPj4gKwo+PiArwqDCoMKgIGZvciAobWF0ID0gMDsgbWF0IDwgcy0+bnVtX3ByaW1p dGl2ZV9tYXRyaWNlczsgbWF0KyspIHsKPj4gK8KgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGludCBk ZXN0X2NoID0gcy0+bWF0cml4X291dF9jaFttYXRdOwo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoCBj b25zdCB1aW50OF90IHNoaWZ0ID0gKDMgPD0gc3Vic3RyICYmIHMtPm1pbl9jaGFubmVsIDw9IGRl c3RfY2gpID8gMzEgOiAyMzsKPj4gK8KgwqDCoMKgwqDCoMKgIGNvbnN0IGludDMyX3QgbWluX3Zh bHVlID0gLSgxdSA8PCBzaGlmdCk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBjb25zdCBpbnQzMl90IG1h eF92YWx1ZSA9wqAgKDF1IDw8IHNoaWZ0KSAtIDE7Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgIGZv ciAoc2FtcGxlID0gMDsgc2FtcGxlIDwgcy0+YmxvY2twb3M7IHNhbXBsZSsrKSB7Cj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGlmIChtLT5zYW1wbGVfYnVmZmVyW3NhbXBsZV1bZGVzdF9jaF0g PCBtaW5fdmFsdWUpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXZfbG9nKG0t PmF2Y3R4LCBBVl9MT0dfV0FSTklORywKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICJyZW1hdHJpeCBuZWdhdGl2ZSBzYXR1cmF0aW9uIHN1YnN0cj0ldSBtYXQ9JXUg c2FtcGxlPSVkICIKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJ2 YWx1ZT0lIiBQUklkMzIgIlxuIiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHN1YnN0ciwgbWF0LCBzYW1wbGUsIG0tPnNhbXBsZV9idWZmZXJbc2FtcGxlXVtkZXN0 X2NoXSk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChtLT5zYW1wbGVfYnVmZmVyW3Nh bXBsZV1bZGVzdF9jaF0gPiBtYXhfdmFsdWUpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgYXZfbG9nKG0tPmF2Y3R4LCBBVl9MT0dfV0FSTklORywKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJyZW1hdHJpeCBwb3NpdGl2ZSBzYXR1cmF0aW9uIHN1 YnN0cj0ldSBtYXQ9JXUgc2FtcGxlPSVkICIKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgICJ2YWx1ZT0lIiBQUklkMzIgIlxuIiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN1YnN0ciwgbWF0LCBzYW1wbGUsIG0tPnNhbXBsZV9idWZm ZXJbc2FtcGxlXVtkZXN0X2NoXSk7Cj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqAgfQo+ PiArfQo+PiArCj4+ICsvKiogQ2hlY2sgb3V0cHV0IGF1ZGlvIGJpdC1kZXB0aC4gKi8KPj4gKwo+ PiArc3RhdGljIHZvaWQgY2hlY2tfb3V0cHV0X2JpdF9kZXB0aChNTFBEZWNvZGVDb250ZXh0ICpt LCB1bnNpZ25lZCBpbnQgc3Vic3RyKQo+PiArewo+PiArwqDCoMKgIFN1YlN0cmVhbSAqcyA9ICZt LT5zdWJzdHJlYW1bc3Vic3RyXTsKPj4gK8KgwqDCoCB1aW50MzJfdCBjdW11bF9tYXNrID0gMDsK Pj4gK8KgwqDCoCB1bnNpZ25lZCBpbnQgY2hhbiwgc2FtcGxlOwo+PiArCj4+ICvCoMKgwqAgZm9y IChjaGFuID0gMDsgY2hhbiA8PSBzLT5tYXhfbWF0cml4X2NoYW5uZWw7IGNoYW4rKykKPj4gK8Kg wqDCoMKgwqDCoMKgIGZvciAoc2FtcGxlID0gMDsgc2FtcGxlIDwgcy0+YmxvY2twb3M7IHNhbXBs ZSsrKQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjdW11bF9tYXNrIHw9IEZGQUJTKG0tPnNh bXBsZV9idWZmZXJbc2FtcGxlXVtjaGFuXSk7Cj4+ICsKPj4gK8KgwqDCoCBpZiAoKDF1IDw8IHMt Pm1heF9iaXRzKSA8PSBjdW11bF9tYXNrKQo+PiArwqDCoMKgwqDCoMKgwqAgYXZfbG9nKG0tPmF2 Y3R4LCBBVl9MT0dfV0FSTklORywgIm91dHB1dCBhdWRpbyBiaXQtZGVwdGggZXhjZWVkcyAiCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJleHBlY3RlZCAldSBiaXRzLlxuIiwKPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcy0+bWF4X2JpdHMpOwo+PiArfQo+PiArI2Vu ZGlmCj4+ICsKPj4gwqAgLyoqIFdyaXRlIHRoZSBhdWRpbyBkYXRhIGludG8gdGhlIG91dHB1dCBi dWZmZXIuICovCj4+IMKgIMKgIHN0YXRpYyBpbnQgb3V0cHV0X2RhdGEoTUxQRGVjb2RlQ29udGV4 dCAqbSwgdW5zaWduZWQgaW50IHN1YnN0ciwKPj4gQEAgLTExMTAsOCArMTM2Nyw3IEBAIHN0YXRp YyBpbnQgb3V0cHV0X2RhdGEoTUxQRGVjb2RlQ29udGV4dCAqbSwgdW5zaWduZWQgaW50IHN1YnN0 ciwKPj4gwqAgewo+PiDCoMKgwqDCoMKgIEFWQ29kZWNDb250ZXh0ICphdmN0eCA9IG0tPmF2Y3R4 Owo+PiDCoMKgwqDCoMKgIFN1YlN0cmVhbSAqcyA9ICZtLT5zdWJzdHJlYW1bc3Vic3RyXTsKPj4g LcKgwqDCoCB1bnNpZ25lZCBpbnQgbWF0Owo+PiAtwqDCoMKgIHVuc2lnbmVkIGludCBtYXhjaGFu Owo+PiArwqDCoMKgIHVuc2lnbmVkIGludCBtYXQsIGNoYW4sIG1heGNoYW47Cj4+IMKgwqDCoMKg wqAgaW50IHJldDsKPj4gwqDCoMKgwqDCoCBpbnQgaXMzMiA9IChtLT5hdmN0eC0+c2FtcGxlX2Zt dCA9PSBBVl9TQU1QTEVfRk1UX1MzMik7Cj4+IMKgIEBAIC0xMTI2LDcgKzEzODIsNyBAQCBzdGF0 aWMgaW50IG91dHB1dF9kYXRhKE1MUERlY29kZUNvbnRleHQgKm0sIHVuc2lnbmVkIGludCBzdWJz dHIsCj4+IMKgwqDCoMKgwqAgfQo+PiDCoCDCoMKgwqDCoMKgIG1heGNoYW4gPSBzLT5tYXhfbWF0 cml4X2NoYW5uZWw7Cj4+IC3CoMKgwqAgaWYgKCFzLT5ub2lzZV90eXBlKSB7Cj4+ICvCoMKgwqAg aWYgKDB4MzFlYSA9PSBzLT5zdWJzdHJlYW1fdHlwZSkgewo+PiDCoMKgwqDCoMKgwqDCoMKgwqAg Z2VuZXJhdGVfMl9ub2lzZV9jaGFubmVscyhtLCBzdWJzdHIpOwo+PiDCoMKgwqDCoMKgwqDCoMKg wqAgbWF4Y2hhbiArPSAyOwo+PiDCoMKgwqDCoMKgIH0gZWxzZSB7Cj4+IEBAIC0xMTM3LDE5ICsx MzkzLDQ1IEBAIHN0YXRpYyBpbnQgb3V0cHV0X2RhdGEoTUxQRGVjb2RlQ29udGV4dCAqbSwgdW5z aWduZWQgaW50IHN1YnN0ciwKPj4gwqDCoMKgwqDCoMKgICogc2FtcGxlcy4gKi8KPj4gwqDCoMKg wqDCoCBmb3IgKG1hdCA9IDA7IG1hdCA8IHMtPm51bV9wcmltaXRpdmVfbWF0cmljZXM7IG1hdCsr KSB7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBpbnQgZGVzdF9jaCA9IHMtPm1hdHJp eF9vdXRfY2hbbWF0XTsKPj4gLcKgwqDCoMKgwqDCoMKgIG0tPmRzcC5tbHBfcmVtYXRyaXhfY2hh bm5lbCgmbS0+c2FtcGxlX2J1ZmZlclswXVswXSwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcy0+bWF0cml4 X2NvZWZmW21hdF0sCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZtLT5ieXBhc3NlZF9sc2JzWzBdW21hdF0s Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIG0tPm5vaXNlX2J1ZmZlciwKPj4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcy0+ bnVtX3ByaW1pdGl2ZV9tYXRyaWNlcyAtIG1hdCwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGVzdF9jaCwK Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgcy0+YmxvY2twb3MsCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1heGNoYW4s Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHMtPm1hdHJpeF9ub2lzZV9zaGlmdFttYXRdLAo+PiAtwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBtLT5hY2Nlc3NfdW5pdF9zaXplX3BvdzIsCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIE1TQl9N QVNLKHMtPnF1YW50X3N0ZXBfc2l6ZVtkZXN0X2NoXSkpOwo+PiArCj4+ICvCoMKgwqDCoMKgwqDC oCBpZiAoc3Vic3RyIDwgMykgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBTaW5nbGUg cHJpbWl0aXZlIG1hdHJpY2VzICovCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG0tPmRzcC5t bHBfcmVtYXRyaXhfY2hhbm5lbCgmbS0+c2FtcGxlX2J1ZmZlclswXVswXSwKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBzLT5tYXRyaXhfY29lZmZbbWF0XSwKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAmbS0+YnlwYXNzZWRfbHNic1swXVttYXRdLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IG0tPm5vaXNlX2J1ZmZlciwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzLT5udW1fcHJpbWl0 aXZlX21hdHJpY2VzIC0gbWF0LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRlc3RfY2gsCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcy0+YmxvY2twb3MsCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgbWF4Y2hhbiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzLT5tYXRyaXhfbm9pc2Vf c2hpZnRbbWF0XSwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtLT5hY2Nlc3NfdW5pdF9zaXpl X3BvdzIsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgTVNCX01BU0socy0+cXVhbnRfc3RlcF9z aXplW2Rlc3RfY2hdKSk7Cj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqDCoMKgwqDCoCBl bHNlIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogSW50ZXJwb2xhdGVkIHByaW1pdGl2 ZSBtYXRyaWNlcyAqLwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtLT5kc3AubWxwX3JlbWF0 cml4X2ludGVycF9jaGFubmVsKCZtLT5zYW1wbGVfYnVmZmVyWzBdWzBdLAo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcy0+bWF0cml4X2NvZWZmW21hdF0sCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzLT5kZWx0YV9tYXRyaXhfY29lZmZbbWF0 XSwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZtLT5ieXBhc3NlZF9s c2JzWzBdW21hdF0sCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtLT5u b2lzZV9idWZmZXIsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzLT5u dW1fcHJpbWl0aXZlX21hdHJpY2VzIC0gbWF0LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgZGVzdF9jaCwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHMtPmJsb2NrcG9zLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg bWF4Y2hhbiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHMtPm1hdHJp eF9ub2lzZV9zaGlmdFttYXRdLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgbS0+YWNjZXNzX3VuaXRfc2l6ZV9wb3cyLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgTVNCX01BU0socy0+cXVhbnRfc3RlcF9zaXplW2Rlc3RfY2hdKSk7Cj4+ICsK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZm9yIChjaGFuID0gMDsgY2hhbiA8PSBtYXhjaGFu OyBjaGFuKyspCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcy0+bWF0cml4X2Nv ZWZmW21hdF1bY2hhbl0gKz0gcy0+ZGVsdGFfbWF0cml4X2NvZWZmW21hdF1bY2hhbl07Cj4+ICvC oMKgwqDCoMKgwqDCoCB9Cj4+IMKgwqDCoMKgwqAgfQo+PiDCoCArI2lmIGRlZmluZWQoQVNTRVJU X0xFVkVMKSAmJiBBU1NFUlRfTEVWRUwgPj0gMgo+PiArwqDCoMKgIGNoZWNrX3JlbWF0cml4X291 dHB1dChtLCBzdWJzdHIpOwo+PiArI2VuZGlmCj4+ICsKPj4gwqDCoMKgwqDCoCAvKiBnZXQgb3V0 cHV0IGJ1ZmZlciAqLwo+PiDCoMKgwqDCoMKgIGZyYW1lLT5uYl9zYW1wbGVzID0gcy0+YmxvY2tw b3M7Cj4+IMKgwqDCoMKgwqAgaWYgKChyZXQgPSBmZl9nZXRfYnVmZmVyKGF2Y3R4LCBmcmFtZSwg MCkpIDwgMCkKPj4gQEAgLTExNjMsNiArMTQ0NSwxMCBAQCBzdGF0aWMgaW50IG91dHB1dF9kYXRh KE1MUERlY29kZUNvbnRleHQgKm0sIHVuc2lnbmVkIGludCBzdWJzdHIsCj4+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzLT5tYXhfbWF0cml4X2NoYW5uZWwsCj4+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpczMyKTsKPj4gwqAgKyNpZiBkZWZpbmVkKEFTU0VS VF9MRVZFTCkgJiYgQVNTRVJUX0xFVkVMID49IDIKPj4gK8KgwqDCoCBjaGVja19vdXRwdXRfYml0 X2RlcHRoKG0sIHN1YnN0cik7Cj4+ICsjZW5kaWYKPj4gKwo+PiDCoMKgwqDCoMKgIC8qIFVwZGF0 ZSBtYXRyaXggZW5jb2Rpbmcgc2lkZSBkYXRhICovCj4+IMKgwqDCoMKgwqAgaWYgKHMtPm1hdHJp eF9lbmNvZGluZyAhPSBzLT5wcmV2X21hdHJpeF9lbmNvZGluZykgewo+PiDCoMKgwqDCoMKgwqDC oMKgwqAgaWYgKChyZXQgPSBmZl9zaWRlX2RhdGFfdXBkYXRlX21hdHJpeF9lbmNvZGluZyhmcmFt ZSwgcy0+bWF0cml4X2VuY29kaW5nKSkgPCAwKQo+PiBAQCAtMTMyMCw2ICsxNjA2LDcgQEAgc3Rh dGljIGludCByZWFkX2FjY2Vzc191bml0KEFWQ29kZWNDb250ZXh0ICphdmN0eCwgQVZGcmFtZSAq ZnJhbWUsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoYXZjdHgtPmNo X2xheW91dC5uYl9jaGFubmVscyA9PSA4ICYmCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgICgobS0+c3Vic3RyZWFtX2luZm8gPj4gNCkgJiAweDcpICE9IDB4NyAmJgo+ PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoKG0tPnN1YnN0cmVhbV9p bmZvID4+IDQpICYgMHg3KSAhPSAweDYgJiYKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgKChtLT5zdWJzdHJlYW1faW5mbyA+PiA0KSAmIDB4NykgIT0gMHg0ICYmCj4+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICgobS0+c3Vic3RyZWFtX2luZm8g Pj4gNCkgJiAweDcpICE9IDB4MykpICYmCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgc3Vic3RyID4gMCAmJiBzdWJzdHIgPCBtLT5tYXhfZGVjb2RlZF9zdWJzdHJlYW0gJiYK Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAocy0+bWluX2NoYW5uZWwgPD0g bS0+c3Vic3RyZWFtW3N1YnN0ciAtIDFdLm1heF9jaGFubmVsKSkgewo+PiBAQCAtMTQyOSw4ICsx NzE2LDEwIEBAIHN0YXRpYyB2b2lkIG1scF9kZWNvZGVfZmx1c2goQVZDb2RlY0NvbnRleHQgKmF2 Y3R4KQo+PiDCoCAjZGVmaW5lIE9GRlNFVCh4KSBvZmZzZXRvZihNTFBEZWNvZGVDb250ZXh0LCB4 KQo+PiDCoCAjZGVmaW5lIEZMQUdTIChBVl9PUFRfRkxBR19ERUNPRElOR19QQVJBTSB8IEFWX09Q VF9GTEFHX0FVRElPX1BBUkFNKQo+PiDCoCBzdGF0aWMgY29uc3QgQVZPcHRpb24gb3B0aW9uc1td ID0gewo+PiAtwqDCoMKgIHsgImRvd25taXgiLCAiUmVxdWVzdCBhIHNwZWNpZmljIGNoYW5uZWwg bGF5b3V0IGZyb20gdGhlIGRlY29kZXIiLCBPRkZTRVQoZG93bm1peF9sYXlvdXQpLAo+PiAtwqDC oMKgwqDCoMKgwqAgQVZfT1BUX1RZUEVfQ0hMQVlPVVQsIHsuc3RyID0gTlVMTH0sIC5mbGFncyA9 IEZMQUdTIH0sCj4+ICvCoMKgwqAgeyAiZG93bm1peCIsICJSZXF1ZXN0IGEgc3BlY2lmaWMgY2hh bm5lbCBsYXlvdXQgZnJvbSB0aGUgZGVjb2RlciIsCj4+ICvCoMKgwqDCoMKgwqDCoCBPRkZTRVQo ZG93bm1peF9sYXlvdXQpLCBBVl9PUFRfVFlQRV9DSExBWU9VVCwgey5zdHIgPSBOVUxMfSwgLmZs YWdzID0gRkxBR1MgfSwKPj4gK8KgwqDCoCB7ICJleHRyYWN0X29iamVjdHMiLCAiRW5hYmxlIGV4 dHJhY3Rpb24gb2YgYXVkaW8gb2JqZWN0IGNoYW5uZWxzIiwKPj4gK8KgwqDCoMKgwqDCoMKgIE9G RlNFVChleHRyYWN0X29iamVjdHMpLCBBVl9PUFRfVFlQRV9CT09MLCB7IC5pNjQgPSAwIH0sIDAs IDEsIC5mbGFncyA9IEZMQUdTIH0sCj4+IMKgwqDCoMKgwqAgeyBOVUxMIH0sCj4gCj4gSU1ITyB0 aGlzIHNob3VsZCBiZSBlbmFibGVkIGJ5IGRlZmF1bHQuIEFsbCBzdHJlYW1zIGNvbWUgd2l0aCBj b21wYXRpYmlsaXR5IEFDMyBtaXhlcyB0b28uCj4gCgpJIGFzc3VtZWQgdGhhdCB0aGlzIHdvdWxk IG5vdCBiZSBhIGdvb2QgaWRlYSwgYXMgYXVkaW8gb2JqZWN0cyBjaGFubmVscyBhcmUgbm90IG1l YW50IHRvIGJlIGhlYXJkIHdpdGhvdXQgcmVuZGVyaW5nIChhcyBmb3Igb3RoZXIgQXRtb3MsIG9y IGFueSBvdGhlciBvYmplY3QgYXVkaW8gZm9ybWF0IGxpa2UgTVBFRy1IIEF1ZGlvLCBiaXRzdHJl YW1zKSB3aGljaCBpcyBub3Qgc29tZXRoaW5nIGN1cnJlbnRseSBpbXBsZW1lbnRlZCBpbiBGRm1w ZWcuCldoZW4gdGhpcyBvcHRpb24gaXMgZGlzYWJsZWQgKGJ5IGRlZmF1bHQpIG9yIHdpdGhvdXQg dGhpcyBwYXRjaCwgZGVjb2RpbmcgaXMgcmVzdHJpY3RlZCB0byB0aGUgdGhpcmQgc3Vic3RyZWFt IHdoaWNoIHByb2R1Y2VzIGEgcHJvcGVyIGJhY2t3YXJkIGNvbXBhdGlibGUgNy4xIHJlbmRlcmlu ZyAodGhpcyBpcyBhIHN0cmVuZ3RoIG9mIFRydWVIRCB3LyBBdG1vcykgc3VpdGFibGUgZm9yIHBs YXliYWNrLgpJZiB0aGUgb3B0aW9uIGlzIGVuYWJsZWQsIHBsYXlpbmcgYmFjayB0aGUgcHJvZHVj ZWQgbm9uLXNwYXRpYWxseSByZW5kZXJlZCBhdWRpbyBzdHJlYW0gd291bGQgc291bmQgb2ZmIHRv IG5vbi1hd2FyZSB1c2Vycy4KCk1vcmUgZGV0YWlscyBhYm91dCB0aGUgYmFja3dhcmQgY29tcGF0 aWJsZSBuYXR1cmUgb2YgVHJ1ZUhEIHcvIEF0bW9zIGNhbiBiZSBmb3VuZCBpbiB0aGUgZm9sbG93 aW5nIHBhcGVyOgpWLiBNZWxrb3RlLCBNLiBMYXcgYW5kIFIuIFdpbHNvbiwgIkhpZXJhcmNoaWNh bCBhbmQgTG9zc2xlc3MgQ29kaW5nIG9mIGF1ZGlvIG9iamVjdHMgaW4gRG9sYnkgVHJ1ZUhELCIg MjAxNSBJRUVFIEludGVybmF0aW9uYWwgQ29uZmVyZW5jZSBvbiBBY291c3RpY3MsIFNwZWVjaCBh bmQgU2lnbmFsIFByb2Nlc3NpbmcgKElDQVNTUCksIFNvdXRoIEJyaXNiYW5lLCBRTEQsIEF1c3Ry YWxpYSwgMjAxNSwgcHAuIDM4NC0zODgsIGRvaTogMTAuMTEwOS9JQ0FTU1AuMjAxNS43MTc3OTk2 LgoKPj4gwqAgfTsKPj4gwqAgZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvbWxwZHNwLmMgYi9saWJh dmNvZGVjL21scGRzcC5jCj4+IGluZGV4IGNiNDAxNjBmNjcuLmUyODAwNmYyYzQgMTAwNjQ0Cj4+ IC0tLSBhL2xpYmF2Y29kZWMvbWxwZHNwLmMKPj4gKysrIGIvbGliYXZjb2RlYy9tbHBkc3AuYwo+ PiBAQCAtNzksMTEgKzc5LDUxIEBAIHZvaWQgZmZfbWxwX3JlbWF0cml4X2NoYW5uZWwoaW50MzJf dCAqc2FtcGxlcywKPj4gwqAgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChtYXRyaXhfbm9pc2Vfc2hp ZnQpIHsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW5kZXggJj0gYWNjZXNzX3VuaXRf c2l6ZV9wb3cyIC0gMTsKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYWNjdW0gKz0gbm9pc2Vf YnVmZmVyW2luZGV4XSAqICgxIDw8IChtYXRyaXhfbm9pc2Vfc2hpZnQgKyA3KSk7Cj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGFjY3VtICs9IG5vaXNlX2J1ZmZlcltpbmRleF0gKiAoMSA8PCAo bWF0cml4X25vaXNlX3NoaWZ0ICsgMTEpKTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg aW5kZXggKz0gaW5kZXgyOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+PiDCoCAtwqDCoMKgwqDC oMKgwqAgc2FtcGxlc1tkZXN0X2NoXSA9ICgoYWNjdW0gPj4gMTQpICYgbWFzaykgKyAqYnlwYXNz ZWRfbHNiczsKPj4gK8KgwqDCoMKgwqDCoMKgIHNhbXBsZXNbZGVzdF9jaF0gPSAoKGFjY3VtID4+ IDE4KSAmIG1hc2spICsgKmJ5cGFzc2VkX2xzYnM7Cj4+ICvCoMKgwqDCoMKgwqDCoCBieXBhc3Nl ZF9sc2JzICs9IE1BWF9DSEFOTkVMUzsKPj4gK8KgwqDCoMKgwqDCoMKgIHNhbXBsZXMgKz0gTUFY X0NIQU5ORUxTOwo+PiArwqDCoMKgIH0KPj4gK30KPj4gKwo+PiArdm9pZCBmZl9tbHBfcmVtYXRy aXhfaW50ZXJwX2NoYW5uZWwoaW50MzJfdCAqc2FtcGxlcywKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29u c3QgaW50MzJfdCAqc2VlZF9jb2VmZnMsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IGludDMyX3Qg KmRlbHRhX2NvZWZmcywKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3QgdWludDhfdCAqYnlwYXNzZWRf bHNicywKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3QgaW50OF90ICpub2lzZV9idWZmZXIsCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGludCBpbmRleCwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgaW50IGRl c3RfY2gsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVpbnQxNl90IGJsb2NrcG9zLAo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB1bnNpZ25lZCBpbnQgbWF4Y2hhbiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50IG1hdHJpeF9u b2lzZV9zaGlmdCwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50IGFjY2Vzc191bml0X3NpemVfcG93MiwK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgaW50MzJfdCBtYXNrKQo+PiArewo+PiArwqDCoMKgIHVuc2lnbmVk IGludCBzcmNfY2gsIGk7Cj4+ICvCoMKgwqAgaW50IGluZGV4MiA9IDIgKiBpbmRleCArIDE7Cj4+ ICsKPj4gK8KgwqDCoCBpbnQzMl90IGRlbHRhX2luYyA9ICgxIDw8IDE2KSAvIGJsb2NrcG9zOwo+ PiArCj4+ICvCoMKgwqAgZm9yIChpID0gMDsgaSA8IGJsb2NrcG9zOyBpKyspIHsKPj4gK8KgwqDC oMKgwqDCoMKgIGludDY0X3QgYWNjdW0gPSAwLCBkZWx0YV9hY2N1bSA9IDA7Cj4+ICsKPj4gK8Kg wqDCoMKgwqDCoMKgIGZvciAoc3JjX2NoID0gMDsgc3JjX2NoIDw9IG1heGNoYW47IHNyY19jaCsr KSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFjY3VtICs9IChpbnQ2NF90KSBzYW1wbGVz W3NyY19jaF0gKiBzZWVkX2NvZWZmc1tzcmNfY2hdOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBkZWx0YV9hY2N1bSArPSAoaW50NjRfdCkgc2FtcGxlc1tzcmNfY2hdICogZGVsdGFfY29lZmZz W3NyY19jaF07Cj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgIGFj Y3VtICs9ICgoZGVsdGFfYWNjdW0gPj4gMTgpICogaSAqIGRlbHRhX2luYyAqICgxIDw8IDE4KSkg Pj4gMTY7Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgIGlmIChtYXRyaXhfbm9pc2Vfc2hpZnQpIHsK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW5kZXggJj0gYWNjZXNzX3VuaXRfc2l6ZV9wb3cy IC0gMTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYWNjdW0gKz0gbm9pc2VfYnVmZmVyW2lu ZGV4XSAqICgxIDw8IChtYXRyaXhfbm9pc2Vfc2hpZnQgKyAxMSkpOwo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBpbmRleCArPSBpbmRleDI7Cj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4+ICsKPj4g K8KgwqDCoMKgwqDCoMKgIHNhbXBsZXNbZGVzdF9jaF0gPSAoKGFjY3VtID4+IDE4KSAmIG1hc2sp ICsgKmJ5cGFzc2VkX2xzYnM7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBieXBhc3NlZF9sc2JzICs9 IE1BWF9DSEFOTkVMUzsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHNhbXBsZXMgKz0gTUFYX0NIQU5O RUxTOwo+PiDCoMKgwqDCoMKgIH0KPj4gQEAgLTExNSw5ICsxNTUsMTAgQEAgaW50MzJfdCBmZl9t bHBfcGFja19vdXRwdXQoaW50MzJfdCBsb3NzbGVzc19jaGVja19kYXRhLAo+PiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBpbnQgbWF0X2NoID0gY2hfYXNzaWduW291dF9jaF07Cj4+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludDMyX3Qgc2FtcGxlID0gc2FtcGxlX2J1ZmZlcltpXVtt YXRfY2hdICoKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICgxVSA8PCBvdXRwdXRfc2hpZnRbbWF0X2NoXSk7Cj4+IC3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGxvc3NsZXNzX2NoZWNrX2RhdGEgXj0gKHNhbXBsZSAmIDB4ZmZmZmZmKSA8PCBt YXRfY2g7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGxvc3NsZXNzX2NoZWNrX2RhdGEgXj0g KHNhbXBsZSAmIDB4ZmZmZmZmKSA8PCAobWF0X2NoICYgNyk7Cj4+ICsKPj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgaWYgKGlzMzIpCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgKmRhdGFfMzIrKyA9IHNhbXBsZSAqIDI1NlU7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgKmRhdGFfMzIrKyA9IHNhbXBsZSAqICgxIDw8IDgpOwo+PiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBlbHNlCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg KmRhdGFfMTYrKyA9IHNhbXBsZSA+PiA4Owo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+PiBAQCAt MTI5LDYgKzE3MCw3IEBAIGF2X2NvbGQgdm9pZCBmZl9tbHBkc3BfaW5pdChNTFBEU1BDb250ZXh0 ICpjKQo+PiDCoCB7Cj4+IMKgwqDCoMKgwqAgYy0+bWxwX2ZpbHRlcl9jaGFubmVsID0gbWxwX2Zp bHRlcl9jaGFubmVsOwo+PiDCoMKgwqDCoMKgIGMtPm1scF9yZW1hdHJpeF9jaGFubmVsID0gZmZf bWxwX3JlbWF0cml4X2NoYW5uZWw7Cj4+ICvCoMKgwqAgYy0+bWxwX3JlbWF0cml4X2ludGVycF9j aGFubmVsID0gZmZfbWxwX3JlbWF0cml4X2ludGVycF9jaGFubmVsOwo+PiDCoMKgwqDCoMKgIGMt Pm1scF9zZWxlY3RfcGFja19vdXRwdXQgPSBtbHBfc2VsZWN0X3BhY2tfb3V0cHV0Owo+PiDCoCAj aWYgQVJDSF9BUk0KPj4gwqDCoMKgwqDCoCBmZl9tbHBkc3BfaW5pdF9hcm0oYyk7Cj4+IGRpZmYg LS1naXQgYS9saWJhdmNvZGVjL21scGRzcC5oIGIvbGliYXZjb2RlYy9tbHBkc3AuaAo+PiBpbmRl eCA3YTlhYzIyOGQzLi5mZDI5ZGIxMGE3IDEwMDY0NAo+PiAtLS0gYS9saWJhdmNvZGVjL21scGRz cC5oCj4+ICsrKyBiL2xpYmF2Y29kZWMvbWxwZHNwLmgKPj4gQEAgLTM3LDYgKzM3LDE5IEBAIHZv aWQgZmZfbWxwX3JlbWF0cml4X2NoYW5uZWwoaW50MzJfdCAqc2FtcGxlcywKPj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludCBh Y2Nlc3NfdW5pdF9zaXplX3BvdzIsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQzMl90IG1hc2spOwo+PiDCoCArdm9pZCBm Zl9tbHBfcmVtYXRyaXhfaW50ZXJwX2NoYW5uZWwoaW50MzJfdCAqc2FtcGxlcywKPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgY29uc3QgaW50MzJfdCAqc2VlZF9jb2VmZnMsCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNv bnN0IGludDMyX3QgKmRlbHRhX2NvZWZmcywKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3QgdWludDhf dCAqYnlwYXNzZWRfbHNicywKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3QgaW50OF90ICpub2lzZV9i dWZmZXIsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludCBpbmRleCwKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5z aWduZWQgaW50IGRlc3RfY2gsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVpbnQxNl90IGJsb2NrcG9zLAo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBpbnQgbWF4Y2hhbiwKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg aW50IG1hdHJpeF9ub2lzZV9zaGlmdCwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50IGFjY2Vzc191bml0 X3NpemVfcG93MiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50MzJfdCBtYXNrKTsKPj4gKwo+PiDCoCBp bnQzMl90IGZmX21scF9wYWNrX291dHB1dChpbnQzMl90IGxvc3NsZXNzX2NoZWNrX2RhdGEsCj4+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHVpbnQxNl90IGJsb2NrcG9zLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQzMl90ICgqc2FtcGxlX2J1ZmZlcilbTUFYX0NIQU5O RUxTXSwKPj4gQEAgLTYyLDYgKzc1LDE4IEBAIHR5cGVkZWYgc3RydWN0IE1MUERTUENvbnRleHQg ewo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBpbnQgbWF0cml4X25vaXNlX3NoaWZ0LAo+PiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBp bnQgYWNjZXNzX3VuaXRfc2l6ZV9wb3cyLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQzMl90IG1hc2spOwo+ PiArwqDCoMKgIHZvaWQgKCptbHBfcmVtYXRyaXhfaW50ZXJwX2NoYW5uZWwpKGludDMyX3QgKnNh bXBsZXMsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3QgaW50MzJfdCAqc2VlZF9jb2Vm ZnMsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3QgaW50MzJfdCAqZGVsdGFfY29lZmZz LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IHVpbnQ4X3QgKmJ5cGFzc2VkX2xzYnMs Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3QgaW50OF90ICpub2lzZV9idWZmZXIsCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50IGluZGV4LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHVuc2lnbmVkIGludCBkZXN0X2NoLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVpbnQx Nl90IGJsb2NrcG9zLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGludCBtYXhj aGFuLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludCBtYXRyaXhfbm9pc2Vfc2hpZnQsCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50IGFjY2Vzc191bml0X3NpemVfcG93MiwKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQzMl90IG1hc2spOwo+PiDCoMKgwqDCoMKgIGludDMyX3Qg KCooKm1scF9zZWxlY3RfcGFja19vdXRwdXQpKHVpbnQ4X3QgKmNoX2Fzc2lnbiwKPj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQ4X3QgKm91dHB1dF9zaGlmdCwKPj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB1aW50OF90IG1heF9tYXRyaXhfY2hhbm5lbCwKPj4gZGlmZiAtLWdpdCBh L2xpYmF2Y29kZWMveDg2L21scGRzcC5hc20gYi9saWJhdmNvZGVjL3g4Ni9tbHBkc3AuYXNtCj4+ IGluZGV4IDNkYzY0MWU4OWUuLjNiMjMyZDQ1NTEgMTAwNjQ0Cj4+IC0tLSBhL2xpYmF2Y29kZWMv eDg2L21scGRzcC5hc20KPj4gKysrIGIvbGliYXZjb2RlYy94ODYvbWxwZHNwLmFzbQo+PiBAQCAt NjEsMTIgKzYxLDEyIEBAIFNFQ1RJT04gLnRleHQKPj4gwqDCoMKgwqDCoCBwYWRkccKgwqDCoMKg wqDCoMKgIHhtMCwgeG0xCj4+IMKgwqDCoMKgwqAgbW92ccKgwqDCoMKgwqAgYWNjdW1xLCB4bTAK Pj4gwqDCoMKgwqDCoCBtb3Z6eMKgwqDCoMKgIGJsc2JzZCwgYnl0ZSBbYmxzYnNfcHRycV3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgOyBsb2FkICpieXBhc3NlZF9sc2JzCj4+IC3CoMKgwqAgc2Fy wqDCoMKgwqDCoMKgIGFjY3VtcSwgMTTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgOyBhY2N1bSA+Pj0gMTQKPj4gK8KgwqDCoCBzYXLCoMKgwqDC oMKgwqAgYWNjdW1xLCAxOMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCA7IGFjY3VtID4+PSAxOAo+PiDCoMKgwqDCoMKgIGFuZMKgwqDCoMKgwqDC oCBhY2N1bWQsIG1hc2tkwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIDsgYWNjdW0gJj0gbWFzawo+PiDCoMKgwqDCoMKgIGFkZMKgwqDCoMKgwqDCoCBhY2N1 bWQsIGJsc2JzZMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg OyBhY2N1bSArPSAqYnlwYXNzZWRfbHNicwo+PiDCoMKgwqDCoMKgIG1vdsKgwqAgW3NhbXBsZXNx ICsgZGVzdF9jaHFdLCBhY2N1bWTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgOyBzYW1wbGVzW2Rl c3RfY2hdID0gYWNjdW0KPj4gLcKgwqDCoCBhZGTCoMKgIGJsc2JzX3B0cnEsIDjCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA7IGJ5cGFzc2Vk X2xzYnMgKz0gTUFYX0NIQU5ORUxTOwo+PiAtwqDCoMKgIGFkZMKgwqDCoMKgIHNhbXBsZXNxLCAz MsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA7 IHNhbXBsZXMgKz0gTUFYX0NIQU5ORUxTOwo+PiArwqDCoMKgIGFkZMKgwqAgYmxzYnNfcHRycSwg MTbCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg OyBieXBhc3NlZF9sc2JzICs9IE1BWF9DSEFOTkVMUzsKPj4gK8KgwqDCoCBhZGTCoMKgwqDCoCBz YW1wbGVzcSwgNjTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgOyBzYW1wbGVzICs9IE1BWF9DSEFOTkVMUzsKPj4gwqDCoMKgwqDCoCBjbXDCoMKg IGJsc2JzX3B0cnEsIGNudHEKPj4gwqAgJWVuZG1hY3JvCj4+IMKgIEBAIC04MCwxMiArODAsMTIg QEAgU0VDVElPTiAudGV4dAo+PiDCoMKgwqDCoMKgIFNITFjCoMKgwqDCoMKgIG5vaXNlcSwgbW5z wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA7IG5v aXNlX2J1ZmZlcltpbmRleF0gPDw9IG1hdHJpeF9ub2lzZV9zaGlmdAo+PiDCoMKgwqDCoMKgIGFk ZMKgwqDCoMKgwqDCoCBhY2N1bXEsIG5vaXNlccKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgOyBhY2N1bSArPSBub2lzZV9idWZmZXJbaW5kZXhdCj4+IMKgwqDC oMKgwqAgbW92enjCoMKgwqDCoCBub2lzZWQsIGJ5dGUgW2Jsc2JzX3B0cnFdwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIDsgbG9hZCAqYnlwYXNzZWRfbHNicyAocmV1c2UgdG1wIG5vaXNlIHJlZ2lz dGVyKQo+PiAtwqDCoMKgIHNhcsKgwqDCoMKgwqDCoCBhY2N1bXEsIDE0wqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDsgYWNjdW0gPj49IDE0Cj4+ ICvCoMKgwqAgc2FywqDCoMKgwqDCoMKgIGFjY3VtcSwgMTjCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgOyBhY2N1bSA+Pj0gMTgKPj4gwqDCoMKg wqDCoCBhbmTCoMKgwqDCoMKgwqAgYWNjdW1kLCBtYXNrZMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA7IGFjY3VtICY9IG1hc2sKPj4gwqDCoMKgwqDCoCBh ZGTCoMKgwqDCoMKgwqAgYWNjdW1kLCBub2lzZWTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIDsgYWNjdW0gKz0gKmJ5cGFzc2VkX2xzYnMKPj4gwqDCoMKgwqDC oCBtb3bCoMKgIFtzYW1wbGVzcSArIGRlc3RfY2hxXSwgYWNjdW1kwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIDsgc2FtcGxlc1tkZXN0X2NoXSA9IGFjY3VtCj4+IC3CoMKgwqAgYWRkwqDCoCBibHNi c19wdHJxLCA4wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgOyBieXBhc3NlZF9sc2JzICs9IE1BWF9DSEFOTkVMUzsKPj4gLcKgwqDCoCBhZGTC oMKgwqDCoCBzYW1wbGVzcSwgMzLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgOyBzYW1wbGVzICs9IE1BWF9DSEFOTkVMUzsKPj4gK8KgwqDCoCBh ZGTCoMKgIGJsc2JzX3B0cnEsIDE2wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIDsgYnlwYXNzZWRfbHNicyArPSBNQVhfQ0hBTk5FTFM7Cj4+ICvC oMKgwqAgYWRkwqDCoMKgwqAgc2FtcGxlc3EsIDY0wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDsgc2FtcGxlcyArPSBNQVhfQ0hBTk5FTFM7Cj4+ IMKgwqDCoMKgwqAgY21wwqDCoCBibHNic19wdHJxLCBjbnRxCj4+IMKgICVlbmRtYWNybwo+PiDC oCBAQCAtMTA2LDcgKzEwNiw4IEBAIGNnbG9iYWwgbWxwX3JlbWF0cml4X2NoYW5uZWwsIDAsIDEz LCA1LCBzYW1wbGVzLCBjb2VmZnMsIGJsc2JzX3B0ciwgYmxzYnMsIFwKPj4gwqDCoMKgwqDCoCBt b3bCoMKgwqDCoCBkZXN0X2NoZCwgZGVzdF9jaG3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgOyBsb2FkIGRlc3RfY2hkIChub3QgbmVlZGVkIG9uIFVOSVg2NCkKPj4g wqAgJWVuZGlmCj4+IMKgwqDCoMKgwqAgc2hswqDCoMKgwqAgZGVzdF9jaGQsIDIKPj4gLcKgwqDC oCBsZWHCoMKgwqDCoMKgwqDCoMKgIGNudHEsIFtibHNic19wdHJxICsgYmxvY2twb3NxKjhdCj4+ ICvCoMKgwqAgbGVhwqDCoMKgwqDCoMKgwqDCoCBjbnRxLCBbYmxzYnNfcHRycSArIGJsb2NrcG9z cSo4XcKgwqDCoCA7IGxvb3AgZW5kIGFkZHJlc3MgKGJ5cGFzc2VkX2xzYnMgKyBibG9ja3BvcyAq IE1BWF9DSEFOTkVMUykKPj4gK8KgwqDCoCBsZWHCoMKgwqDCoMKgwqDCoMKgIGNudHEsIFtjbnRx ICsgYmxvY2twb3NxKjhdCj4+IMKgwqDCoMKgwqAgdGVzdMKgwqDCoMKgwqDCoMKgIG1uc2QsIG1u c2TCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA7IGlz IG1hdHJpeF9ub2lzZV9zaGlmdCAhPSAwPwo+PiDCoMKgwqDCoMKgIGpuZSAuc2hpZnTCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCA7IGp1bXAgaWYgdHJ1ZQo+PiDCoMKgwqDCoMKgIGNtcMKgwqDCoMKgIG1heGNo YW5kLCA0wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgOyBpcyBtYXhjaGFuIDwgND8KPj4gQEAgLTE0NCw3ICsxNDUsNyBAQCBhbGlnbiAxNgo+ PiDCoMKgwqDCoMKgIERFRklORV9BUkdTIHNhbXBsZXMsIGNvZWZmcywgYmxzYnNfcHRyLCBub2lz ZV9idWZmZXIsIFwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbmRleCwg ZGVzdF9jaCwgYWNjdW0sIGluZGV4MiwgbW5zLCBcCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgYXVzcCwgbWFzaywgY250LCBub2lzZQo+PiAtwqDCoMKgIGFkZMKgwqDCoMKg wqDCoMKgwqAgbW5zZCwgN8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDsgbWF0cml4X25vaXNl X3NoaWZ0ICs9IDcKPj4gK8KgwqDCoCBhZGTCoMKgwqDCoMKgwqDCoMKgIG1uc2QsIDExwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIDsgbWF0cml4X25vaXNlX3NoaWZ0ICs9IDExCj4+IMKgICVlbHNl IDsgc3NlNAo+PiDCoMKgwqDCoMKgIG1vdsKgwqDCoMKgwqDCoMKgwqDCoMKgIHI2LCByY3jCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIDsgbW92ZSByY3ggZWxzZXdoZXJlIHNvIHdlIGNhbiB1c2UgY2wg Zm9yIG1hdHJpeF9ub2lzZV9zaGlmdAo+PiDCoCAlaWYgV0lONjQKPj4gQEAgLTE1Niw3ICsxNTcs NyBAQCBhbGlnbiAxNgo+PiDCoMKgwqDCoMKgIERFRklORV9BUkdTIHNhbXBsZXMsIGNvZWZmcywg YmxzYnNfcHRyLCBtbnMsIGluZGV4LCBkZXN0X2NoLCBub2lzZV9idWZmZXIsIFwKPj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbmRleDIsIGFjY3VtLCBhdXNwLCBtYXNrLCBj bnQsIG5vaXNlCj4+IMKgICVlbmRpZgo+PiAtwqDCoMKgIGxlYcKgwqDCoMKgwqDCoMKgwqAgbW5z ZCwgW3I4ICsgN13CoMKgwqDCoMKgwqAgOyByY3ggPSBtYXRyaXhfbm9pc2Vfc2hpZnQgKyA3Cj4+ ICvCoMKgwqAgbGVhwqDCoMKgwqDCoMKgwqDCoCBtbnNkLCBbcjggKyAxMV3CoMKgwqDCoMKgIDsg cmN4ID0gbWF0cml4X25vaXNlX3NoaWZ0ICsgMTEKPj4gwqAgJWVuZGlmIDsgY3B1ZmxhZwo+PiDC oMKgwqDCoMKgIHN1YsKgwqDCoMKgwqDCoMKgIGF1c3BkLCAxwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgOyBhY2Nlc3NfdW5pdF9zaXplX3BvdzIgLT0gMQo+PiDCoMKgwqDCoMKgIGNtcMKgwqDC oMKgwqDCoMKgwqDCoCByN2QsIDTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA7IGlzIG1heGNo YW4gPCA0Pwo+IAo+IElmIHRoZSBjaGFuZ2VzIGFyZSB0aGF0IGZldywgd2h5IG5vdCBkbyB0aGUg YWFyY2g2NCB2ZXJzaW9uIHRvbz8KPiAKCkkgYW0gbm90IGZhbWlsaWFyIHdpdGggYWFyY2g2NCBh c3NlbWJseSBhbmQgSSBoYXZlIGF0IHRoZSBtb21lbnQgbm8gaGludHMgd2hlcmUgc2hpZnRzIGFy ZSBwZXJmb3JtZWQgbm9yIHRoZSBoYXJkd2FyZSB0byB0ZXN0IDovCgo+PiBkaWZmIC0tZ2l0IGEv dGVzdHMvZmF0ZS90cnVlaGQubWFrIGIvdGVzdHMvZmF0ZS90cnVlaGQubWFrCj4+IGluZGV4IGIw YmM4NmE5NjUuLjMwYzBlOTYyOGIgMTAwNjQ0Cj4+IC0tLSBhL3Rlc3RzL2ZhdGUvdHJ1ZWhkLm1h awo+PiArKysgYi90ZXN0cy9mYXRlL3RydWVoZC5tYWsKPj4gQEAgLTE4LDUgKzE4LDE1IEBAIGZh dGUtdHJ1ZWhkLW1vbm8xNzI2OiBDTUQgPSBtZDVwaXBlIC1mIHRydWVoZCAtaSAkKFRBUkdFVF9T QU1QTEVTKS90cnVlaGQvdGlja2V0Cj4+IMKgIGZhdGUtdHJ1ZWhkLW1vbm8xNzI2OiBDTVAgPSBv bmVsaW5lCj4+IMKgIGZhdGUtdHJ1ZWhkLW1vbm8xNzI2OiBSRUYgPSA5YmU5NTUxZmFjNDE4NDQw YmIwMjEwMWJmZGIxMWRmOQo+PiDCoCArRkFURV9UUlVFSEQtJChjYWxsIERFTURFQywgVFJVRUhE LCBUUlVFSEQpICs9IGZhdGUtdHJ1ZWhkLWF0bW9zLW5vLW9iago+PiArZmF0ZS10cnVlaGQtYXRt b3Mtbm8tb2JqOiBDTUQgPSBtZDVwaXBlIC1mIHRydWVoZCAtZXh0cmFjdF9vYmplY3RzIDAgLWkg JChUQVJHRVRfU0FNUExFUykvdHJ1ZWhkL2F0bW9zLnRoZCAtZiBzMzJsZQo+PiArZmF0ZS10cnVl aGQtYXRtb3Mtbm8tb2JqOiBDTVAgPSBvbmVsaW5lCj4+ICtmYXRlLXRydWVoZC1hdG1vcy1uby1v Ymo6IFJFRiA9IDUzZGE2Y2UzNWM3NzhiY2MyMTgyZWYyMTYwYmYxNmEyCj4+ICsKPj4gK0ZBVEVf VFJVRUhELSQoY2FsbCBERU1ERUMsIFRSVUVIRCwgVFJVRUhEKSArPSBmYXRlLXRydWVoZC1hdG1v cy1vYmoKPj4gK2ZhdGUtdHJ1ZWhkLWF0bW9zLW9iajogQ01EID0gbWQ1cGlwZSAtZiB0cnVlaGQg LWV4dHJhY3Rfb2JqZWN0cyAxIC1pICQoVEFSR0VUX1NBTVBMRVMpL3RydWVoZC9hdG1vcy50aGQg LWYgczMybGUKPj4gK2ZhdGUtdHJ1ZWhkLWF0bW9zLW9iajogQ01QID0gb25lbGluZQo+PiArZmF0 ZS10cnVlaGQtYXRtb3Mtb2JqOiBSRUYgPSBmMTlmNmY4ZWM4YjA0MDA1MGFhYTAxOWYwMTZmN2Rk Ywo+PiArCj4+IMKgIEZBVEVfU0FNUExFU19BVURJTyArPSAkKEZBVEVfVFJVRUhELXllcykKPj4g wqAgZmF0ZS10cnVlaGQ6ICQoRkFURV9UUlVFSEQteWVzKQo+IF9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdAo+ IGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCj4gaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlz dGluZm8vZmZtcGVnLWRldmVsCj4gCj4gVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUs IG9yIGVtYWlsCj4gZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3Qg InVuc3Vic2NyaWJlIi4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcK aHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1 YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RA ZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4K