From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 0972748660 for ; Tue, 15 Jul 2025 15:21:51 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id 5FF5268E114; Tue, 15 Jul 2025 18:21:47 +0300 (EEST) Received: from mail-ua1-f50.google.com (mail-ua1-f50.google.com [209.85.222.50]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id 5845368DE2B for ; Tue, 15 Jul 2025 18:21:40 +0300 (EEST) Received: by mail-ua1-f50.google.com with SMTP id a1e0cc1a2514c-88131f0badcso5403058241.2 for ; Tue, 15 Jul 2025 08:21:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1752592898; x=1753197698; darn=ffmpeg.org; h=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=8ghPHGJ+ARTehWTS1cNVWlwJwiqC+W2bSqFCJ9C4Yso=; b=ge7LY0b6wA3YIJrn+uu7Hn3FuT7OaUGTconmXeKL7v1SflTccHKr6k2MXOmM4BR20K U5zEHO55OMJfz3/g9fCvQGznFCpdGzUWLfbRZLAWYCXs2L558OXoLhHS4mkGxD0EtqBF wsKl/js6DKuQ4Lr//9lkfqaKxAyef5/x2zV7NNQvgwZ/UQIZVrVX3RIxu7t1N78KNvfA 9cpY2ezS/M3Zv93u9q4HdpA5yTRVIL8KIAXRtcqpCETb/R7xaw0DT9p2BojO0fL55CkP Axd9j2NDYhgInaLzpnY4m1rb8pWY9VBEJ7EN7zInBBBk7jEkjL8eQKRfuWR1Go0OFscp 7Yfw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752592898; x=1753197698; h=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=8ghPHGJ+ARTehWTS1cNVWlwJwiqC+W2bSqFCJ9C4Yso=; b=joWywD7KYJjCEyH89CFmw/85n0U3d+5zx/MQ9tEIrGHSgjzgGbLe+ygHrSVy4B1M9P Dpz3e+XJ450/F8vzGxiA4Xx4i4BMAUdT9WJh83K3XBX54kzXTluRSefq3hBeUYFYvwDu OYDzgRP9VyCmljF7Go8wyv+zVc8wbogw/nula4pvP75lepB7i66J7ySDf9UVCxofUdCs aOThlmIVqBh4GmAr+6vbqUK6KwsCsT6QBSVX7IFR9N+7pVBMaJpbKLBKOmLLuw7jwCRQ 4lrHgOnjHFtrZTTYMF00AKY6vEgP9hHEeeqjcAHlFvzK+12zk/CeW65gjmjMFMsq40bi /1qw== X-Gm-Message-State: AOJu0YzykL1oeP3b8zDE3qzKiHAZav0Tch+nkkr4AC4xWWNDcpDIAFye 2gK93zsmg6GLWbUna2P+QV9CJUX5B2xZ6QRmNypFp8Zn0vnHilbrEbLov0QUzQ== X-Gm-Gg: ASbGncvV9j636vnhIeR7N8BnR/reDyho0Wf6rE4yh+wcGf7l8hymz++UoqKCwpObcmy H6En0lZE2DE5OzUVTCirVZiHJ+0OhR7bAVZjjnT6c/nZsuCeMo5MbtSkSpATtjibHzdwHD63kX0 pK4s5XWkvbQOWAPD3Qb/alrUYbisnZjFC4G4i5chq9xoBoaDJ6iwI40GdW6cU70fuiYH23IJk+L XdOVfUeWp6HZs6KtqrVJqt89DfXtsARFd6QjJqA6VSi6EbMeg9ZF9Qnr+Qg5PlDQdY5T6JHWMXR nLEFIP9MLGb+Qc3GkrDtznAN08ktoVhyJPOeiSehJ5bFhuSQ506GM033MjXAMqybG6jzsOlOMMn 5ijwx2//GhnRb7H60hiVsau6nq1amVsDd5B9TdUIFZleXoM8BVnWXhxq49duvizPGqu37q2zW X-Google-Smtp-Source: AGHT+IHQ44QJpm3YvPn3DumkmNP9PURivaP5l+jTx2x4D5OQcqheplqBh2qeDGXpu9VxjGGhnitpWg== X-Received: by 2002:a05:6102:3ed1:b0:4ec:b078:2531 with SMTP id ada2fe7eead31-4f64238fef0mr10335371137.4.1752592897510; Tue, 15 Jul 2025 08:21:37 -0700 (PDT) Received: from ?IPV6:2800:2121:b000:82e:d503:1d72:3afc:99c0? ([2800:2121:b000:82e:d503:1d72:3afc:99c0]) by smtp.gmail.com with ESMTPSA id ada2fe7eead31-4f62fa91b11sm1824913137.19.2025.07.15.08.21.35 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 15 Jul 2025 08:21:36 -0700 (PDT) Message-ID: Date: Tue, 15 Jul 2025 12:21:35 -0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird To: ffmpeg-devel@ffmpeg.org References: <20250714091857.3338906-1-d.kozinski@samsung.com> Content-Language: en-US From: James Almer In-Reply-To: <20250714091857.3338906-1-d.kozinski@samsung.com> Subject: Re: [FFmpeg-devel] [PATCH v4] avformat/mov_muxer: Extended MOV muxer to handle APV video content X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Content-Type: multipart/mixed; boundary="===============6067415890251030660==" Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --===============6067415890251030660== Content-Language: en-US Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------wdaKRSLJmSap50EikIp72Dxa" This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------wdaKRSLJmSap50EikIp72Dxa Content-Type: multipart/mixed; boundary="------------zihzOMR43Z5Z33BqCiTSMNJ5"; protected-headers="v1" From: James Almer To: ffmpeg-devel@ffmpeg.org Message-ID: Subject: Re: [FFmpeg-devel] [PATCH v4] avformat/mov_muxer: Extended MOV muxer to handle APV video content References: <20250714091857.3338906-1-d.kozinski@samsung.com> In-Reply-To: <20250714091857.3338906-1-d.kozinski@samsung.com> --------------zihzOMR43Z5Z33BqCiTSMNJ5 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 T24gNy8xNC8yMDI1IDY6MTggQU0sIERhd2lkIEtvemluc2tpIHdyb3RlOg0KPiAtIENoYW5n ZXMgaW4gbW92X3dyaXRlX3ZpZGVvX3RhZyBmdW5jdGlvbiB0byBoYW5kbGUgQVBWIGVsZW1l bnRhcnkgc3RyZWFtDQo+IC0gUHJvdmlkZWQgc3RydWN0dXJlIEFQVkRlY29kZXJDb25maWd1 cmF0aW9uUmVjb3JkIHRoYXQgc3BlY2lmaWVzIHRoZSBkZWNvZGVyIGNvbmZpZ3VyYXRpb24g aW5mb3JtYXRpb24gZm9yIEFQViB2aWRlbyBjb250ZW50DQo+IA0KPiBTaWduZWQtb2ZmLWJ5 OiBEYXdpZCBLb3ppbnNraSA8ZC5rb3ppbnNraUBzYW1zdW5nLmNvbT4NCj4gLS0tDQo+ICAg bGliYXZjb2RlYy9jYnNfYXB2LmMgICAgfCAgMTkgKy0NCj4gICBsaWJhdmZvcm1hdC9NYWtl ZmlsZSAgICB8ICAgMiArLQ0KPiAgIGxpYmF2Zm9ybWF0L2Fwdi5jICAgICAgIHwgNDQ2ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gICBsaWJhdmZvcm1h dC9hcHYuaCAgICAgICB8ICA4OCArKysrKysrKw0KPiAgIGxpYmF2Zm9ybWF0L2Nicy5oICAg ICAgIHwgICAxIC0NCj4gICBsaWJhdmZvcm1hdC9jYnNfYXB2LmMgICB8ICAgMiArDQo+ICAg bGliYXZmb3JtYXQvaXNvbV90YWdzLmMgfCAgIDEgKw0KPiAgIGxpYmF2Zm9ybWF0L21vdmVu Yy5jICAgIHwgIDUyICsrKysrDQo+ICAgdGVzdHMvcmVmL2ZhdGUvc291cmNlICAgfCAgIDEg Kw0KPiAgIDkgZmlsZXMgY2hhbmdlZCwgNjAzIGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25z KC0pDQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2Zm9ybWF0L2Fwdi5jDQo+ICAgY3Jl YXRlIG1vZGUgMTAwNjQ0IGxpYmF2Zm9ybWF0L2Fwdi5oDQo+ICAgY3JlYXRlIG1vZGUgMTAw NjQ0IGxpYmF2Zm9ybWF0L2Nic19hcHYuYw0KPiANCj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29k ZWMvY2JzX2Fwdi5jIGIvbGliYXZjb2RlYy9jYnNfYXB2LmMNCj4gaW5kZXggZWJmNTdkM2Ji Yi4uZWViYWNkODg3MCAxMDA2NDQNCj4gLS0tIGEvbGliYXZjb2RlYy9jYnNfYXB2LmMNCj4g KysrIGIvbGliYXZjb2RlYy9jYnNfYXB2LmMNCj4gQEAgLTY4LDcgKzY4LDcgQEAgc3RhdGlj IHZvaWQgY2JzX2Fwdl9kZXJpdmVfdGlsZV9pbmZvKEFQVkRlcml2ZWRUaWxlSW5mbyAqdGks DQo+ICAgDQo+ICAgDQo+ICAgI2RlZmluZSBIRUFERVIobmFtZSkgZG8geyBcDQo+IC0gICAg ICAgIGZmX2Nic190cmFjZV9oZWFkZXIoY3R4LCBuYW1lKTsgXA0KPiArICAgICAgICBDQlNf RlVOQyh0cmFjZV9oZWFkZXIpKGN0eCwgbmFtZSk7IFwNCj4gICAgICAgfSB3aGlsZSAoMCkN Cj4gICANCj4gICAjZGVmaW5lIENIRUNLKGNhbGwpIGRvIHsgXA0KPiBAQCAtMTAyLDcgKzEw Miw3IEBAIHN0YXRpYyB2b2lkIGNic19hcHZfZGVyaXZlX3RpbGVfaW5mbyhBUFZEZXJpdmVk VGlsZUluZm8gKnRpLA0KPiAgIA0KPiAgICNkZWZpbmUgeHUod2lkdGgsIG5hbWUsIHZhciwg cmFuZ2VfbWluLCByYW5nZV9tYXgsIHN1YnMsIC4uLikgZG8geyBcDQo+ICAgICAgICAgICB1 aW50MzJfdCB2YWx1ZTsgXA0KPiAtICAgICAgICBDSEVDSyhmZl9jYnNfcmVhZF91bnNpZ25l ZChjdHgsIHJ3LCB3aWR0aCwgI25hbWUsIFwNCj4gKyAgICAgICAgQ0hFQ0soQ0JTX0ZVTkMo cmVhZF91bnNpZ25lZCkoY3R4LCBydywgd2lkdGgsICNuYW1lLCBcDQo+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBTVUJTQ1JJUFRTKHN1YnMsIF9fVkFfQVJHU19f KSwgXA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZhbHVlLCBy YW5nZV9taW4sIHJhbmdlX21heCkpOyBcDQo+ICAgICAgICAgICB2YXIgPSB2YWx1ZTsgXA0K PiBAQCAtMTI0LDYgKzEyNCw3IEBAIHN0YXRpYyB2b2lkIGNic19hcHZfZGVyaXZlX3RpbGVf aW5mbyhBUFZEZXJpdmVkVGlsZUluZm8gKnRpLA0KPiAgICN1bmRlZiBpbmZlcg0KPiAgICN1 bmRlZiBieXRlX2FsaWdubWVudA0KPiAgIA0KPiArI2lmIENCU19XUklURQ0KPiAgICNkZWZp bmUgV1JJVEUNCj4gICAjZGVmaW5lIFJFQURXUklURSB3cml0ZQ0KPiAgICNkZWZpbmUgUldD b250ZXh0IFB1dEJpdENvbnRleHQNCj4gQEAgLTEzMSw3ICsxMzIsNyBAQCBzdGF0aWMgdm9p ZCBjYnNfYXB2X2Rlcml2ZV90aWxlX2luZm8oQVBWRGVyaXZlZFRpbGVJbmZvICp0aSwNCj4g ICANCj4gICAjZGVmaW5lIHh1KHdpZHRoLCBuYW1lLCB2YXIsIHJhbmdlX21pbiwgcmFuZ2Vf bWF4LCBzdWJzLCAuLi4pIGRvIHsgXA0KPiAgICAgICAgICAgdWludDMyX3QgdmFsdWUgPSB2 YXI7IFwNCj4gLSAgICAgICAgQ0hFQ0soZmZfY2JzX3dyaXRlX3Vuc2lnbmVkKGN0eCwgcncs IHdpZHRoLCAjbmFtZSwgXA0KPiArICAgICAgICBDSEVDSyhDQlNfRlVOQyh3cml0ZV91bnNp Z25lZCkoY3R4LCBydywgd2lkdGgsICNuYW1lLCBcDQo+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgU1VCU0NSSVBUUyhzdWJzLCBfX1ZBX0FSR1NfXyksIFwNCj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSwgcmFuZ2VfbWlu LCByYW5nZV9tYXgpKTsgXA0KPiAgICAgICB9IHdoaWxlICgwKQ0KPiBAQCAtMTU3LDcgKzE1 OCw3IEBAIHN0YXRpYyB2b2lkIGNic19hcHZfZGVyaXZlX3RpbGVfaW5mbyhBUFZEZXJpdmVk VGlsZUluZm8gKnRpLA0KPiAgICN1bmRlZiB4dQ0KPiAgICN1bmRlZiBpbmZlcg0KPiAgICN1 bmRlZiBieXRlX2FsaWdubWVudA0KPiAtDQo+ICsjZW5kaWYgLy8gQ0JTX1dSSVRFDQo+ICAg DQo+ICAgc3RhdGljIGludCBjYnNfYXB2X3NwbGl0X2ZyYWdtZW50KENvZGVkQml0c3RyZWFt Q29udGV4dCAqY3R4LA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD b2RlZEJpdHN0cmVhbUZyYWdtZW50ICpmcmFnLA0KPiBAQCAtMjM0LDcgKzIzNSw3IEBAIHN0 YXRpYyBpbnQgY2JzX2Fwdl9zcGxpdF9mcmFnbWVudChDb2RlZEJpdHN0cmVhbUNvbnRleHQg KmN0eCwNCj4gICANCj4gICAgICAgICAgIC8vIENvdWxkIHNlbGVjdC9za2lwIGZyYW1lcyBi YXNlZCBvbiB0eXBlL2dyb3VwX2lkIGhlcmUuDQo+ICAgDQo+IC0gICAgICAgIGVyciA9IGZm X2Nic19hcHBlbmRfdW5pdF9kYXRhKGZyYWcsIHBidV9oZWFkZXIucGJ1X3R5cGUsDQo+ICsg ICAgICAgIGVyciA9IENCU19GVU5DKGFwcGVuZF91bml0X2RhdGEpKGZyYWcsIHBidV9oZWFk ZXIucGJ1X3R5cGUsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkYXRhLCBwYnVfc2l6ZSwgZnJhZy0+ZGF0YV9yZWYpOw0KPiAgICAgICAgICAgaWYgKGVy ciA8IDApDQo+ICAgICAgICAgICAgICAgZ290byBmYWlsOw0KPiBAQCAtMjU5LDcgKzI2MCw3 IEBAIHN0YXRpYyBpbnQgY2JzX2Fwdl9yZWFkX3VuaXQoQ29kZWRCaXRzdHJlYW1Db250ZXh0 ICpjdHgsDQo+ICAgICAgIGlmIChlcnIgPCAwKQ0KPiAgICAgICAgICAgcmV0dXJuIGVycjsN Cj4gICANCj4gLSAgICBlcnIgPSBmZl9jYnNfYWxsb2NfdW5pdF9jb250ZW50KGN0eCwgdW5p dCk7DQo+ICsgICAgZXJyID0gQ0JTX0ZVTkMoYWxsb2NfdW5pdF9jb250ZW50KShjdHgsIHVu aXQpOw0KPiAgICAgICBpZiAoZXJyIDwgMCkNCj4gICAgICAgICAgIHJldHVybiBlcnI7DQo+ ICAgDQo+IEBAIC0zMTYsNiArMzE3LDcgQEAgc3RhdGljIGludCBjYnNfYXB2X3dyaXRlX3Vu aXQoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsDQo+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgQ29kZWRCaXRzdHJlYW1Vbml0ICp1bml0LA0KPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFB1dEJpdENvbnRleHQgKnBiYykNCj4gICB7DQo+ICsjaWYg Q0JTX1dSSVRFDQo+ICAgICAgIGludCBlcnI7DQo+ICAgDQo+ICAgICAgIHN3aXRjaCAodW5p dC0+dHlwZSkgew0KPiBAQCAtMzU4LDYgKzM2MCw5IEBAIHN0YXRpYyBpbnQgY2JzX2Fwdl93 cml0ZV91bml0KENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LA0KPiAgICAgICB9DQo+ICAg DQo+ICAgICAgIHJldHVybiAwOw0KPiArI2Vsc2UNCj4gKyAgICByZXR1cm4gQVZFUlJPUihF Tk9TWVMpOw0KPiArI2VuZGlmDQo+ICAgfQ0KPiAgIA0KPiAgIHN0YXRpYyBpbnQgY2JzX2Fw dl9hc3NlbWJsZV9mcmFnbWVudChDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwNCj4gQEAg LTQ0MSw3ICs0NDYsNyBAQCBzdGF0aWMgY29uc3QgQ29kZWRCaXRzdHJlYW1Vbml0VHlwZURl c2NyaXB0b3IgY2JzX2Fwdl91bml0X3R5cGVzW10gPSB7DQo+ICAgICAgIENCU19VTklUX1RZ UEVfRU5EX09GX0xJU1QNCj4gICB9Ow0KPiAgIA0KPiAtY29uc3QgQ29kZWRCaXRzdHJlYW1U eXBlIGZmX2Nic190eXBlX2FwdiA9IHsNCj4gK2NvbnN0IENvZGVkQml0c3RyZWFtVHlwZSBD QlNfRlVOQyh0eXBlX2FwdikgPSB7DQo+ICAgICAgIC5jb2RlY19pZCAgICAgICAgICA9IEFW X0NPREVDX0lEX0FQViwNCj4gICANCj4gICAgICAgLnByaXZfZGF0YV9zaXplICAgID0gc2l6 ZW9mKENvZGVkQml0c3RyZWFtQVBWQ29udGV4dCksDQo+IGRpZmYgLS1naXQgYS9saWJhdmZv cm1hdC9NYWtlZmlsZSBiL2xpYmF2Zm9ybWF0L01ha2VmaWxlDQo+IGluZGV4IDgxNmViOWJl NGEuLjg0MWEwZjNhYmYgMTAwNjQ0DQo+IC0tLSBhL2xpYmF2Zm9ybWF0L01ha2VmaWxlDQo+ ICsrKyBiL2xpYmF2Zm9ybWF0L01ha2VmaWxlDQo+IEBAIC0zODEsNyArMzgxLDcgQEAgT0JK Uy0kKENPTkZJR19NT1ZfREVNVVhFUikgICAgICAgICAgICAgICArPSBtb3YubyBtb3ZfY2hh bi5vIG1vdl9lc2RzLm8gXA0KPiAgIE9CSlMtJChDT05GSUdfTU9WX01VWEVSKSAgICAgICAg ICAgICAgICAgKz0gbW92ZW5jLm8gXA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbW92ZW5jaGludC5vIG1vdl9jaGFuLm8gcnRwLm8gXA0KPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW92ZW5jY2Vu Yy5vIG1vdmVuY190dG1sLm8gcmF3dXRpbHMubyBcDQo+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRvdmlfaXNvbS5vIGV2Yy5vIGNicy5vIGNic19h djEubw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk b3ZpX2lzb20ubyBldmMubyBjYnMubyBjYnNfYXYxLm8gY2JzX2Fwdi5vIGFwdi5vDQo+ICAg T0JKUy0kKENPTkZJR19NUDJfTVVYRVIpICAgICAgICAgICAgICAgICArPSByYXdlbmMubw0K PiAgIE9CSlMtJChDT05GSUdfTVAzX0RFTVVYRVIpICAgICAgICAgICAgICAgKz0gbXAzZGVj Lm8gcmVwbGF5Z2Fpbi5vDQo+ICAgT0JKUy0kKENPTkZJR19NUDNfTVVYRVIpICAgICAgICAg ICAgICAgICArPSBtcDNlbmMubyByYXdlbmMubyBpZDN2MmVuYy5vDQo+IGRpZmYgLS1naXQg YS9saWJhdmZvcm1hdC9hcHYuYyBiL2xpYmF2Zm9ybWF0L2Fwdi5jDQo+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLjFmMGNhNzAzYWMNCj4gLS0tIC9kZXYv bnVsbA0KPiArKysgYi9saWJhdmZvcm1hdC9hcHYuYw0KPiBAQCAtMCwwICsxLDQ0NiBAQA0K PiArLyoNCj4gKyAqIEFQViBoZWxwZXIgZnVuY3Rpb25zIGZvciBtdXhlcnMNCj4gKyAqIENv cHlyaWdodCAoYykgMjAyNSBEYXdpZCBLb3ppbnNraSA8ZC5rb3ppbnNraUBzYW1zdW5nLmNv bT4NCj4gKyAqDQo+ICsgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuDQo+ICsgKg0K PiArICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vcg0KPiArICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl c3NlciBHZW5lcmFsIFB1YmxpYw0KPiArICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyDQo+ICsgKiB2ZXJzaW9uIDIuMSBv ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4N Cj4gKyAqDQo+ICsgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwNCj4gKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQo+ICsgKiBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQ0K PiArICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4N Cj4gKyAqDQo+ICsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljDQo+ICsgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZt cGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlDQo+ICsgKiBGb3VuZGF0 aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1B IDAyMTEwLTEzMDEgVVNBDQo+ICsgKi8NCj4gKw0KPiArICNpbmNsdWRlIDxzdGRib29sLmg+ DQo+ICsNCj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvaW50cmVhZHdyaXRlLmgiDQo+ICsjaW5j bHVkZSAibGliYXZ1dGlsL21lbS5oIg0KPiArDQo+ICsjaW5jbHVkZSAibGliYXZjb2RlYy9n b2xvbWIuaCINCj4gKyNpbmNsdWRlICJhdmZvcm1hdC5oIg0KPiArI2luY2x1ZGUgImF2aW8u aCINCj4gKyNpbmNsdWRlICJhcHYuaCINCj4gKyNpbmNsdWRlICJjYnMuaCINCj4gKyNpbmNs dWRlICJsaWJhdmNvZGVjL2Nic19hcHYuaCINCj4gKyNpbmNsdWRlICJhdmlvX2ludGVybmFs LmgiDQo+ICsNCj4gKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KPiArICogRnJhbWUgdHlw ZXMNCj4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCj4gKyNkZWZpbmUgQVBWX0ZSQU1F X1RZUEVfUFJJTUFSWV9GUkFNRSAgICAgKDApDQo+ICsjZGVmaW5lIEFQVl9GUkFNRV9UWVBF X05PTl9QUklNQVJZX0ZSQU1FICgxKQ0KPiArI2RlZmluZSBBUFZfRlJBTUVfVFlQRV9QUkVW SUVXX0ZSQU1FICAgICAoMikNCj4gKyNkZWZpbmUgQVBWX0ZSQU1FX1RZUEVfREVQVEhfRlJB TUUgICAgICAgKDMpDQo+ICsjZGVmaW5lIEFQVl9GUkFNRV9UWVBFX0FMUEhBX0ZSQU1FICAg ICAgICg0KQ0KPiArI2RlZmluZSBBUFZfRlJBTUVfVFlQRV9OT05fRlJBTUUgICAgICAgICAo LTEpDQo+ICsjZGVmaW5lIEFQVl9QQlVfRlJBTUVfVFlQRV9OVU0gICAgICAgICAgICg1KQ0K PiArI2RlZmluZSBDT05GSUdVUkFUSU9OU19NQVggICAgICAgICAgICAgICAoQVBWX1BCVV9G UkFNRV9UWVBFX05VTSkNCj4gKw0KPiArdHlwZWRlZiBzdHJ1Y3QgQVBWRGVjb2RlckZyYW1l SW5mbyB7DQo+ICsgICAgdWludDhfdCByZXNlcnZlZF96ZXJvXzZiaXRzOyAgICAgICAgICAg ICAgICAgICAgLy8gNiBiaXRzDQoNCk5vIHBvaW50IGluIGhhdmluZyB0aGVzZS4NCg0KPiAr ICAgIHVpbnQ4X3QgY29sb3JfZGVzY3JpcHRpb25fcHJlc2VudF9mbGFnOyAgICAgICAgIC8v IDEgYml0DQo+ICsNCj4gKyAgICAvLyBUaGUgdmFyaWFibGUgaW5kaWNhdGVzIHdoZXRoZXIg dGhlIGNhcHR1cmVfdGltZV9kaXN0YW5jZSB2YWx1ZSBpbiB0aGUgQVBWIGJpdHN0cmVhbSdz IGZyYW1lIGhlYWRlciBzaG91bGQgYmUgaWdub3JlZCBkdXJpbmcgcGxheWJhY2suDQo+ICsg ICAgLy8gSWYgY2FwdHVyZV90aW1lX2Rpc3RhbmNlX2lnbm9yZWQgaXMgc2V0IHRvIHRydWUs IHRoZSBjYXB0dXJlX3RpbWVfZGlzdGFuY2UgaW5mb3JtYXRpb24gd2lsbCBub3QgYmUgdXRp bGl6ZWQsDQo+ICsgICAgLy8gYW5kIHRpbWluZyBpbmZvcm1hdGlvbiBmb3IgcGxheWJhY2sg c2hvdWxkIGJlIGNhbGN1bGF0ZWQgdXNpbmcgYW4gYWx0ZXJuYXRpdmUgbWV0aG9kLg0KPiAr ICAgIC8vIElmIHNldCB0byBmYWxzZSwgdGhlIGNhcHR1cmVfdGltZV9kaXN0YW5jZSB2YWx1 ZSB3aWxsIGJlIHVzZWQgYXMgaXMgZnJvbSB0aGUgZnJhbWUgaGVhZGVyLg0KPiArICAgIC8v IEl0IGlzIHJlY29tbWVuZGVkIHRvIHNldCB0aGlzIHZhcmlhYmxlIHRvIHRydWUsIGFsbG93 aW5nIHRoZSB1c2Ugb2YgTVA0IHRpbWVzdGFtcHMgZm9yIHBsYXliYWNrIGFuZCByZWNvcmRp bmcsDQo+ICsgICAgLy8gd2hpY2ggZW5hYmxlcyB0aGUgY29udmVudGlvbmFsIGNvbXByZXNz aW9uIGFuZCBwbGF5YmFjayBtZXRob2RzIGJhc2VkIG9uIHRoZSB0aW1lc3RhbXAgdGFibGUg ZGVmaW5lZCBieSB0aGUgSVNPLWJhc2VkIGZpbGUgZm9ybWF0Lg0KPiArICAgIHVpbnQ4X3Qg Y2FwdHVyZV90aW1lX2Rpc3RhbmNlX2lnbm9yZWQ7ICAgICAgICAgIC8vIDEtYml0DQo+ICsN Cj4gKyAgICB1aW50OF90IHByb2ZpbGVfaWRjOyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAvLyA4IGJpdHMNCj4gKyAgICB1aW50OF90IGxldmVsX2lkYzsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAvLyA4IGJpdHMNCj4gKyAgICB1aW50OF90IGJhbmRfaWRjOyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA4IGJpdHMNCj4gKyAgICB1aW50MzJfdCBm cmFtZV93aWR0aDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAzMiBiaXRzDQo+ICsg ICAgdWludDMyX3QgZnJhbWVfaGVpZ2h0OyAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g MzIgYml0cw0KPiArICAgIHVpbnQ4X3QgY2hyb21hX2Zvcm1hdF9pZGM7ICAgICAgICAgICAg ICAgICAgICAgIC8vIDQgYml0cw0KPiArICAgIHVpbnQ4X3QgYml0X2RlcHRoX21pbnVzODsg ICAgICAgICAgICAgICAgICAgICAgIC8vIDQgYml0cw0KPiArICAgIHVpbnQ4X3QgY2FwdHVy ZV90aW1lX2Rpc3RhbmNlOyAgICAgICAgICAgICAgICAgIC8vIDggYml0cw0KPiArDQo+ICsg ICAgLy8gaWYgKGNvbG9yX2Rlc2NyaXB0aW9uX3ByZXNlbnRfZmxhZykNCj4gKyAgICB1aW50 OF90IGNvbG9yX3ByaW1hcmllczsgICAgICAgICAgICAgICAgICAgICAgICAvLyA4IGJpdHMN Cj4gKyAgICB1aW50OF90IHRyYW5zZmVyX2NoYXJhY3RlcmlzdGljczsgICAgICAgICAgICAg ICAvLyA4IGJpdHMNCj4gKyAgICB1aW50OF90IG1hdHJpeF9jb2VmZmljaWVudHM7ICAgICAg ICAgICAgICAgICAgICAvLyA4IGJpdHMNCj4gKyAgICB1aW50OF90IGZ1bGxfcmFuZ2VfZmxh ZzsgICAgICAgICAgICAgICAgICAgICAgICAvLyAxIGJpdA0KPiArICAgIHVpbnQ4X3QgcmVz ZXJ2ZWRfemVyb183Yml0czsgICAgICAgICAgICAgICAgICAgIC8vIDcgYml0cw0KPiArDQo+ ICt9IEFQVkRlY29kZXJGcmFtZUluZm87DQo+ICsNCj4gK3R5cGVkZWYgc3RydWN0IEFQVkRl Y29kZXJDb25maWd1cmF0aW9uRW50cnkgew0KPiArICAgIHVpbnQ4X3QgcGJ1X3R5cGU7ICAg ICAgICAgICAgICAgICAgIC8vIDggYml0cw0KPiArICAgIHVpbnQ4X3QgbnVtYmVyX29mX2Zy YW1lX2luZm87ICAgICAgIC8vIDggYml0cw0KPiArDQo+ICsgICAgQVBWRGVjb2RlckZyYW1l SW5mbyoqIGZyYW1lX2luZm87ICAgLy8gQW4gYXJyYXkgb2Ygc2l6ZSBudW1iZXJfb2ZfZnJh bWVfaW5mbyBzdG9yaW5nIGVsZW1lbnRzIG9mIHR5cGUgQVBWRGVjb2RlckZyYW1lSW5mbyoN Cj4gKw0KPiArfSBBUFZEZWNvZGVyQ29uZmlndXJhdGlvbkVudHJ5Ow0KPiArDQo+ICsvLyBJ U09CTUZGIGJpbmRpbmcgZm9yIEFQVg0KPiArLy8gQHNlZSBodHRwczovL2dpdGh1Yi5jb20v b3BlbmFwdi9vcGVuYXB2L2Jsb2IvbWFpbi9yZWFkbWUvYXB2X2lzb2JtZmYubWQNCj4gK3R5 cGVkZWYgc3RydWN0IEFQVkRlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkICB7DQo+ICsgICAg dWludDhfdCBjb25maWd1cmF0aW9uVmVyc2lvbjsgICAgICAgICAgIC8vIDggYml0cw0KPiAr ICAgIHVpbnQ4X3QgbnVtYmVyX29mX2NvbmZpZ3VyYXRpb25fZW50cnk7ICAvLyA4IGJpdHMN Cj4gKw0KPiArICAgIEFQVkRlY29kZXJDb25maWd1cmF0aW9uRW50cnkgY29uZmlndXJhdGlv bl9lbnRyeVtDT05GSUdVUkFUSU9OU19NQVhdOyAvLyB0YWJsZSBvZiBzaXplIG51bWJlcl9v Zl9jb25maWd1cmF0aW9uX2VudHJ5DQo+ICsNCj4gK30gQVBWRGVjb2RlckNvbmZpZ3VyYXRp b25SZWNvcmQgOw0KPiArDQo+ICtzdGF0aWMgdm9pZCBhcHZjX2luaXQoQVBWRGVjb2RlckNv bmZpZ3VyYXRpb25SZWNvcmQgKiBhcHZjKQ0KPiArew0KPiArICAgIG1lbXNldChhcHZjLCAw LCBzaXplb2YoQVBWRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQgKSk7DQo+ICsgICAgYXB2 Yy0+Y29uZmlndXJhdGlvblZlcnNpb24gPSAxOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9p ZCBhcHZjX2Nsb3NlKEFQVkRlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkICphcHZjKQ0KPiAr ew0KPiArICAgIGZvcihpbnQgaT0wO2k8YXB2Yy0+bnVtYmVyX29mX2NvbmZpZ3VyYXRpb25f ZW50cnk7aSsrKSB7DQo+ICsgICAgICAgIGZvcihpbnQgaj0wO2o8YXB2Yy0+Y29uZmlndXJh dGlvbl9lbnRyeVtpXS5udW1iZXJfb2ZfZnJhbWVfaW5mbztqKyspIHsNCj4gKyAgICAgICAg ICAgIGZyZWUoYXB2Yy0+Y29uZmlndXJhdGlvbl9lbnRyeVtpXS5mcmFtZV9pbmZvW2pdKTsN Cj4gKyAgICAgICAgfQ0KPiArICAgICAgICBmcmVlKGFwdmMtPmNvbmZpZ3VyYXRpb25fZW50 cnlbaV0uZnJhbWVfaW5mbyk7DQo+ICsgICAgICAgIGFwdmMtPmNvbmZpZ3VyYXRpb25fZW50 cnlbaV0ubnVtYmVyX29mX2ZyYW1lX2luZm8gPSAwOw0KPiArICAgIH0NCj4gKyAgICBhcHZj LT5udW1iZXJfb2ZfY29uZmlndXJhdGlvbl9lbnRyeSA9IDA7DQo+ICt9DQo+ICsNCj4gK3N0 YXRpYyBpbnQgYXB2Y193cml0ZShBVklPQ29udGV4dCAqcGIsIEFQVkRlY29kZXJDb25maWd1 cmF0aW9uUmVjb3JkICogYXB2YykNCj4gK3sNCj4gKyAgICBhdl9sb2coTlVMTCwgQVZfTE9H X1RSQUNFLCAiY29uZmlndXJhdGlvblZlcnNpb246ICAgICAgICAgICAgICAgICAgICAgICAg ICAgJSJQUkl1OCJcbiIsDQo+ICsgICAgYXB2Yy0+Y29uZmlndXJhdGlvblZlcnNpb24pOw0K PiArDQo+ICsgICAgYXZfbG9nKE5VTEwsIEFWX0xPR19UUkFDRSwgIm51bWJlcl9vZl9jb25m aWd1cmF0aW9uX2VudHJ5OiAgICAgICAgICAgICAgICAgICUiUFJJdTgiXG4iLA0KPiArICAg IGFwdmMtPm51bWJlcl9vZl9jb25maWd1cmF0aW9uX2VudHJ5KTsNCj4gKw0KPiArICAgIGZv cihpbnQgaT0wOyBpPGFwdmMtPm51bWJlcl9vZl9jb25maWd1cmF0aW9uX2VudHJ5O2krKykg ew0KPiArICAgICAgICBhdl9sb2coTlVMTCwgQVZfTE9HX1RSQUNFLCAicGJ1X3R5cGU6ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIlBSSXU4IlxuIiwNCj4gKyAgICAg ICAgYXB2Yy0+Y29uZmlndXJhdGlvbl9lbnRyeVtpXS5wYnVfdHlwZSk7DQo+ICsNCj4gKyAg ICAgICAgYXZfbG9nKE5VTEwsIEFWX0xPR19UUkFDRSwgIm51bWJlcl9vZl9mcmFtZV9pbmZv OiAgICAgICAgICAgICAgICAgICAgICAgJSJQUkl1OCJcbiIsDQo+ICsgICAgICAgIGFwdmMt PmNvbmZpZ3VyYXRpb25fZW50cnlbaV0ubnVtYmVyX29mX2ZyYW1lX2luZm8pOw0KPiArDQo+ ICsgICAgICAgIGZvcihpbnQgaj0wOyBqIDwgYXB2Yy0+Y29uZmlndXJhdGlvbl9lbnRyeVtp XS5udW1iZXJfb2ZfZnJhbWVfaW5mbzsgaisrKSB7DQo+ICsgICAgICAgICAgICBhdl9sb2co TlVMTCwgQVZfTE9HX1RSQUNFLCAiY29sb3JfZGVzY3JpcHRpb25fcHJlc2VudF9mbGFnOiAg ICAgICAgICUiUFJJdTgiXG4iLA0KPiArICAgICAgICAgICAgYXB2Yy0+Y29uZmlndXJhdGlv bl9lbnRyeVtpXS5mcmFtZV9pbmZvW2pdLT5jb2xvcl9kZXNjcmlwdGlvbl9wcmVzZW50X2Zs YWcpOw0KPiArDQo+ICsgICAgICAgICAgICBhdl9sb2coTlVMTCwgQVZfTE9HX1RSQUNFLCAi Y2FwdHVyZV90aW1lX2Rpc3RhbmNlX2lnbm9yZWQ6ICAgICAgICAgICUiUFJJdTgiXG4iLA0K PiArICAgICAgICAgICAgYXB2Yy0+Y29uZmlndXJhdGlvbl9lbnRyeVtpXS5mcmFtZV9pbmZv W2pdLT5jYXB0dXJlX3RpbWVfZGlzdGFuY2VfaWdub3JlZCk7DQo+ICsNCj4gKyAgICAgICAg ICAgIGF2X2xvZyhOVUxMLCBBVl9MT0dfVFJBQ0UsICJwcm9maWxlX2lkYzogICAgICAgICAg ICAgICAgICAgICAgICAgICAgJSJQUkl1OCJcbiIsDQo+ICsgICAgICAgICAgICBhcHZjLT5j b25maWd1cmF0aW9uX2VudHJ5W2ldLmZyYW1lX2luZm9bal0tPnByb2ZpbGVfaWRjKTsNCj4g Kw0KPiArICAgICAgICAgICAgYXZfbG9nKE5VTEwsIEFWX0xPR19UUkFDRSwgImxldmVsX2lk YzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIlBSSXU4IlxuIiwNCj4gKyAgICAg ICAgICAgIGFwdmMtPmNvbmZpZ3VyYXRpb25fZW50cnlbaV0uZnJhbWVfaW5mb1tqXS0+bGV2 ZWxfaWRjKTsNCj4gKw0KPiArICAgICAgICAgICAgYXZfbG9nKE5VTEwsIEFWX0xPR19UUkFD RSwgImJhbmRfaWRjOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIlBSSXU4Ilxu IiwNCj4gKyAgICAgICAgICAgIGFwdmMtPmNvbmZpZ3VyYXRpb25fZW50cnlbaV0uZnJhbWVf aW5mb1tqXS0+YmFuZF9pZGMpOw0KPiArDQo+ICsgICAgICAgICAgICBhdl9sb2coTlVMTCwg QVZfTE9HX1RSQUNFLCAiZnJhbWVfd2lkdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICUiUFJJdTMyIlxuIiwNCj4gKyAgICAgICAgICAgIGFwdmMtPmNvbmZpZ3VyYXRpb25fZW50 cnlbaV0uZnJhbWVfaW5mb1tqXS0+ZnJhbWVfd2lkdGgpOw0KPiArDQo+ICsgICAgICAgICAg ICBhdl9sb2coTlVMTCwgQVZfTE9HX1RSQUNFLCAiZnJhbWVfaGVpZ2h0OiAgICAgICAgICAg ICAgICAgICAgICAgICAgICUiUFJJdTMyIlxuIiwNCj4gKyAgICAgICAgICAgIGFwdmMtPmNv bmZpZ3VyYXRpb25fZW50cnlbaV0uZnJhbWVfaW5mb1tqXS0+ZnJhbWVfaGVpZ2h0KTsNCj4g Kw0KPiArICAgICAgICAgICAgYXZfbG9nKE5VTEwsIEFWX0xPR19UUkFDRSwgImNocm9tYV9m b3JtYXRfaWRjOiAgICAgICAgICAgICAgICAgICAgICAlIlBSSXU4IlxuIiwNCj4gKyAgICAg ICAgICAgIGFwdmMtPmNvbmZpZ3VyYXRpb25fZW50cnlbaV0uZnJhbWVfaW5mb1tqXS0+Y2hy b21hX2Zvcm1hdF9pZGMpOw0KPiArDQo+ICsgICAgICAgICAgICBhdl9sb2coTlVMTCwgQVZf TE9HX1RSQUNFLCAiYml0X2RlcHRoX21pbnVzODogICAgICAgICAgICAgICAgICAgICAgICUi UFJJdTgiXG4iLA0KPiArICAgICAgICAgICAgYXB2Yy0+Y29uZmlndXJhdGlvbl9lbnRyeVtp XS5mcmFtZV9pbmZvW2pdLT5iaXRfZGVwdGhfbWludXM4KTsNCj4gKw0KPiArICAgICAgICAg ICAgYXZfbG9nKE5VTEwsIEFWX0xPR19UUkFDRSwgImNhcHR1cmVfdGltZV9kaXN0YW5jZTog ICAgICAgICAgICAgICAgICAlIlBSSXU4IlxuIiwNCj4gKyAgICAgICAgICAgIGFwdmMtPmNv bmZpZ3VyYXRpb25fZW50cnlbaV0uZnJhbWVfaW5mb1tqXS0+Y2FwdHVyZV90aW1lX2Rpc3Rh bmNlKTsNCj4gKw0KPiArICAgICAgICAgICAgaWYoYXB2Yy0+Y29uZmlndXJhdGlvbl9lbnRy eVtpXS5mcmFtZV9pbmZvW2pdLT5jb2xvcl9kZXNjcmlwdGlvbl9wcmVzZW50X2ZsYWcpIHsN Cj4gKw0KPiArICAgICAgICAgICAgICAgIGF2X2xvZyhOVUxMLCBBVl9MT0dfVFJBQ0UsICJj b2xvcl9wcmltYXJpZXM6ICAgICAgICAgICAgICAgICAgICAlIlBSSXU4IlxuIiwNCj4gKyAg ICAgICAgICAgICAgICBhcHZjLT5jb25maWd1cmF0aW9uX2VudHJ5W2ldLmZyYW1lX2luZm9b al0tPmNvbG9yX3ByaW1hcmllcyk7DQo+ICsNCj4gKyAgICAgICAgICAgICAgICBhdl9sb2co TlVMTCwgQVZfTE9HX1RSQUNFLCAidHJhbnNmZXJfY2hhcmFjdGVyaXN0aWNzOiAgICAgICAg ICAgJSJQUkl1OCJcbiIsDQo+ICsgICAgICAgICAgICAgICAgYXB2Yy0+Y29uZmlndXJhdGlv bl9lbnRyeVtpXS5mcmFtZV9pbmZvW2pdLT50cmFuc2Zlcl9jaGFyYWN0ZXJpc3RpY3MpOw0K PiArDQo+ICsgICAgICAgICAgICAgICAgYXZfbG9nKE5VTEwsIEFWX0xPR19UUkFDRSwgIm1h dHJpeF9jb2VmZmljaWVudHM6ICAgICAgICAgICAgICAgICUiUFJJdTgiXG4iLA0KPiArICAg ICAgICAgICAgICAgIGFwdmMtPmNvbmZpZ3VyYXRpb25fZW50cnlbaV0uZnJhbWVfaW5mb1tq XS0+bWF0cml4X2NvZWZmaWNpZW50cyk7DQo+ICsNCj4gKyAgICAgICAgICAgICAgICBhdl9s b2coTlVMTCwgQVZfTE9HX1RSQUNFLCAiZnVsbF9yYW5nZV9mbGFnOiAgICAgICAgICAgICAg ICAgICAgJSJQUkl1OCJcbiIsDQo+ICsgICAgICAgICAgICAgICAgYXB2Yy0+Y29uZmlndXJh dGlvbl9lbnRyeVtpXS5mcmFtZV9pbmZvW2pdLT5mdWxsX3JhbmdlX2ZsYWcpOw0KPiArICAg ICAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgIH0NCj4gKyAgICB9DQo+ICsNCj4gKyAgICAv KiB1bnNpZ25lZCBpbnQoOCkgY29uZmlndXJhdGlvblZlcnNpb24gPSAxOyAqLw0KPiArICAg IGF2aW9fdzgocGIsIGFwdmMtPmNvbmZpZ3VyYXRpb25WZXJzaW9uKTsNCj4gKw0KPiArICAg IGF2aW9fdzgocGIsIGFwdmMtPm51bWJlcl9vZl9jb25maWd1cmF0aW9uX2VudHJ5KTsNCj4g Kw0KPiArICAgIGZvcihpbnQgaT0wOyBpPGFwdmMtPm51bWJlcl9vZl9jb25maWd1cmF0aW9u X2VudHJ5O2krKykgew0KPiArICAgICAgICBhdmlvX3c4KHBiLCBhcHZjLT5jb25maWd1cmF0 aW9uX2VudHJ5W2ldLnBidV90eXBlKTsNCj4gKyAgICAgICAgYXZpb193OChwYiwgYXB2Yy0+ Y29uZmlndXJhdGlvbl9lbnRyeVtpXS5udW1iZXJfb2ZfZnJhbWVfaW5mbyk7DQo+ICsNCj4g KyAgICAgICAgZm9yKGludCBqPTA7IGogPCBhcHZjLT5jb25maWd1cmF0aW9uX2VudHJ5W2ld Lm51bWJlcl9vZl9mcmFtZV9pbmZvOyBqKyspIHsNCj4gKw0KPiArICAgICAgICAgICAgLyog dW5zaWduZWQgaW50KDYpIHJlc2VydmVkX3plcm9fNmJpdHMNCj4gKyAgICAgICAgICAgICog dW5zaWduZWQgaW50KDEpIGNvbG9yX2Rlc2NyaXB0aW9uX3ByZXNlbnRfZmxhZw0KPiArICAg ICAgICAgICAgKiB1bnNpZ25lZCBpbnQoMSkgY2FwdHVyZV90aW1lX2Rpc3RhbmNlX2lnbm9y ZWQNCj4gKyAgICAgICAgICAgICovDQo+ICsgICAgICAgICAgICBhdmlvX3c4KHBiLCBhcHZj LT5jb25maWd1cmF0aW9uX2VudHJ5W2ldLmZyYW1lX2luZm9bal0tPnJlc2VydmVkX3plcm9f NmJpdHMgPDwgMiB8DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBhcHZjLT5jb25maWd1 cmF0aW9uX2VudHJ5W2ldLmZyYW1lX2luZm9bal0tPmNvbG9yX2Rlc2NyaXB0aW9uX3ByZXNl bnRfZmxhZyA8PCAxIHwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGFwdmMtPmNvbmZp Z3VyYXRpb25fZW50cnlbaV0uZnJhbWVfaW5mb1tqXS0+Y2FwdHVyZV90aW1lX2Rpc3RhbmNl X2lnbm9yZWQpOw0KPiArDQo+ICsgICAgICAgICAgICAvKiB1bnNpZ25lZCBpbnQoOCkgcHJv ZmlsZV9pZGMgKi8NCj4gKyAgICAgICAgICAgIGF2aW9fdzgocGIsIGFwdmMtPmNvbmZpZ3Vy YXRpb25fZW50cnlbaV0uZnJhbWVfaW5mb1tqXS0+cHJvZmlsZV9pZGMpOw0KPiArDQo+ICsg ICAgICAgICAgICAvKiB1bnNpZ25lZCBpbnQoOCkgbGV2ZWxfaWRjICovDQo+ICsgICAgICAg ICAgICBhdmlvX3c4KHBiLCBhcHZjLT5jb25maWd1cmF0aW9uX2VudHJ5W2ldLmZyYW1lX2lu Zm9bal0tPmxldmVsX2lkYyk7DQo+ICsNCj4gKyAgICAgICAgICAgIC8qIHVuc2lnbmVkIGlu dCg4KSBiYW5kX2lkYyAqLw0KPiArICAgICAgICAgICAgYXZpb193OChwYiwgYXB2Yy0+Y29u ZmlndXJhdGlvbl9lbnRyeVtpXS5mcmFtZV9pbmZvW2pdLT5iYW5kX2lkYyk7DQo+ICsNCj4g KyAgICAgICAgICAgIC8qIHVuc2lnbmVkIGludCgzMikgZnJhbWVfd2lkdGhfbWludXMxICov DQo+ICsgICAgICAgICAgICBhdmlvX3diMzIocGIsIGFwdmMtPmNvbmZpZ3VyYXRpb25fZW50 cnlbaV0uZnJhbWVfaW5mb1tqXS0+ZnJhbWVfd2lkdGgpOw0KPiArDQo+ICsgICAgICAgICAg ICAvKiB1bnNpZ25lZCBpbnQoMzIpIGZyYW1lX2hlaWdodF9taW51czEgKi8NCj4gKyAgICAg ICAgICAgIGF2aW9fd2IzMihwYiwgYXB2Yy0+Y29uZmlndXJhdGlvbl9lbnRyeVtpXS5mcmFt ZV9pbmZvW2pdLT5mcmFtZV9oZWlnaHQpOw0KPiArDQo+ICsgICAgICAgICAgICAvKiB1bnNp Z25lZCBpbnQoNCkgY2hyb21hX2Zvcm1hdF9pZGMgKi8NCj4gKyAgICAgICAgICAgIC8qIHVu c2lnbmVkIGludCg0KSBiaXRfZGVwdGhfbWludXM4ICovDQo+ICsgICAgICAgICAgICBhdmlv X3c4KHBiLCBhcHZjLT5jb25maWd1cmF0aW9uX2VudHJ5W2ldLmZyYW1lX2luZm9bal0tPmNo cm9tYV9mb3JtYXRfaWRjIDw8IDQgfCBhcHZjLT5jb25maWd1cmF0aW9uX2VudHJ5W2ldLmZy YW1lX2luZm9bal0tPmJpdF9kZXB0aF9taW51czgpOw0KPiArDQo+ICsgICAgICAgICAgICAv KiB1bnNpZ25lZCBpbnQoOCkgY2FwdHVyZV90aW1lX2Rpc3RhbmNlICovDQo+ICsgICAgICAg ICAgICBhdmlvX3c4KHBiLCBhcHZjLT5jb25maWd1cmF0aW9uX2VudHJ5W2ldLmZyYW1lX2lu Zm9bal0tPmNhcHR1cmVfdGltZV9kaXN0YW5jZSk7DQo+ICsNCj4gKyAgICAgICAgICAgIGlm KGFwdmMtPmNvbmZpZ3VyYXRpb25fZW50cnlbaV0uZnJhbWVfaW5mb1tqXS0+Y29sb3JfZGVz Y3JpcHRpb25fcHJlc2VudF9mbGFnKSB7DQo+ICsgICAgICAgICAgICAgICAgLyogdW5zaWdu ZWQgaW50KDgpIGNvbG9yX3ByaW1hcmllcyAqLw0KPiArICAgICAgICAgICAgICAgIGF2aW9f dzgocGIsIGFwdmMtPmNvbmZpZ3VyYXRpb25fZW50cnlbaV0uZnJhbWVfaW5mb1tqXS0+Y29s b3JfcHJpbWFyaWVzKTsNCj4gKw0KPiArICAgICAgICAgICAgICAgIC8qIHVuc2lnbmVkIGlu dCg4KSB0cmFuc2Zlcl9jaGFyYWN0ZXJpc3RpY3MgKi8NCj4gKyAgICAgICAgICAgICAgICBh dmlvX3c4KHBiLCBhcHZjLT5jb25maWd1cmF0aW9uX2VudHJ5W2ldLmZyYW1lX2luZm9bal0t PnRyYW5zZmVyX2NoYXJhY3RlcmlzdGljcyk7DQo+ICsNCj4gKyAgICAgICAgICAgICAgICAv KiB1bnNpZ25lZCBpbnQoOCkgbWF0cml4X2NvZWZmaWNpZW50cyAqLw0KPiArICAgICAgICAg ICAgICAgIGF2aW9fdzgocGIsIGFwdmMtPmNvbmZpZ3VyYXRpb25fZW50cnlbaV0uZnJhbWVf aW5mb1tqXS0+bWF0cml4X2NvZWZmaWNpZW50cyk7DQo+ICsNCj4gKyAgICAgICAgICAgICAg ICAvKiB1bnNpZ25lZCBpbnQoMSkgZnVsbF9yYW5nZV9mbGFnICovDQo+ICsgICAgICAgICAg ICAgICAgYXZpb193OChwYiwgYXB2Yy0+Y29uZmlndXJhdGlvbl9lbnRyeVtpXS5mcmFtZV9p bmZvW2pdLT5mdWxsX3JhbmdlX2ZsYWcgPDwgNyB8DQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYXB2Yy0+Y29uZmlndXJhdGlvbl9lbnRyeVtpXS5mcmFtZV9pbmZvW2pdLT5y ZXNlcnZlZF96ZXJvXzdiaXRzKTsNCj4gKyAgICAgICAgICAgIH0NCj4gKyAgICAgICAgfQ0K PiArICAgIH0NCj4gKw0KPiArICAgIHJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtpbnQgZmZf aXNvbV93cml0ZV9hcHZjKEFWSU9Db250ZXh0ICpwYiwgY29uc3QgdWludDhfdCAqZGF0YSwN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgaW50IHNpemUsIGludCBwc19hcnJheV9jb21w bGV0ZW5lc3MpDQo+ICt7DQo+ICsgICAgQVBWRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQg KmFwdmMgPSAoQVBWRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQgKilkYXRhOw0KPiArICAg IGludCByZXQgPSAwOw0KPiArDQo+ICsgICAgaWYgKHNpemUgPCA4KSB7DQo+ICsgICAgICAg IC8qIFdlIGNhbid0IHdyaXRlIGEgdmFsaWQgYXB2QyBmcm9tIHRoZSBwcm92aWRlZCBkYXRh ICovDQo+ICsgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOw0KPiArICAgIH0N Cj4gKw0KPiArICAgIGlmKHNpemUhPXNpemVvZihBUFZEZWNvZGVyQ29uZmlndXJhdGlvblJl Y29yZCkpIHJldHVybiAtMTsNCj4gKyAgICByZXQgPSBhcHZjX3dyaXRlKHBiLCBhcHZjKTsN Cj4gKw0KPiArICAgIGFwdmNfY2xvc2UoYXB2Yyk7DQo+ICsgICAgcmV0dXJuIHJldDsNCj4g K30NCj4gKw0KPiArc3RhdGljIGludCBhcHZfYWRkX2ZyYW1laW5mbyhBUFZEZWNvZGVyQ29u ZmlndXJhdGlvbkVudHJ5ICpjb25maWd1cmF0aW9uX2VudHJ5LCBBUFZEZWNvZGVyRnJhbWVJ bmZvICpmcmFtZV9pbmZvKSB7DQo+ICsgICAgQVBWRGVjb2RlckZyYW1lSW5mbyAqKnRlbXAg PSBOVUxMOw0KPiArICAgIGlmKGNvbmZpZ3VyYXRpb25fZW50cnktPm51bWJlcl9vZl9mcmFt ZV9pbmZvID09IDApIHsNCj4gKyAgICAgICAgdGVtcCA9IChBUFZEZWNvZGVyRnJhbWVJbmZv ICoqKW1hbGxvYyhzaXplb2YoQVBWRGVjb2RlckZyYW1lSW5mbyopKTsNCg0KWW91J3JlIG1p eGluZyBhdnV0aWwgbWVtb3J5IGFsbG9jYXRpb24gZnVuY3Rpb25zIHdpdGggc3lzdGVtIHBy b3ZpZGVyIA0Kb25lcy4gSXQgd2lsbCBsZWFkIHRvIGNyYXNoZXMuDQoNCj4gKyAgICAgICAg aWYgKHRlbXAgPT0gTlVMTCkgew0KPiArICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5W QUxJRERBVEE7DQo+ICsgICAgICAgIH0NCj4gKyAgICB9IGVsc2Ugew0KPiArICAgICAgICB0 ZW1wID0gKEFQVkRlY29kZXJGcmFtZUluZm8gKiopcmVhbGxvYyhjb25maWd1cmF0aW9uX2Vu dHJ5LT5mcmFtZV9pbmZvLCAoY29uZmlndXJhdGlvbl9lbnRyeS0+bnVtYmVyX29mX2ZyYW1l X2luZm8gKyAxKSAqIHNpemVvZihBUFZEZWNvZGVyRnJhbWVJbmZvKikpOw0KDQpTYW1lLg0K DQo+ICsgICAgICAgIGlmICh0ZW1wID09IE5VTEwpIHsNCj4gKyAgICAgICAgICAgIHJldHVy biBBVkVSUk9SX0lOVkFMSUREQVRBOw0KPiArICAgICAgICB9DQo+ICsgICAgfQ0KPiArDQo+ ICsgICAgdGVtcFtjb25maWd1cmF0aW9uX2VudHJ5LT5udW1iZXJfb2ZfZnJhbWVfaW5mb10g PSAoQVBWRGVjb2RlckZyYW1lSW5mbyopbWFsbG9jKHNpemVvZihBUFZEZWNvZGVyRnJhbWVJ bmZvKSk7DQo+ICsgICAgbWVtY3B5KHRlbXBbY29uZmlndXJhdGlvbl9lbnRyeS0+bnVtYmVy X29mX2ZyYW1lX2luZm9dLCBmcmFtZV9pbmZvLCBzaXplb2YoQVBWRGVjb2RlckZyYW1lSW5m bykpOw0KPiArDQo+ICsgICAgY29uZmlndXJhdGlvbl9lbnRyeS0+ZnJhbWVfaW5mbyA9IHRl bXA7DQo+ICsNCj4gKyAgICBjb25maWd1cmF0aW9uX2VudHJ5LT5udW1iZXJfb2ZfZnJhbWVf aW5mbysrOw0KDQpZb3UgbmV2ZXIgc2V0IHBidV90eXBlLg0KDQo+ICsNCj4gKyAgICByZXR1 cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGJvb2wgYXB2X2NtcF9mcmFtZWluZm8oY29u c3QgQVBWRGVjb2RlckZyYW1lSW5mbyAqYSwgY29uc3QgQVBWRGVjb2RlckZyYW1lSW5mbyAq Yikgew0KPiArICAgIGlmIChhLT5yZXNlcnZlZF96ZXJvXzZiaXRzICE9IGItPnJlc2VydmVk X3plcm9fNmJpdHMpIHJldHVybiBmYWxzZTsNCj4gKyAgICBpZiAoYS0+Y29sb3JfZGVzY3Jp cHRpb25fcHJlc2VudF9mbGFnICE9IGItPmNvbG9yX2Rlc2NyaXB0aW9uX3ByZXNlbnRfZmxh ZykgcmV0dXJuIGZhbHNlOw0KPiArICAgIGlmIChhLT5jYXB0dXJlX3RpbWVfZGlzdGFuY2Vf aWdub3JlZCAhPSBiLT5jYXB0dXJlX3RpbWVfZGlzdGFuY2VfaWdub3JlZCkgcmV0dXJuIGZh bHNlOw0KPiArICAgIGlmIChhLT5wcm9maWxlX2lkYyAhPSBiLT5wcm9maWxlX2lkYykgcmV0 dXJuIGZhbHNlOw0KPiArICAgIGlmIChhLT5sZXZlbF9pZGMgIT0gYi0+bGV2ZWxfaWRjKSBy ZXR1cm4gZmFsc2U7DQo+ICsgICAgaWYgKGEtPmJhbmRfaWRjICE9IGItPmJhbmRfaWRjKSBy ZXR1cm4gZmFsc2U7DQo+ICsgICAgaWYgKGEtPmZyYW1lX3dpZHRoICE9IGItPmZyYW1lX3dp ZHRoKSByZXR1cm4gZmFsc2U7DQo+ICsgICAgaWYgKGEtPmZyYW1lX2hlaWdodCAhPSBiLT5m cmFtZV9oZWlnaHQpIHJldHVybiBmYWxzZTsNCj4gKyAgICBpZiAoYS0+Y2hyb21hX2Zvcm1h dF9pZGMgIT0gYi0+Y2hyb21hX2Zvcm1hdF9pZGMpIHJldHVybiBmYWxzZTsNCj4gKyAgICBp ZiAoYS0+Yml0X2RlcHRoX21pbnVzOCAhPSBiLT5iaXRfZGVwdGhfbWludXM4KSByZXR1cm4g ZmFsc2U7DQo+ICsgICAgaWYgKGEtPmNhcHR1cmVfdGltZV9kaXN0YW5jZSAhPSBiLT5jYXB0 dXJlX3RpbWVfZGlzdGFuY2UpIHJldHVybiBmYWxzZTsNCj4gKyAgICBpZiAoYS0+Y29sb3Jf cHJpbWFyaWVzICE9IGItPmNvbG9yX3ByaW1hcmllcykgcmV0dXJuIGZhbHNlOw0KPiArICAg IGlmIChhLT50cmFuc2Zlcl9jaGFyYWN0ZXJpc3RpY3MgIT0gYi0+dHJhbnNmZXJfY2hhcmFj dGVyaXN0aWNzKSByZXR1cm4gZmFsc2U7DQo+ICsgICAgaWYgKGEtPm1hdHJpeF9jb2VmZmlj aWVudHMgIT0gYi0+bWF0cml4X2NvZWZmaWNpZW50cykgcmV0dXJuIGZhbHNlOw0KPiArICAg IGlmIChhLT5mdWxsX3JhbmdlX2ZsYWcgIT0gYi0+ZnVsbF9yYW5nZV9mbGFnKSByZXR1cm4g ZmFsc2U7DQo+ICsgICAgaWYgKGEtPnJlc2VydmVkX3plcm9fN2JpdHMgIT0gYi0+cmVzZXJ2 ZWRfemVyb183Yml0cykgcmV0dXJuIGZhbHNlOw0KPiArDQo+ICsgICAgcmV0dXJuIHRydWU7 DQoNClRoaXMgZW50aXJlIGZ1bmN0aW9uIGNhbiBiZSByZXBsYWNlZCB3aXRoIGEgc2luZ2xl IG1lbWNtcC4NCg0KPiArfQ0KPiArDQo+ICtpbnQgZmZfaXNvbV9jcmVhdGVfYXB2X2Rjb25m X3JlY29yZCh1aW50OF90ICoqZGF0YSwgaW50ICpzaXplKSB7DQo+ICsgICAgKnNpemUgPSBz aXplb2YoQVBWRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQpOw0KPiArICAgICpkYXRhID0g KHVpbnQ4X3QqKWF2X21hbGxvYyhzaXplb2YoQVBWRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNv cmQpKTsNCj4gKyAgICBpZigqZGF0YT09TlVMTCkgew0KPiArICAgICAgICAqc2l6ZSA9IDA7 DQo+ICsgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsNCj4gKyAgICB9DQo+ ICsgICAgYXB2Y19pbml0KChBUFZEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZCopKmRhdGEp Ow0KPiArDQo+ICsgICAgcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3ZvaWQgZmZfaXNvbV9m cmVlX2Fwdl9kY29uZl9yZWNvcmQodWludDhfdCAqKmRhdGEpIHsNCj4gKyAgICBpZiAoZGF0 YSAhPSBOVUxMICYmICpkYXRhICE9IE5VTEwpIHsNCj4gKyAgICAgICAgQVBWRGVjb2RlckNv bmZpZ3VyYXRpb25SZWNvcmQqIGFwdmMgPSAoQVBWRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNv cmQqKSpkYXRhOw0KPiArICAgICAgICBhcHZjX2Nsb3NlKGFwdmMpOw0KPiArDQo+ICsgICAg ICAgIGZyZWUoKmRhdGEpOw0KDQpEb24ndCB1c2Ugc3lzdGVtIHByb3ZpZGVkIGZyZWUoKS4N Cg0KQWxzbywgdGhpcyBmdW5jdGlvbiBpcyBuZXZlciBjYWxsZWQuDQoNCj4gKyAgICAgICAg KmRhdGEgPSBOVUxMOw0KPiArICAgIH0NCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgZHVt bXlfZnJlZSh2b2lkICpvcGFxdWUsIHVpbnQ4X3QgKmRhdGEpDQo+ICt7DQo+ICsgICAgYXZf YXNzZXJ0MChvcGFxdWUgPT0gZGF0YSk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBjb25zdCBD b2RlZEJpdHN0cmVhbVVuaXRUeXBlIGRlY29tcG9zZV91bml0X3R5cGVzW10gPSB7DQo+ICsg ICAgQVBWX1BCVV9QUklNQVJZX0ZSQU1FLA0KDQpXaGF0J3MgdGhlIHBvaW50IGluIGhhdmlu ZyBmaXZlIGVudHJpZXMgaW4gdGhlIGNvbmZpZ3VyYXRpb25fZW50cnkgYXJyYXkgDQppZiB5 b3UncmUgb25seSBnb2luZyB0byBwYXJzZSBvbmUgZnJhbWUgdHlwZT8NCg0KPiArfTsNCj4g Kw0KPiAraW50IGZmX2lzb21fZmlsbF9hcHZfZGNvbmZfcmVjb3JkKGNvbnN0IHVpbnQ4X3Qg KmFwdmRjciwgY29uc3QgdWludDhfdCAqZGF0YSwgaW50IHNpemUsIEFWRm9ybWF0Q29udGV4 dCAqcykgew0KPiArDQo+ICsgICAgdWludDMyX3QgbnVtYmVyX29mX3BidV9lbnRyeSA9IDA7 DQo+ICsNCj4gKyAgICB1aW50MzJfdCBmcmFtZV90eXBlID0gLTE7DQo+ICsgICAgQVBWRGVj b2RlckZyYW1lSW5mbyBmcmFtZV9pbmZvOw0KPiArDQo+ICsgICAgaW50IGJ5dGVzX3RvX3Jl YWQgPSBzaXplOyAvLyBhdSBzaXplDQo+ICsgICAgaW50IHJldCA9IDA7DQo+ICsgICAgQ29k ZWRCaXRzdHJlYW1Db250ZXh0ICpjYmMgPSBOVUxMOw0KPiArICAgIENvZGVkQml0c3RyZWFt RnJhZ21lbnQgYXUgPSB7MH07DQo+ICsgICAgQVZCdWZmZXJSZWYgKnJlZiA9IE5VTEw7DQo+ ICsNCj4gKyAgICBBUFZEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZCogYXB2YyA9IChBUFZE ZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZCopYXB2ZGNyOw0KDQpZb3UncmUgY2FzdGluZyB0 aGUgY29uc3QgYXdheS4NCg0KPiArICAgIGlmIChzaXplIDwgOCkgew0KPiArICAgICAgICAv KiBXZSBjYW4ndCB3cml0ZSBhIHZhbGlkIGFwdkMgZnJvbSB0aGUgcHJvdmlkZWQgZGF0YSAq Lw0KPiArICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsNCj4gKyAgICB9DQo+ ICsNCj4gKyAgICByZWYgPSBhdl9idWZmZXJfY3JlYXRlKCh1aW50OF90ICopZGF0YSwgc2l6 ZSwgZHVtbXlfZnJlZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICop ZGF0YSwgQVZfQlVGRkVSX0ZMQUdfUkVBRE9OTFkpOw0KPiArICAgIGlmICghcmVmKQ0KPiAr ICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsNCj4gKw0KPiArICAgIHJldCA9 IGZmX2xhdmZfY2JzX2luaXQoJmNiYywgQVZfQ09ERUNfSURfQVBWLCBOVUxMKTsNCj4gKyAg ICBpZiAocmV0IDwgMCkNCj4gKyAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7 DQo+ICsNCj4gKyAgICBjYmMtPmRlY29tcG9zZV91bml0X3R5cGVzICAgID0gZGVjb21wb3Nl X3VuaXRfdHlwZXM7DQo+ICsgICAgY2JjLT5uYl9kZWNvbXBvc2VfdW5pdF90eXBlcyA9IEZG X0FSUkFZX0VMRU1TKGRlY29tcG9zZV91bml0X3R5cGVzKTsNCj4gKw0KPiArICAgIHJldCA9 IGZmX2xhdmZfY2JzX3JlYWQoY2JjLCAmYXUsIHJlZiwgZGF0YSwgc2l6ZSk7DQo+ICsgICAg aWYgKHJldCA8IDApIHsNCj4gKyAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19FUlJPUiwgIkZh aWxlZCB0byBwYXJzZSBhY2Nlc3MgdW5pdC5cbiIpOw0KPiArICAgICAgICBnb3RvIGVuZDsN Cj4gKyAgICB9DQo+ICsNCj4gKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGF1Lm5iX3VuaXRz OyBpKyspIHsNCj4gKyAgICAgICAgY29uc3QgQ29kZWRCaXRzdHJlYW1Vbml0ICpwYnUgPSAm YXUudW5pdHNbaV07DQo+ICsNCj4gKyAgICAgICAgc3dpdGNoIChwYnUtPnR5cGUpDQo+ICsg ICAgICAgIHsNCj4gKyAgICAgICAgY2FzZSBBUFZfUEJVX1BSSU1BUllfRlJBTUU6DQo+ICsg ICAgICAgICAgICBmcmFtZV90eXBlID0gQVBWX0ZSQU1FX1RZUEVfUFJJTUFSWV9GUkFNRTsN Cj4gKyAgICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgICBjYXNlIEFQVl9QQlVfTk9OX1BS SU1BUllfRlJBTUU6DQo+ICsgICAgICAgICAgICBmcmFtZV90eXBlID0gQVBWX0ZSQU1FX1RZ UEVfTk9OX1BSSU1BUllfRlJBTUU7DQo+ICsgICAgICAgICAgICBicmVhazsNCj4gKyAgICAg ICAgY2FzZSBBUFZfUEJVX1BSRVZJRVdfRlJBTUU6DQo+ICsgICAgICAgICAgICBmcmFtZV90 eXBlID0gQVBWX0ZSQU1FX1RZUEVfUFJFVklFV19GUkFNRTsNCj4gKyAgICAgICAgICAgIGJy ZWFrOw0KPiArICAgICAgICBjYXNlIEFQVl9QQlVfREVQVEhfRlJBTUU6DQo+ICsgICAgICAg ICAgICBmcmFtZV90eXBlID0gQVBWX0ZSQU1FX1RZUEVfREVQVEhfRlJBTUU7DQo+ICsgICAg ICAgICAgICBicmVhazsNCj4gKyAgICAgICAgY2FzZSBBUFZfUEJVX0FMUEhBX0ZSQU1FOg0K PiArICAgICAgICAgICAgZnJhbWVfdHlwZSA9IEFQVl9GUkFNRV9UWVBFX0FMUEhBX0ZSQU1F Ow0KPiArICAgICAgICAgICAgYnJlYWs7DQo+ICsgICAgICAgIGRlZmF1bHQ6DQo+ICsgICAg ICAgICAgICBmcmFtZV90eXBlID0gQVBWX0ZSQU1FX1RZUEVfTk9OX0ZSQU1FOw0KPiArICAg ICAgICAgICAgYnJlYWs7DQo+ICsgICAgICAgIH07DQo+ICsNCj4gKyAgICAgICAgaWYoZnJh bWVfdHlwZSA9PSBBUFZfRlJBTUVfVFlQRV9OT05fRlJBTUUpIGNvbnRpbnVlOw0KPiArDQo+ ICsgICAgICAgIGNvbnN0IEFQVlJhd0ZyYW1lICpmcmFtZSAgICAgICAgPSBwYnUtPmNvbnRl bnQ7DQo+ICsgICAgICAgIGNvbnN0IEFQVlJhd0ZyYW1lSGVhZGVyICpoZWFkZXIgPSAmZnJh bWUtPmZyYW1lX2hlYWRlcjsNCj4gKyAgICAgICAgY29uc3QgQVBWUmF3RnJhbWVJbmZvICpp bmZvICAgICA9ICZoZWFkZXItPmZyYW1lX2luZm87DQo+ICsgICAgICAgIGludCBiaXRfZGVw dGggPSBpbmZvLT5iaXRfZGVwdGhfbWludXM4ICsgODsNCj4gKw0KPiArICAgICAgICBpZiAo Yml0X2RlcHRoIDwgOCB8fCBiaXRfZGVwdGggPiAxNiB8fCBiaXRfZGVwdGggJSAyKQ0KPiAr ICAgICAgICAgICAgYnJlYWs7DQo+ICsNCj4gKyAgICAgICAgZnJhbWVfaW5mby5wcm9maWxl X2lkYyA9IGluZm8tPnByb2ZpbGVfaWRjOw0KPiArICAgICAgICBmcmFtZV9pbmZvLmxldmVs X2lkYyA9IGluZm8tPmxldmVsX2lkYzsNCj4gKyAgICAgICAgZnJhbWVfaW5mby5iYW5kX2lk YyA9IGluZm8tPmJhbmRfaWRjOw0KPiArDQo+ICsgICAgICAgIGZyYW1lX2luZm8uZnJhbWVf d2lkdGggPSBpbmZvLT5mcmFtZV93aWR0aDsNCj4gKyAgICAgICAgZnJhbWVfaW5mby5mcmFt ZV9oZWlnaHQgPWluZm8tPmZyYW1lX2hlaWdodDsNCj4gKyAgICAgICAgZnJhbWVfaW5mby5j aHJvbWFfZm9ybWF0X2lkYyA9IGluZm8tPmNocm9tYV9mb3JtYXRfaWRjOw0KPiArICAgICAg ICBmcmFtZV9pbmZvLmJpdF9kZXB0aF9taW51czggPSBpbmZvLT5iaXRfZGVwdGhfbWludXM4 Ow0KPiArICAgICAgICBmcmFtZV9pbmZvLmNhcHR1cmVfdGltZV9kaXN0YW5jZSA9IGluZm8t PmNhcHR1cmVfdGltZV9kaXN0YW5jZTsNCj4gKw0KPiArICAgICAgICBmcmFtZV9pbmZvLmNv bG9yX2Rlc2NyaXB0aW9uX3ByZXNlbnRfZmxhZyA9IGhlYWRlci0+Y29sb3JfZGVzY3JpcHRp b25fcHJlc2VudF9mbGFnOw0KPiArICAgICAgICBpZihmcmFtZV9pbmZvLmNvbG9yX2Rlc2Ny aXB0aW9uX3ByZXNlbnRfZmxhZykgew0KPiArICAgICAgICAgICAgZnJhbWVfaW5mby5jb2xv cl9wcmltYXJpZXMgPSBoZWFkZXItPmNvbG9yX3ByaW1hcmllczsNCj4gKyAgICAgICAgICAg IGZyYW1lX2luZm8udHJhbnNmZXJfY2hhcmFjdGVyaXN0aWNzID0gaGVhZGVyLT50cmFuc2Zl cl9jaGFyYWN0ZXJpc3RpY3M7DQo+ICsgICAgICAgICAgICBmcmFtZV9pbmZvLm1hdHJpeF9j b2VmZmljaWVudHMgPSBoZWFkZXItPm1hdHJpeF9jb2VmZmljaWVudHM7DQo+ICsgICAgICAg ICAgICBmcmFtZV9pbmZvLmZ1bGxfcmFuZ2VfZmxhZyA9IGhlYWRlci0+ZnVsbF9yYW5nZV9m bGFnOw0KPiArICAgICAgICB9DQo+ICsNCj4gKyAgICAgICAgaWYoYXB2Yy0+Y29uZmlndXJh dGlvbl9lbnRyeVtmcmFtZV90eXBlXS5udW1iZXJfb2ZfZnJhbWVfaW5mbyA9PSAwKSB7DQo+ ICsgICAgICAgICAgICAgICAgYXB2X2FkZF9mcmFtZWluZm8oJmFwdmMtPmNvbmZpZ3VyYXRp b25fZW50cnlbZnJhbWVfdHlwZV0sICZmcmFtZV9pbmZvKTsNCj4gKyAgICAgICAgICAgICAg ICBhcHZjLT5udW1iZXJfb2ZfY29uZmlndXJhdGlvbl9lbnRyeSsrOw0KPiArICAgICAgICB9 IGVsc2Ugew0KPiArICAgICAgICAgICAgZm9yKGk9MDsgaTxhcHZjLT5jb25maWd1cmF0aW9u X2VudHJ5W2ZyYW1lX3R5cGVdLm51bWJlcl9vZl9mcmFtZV9pbmZvO2krKykgew0KPiArICAg ICAgICAgICAgICAgIGlmKCFhcHZfY21wX2ZyYW1laW5mbyhhcHZjLT5jb25maWd1cmF0aW9u X2VudHJ5W2ZyYW1lX3R5cGVdLmZyYW1lX2luZm9baV0sICZmcmFtZV9pbmZvKSkgew0KPiAr ICAgICAgICAgICAgICAgICAgICBhcHZfYWRkX2ZyYW1laW5mbygmYXB2Yy0+Y29uZmlndXJh dGlvbl9lbnRyeVtpXSwgJmZyYW1lX2luZm8pOw0KPiArICAgICAgICAgICAgICAgICAgICBi cmVhazsNCj4gKyAgICAgICAgICAgICAgICB9DQo+ICsgICAgICAgICAgICB9DQo+ICsgICAg ICAgIH0NCj4gKyAgICB9DQo+ICsNCj4gK2VuZDoNCj4gKw0KPiArICAgIGZmX2xhdmZfY2Jz X2ZyYWdtZW50X3Jlc2V0KCZhdSk7DQo+ICsgICAgYXZfYXNzZXJ0MShhdl9idWZmZXJfZ2V0 X3JlZl9jb3VudChyZWYpID09IDEpOw0KPiArICAgIGF2X2J1ZmZlcl91bnJlZigmcmVmKTsN Cj4gKyAgICBjYmMtPmxvZ19jdHggPSBOVUxMOw0KPiArDQo+ICsgICAgZmZfbGF2Zl9jYnNf ZnJhZ21lbnRfZnJlZSgmYXUpOw0KPiArICAgIGZmX2xhdmZfY2JzX2Nsb3NlKCZjYmMpOw0K PiArDQo+ICsgICAgcmV0dXJuIHJldDsNCj4gK30NCj4gZGlmZiAtLWdpdCBhL2xpYmF2Zm9y bWF0L2Fwdi5oIGIvbGliYXZmb3JtYXQvYXB2LmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQN Cj4gaW5kZXggMDAwMDAwMDAwMC4uZWYwYzAwMGIzMg0KPiAtLS0gL2Rldi9udWxsDQo+ICsr KyBiL2xpYmF2Zm9ybWF0L2Fwdi5oDQo+IEBAIC0wLDAgKzEsODggQEANCj4gKy8qDQo+ICsg KiBBUFYgaGVscGVyIGZ1bmN0aW9ucyBmb3IgbXV4ZXJzDQo+ICsgKiBDb3B5cmlnaHQgKGMp IDIwMjUgRGF3aWQgS296aW5za2kgPGQua296aW5za2lAc2Ftc3VuZy5jb20+DQo+ICsgKg0K PiArICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLg0KPiArICoNCj4gKyAqIEZGbXBl ZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3INCj4g KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh bCBQdWJsaWMNCj4gKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlcg0KPiArICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vu c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQo+ICsgKg0KPiAr ICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsDQo+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KPiArICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUNCj4gKyAqIExlc3Nl ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQo+ICsgKg0KPiAr ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBH ZW5lcmFsIFB1YmxpYw0KPiArICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90 LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KPiArICogRm91bmRhdGlvbiwgSW5jLiwg NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAx IFVTQQ0KPiArICovDQo+ICsNCj4gKyNpZm5kZWYgQVZGT1JNQVRfQVBWX0gNCj4gKyNkZWZp bmUgQVZGT1JNQVRfQVBWX0gNCj4gKw0KPiArI2luY2x1ZGUgPHN0ZGludC5oPg0KPiArDQo+ ICsjaW5jbHVkZSAibGliYXZ1dGlsL2ludHJlYWR3cml0ZS5oIg0KPiArI2luY2x1ZGUgImxp YmF2dXRpbC9yYXRpb25hbC5oIg0KPiArI2luY2x1ZGUgImxpYmF2Y29kZWMvYXB2LmgiDQo+ ICsjaW5jbHVkZSAiYXZpby5oIg0KPiArDQo+ICsjZGVmaW5lIEFQVl9BVV9TSVpFX1BSRUZJ WF9MRU5HVEggKDQpDQo+ICsNCj4gK3N0YXRpYyBpbmxpbmUgdWludDMyX3QgYXB2X3JlYWRf YXVfc2l6ZShjb25zdCB1aW50OF90ICpiaXRzLCBpbnQgYml0c19zaXplKQ0KPiArew0KPiAr ICAgIGlmIChiaXRzX3NpemUgPj0gQVBWX0FVX1NJWkVfUFJFRklYX0xFTkdUSCkNCj4gKyAg ICAgICAgcmV0dXJuIEFWX1JCMzIoYml0cyk7DQo+ICsNCj4gKyAgICByZXR1cm4gMDsNCj4g K30NCg0KVW51c2VkLg0KDQo+ICsNCj4gKy8qKg0KPiArICogV3JpdGVzIEFQViBzYW1wbGUg bWV0YWRhdGEgdG8gdGhlIHByb3ZpZGVkIEFWSU9Db250ZXh0Lg0KPiArICoNCj4gKyAqIEBw YXJhbSBwYiBwb2ludGVyIHRvIHRoZSBBVklPQ29udGV4dCB3aGVyZSB0aGUgYXB2IHNhbXBs ZSBtZXRhZGF0YSBzaGFsbCBiZSB3cml0dGVuDQo+ICsgKiBAcGFyYW0gYnVmIGlucHV0IGRh dGEgYnVmZmVyDQo+ICsgKiBAcGFyYW0gc2l6ZSBzaXplIGluIGJ5dGVzIG9mIHRoZSBpbnB1 dCBkYXRhIGJ1ZmZlcg0KPiArICogQHBhcmFtIHBzX2FycmF5X2NvbXBsZXRlbmVzcw0KPiAr ICoNCj4gKyAqIEByZXR1cm4gMCBpbiBjYXNlIG9mIHN1Y2Nlc3MsIGEgbmVnYXRpdmUgZXJy b3IgY29kZSBpbiBjYXNlIG9mIGZhaWx1cmUNCj4gKyAqLw0KPiAraW50IGZmX2lzb21fd3Jp dGVfYXB2YyhBVklPQ29udGV4dCAqcGIsIGNvbnN0IHVpbnQ4X3QgKmRhdGEsDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgIGludCBzaXplLCBpbnQgcHNfYXJyYXlfY29tcGxldGVuZXNz KTsNCj4gKw0KPiArLyoqDQo+ICsgKiBAYnJpZWYgQ3JlYXRlcyBhbmQgYWxsb2NhdGVzIG1l bW9yeSBmb3IgYW4gQVBWIGRlY29kZXIgY29uZmlndXJhdGlvbiByZWNvcmQuDQo+ICsgKg0K PiArICogVGhpcyBmdW5jdGlvbiBhbGxvY2F0ZXMgbWVtb3J5IGZvciBhbiBBUFZEZWNvZGVy Q29uZmlndXJhdGlvblJlY29yZCBhbmQNCj4gKyAqIGluaXRpYWxpemVzIGl0LiBUaGUgc2l6 ZSBvZiB0aGUgcmVjb3JkIGlzIHJldHVybmVkIHRocm91Z2ggdGhlIGBzaXplYCBwYXJhbWV0 ZXIuDQo+ICsgKg0KPiArICogQHBhcmFtIGRhdGEgUG9pbnRlciB0byBhIHBvaW50ZXIgd2hl cmUgdGhlIGFsbG9jYXRlZCBkYXRhIHdpbGwgYmUgc3RvcmVkLg0KPiArICogQHBhcmFtIHNp emUgUG9pbnRlciB0byBhbiBpbnRlZ2VyIHdoZXJlIHRoZSBzaXplIG9mIHRoZSBhbGxvY2F0 ZWQgcmVjb3JkIHdpbGwgYmUgc3RvcmVkLg0KPiArICogQHJldHVybiAwIG9uIHN1Y2Nlc3Ms IG9yIEFWRVJST1JfSU5WQUxJRERBVEEgaWYgbWVtb3J5IGFsbG9jYXRpb24gZmFpbHMuDQo+ ICsgKi8NCj4gK2ludCBmZl9pc29tX2NyZWF0ZV9hcHZfZGNvbmZfcmVjb3JkKHVpbnQ4X3Qg KipkYXRhLCBpbnQgKnNpemUpOw0KPiArDQo+ICsvKioNCj4gKyAqIEBicmllZiBGcmVlcyB0 aGUgbWVtb3J5IGFsbG9jYXRlZCBmb3IgdGhlIEFQViBkZWNvZGVyIGNvbmZpZ3VyYXRpb24g cmVjb3JkLg0KPiArICoNCj4gKyAqIEBwYXJhbSBkYXRhIGRhdGEgdG8gYmUgZnJlZWQNCj4g KyAqLw0KPiArdm9pZCBmZl9pc29tX2ZyZWVfYXB2X2Rjb25mX3JlY29yZCh1aW50OF90ICoq ZGF0YSk7DQo+ICsNCj4gKy8qKg0KPiArICogQGJyaWVmIEZpbGxzIGFuIEFQViBkZWNvZGVy IGNvbmZpZ3VyYXRpb24gcmVjb3JkIHdpdGggZGF0YS4NCj4gKyAqDQo+ICsgKiBUaGlzIGZ1 bmN0aW9uIHBvcHVsYXRlcyB0aGUgQVBWRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQgcG9p bnRlZCB0byBieQ0KPiArICogYGFwdmRjcmAgd2l0aCB0aGUgZGF0YSBmcm9tIGBkYXRhYCwg d2hpY2ggaGFzIGEgc3BlY2lmaWVkIHNpemUuIFRoZSBkYXRhDQo+ICsgKiByZXByZXNlbnRz IGFuIGFjY2VzcyB1bml0Lg0KPiArICoNCj4gKyAqIEBwYXJhbSBhcHZkY3IgUG9pbnRlciB0 byB0aGUgQVBWRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQgdG8gYmUgZmlsbGVkLg0KPiAr ICogQHBhcmFtIGRhdGEgUG9pbnRlciB0byB0aGUgZGF0YSB0byBmaWxsIHRoZSByZWNvcmQg d2l0aC4NCj4gKyAqIEBwYXJhbSBzaXplIFNpemUgb2YgdGhlIGRhdGEgdG8gYmUgY29waWVk IGludG8gdGhlIHJlY29yZC4NCj4gKyAqIEByZXR1cm4gMCBvbiBzdWNjZXNzLCBvciBhIG5l Z2F0aXZlIHZhbHVlIG9uIGVycm9yLg0KPiArICovDQo+ICtpbnQgZmZfaXNvbV9maWxsX2Fw dl9kY29uZl9yZWNvcmQoY29uc3QgdWludDhfdCAqYXB2YywgY29uc3QgdWludDhfdCAqZGF0 YSwgaW50IHNpemUsIEFWRm9ybWF0Q29udGV4dCAqcyk7DQo+ICsNCj4gKyNlbmRpZiAvLyBB VkZPUk1BVF9BUFZfSA0KPiBkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvY2JzLmggYi9saWJh dmZvcm1hdC9jYnMuaA0KPiBpbmRleCAwZmFiM2E3NDU3Li5lNGRjMjMxMDAxIDEwMDY0NA0K PiAtLS0gYS9saWJhdmZvcm1hdC9jYnMuaA0KPiArKysgYi9saWJhdmZvcm1hdC9jYnMuaA0K PiBAQCAtMjIsNyArMjIsNiBAQA0KPiAgICNkZWZpbmUgQ0JTX1BSRUZJWCBsYXZmX2Nicw0K PiAgICNkZWZpbmUgQ0JTX1dSSVRFIDANCj4gICAjZGVmaW5lIENCU19UUkFDRSAwDQo+IC0j ZGVmaW5lIENCU19BUFYgMA0KPiAgICNkZWZpbmUgQ0JTX0gyNjQgMA0KPiAgICNkZWZpbmUg Q0JTX0gyNjUgMA0KPiAgICNkZWZpbmUgQ0JTX0gyNjYgMA0KPiBkaWZmIC0tZ2l0IGEvbGli YXZmb3JtYXQvY2JzX2Fwdi5jIGIvbGliYXZmb3JtYXQvY2JzX2Fwdi5jDQo+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLjE0NWU1ZDA5YmINCj4gLS0tIC9k ZXYvbnVsbA0KPiArKysgYi9saWJhdmZvcm1hdC9jYnNfYXB2LmMNCj4gQEAgLTAsMCArMSwy IEBADQo+ICsjaW5jbHVkZSAiY2JzLmgiDQo+ICsjaW5jbHVkZSAibGliYXZjb2RlYy9jYnNf YXB2LmMiDQo+IGRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9pc29tX3RhZ3MuYyBiL2xpYmF2 Zm9ybWF0L2lzb21fdGFncy5jDQo+IGluZGV4IDY5MTc0YjRhM2YuLjViNGU2Yzg0ZTEgMTAw NjQ0DQo+IC0tLSBhL2xpYmF2Zm9ybWF0L2lzb21fdGFncy5jDQo+ICsrKyBiL2xpYmF2Zm9y bWF0L2lzb21fdGFncy5jDQo+IEBAIC0xNTYsNiArMTU2LDcgQEAgY29uc3QgQVZDb2RlY1Rh ZyBmZl9jb2RlY19tb3Z2aWRlb190YWdzW10gPSB7DQo+ICAgICAgIHsgQVZfQ09ERUNfSURf SDI2NCwgTUtUQUcoJ2QnLCAndicsICdhJywgJ3YnKSB9LCAvKiBBVkMtYmFzZWQgRG9sYnkg VmlzaW9uIGRlcml2ZWQgZnJvbSBhdmMzICovDQo+ICAgDQo+ICAgICAgIHsgQVZfQ09ERUNf SURfRVZDLCAgTUtUQUcoJ2UnLCAndicsICdjJywgJzEnKSB9LCAvKiBFVkMvTVBFRy01ICov DQo+ICsgICAgeyBBVl9DT0RFQ19JRF9BUFYsICBNS1RBRygnYScsICdwJywgJ3YnLCAnMScp IH0sIC8qIEFQViAqLw0KDQpUaGlzIGVudHJ5IGFscmVhZHkgZXhpc3RzLg0KDQo+ICAgDQo+ ICAgICAgIHsgQVZfQ09ERUNfSURfVlA4LCAgTUtUQUcoJ3YnLCAncCcsICcwJywgJzgnKSB9 LCAvKiBWUDggKi8NCj4gICAgICAgeyBBVl9DT0RFQ19JRF9WUDksICBNS1RBRygndicsICdw JywgJzAnLCAnOScpIH0sIC8qIFZQOSAqLw0KPiBkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQv bW92ZW5jLmMgYi9saWJhdmZvcm1hdC9tb3ZlbmMuYw0KPiBpbmRleCBhNjUxZDZkNjE4Li4x Zjk5MzlmYjhiIDEwMDY0NA0KPiAtLS0gYS9saWJhdmZvcm1hdC9tb3ZlbmMuYw0KPiArKysg Yi9saWJhdmZvcm1hdC9tb3ZlbmMuYw0KPiBAQCAtMzcsNiArMzcsNyBAQA0KPiAgICNpbmNs dWRlICJhdjEuaCINCj4gICAjaW5jbHVkZSAiYXZjLmgiDQo+ICAgI2luY2x1ZGUgImV2Yy5o Ig0KPiArI2luY2x1ZGUgImFwdi5oIg0KPiAgICNpbmNsdWRlICJsaWJhdmNvZGVjL2FjM19w YXJzZXJfaW50ZXJuYWwuaCINCj4gICAjaW5jbHVkZSAibGliYXZjb2RlYy9kbnhoZGRhdGEu aCINCj4gICAjaW5jbHVkZSAibGliYXZjb2RlYy9mbGFjLmgiDQo+IEBAIC0xNjQzLDYgKzE2 NDQsMjQgQEAgc3RhdGljIGludCBtb3Zfd3JpdGVfdnZjY190YWcoQVZJT0NvbnRleHQgKnBi LCBNT1ZUcmFjayAqdHJhY2spDQo+ICAgICAgIHJldHVybiB1cGRhdGVfc2l6ZShwYiwgcG9z KTsNCj4gICB9DQo+ICAgDQo+ICtzdGF0aWMgaW50IG1vdl93cml0ZV9hcHZjX3RhZyhBVklP Q29udGV4dCAqcGIsIE1PVlRyYWNrICp0cmFjaykNCj4gK3sNCj4gKyAgICBpbnQ2NF90IHBv cyA9IGF2aW9fdGVsbChwYik7DQo+ICsNCj4gKyAgICBhdmlvX3diMzIocGIsIDApOw0KPiAr ICAgIGZmaW9fd2ZvdXJjYyhwYiwgImFwdkMiKTsNCj4gKw0KPiArICAgIGF2aW9fdzggIChw YiwgMCk7IC8qIHZlcnNpb24gKi8NCj4gKyAgICBhdmlvX3diMjQocGIsIDApOyAvKiBmbGFn cyAqLw0KPiArDQo+ICsgICAgaWYgKHRyYWNrLT50YWcgPT0gTUtUQUcoJ2EnLCdwJywndics JzEnKSkNCj4gKyAgICAgICAgZmZfaXNvbV93cml0ZV9hcHZjKHBiLCB0cmFjay0+dm9zX2Rh dGEsIHRyYWNrLT52b3NfbGVuLCAxKTsNCj4gKyAgICBlbHNlDQo+ICsgICAgICAgIGZmX2lz b21fd3JpdGVfYXB2YyhwYiwgdHJhY2stPnZvc19kYXRhLCB0cmFjay0+dm9zX2xlbiwgMCk7 DQoNClRoaXMgZWxzZSBpcyBwcmV0dHkgbXVjaCBkZWFkIGNvZGUuIEFuZCBzZWVpbmcgdGhl IGZhY3QgdGhlIGxhc3QgDQpwYXJhbWV0ZXIgaXMgY2FsbGVkIHBzX2FycmF5X2NvbXBsZXRl bmVzcyBhbmQgdW51c2VkLCBpdCBsb29rcyBsaWtlIGl0J3MgDQphIGNvcHktcGFzdGUgZnJv bSBoZXZjIGNvZGUuDQoNCj4gKw0KPiArICAgIHJldHVybiB1cGRhdGVfc2l6ZShwYiwgcG9z KTsNCj4gK30NCj4gKw0KPiAgIC8qIGFsc28gdXNlZCBieSBhbGwgYXZpZCBjb2RlY3MgKGR2 LCBpbXgsIG1lcmlkaWVuKSBhbmQgdGhlaXIgdmFyaWFudHMgKi8NCj4gICBzdGF0aWMgaW50 IG1vdl93cml0ZV9hdmlkX3RhZyhBVklPQ29udGV4dCAqcGIsIE1PVlRyYWNrICp0cmFjaykN Cj4gICB7DQo+IEBAIC0xOTAyLDYgKzE5MjEsMTcgQEAgc3RhdGljIGludCBtb3ZfZ2V0X2V2 Y19jb2RlY190YWcoQVZGb3JtYXRDb250ZXh0ICpzLCBNT1ZUcmFjayAqdHJhY2spDQo+ICAg ICAgIHJldHVybiB0YWc7DQo+ICAgfQ0KPiAgIA0KPiArc3RhdGljIGludCBtb3ZfZ2V0X2Fw dl9jb2RlY190YWcoQVZGb3JtYXRDb250ZXh0ICpzLCBNT1ZUcmFjayAqdHJhY2spDQo+ICt7 DQo+ICsgICAgaW50IHRhZyA9IHRyYWNrLT5wYXItPmNvZGVjX3RhZzsNCj4gKw0KPiArICAg IGlmICghdGFnKQ0KPiArICAgICAgICB0YWcgPSBNS1RBRygnYScsICdwJywgJ3YnLCAnMScp Ow0KPiArDQo+ICsgICAgcmV0dXJuIHRhZzsNCj4gK30NCj4gKw0KPiArDQo+ICAgc3RhdGlj IGNvbnN0IHN0cnVjdCB7DQo+ICAgICAgIGVudW0gQVZQaXhlbEZvcm1hdCBwaXhfZm10Ow0K PiAgICAgICB1aW50MzJfdCB0YWc7DQo+IEBAIC0xOTg4LDYgKzIwMTgsOCBAQCBzdGF0aWMg dW5zaWduZWQgaW50IG1vdl9nZXRfY29kZWNfdGFnKEFWRm9ybWF0Q29udGV4dCAqcywgTU9W VHJhY2sgKnRyYWNrKQ0KPiAgICAgICAgICAgICAgIHRhZyA9IG1vdl9nZXRfaDI2NF9jb2Rl Y190YWcocywgdHJhY2spOw0KPiAgICAgICAgICAgZWxzZSBpZiAodHJhY2stPnBhci0+Y29k ZWNfaWQgPT0gQVZfQ09ERUNfSURfRVZDKQ0KPiAgICAgICAgICAgICAgIHRhZyA9IG1vdl9n ZXRfZXZjX2NvZGVjX3RhZyhzLCB0cmFjayk7DQo+ICsgICAgICAgIGVsc2UgaWYgKHRyYWNr LT5wYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0FQVikNCj4gKyAgICAgICAgICAgIHRh ZyA9IG1vdl9nZXRfYXB2X2NvZGVjX3RhZyhzLCB0cmFjayk7DQo+ICAgICAgICAgICBlbHNl IGlmICh0cmFjay0+cGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9ETlhIRCkNCj4gICAg ICAgICAgICAgICB0YWcgPSBtb3ZfZ2V0X2RueGhkX2NvZGVjX3RhZyhzLCB0cmFjayk7DQo+ ICAgICAgICAgICBlbHNlIGlmICh0cmFjay0+cGFyLT5jb2RlY190eXBlID09IEFWTUVESUFf VFlQRV9WSURFTykgew0KPiBAQCAtMjc1Myw2ICsyNzg1LDggQEAgc3RhdGljIGludCBtb3Zf d3JpdGVfdmlkZW9fdGFnKEFWRm9ybWF0Q29udGV4dCAqcywgQVZJT0NvbnRleHQgKnBiLCBN T1ZNdXhDb250ZXgNCj4gICAgICAgfQ0KPiAgICAgICBlbHNlIGlmICh0cmFjay0+cGFyLT5j b2RlY19pZCA9PUFWX0NPREVDX0lEX0VWQykgew0KPiAgICAgICAgICAgbW92X3dyaXRlX2V2 Y2NfdGFnKHBiLCB0cmFjayk7DQo+ICsgICAgfSBlbHNlIGlmICh0cmFjay0+cGFyLT5jb2Rl Y19pZCA9PUFWX0NPREVDX0lEX0FQVikgew0KPiArICAgICAgICBtb3Zfd3JpdGVfYXB2Y190 YWcocGIsIHRyYWNrKTsNCj4gICAgICAgfSBlbHNlIGlmICh0cmFjay0+cGFyLT5jb2RlY19p ZCA9PSBBVl9DT0RFQ19JRF9WUDkpIHsNCj4gICAgICAgICAgIG1vdl93cml0ZV92cGNjX3Rh Zyhtb3YtPmZjLCBwYiwgdHJhY2spOw0KPiAgICAgICB9IGVsc2UgaWYgKHRyYWNrLT5wYXIt PmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0FWMSkgew0KPiBAQCAtNjcxNCw2ICs2NzQ4LDE4 IEBAIGludCBmZl9tb3Zfd3JpdGVfcGFja2V0KEFWRm9ybWF0Q29udGV4dCAqcywgQVZQYWNr ZXQgKnBrdCkNCj4gICAgICAgICAgIG1lbXNldCh0cmstPnZvc19kYXRhICsgc2l6ZSwgMCwg QVZfSU5QVVRfQlVGRkVSX1BBRERJTkdfU0laRSk7DQo+ICAgICAgIH0NCj4gICANCj4gKyAg ICBpZiAocGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9BUFYgJiYgIXRyay0+dm9zX2xl bikgew0KPiArICAgICAgICAgICAgcmV0ID0gZmZfaXNvbV9jcmVhdGVfYXB2X2Rjb25mX3Jl Y29yZCgmdHJrLT52b3NfZGF0YSwgJnRyay0+dm9zX2xlbik7DQoNCnRyay0+dm9zX2RhdGEg c2hvdWxkIGhhdmUgYSByYXcgYnl0ZSBhcnJheSwgbmFtZWx5IHRoZSBpbnB1dCBzdHJlYW0n cyANCmV4dHJhZGF0YSwgd2hpY2ggZm9yIGV4YW1wbGUgdGhlIG1vdiBkZW11eGVyIGV4cG9y dHMsIGFuZCBub3Qgc29tZSANCmN1c3RvbSBzdHJ1Y3R1cmUuDQoNCj4gKyAgICAgICAgICAg IGlmICghdHJrLT52b3NfZGF0YSkgew0KPiArICAgICAgICAgICAgICAgIHJldCA9IEFWRVJS T1IoRU5PTUVNKTsNCj4gKyAgICAgICAgICAgICAgICBnb3RvIGVycjsNCj4gKyAgICAgICAg ICAgIH0NCj4gKyAgICB9DQo+ICsNCj4gKyAgICBpZiAocGFyLT5jb2RlY19pZCA9PSBBVl9D T0RFQ19JRF9BUFYgJiYgdHJrLT52b3NfbGVuKSB7DQo+ICsgICAgICAgIHJldCA9IGZmX2lz b21fZmlsbF9hcHZfZGNvbmZfcmVjb3JkKHRyay0+dm9zX2RhdGEsIHBrdC0+ZGF0YSwgc2l6 ZSwgcyk7DQo+ICsgICAgfQ0KPiArDQo+ICAgICAgIGlmIChwYXItPmNvZGVjX2lkID09IEFW X0NPREVDX0lEX0FBQyAmJiBwa3QtPnNpemUgPiAyICYmDQo+ICAgICAgICAgICAoQVZfUkIx Nihwa3QtPmRhdGEpICYgMHhmZmYwKSA9PSAweGZmZjApIHsNCj4gICAgICAgICAgIGlmICgh dHJrLT5zdC0+bmJfZnJhbWVzKSB7DQo+IEBAIC02ODM5LDYgKzY4ODUsMTEgQEAgaW50IGZm X21vdl93cml0ZV9wYWNrZXQoQVZGb3JtYXRDb250ZXh0ICpzLCBBVlBhY2tldCAqcGt0KQ0K PiAgICAgICAgICAgICAgIGlmIChyZXQpIHsNCj4gICAgICAgICAgICAgICAgICAgZ290byBl cnI7DQo+ICAgICAgICAgICAgICAgfQ0KPiArICAgICAgICB9IGVsc2UgaWYgKHBhci0+Y29k ZWNfaWQgPT0gQVZfQ09ERUNfSURfQVBWKSB7DQo+ICsgICAgICAgICAgICBhdmlvX3diMzIo cy0+cGIsIHBrdC0+c2l6ZSk7DQo+ICsgICAgICAgICAgICBzaXplICs9IDQ7DQo+ICsNCj4g KyAgICAgICAgICAgIGF2aW9fd3JpdGUocy0+cGIsIHBrdC0+ZGF0YSwgcGt0LT5zaXplKTsN Cj4gICAgICAgICAgIH0gZWxzZSB7DQo+ICAgICAgICAgICAgICAgYXZpb193cml0ZShwYiwg cGt0LT5kYXRhLCBzaXplKTsNCj4gICAgICAgICAgIH0NCj4gQEAgLTg2NTgsNiArODcwOSw3 IEBAIHN0YXRpYyBjb25zdCBBVkNvZGVjVGFnIGNvZGVjX21wNF90YWdzW10gPSB7DQo+ICAg ICAgIHsgQVZfQ09ERUNfSURfVlZDLCAgICAgICAgICAgICBNS1RBRygndicsICd2JywgJ2Mn LCAnMScpIH0sDQo+ICAgICAgIHsgQVZfQ09ERUNfSURfVlZDLCAgICAgICAgICAgICBNS1RB RygndicsICd2JywgJ2knLCAnMScpIH0sDQo+ICAgICAgIHsgQVZfQ09ERUNfSURfRVZDLCAg ICAgICAgICAgICBNS1RBRygnZScsICd2JywgJ2MnLCAnMScpIH0sDQo+ICsgICAgeyBBVl9D T0RFQ19JRF9BUFYsICAgICAgICAgICAgIE1LVEFHKCdhJywgJ3AnLCAndicsICcxJykgfSwN Cj4gICAgICAgeyBBVl9DT0RFQ19JRF9NUEVHMlZJREVPLCAgICAgIE1LVEFHKCdtJywgJ3An LCAnNCcsICd2JykgfSwNCj4gICAgICAgeyBBVl9DT0RFQ19JRF9NUEVHMVZJREVPLCAgICAg IE1LVEFHKCdtJywgJ3AnLCAnNCcsICd2JykgfSwNCj4gICAgICAgeyBBVl9DT0RFQ19JRF9N SlBFRywgICAgICAgICAgIE1LVEFHKCdtJywgJ3AnLCAnNCcsICd2JykgfSwNCj4gZGlmZiAt LWdpdCBhL3Rlc3RzL3JlZi9mYXRlL3NvdXJjZSBiL3Rlc3RzL3JlZi9mYXRlL3NvdXJjZQ0K PiBpbmRleCBkNGI5YmNlZTRjLi41NGFmNzJjMDA4IDEwMDY0NA0KPiAtLS0gYS90ZXN0cy9y ZWYvZmF0ZS9zb3VyY2UNCj4gKysrIGIvdGVzdHMvcmVmL2ZhdGUvc291cmNlDQo+IEBAIC0x MSw2ICsxMSw3IEBAIGxpYmF2ZmlsdGVyL2ZpbGVfb3Blbi5jDQo+ICAgbGliYXZmaWx0ZXIv bG9nMl90YWIuYw0KPiAgIGxpYmF2ZmlsdGVyL3Jpc2N2L2NwdV9jb21tb24uYw0KPiAgIGxp YmF2Zm9ybWF0L2Nicy5jDQo+ICtsaWJhdmZvcm1hdC9jYnNfYXB2LmMNCj4gICBsaWJhdmZv cm1hdC9jYnNfYXYxLmMNCj4gICBsaWJhdmZvcm1hdC9maWxlX29wZW4uYw0KPiAgIGxpYmF2 Zm9ybWF0L2dvbG9tYl90YWIuYw0KDQpJZiB5b3UgZG9uJ3QgbWluZCwgaSBjYW4gcmV3b3Jr IHRoaXMgcGF0Y2ggdG8gYWRkcmVzcyB0aGUgc3R1ZmYgYWJvdmUuDQoNCg== --------------zihzOMR43Z5Z33BqCiTSMNJ5-- --------------wdaKRSLJmSap50EikIp72Dxa Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="OpenPGP_signature.asc" -----BEGIN PGP SIGNATURE----- wsB5BAABCAAjFiEEd1EujP2UoWlX5pp6FGMBrXN2WeAFAmh2cf8FAwAAAAAACgkQFGMBrXN2WeCu 6Qf/Vkbshj3b7OkH1L3O1tDgXxx1XSmSW/OJj7JWTC1AeqfpuQ9DmV+GtL+QUN/BBCO5RkqgsmOM JQqqTTk6XDom34AQtXW4iZ/p4bKfedYs9QoEjfL1ZH/7rr+0NK7yIGnNAPtl5/syjk5piAUq9p8k dmNvfYTF1l1th98wqwsDPQIGo4iX+ogWEye+9kv6z9YtPOkO1mMtEynzfEBcSaOLZKUgtI4/7683 Vein6QVKWbRfUA/bqhGALugsLoGXgzqJMpJZeQSNmQHYTHkLV3VHk1+yIe03dHSTvE0/A1HNLWGU 4vuUGosXfg3jXdmS9TSlyLFk98nsJt/Uq+EjIXzBSw== =cOaK -----END PGP SIGNATURE----- --------------wdaKRSLJmSap50EikIp72Dxa-- --===============6067415890251030660== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". --===============6067415890251030660==--