From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 3F2B6468E7 for ; Mon, 23 Oct 2023 01:28:01 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 45D7268CA16; Mon, 23 Oct 2023 04:27:59 +0300 (EEST) Received: from mail-io1-f54.google.com (mail-io1-f54.google.com [209.85.166.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4657868B8B6 for ; Mon, 23 Oct 2023 04:27:53 +0300 (EEST) Received: by mail-io1-f54.google.com with SMTP id ca18e2360f4ac-7a67b9cd230so118936539f.1 for ; Sun, 22 Oct 2023 18:27:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1698024472; x=1698629272; darn=ffmpeg.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=wHg5qX//Kwx4+WO/INq5awKbwIDzAxmelRN1S9tCOjo=; b=kOfyqH67egbdpreuFeiApw3oRY2XQMIreYBhHOP+0jxEgp/uA/Gplogrc2l/w9rjDc o0rAP65JpvamUKcG5HEa+8rAQFs2OEwa4iczEsDKKg9843extk0jDFSLp5W/gemK8QX2 2ZSNUfoKWl38YJb0vN/AUQC6hnV/ohg0cp8VmRv6DI2LzAsnd2BCkOn0BGuCjo8gqZTa tQaBv5EEteGWD5ygVORcPbaVlf32R5qUXr2giMdVTPlUruJT7XYPOQx9qimMiZLao0bD R/AkAfjwi8sgwmMTCctZ29PulDyLGE+EP++hoNfKpgBZGP414w5/aj2ihUn137HXVx6a L6ug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698024472; x=1698629272; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=wHg5qX//Kwx4+WO/INq5awKbwIDzAxmelRN1S9tCOjo=; b=aZu6MSDSyF7ySM8KQTrqHXgHJXf1pr61RpmwS2C65DuRA1Bv2qGQWUM2dWUlk9HBSE 8bWcSOosjg3HVDYWHR7B+31qmsL9wZD6qEljRs0yccSuXH0lyxOfhWMdWIU+zSCA9Z3D qamKhO74TyKmApMU/G2wLCgoIWZyLpF7/q+Ok5D3VyKzMifZfSV9SnFteshEucrS1BT3 92CYb8eBQrJANp25e8j8EOQOK0kRseE69JgSeNPxrKr7TkX0coIYxleyt784lDEc5Zas 9yJ4y2t9lO3mxyxzC+6t5sDTjN0+sydlW5epFtmUpPJFRejpMjPUHiDlJScA1ioFY8rx 6JZg== X-Gm-Message-State: AOJu0Yx68a4U9XWO0YKTL+7PMpAPqeTaCRTGXgYU2kDWC9CstX1+apxb MP8lUAi1srE+bYjPsvMgIxe/gep0X6EPprJ2q9E= X-Google-Smtp-Source: AGHT+IHP5JuSVe/HkpmbY6Ms6TJT2uh1EEUERcAegTbJ214nIC0roKIlT+XI9Q6JgzdbuK17xcjrVNlEZNNPyndDjEo= X-Received: by 2002:a05:6602:1646:b0:780:bf50:32ce with SMTP id y6-20020a056602164600b00780bf5032cemr10309551iow.19.1698024471579; Sun, 22 Oct 2023 18:27:51 -0700 (PDT) MIME-Version: 1.0 References: <20230923154125.31376-1-cyfdecyf@gmail.com> <20230923154125.31376-3-cyfdecyf@gmail.com> <96f8c2a5d43a4091e0f439336759bd57dc866fe3.camel@intel.com> In-Reply-To: <96f8c2a5d43a4091e0f439336759bd57dc866fe3.camel@intel.com> From: Chen Yufei Date: Mon, 23 Oct 2023 09:27:25 +0800 Message-ID: To: "Xiang, Haihao" Subject: Re: [FFmpeg-devel] [PATCH 2/2] avfilter/vf_vpp_qsv: apply 3D LUT from file. 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 Cc: "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" Archived-At: List-Archive: List-Post: VGhhbmtzIGZvciB5b3VyIGNvbW1lbnRzLgoKSSdsbCB1c2UgTUZYX1JFU09VUkNFX1NZU1RFTV9T VVJGQUNFIGFuZCBzZW5kIGFub3RoZXIgcGF0Y2guCgpXaGlsZSBpbXBsZW1lbnRpbmcgdGhpcyBm ZWF0dXJlLCBJIG5vdGljZWQgdGhhdAp2cHBfc2V0X2ZyYW1lX2V4dF9wYXJhbXMgaXMgY2FsbGVk IG11bHRpcGxlIHRpbWVzLgpJZiB1c2luZyBzeXN0ZW0gbWVtb3J5IGZvciBzdG9yaW5nIDNEIExV VCwgaXMgaXQgcG9zc2libGUgdGhlIExVVAp0YWJsZSBjb3B5aW5nIHRvIGdmeCBtZW1vcnkgd2ls bCBvY2N1ciBtdWx0aXBsZSB0aW1lcz8KCk9uIE1vbiwgT2N0IDE2LCAyMDIzIGF0IDQ6MDXigK9Q TSBYaWFuZywgSGFpaGFvIDxoYWloYW8ueGlhbmdAaW50ZWwuY29tPiB3cm90ZToKPgo+IE9uIFNh LCAyMDIzLTA5LTIzIGF0IDIzOjM2ICswODAwLCBDaGVuIFl1ZmVpIHdyb3RlOgo+ID4gVXNhZ2U6 ICJ2cHBfcXN2PWx1dDNkX2ZpbGU9PHBhdGggdG8gZmlsZT4iCj4gPgo+ID4gT25seSBlbmFibGVk IHdpdGggVkFBUEkgYmVjYXVzZSB1c2luZyBWQVN1cmZhY2UgdG8gc3RvcmUgM0QgTFVULgo+ID4K PiA+IFNpZ25lZC1vZmYtYnk6IENoZW4gWXVmZWkgPGN5ZmRlY3lmQGdtYWlsLmNvbT4KPiA+IC0t LQo+ID4gIGxpYmF2ZmlsdGVyL3ZmX3ZwcF9xc3YuYyB8IDI0MSArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKy0KPiA+ICAxIGZpbGUgY2hhbmdlZCwgMjM2IGluc2VydGlvbnMo KyksIDUgZGVsZXRpb25zKC0pCj4gPgo+ID4gZGlmZiAtLWdpdCBhL2xpYmF2ZmlsdGVyL3ZmX3Zw cF9xc3YuYyBiL2xpYmF2ZmlsdGVyL3ZmX3ZwcF9xc3YuYwo+ID4gaW5kZXggYzA3YjQ1ZmVkYi4u Y2Q5MTNkM2M0MCAxMDA2NDQKPiA+IC0tLSBhL2xpYmF2ZmlsdGVyL3ZmX3ZwcF9xc3YuYwo+ID4g KysrIGIvbGliYXZmaWx0ZXIvdmZfdnBwX3Fzdi5jCj4gPiBAQCAtMjMsNiArMjMsNyBAQAo+ID4K PiA+ICAjaW5jbHVkZSA8ZmxvYXQuaD4KPiA+Cj4gPiArI2luY2x1ZGUgImNvbmZpZy5oIgo+ID4g ICNpbmNsdWRlICJjb25maWdfY29tcG9uZW50cy5oIgo+ID4KPiA+ICAjaW5jbHVkZSAibGliYXZ1 dGlsL29wdC5oIgo+ID4gQEAgLTM3LDEwICszOCwxNSBAQAo+ID4gICNpbmNsdWRlICJpbnRlcm5h bC5oIgo+ID4gICNpbmNsdWRlICJhdmZpbHRlci5oIgo+ID4gICNpbmNsdWRlICJmaWx0ZXJzLmgi Cj4gPiArI2luY2x1ZGUgImx1dDNkLmgiCj4gPgo+ID4gICNpbmNsdWRlICJxc3Z2cHAuaCIKPiA+ ICAjaW5jbHVkZSAidHJhbnNwb3NlLmgiCj4gPgo+ID4gKyNpZiBRU1ZfT05FVlBMICYmIENPTkZJ R19WQUFQSQo+ID4gKyNpbmNsdWRlIDx2YS92YS5oPgo+ID4gKyNlbmRpZgo+Cj4gVkEtQVBJIGlz IGF2YWlsYWJsZSBvbiBXaW5kb3dzIG5vdywgaG93ZXZlciBvbmVWUEwgY2FuJ3Qgd29yayB3aXRo IFZBLUFQSSBvbgo+IFdpbmRvd3MuCj4KPiBJJ2QgcHJlZmVyIHRvIHN1cHBvcnQgTUZYX1JFU09V UkNFX1NZU1RFTV9TVVJGQUNFIGluc3RlYWQgb2YKPiBNRlhfUkVTT1VSQ0VfVkFfU1VSRkFDRSBp biBGRm1wZWcgYmVjYXVzZSB3ZSBuZWVuZCd0IGNvbnNpZGVyIFZBLUFQSSB0b28gbXVjaAo+IGZv ciBNRlhfUkVTT1VSQ0VfU1lTVEVNX1NVUkZBQ0UuIG9uZVZQTCBzaG91bGQgYmUgYWJsZSB0byBj b3B5IGRhdGEgZnJvbSBzeXN0ZW0KPiBtZW1vcnkgdG8gZ2Z4IG1lbW9yeSBpbnRlcm5hbGx5Lgo+ Cj4gVGhhbmtzCj4gSGFpaGFvCj4KPgo+ID4gKwo+ID4gICNkZWZpbmUgT0ZGU0VUKHgpIG9mZnNl dG9mKFZQUENvbnRleHQsIHgpCj4gPiAgI2RlZmluZSBGTEFHUyAoQVZfT1BUX0ZMQUdfVklERU9f UEFSQU0gfCBBVl9PUFRfRkxBR19GSUxURVJJTkdfUEFSQU0pCj4gPgo+ID4gQEAgLTY3LDYgKzcz LDEwIEBAIHR5cGVkZWYgc3RydWN0IFZQUENvbnRleHR7Cj4gPiAgICAgIC8qKiBIRFIgcGFyYW1l dGVycyBhdHRhY2hlZCBvbiB0aGUgaW5wdXQgZnJhbWUgKi8KPiA+ICAgICAgbWZ4RXh0TWFzdGVy aW5nRGlzcGxheUNvbG91clZvbHVtZSBtZGN2X2NvbmY7Cj4gPiAgICAgIG1meEV4dENvbnRlbnRM aWdodExldmVsSW5mbyBjbGxpX2NvbmY7Cj4gPiArCj4gPiArICAgIC8qKiBMVVQgcGFyYW1ldGVy cyBhdHRhY2hlZCBvbiB0aGUgaW5wdXQgZnJhbWUgKi8KPiA+ICsgICAgbWZ4RXh0VlBQM0RMdXQg bHV0M2RfY29uZjsKPiA+ICsgICAgTFVUM0RDb250ZXh0IGx1dDNkOwo+ID4gICNlbmRpZgo+ID4K PiA+ICAgICAgLyoqCj4gPiBAQCAtMjYwLDYgKzI3MCw3IEBAIHN0YXRpYyBhdl9jb2xkIGludCB2 cHBfcHJlaW5pdChBVkZpbHRlckNvbnRleHQgKmN0eCkKPiA+Cj4gPiAgc3RhdGljIGF2X2NvbGQg aW50IHZwcF9pbml0KEFWRmlsdGVyQ29udGV4dCAqY3R4KQo+ID4gIHsKPiA+ICsgICAgaW50IHJl dCA9IDA7Cj4gPiAgICAgIFZQUENvbnRleHQgICp2cHAgID0gY3R4LT5wcml2Owo+ID4KPiA+ICAg ICAgaWYgKCF2cHAtPm91dHB1dF9mb3JtYXRfc3RyIHx8ICFzdHJjbXAodnBwLT5vdXRwdXRfZm9y bWF0X3N0ciwgInNhbWUiKSkgewo+ID4gQEAgLTI4OCw5ICsyOTksOSBAQCBzdGF0aWMgYXZfY29s ZCBpbnQgdnBwX2luaXQoQVZGaWx0ZXJDb250ZXh0ICpjdHgpCj4gPiAgICAgIFNUUklOR19PUFRJ T04oY29sb3JfcHJpbWFyaWVzLCBjb2xvcl9wcmltYXJpZXMsIEFWQ09MX1BSSV9VTlNQRUNJRklF RCk7Cj4gPiAgICAgIFNUUklOR19PUFRJT04oY29sb3JfdHJhbnNmZXIsICBjb2xvcl90cmFuc2Zl ciwgIEFWQ09MX1RSQ19VTlNQRUNJRklFRCk7Cj4gPiAgICAgIFNUUklOR19PUFRJT04oY29sb3Jf bWF0cml4LCAgICBjb2xvcl9zcGFjZSwgICAgIEFWQ09MX1NQQ19VTlNQRUNJRklFRCk7Cj4gPiAt Cj4gPiAgI3VuZGVmIFNUUklOR19PUFRJT04KPiA+IC0gICAgcmV0dXJuIDA7Cj4gPiArCj4gPiAr ICAgIHJldHVybiByZXQ7Cj4gPiAgfQo+ID4KPiA+ICBzdGF0aWMgaW50IGNvbmZpZ19pbnB1dChB VkZpbHRlckxpbmsgKmlubGluaykKPiA+IEBAIC0zODgsNiArMzk5LDE5NCBAQCBzdGF0aWMgbWZ4 U3RhdHVzIGdldF9tZnhfdmVyc2lvbihjb25zdCBBVkZpbHRlckNvbnRleHQKPiA+ICpjdHgsIG1m eFZlcnNpb24gKm1meF92ZXIKPiA+ICAgICAgcmV0dXJuIE1GWFF1ZXJ5VmVyc2lvbihkZXZpY2Vf aHdjdHgtPnNlc3Npb24sIG1meF92ZXJzaW9uKTsKPiA+ICB9Cj4gPgo+ID4gKyNpZiBRU1ZfT05F VlBMICYmIENPTkZJR19WQUFQSQo+ID4gK3N0YXRpYyBtZnhTdGF0dXMgZ2V0X3ZhX2Rpc3BsYXko QVZGaWx0ZXJDb250ZXh0ICpjdHgsIFZBRGlzcGxheSAqdmFfZGlzcGxheSkKPiA+ICt7Cj4gPiAr ICAgIFZQUENvbnRleHQgKnZwcCA9IGN0eC0+cHJpdjsKPiA+ICsgICAgUVNWVlBQQ29udGV4dCAq cXN2dnBwID0gJnZwcC0+cXN2Owo+ID4gKyAgICBtZnhIREwgaGFuZGxlOwo+ID4gKyAgICBtZnhT dGF0dXMgcmV0Owo+ID4gKwo+ID4gKyAgICByZXQgPSBNRlhWaWRlb0NPUkVfR2V0SGFuZGxlKHFz dnZwcC0+c2Vzc2lvbiwgTUZYX0hBTkRMRV9WQV9ESVNQTEFZLAo+ID4gJmhhbmRsZSk7Cj4gPiAr ICAgIGlmIChyZXQgIT0gTUZYX0VSUl9OT05FKSB7Cj4gPiArICAgICAgICBhdl9sb2coY3R4LCBB Vl9MT0dfRVJST1IsICJNRlhWaWRlb0NPUkVfR2V0SGFuZGxlIGZhaWxlZCwgc3RhdHVzOgo+ID4g JWRcbiIsIHJldCk7Cj4gPiArICAgICAgICAqdmFfZGlzcGxheSA9IE5VTEw7Cj4gPiArICAgICAg ICByZXR1cm4gcmV0Owo+ID4gKyAgICB9Cj4gPiArCj4gPiArICAgICp2YV9kaXNwbGF5ID0gKFZB RGlzcGxheSloYW5kbGU7Cj4gPiArICAgIHJldHVybiBNRlhfRVJSX05PTkU7Cj4gPiArfQo+ID4g Kwo+ID4gKy8vIEFsbG9jYXRlIG1lbW9yeSBvbiBkZXZpY2UgYW5kIGNvcHkgM0QgTFVUIHRhYmxl Lgo+ID4gKy8vIFJlZmVyZW5jZQo+ID4gaHR0cHM6Ly9zcGVjLm9uZWFwaS5pby9vbmV2cGwvMi45 LjAvcHJvZ3JhbW1pbmdfZ3VpZGUvVlBMX3ByZ192cHAuaHRtbCN2aWRlby1wcm9jZXNzaW5nLTNk bHV0Cj4gPiArc3RhdGljIGludCBpbml0XzNkbHV0X3N1cmZhY2UoQVZGaWx0ZXJDb250ZXh0ICpj dHgpCj4gPiArewo+ID4gKyAgICBWUFBDb250ZXh0ICp2cHAgPSBjdHgtPnByaXY7Cj4gPiArICAg IExVVDNEQ29udGV4dCAqbHV0M2QgPSAmdnBwLT5sdXQzZDsKPiA+ICsgICAgbWZ4RXh0VlBQM0RM dXQgKmx1dDNkX2NvbmYgPSAmdnBwLT5sdXQzZF9jb25mOwo+ID4gKwo+ID4gKyAgICBWQVN0YXR1 cyByZXQgPSAwOwo+ID4gKyAgICBWQURpc3BsYXkgdmFfZHB5ID0gMDsKPiA+ICsgICAgVkFTdXJm YWNlSUQgc3VyZmFjZV9pZCA9IDA7Cj4gPiArICAgIFZBU3VyZmFjZUF0dHJpYiBzdXJmYWNlX2F0 dHJpYjsKPiA+ICsgICAgVkFJbWFnZSBzdXJmYWNlX2ltYWdlOwo+ID4gKyAgICBtZnhVMTYgKnN1 cmZhY2VfdTE2ID0gTlVMTDsKPiA+ICsgICAgbWZ4M0RMdXRNZW1vcnlMYXlvdXQgbWVtX2xheW91 dDsKPiA+ICsgICAgbWZ4TWVtSWQgbWVtX2lkID0gMDsKPiA+ICsKPiA+ICsgICAgaW50IGx1dF9z aXplID0gbHV0M2QtPmx1dHNpemU7Cj4gPiArICAgIGludCBtdWxfc2l6ZSA9IDA7Cj4gPiArCj4g PiArICAgIGludCByLCBnLCBiLCBsdXRfaWR4LCBzZl9pZHg7Cj4gPiArICAgIHN0cnVjdCByZ2J2 ZWMgKnMgPSBOVUxMOwo+ID4gKwo+ID4gKyAgICBhdl9sb2coY3R4LCBBVl9MT0dfVkVSQk9TRSwg ImNyZWF0ZSAzRCBMVVQgc3VyZmFjZSwgc2l6ZTogJXUuXG4iLAo+ID4gbHV0X3NpemUpOwo+ID4g Kwo+ID4gKyAgICBzd2l0Y2ggKGx1dF9zaXplKSB7Cj4gPiArICAgIGNhc2UgMTc6Cj4gPiArICAg ICAgICBtdWxfc2l6ZSA9IDMyOwo+ID4gKyAgICAgICAgbWVtX2xheW91dCA9IE1GWF8zRExVVF9N RU1PUllfTEFZT1VUX0lOVEVMXzE3TFVUOwo+ID4gKyAgICAgICAgYnJlYWs7Cj4gPiArICAgIGNh c2UgMzM6Cj4gPiArICAgICAgICBtdWxfc2l6ZSA9IDY0Owo+ID4gKyAgICAgICAgbWVtX2xheW91 dCA9IE1GWF8zRExVVF9NRU1PUllfTEFZT1VUX0lOVEVMXzMzTFVUOwo+ID4gKyAgICAgICAgYnJl YWs7Cj4gPiArICAgIGNhc2UgNjU6Cj4gPiArICAgICAgICBtdWxfc2l6ZSA9IDEyODsKPiA+ICsg ICAgICAgIG1lbV9sYXlvdXQgPSBNRlhfM0RMVVRfTUVNT1JZX0xBWU9VVF9JTlRFTF82NUxVVDsK PiA+ICsgICAgICAgIGJyZWFrOwo+ID4gKyAgICBkZWZhdWx0Ogo+ID4gKyAgICAgICAgYXZfbG9n KGN0eCwgQVZfTE9HX0VSUk9SLCAiM0QgTFVUIHN1cmZhY2Ugc3VwcG9ydHMgb25seSBMVVQgc2l6 ZTogMTcsCj4gPiAzMywgNjUuIik7Cj4gPiArICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwp Owo+ID4gKyAgICB9Cj4gPiArCj4gPiArICAgIHJldCA9IGdldF92YV9kaXNwbGF5KGN0eCwgJnZh X2RweSk7Cj4gPiArICAgIGlmIChyZXQgIT0gVkFfU1RBVFVTX1NVQ0NFU1MpIHsKPiA+ICsgICAg ICAgIGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwgImdldCBWQURpc3BsYXkgZmFpbGVkLCB1bmFi bGUgdG8gY3JlYXRlIDNECj4gPiBMVVQgc3VyZmFjZS5cbiIpOwo+ID4gKyAgICAgICAgcmV0dXJu IHJldDsKPiA+ICsgICAgfQo+ID4gKwo+ID4gKyAgICBtZW1zZXQoJnN1cmZhY2VfYXR0cmliLCAw LCBzaXplb2Yoc3VyZmFjZV9hdHRyaWIpKTsKPiA+ICsgICAgc3VyZmFjZV9hdHRyaWIudHlwZSA9 IFZBU3VyZmFjZUF0dHJpYlBpeGVsRm9ybWF0Owo+ID4gKyAgICBzdXJmYWNlX2F0dHJpYi5mbGFn cyA9IFZBX1NVUkZBQ0VfQVRUUklCX1NFVFRBQkxFOwo+ID4gKyAgICBzdXJmYWNlX2F0dHJpYi52 YWx1ZS50eXBlID0gVkFHZW5lcmljVmFsdWVUeXBlSW50ZWdlcjsKPiA+ICsgICAgc3VyZmFjZV9h dHRyaWIudmFsdWUudmFsdWUuaSA9IFZBX0ZPVVJDQ19SR0JBOwo+ID4gKwo+ID4gKyAgICByZXQg PSB2YUNyZWF0ZVN1cmZhY2VzKHZhX2RweSwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICBWQV9SVF9GT1JNQVRfUkdCMzIsICAvLyA0IGJ5dGVzCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgbHV0X3NpemUgKiBtdWxfc2l6ZSwgLy8gd2lkdGgKPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICBsdXRfc2l6ZSAqIDIsICAgICAgICAvLyBoZWlnaHQKPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAmc3VyZmFjZV9pZCwgMSwKPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAmc3VyZmFjZV9hdHRyaWIsIDEpOwo+ID4gKyAgICBpZiAocmV0ICE9IFZBX1NU QVRVU19TVUNDRVNTKSB7Cj4gPiArICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfRVJST1IsICJ2 YUNyZWF0ZVN1cmZhY2VzIGZvciAzRCBMVVQgc3VyZmFjZQo+ID4gZmFpbGVkLCBzdGF0dXM6ICVk ICVzXG4iLCByZXQsIHZhRXJyb3JTdHIocmV0KSk7Cj4gPiArICAgICAgICByZXR1cm4gQVZFUlJP UihyZXQpOwo+ID4gKyAgICB9Cj4gPiArICAgIGF2X2xvZyhjdHgsIEFWX0xPR19ERUJVRywgIjNE IExVVCBzdXJmYWNlIGlkICV1XG4iLCBzdXJmYWNlX2lkKTsKPiA+ICsKPiA+ICsgICAgcmV0ID0g dmFTeW5jU3VyZmFjZSh2YV9kcHksIHN1cmZhY2VfaWQpOwo+ID4gKyAgICBpZiAocmV0ICE9IFZB X1NUQVRVU19TVUNDRVNTKSB7Cj4gPiArICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfRVJST1Is ICJ2YVN5bmNTdXJmYWNlIGZvciAzRCBMVVQgc3VyZmFjZSBmYWlsZWQsCj4gPiBzdGF0dXM6ICVk ICVzXG4iLCByZXQsIHZhRXJyb3JTdHIocmV0KSk7Cj4gPiArICAgICAgICBnb3RvIGVycl9kZXN0 cm95X3N1cmZhY2U7Cj4gPiArICAgIH0KPiA+ICsKPiA+ICsgICAgbWVtc2V0KCZzdXJmYWNlX2lt YWdlLCAwLCBzaXplb2Yoc3VyZmFjZV9pbWFnZSkpOwo+ID4gKyAgICByZXQgPSB2YURlcml2ZUlt YWdlKHZhX2RweSwgc3VyZmFjZV9pZCwgJnN1cmZhY2VfaW1hZ2UpOwo+ID4gKyAgICBpZiAocmV0 ICE9IFZBX1NUQVRVU19TVUNDRVNTKSB7Cj4gPiArICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0df RVJST1IsICJ2YURlcml2ZUltYWdlIGZvciAzRCBMVVQgc3VyZmFjZSBmYWlsZWQsCj4gPiBzdGF0 dXM6ICVkICVzXG4iLCByZXQsIHZhRXJyb3JTdHIocmV0KSk7Cj4gPiArICAgICAgICBnb3RvIGVy cl9kZXN0cm95X3N1cmZhY2U7Cj4gPiArICAgIH0KPiA+ICsgICAgaWYgKHN1cmZhY2VfaW1hZ2Uu Zm9ybWF0LmZvdXJjYyAhPSBWQV9GT1VSQ0NfUkdCQSkgewo+ID4gKyAgICAgICAgYXZfbG9nKGN0 eCwgQVZfTE9HX0VSUk9SLCAidmFEZXJpdmVJbWFnZSBmb3JtYXQgaXMgbm90IGV4cGVjdGVkCj4g PiBWQV9GT1VSQ0NfUkdCQSwgZ290IDB4JXhcbiIsIHN1cmZhY2VfaW1hZ2UuZm9ybWF0LmZvdXJj Yyk7Cj4gPiArICAgICAgICBnb3RvIGVycl9kZXN0cm95X2ltYWdlOwo+ID4gKyAgICB9Cj4gPiAr Cj4gPiArICAgIC8vIE1hcCBzdXJmYWNlIHRvIHN5c3RlbSBtZW1vcnkgZm9yIGNvcHkgM0QgTFVU IHRhYmxlLgo+ID4gKyAgICByZXQgPSB2YU1hcEJ1ZmZlcih2YV9kcHksIHN1cmZhY2VfaW1hZ2Uu YnVmLCAodm9pZCAqKikmc3VyZmFjZV91MTYpOwo+ID4gKyAgICBpZiAocmV0ICE9IFZBX1NUQVRV U19TVUNDRVNTKSB7Cj4gPiArICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfRVJST1IsICJ2YU1h cEJ1ZmZlciBmb3IgM0QgTFVUIHN1cmZhY2UgZmFpbGVkLAo+ID4gc3RhdHVzOiAlZCAlc1xuIiwg cmV0LCB2YUVycm9yU3RyKHJldCkpOwo+ID4gKyAgICAgICAgZ290byBlcnJfZGVzdHJveV9pbWFn ZTsKPiA+ICsgICAgfQo+ID4gKwo+ID4gKyAgICAvLyBDb3B5IDNEIExVVCB0byBzdXJmYWNlLgo+ ID4gKyAgICBtZW1zZXQoc3VyZmFjZV91MTYsIDAsIHN1cmZhY2VfaW1hZ2Uud2lkdGggKiBzdXJm YWNlX2ltYWdlLmhlaWdodCAqIDQpOwo+ID4gKyNkZWZpbmUgSU5URUxfM0RMVVRfU0NBTEUgKFVJ TlQxNl9NQVggLSAxKQo+ID4gKyAgICBmb3IgKHIgPSAwOyByIDwgbHV0X3NpemU7ICsrcikgewo+ ID4gKyAgICAgICAgZm9yIChnID0gMDsgZyA8IGx1dF9zaXplOyArK2cpIHsKPiA+ICsgICAgICAg ICAgICBmb3IgKGIgPSAwOyBiIDwgbHV0X3NpemU7ICsrYikgewo+ID4gKyAgICAgICAgICAgICAg ICBsdXRfaWR4ID0gciAqIGx1dF9zaXplICogbHV0X3NpemUgKyBnICogbHV0X3NpemUgKyBiOwo+ ID4gKyAgICAgICAgICAgICAgICBzID0gJmx1dDNkLT5sdXRbbHV0X2lkeF07Cj4gPiArCj4gPiAr ICAgICAgICAgICAgICAgIHNmX2lkeCA9IChyICogbHV0X3NpemUgKiBtdWxfc2l6ZSArIGcgKiBt dWxfc2l6ZSArIGIpICogNDsKPiA+ICsgICAgICAgICAgICAgICAgc3VyZmFjZV91MTZbc2ZfaWR4 ICsgMF0gPSAobWZ4VTE2KShzLT5yICogSU5URUxfM0RMVVRfU0NBTEUpOwo+ID4gKyAgICAgICAg ICAgICAgICBzdXJmYWNlX3UxNltzZl9pZHggKyAxXSA9IChtZnhVMTYpKHMtPmcgKiBJTlRFTF8z RExVVF9TQ0FMRSk7Cj4gPiArICAgICAgICAgICAgICAgIHN1cmZhY2VfdTE2W3NmX2lkeCArIDJd ID0gKG1meFUxNikocy0+YiAqIElOVEVMXzNETFVUX1NDQUxFKTsKPiA+ICsgICAgICAgICAgICAg ICAgLy8gc3VyZmFjZV91MTZbc2ZfaWR4ICsgNF0gaXMgcmVzZXJ2ZWQgY2hhbm5lbC4KPiA+ICsg ICAgICAgICAgICB9Cj4gPiArICAgICAgICB9Cj4gPiArICAgIH0KPiA+ICsjdW5kZWYgSU5URUxf M0RMVVRfU0NBTEUKPiA+ICsKPiA+ICsgICAgaWYgKHZhVW5tYXBCdWZmZXIodmFfZHB5LCBzdXJm YWNlX2ltYWdlLmJ1ZikpIHsKPiA+ICsgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwg InZhVW5tYXBCdWZmZXIgZm9yIDNEIExVVCBzdXJmYWNlIGZhaWxlZCwKPiA+IHN0YXR1czogJWQg JXNcbiIsIHJldCwgdmFFcnJvclN0cihyZXQpKTsKPiA+ICsgICAgICAgIGdvdG8gZXJyX2Rlc3Ry b3lfaW1hZ2U7Cj4gPiArICAgIH0KPiA+ICsgICAgdmFEZXN0cm95SW1hZ2UodmFfZHB5LCBzdXJm YWNlX2ltYWdlLmltYWdlX2lkKTsKPiA+ICsKPiA+ICsgICAgbWVtX2lkID0gYXZfbWFsbG9jKHNp emVvZihWQVN1cmZhY2VJRCkpOwo+ID4gKyAgICBpZiAobWVtX2lkID09IDApIHsKPiA+ICsgICAg ICAgIHJldCA9IEFWRVJST1IoRU5PTUVNKTsKPiA+ICsgICAgICAgIGdvdG8gZXJyX2Rlc3Ryb3lf c3VyZmFjZTsKPiA+ICsgICAgfQo+ID4gKwo+ID4gKyAgICBhdl9sb2coY3R4LCBBVl9MT0dfREVC VUcsCj4gPiArICAgICAgICAgICAidXBsb2FkIDNEIExVVCBzdXJmYWNlIHdpZHRoICVkLCBoZWln aHQgJWRcbiIsCj4gPiArICAgICAgICAgICAoaW50KXN1cmZhY2VfaW1hZ2Uud2lkdGgsIChpbnQp c3VyZmFjZV9pbWFnZS5oZWlnaHQpOwo+ID4gKwo+ID4gKyAgICBtZW1zZXQobHV0M2RfY29uZiwg MCwgc2l6ZW9mKCpsdXQzZF9jb25mKSk7Cj4gPiArICAgIGx1dDNkX2NvbmYtPkhlYWRlci5CdWZm ZXJJZCA9IE1GWF9FWFRCVUZGX1ZQUF8zRExVVDsKPiA+ICsgICAgbHV0M2RfY29uZi0+SGVhZGVy LkJ1ZmZlclN6ID0gc2l6ZW9mKCpsdXQzZF9jb25mKTsKPiA+ICsgICAgbHV0M2RfY29uZi0+Q2hh bm5lbE1hcHBpbmcgPSBNRlhfM0RMVVRfQ0hBTk5FTF9NQVBQSU5HX1JHQl9SR0I7Cj4gPiArICAg IGx1dDNkX2NvbmYtPkJ1ZmZlclR5cGUgPSBNRlhfUkVTT1VSQ0VfVkFfU1VSRkFDRTsKPiA+ICsg ICAgbHV0M2RfY29uZi0+VmlkZW9CdWZmZXIuRGF0YVR5cGUgPSBNRlhfREFUQV9UWVBFX1UxNjsK PiA+ICsgICAgbHV0M2RfY29uZi0+VmlkZW9CdWZmZXIuTWVtTGF5b3V0ID0gbWVtX2xheW91dDsK PiA+ICsgICAgbHV0M2RfY29uZi0+VmlkZW9CdWZmZXIuTWVtSWQgPSBtZW1faWQ7Cj4gPiArICAg ICooKFZBU3VyZmFjZUlEKilsdXQzZF9jb25mLT5WaWRlb0J1ZmZlci5NZW1JZCkgPSBzdXJmYWNl X2lkOwo+ID4gKwo+ID4gKyAgICByZXR1cm4gMDsKPiA+ICsKPiA+ICtlcnJfZGVzdHJveV9pbWFn ZToKPiA+ICsgICAgdmFEZXN0cm95SW1hZ2UodmFfZHB5LCBzdXJmYWNlX2ltYWdlLmltYWdlX2lk KTsKPiA+ICtlcnJfZGVzdHJveV9zdXJmYWNlOgo+ID4gKyAgICB2YURlc3Ryb3lTdXJmYWNlcyh2 YV9kcHksICZzdXJmYWNlX2lkLCAxKTsKPiA+ICsgICAgcmV0dXJuIHJldDsKPiA+ICt9Cj4gPiAr Cj4gPiArc3RhdGljIGludCB1bmluaXRfM2RsdXRfc3VyZmFjZShBVkZpbHRlckNvbnRleHQgKmN0 eCkgewo+ID4gKyAgICBWUFBDb250ZXh0ICp2cHAgPSBjdHgtPnByaXY7Cj4gPiArICAgIG1meEV4 dFZQUDNETHV0ICpsdXQzZF9jb25mID0gJnZwcC0+bHV0M2RfY29uZjsKPiA+ICsgICAgVkFEaXNw bGF5IHZhX2RweSA9IDA7Cj4gPiArICAgIGludCByZXQ7Cj4gPiArCj4gPiArICAgIGlmIChsdXQz ZF9jb25mLT5IZWFkZXIuQnVmZmVySWQgPT0gTUZYX0VYVEJVRkZfVlBQXzNETFVUKSB7Cj4gPiAr ICAgICAgICByZXQgPSBnZXRfdmFfZGlzcGxheShjdHgsICZ2YV9kcHkpOwo+ID4gKyAgICAgICAg aWYgKCF2YV9kcHkpIHsKPiA+ICsgICAgICAgICAgICByZXR1cm4gcmV0Owo+ID4gKyAgICAgICAg fQo+ID4gKyAgICAgICAgcmV0ID0gdmFEZXN0cm95U3VyZmFjZXModmFfZHB5LCAoVkFTdXJmYWNl SUQqKWx1dDNkX2NvbmYtCj4gPiA+VmlkZW9CdWZmZXIuTWVtSWQsIDEpOwo+ID4gKyAgICAgICAg aWYgKHJldCAhPSBWQV9TVEFUVVNfU1VDQ0VTUykgewo+ID4gKyAgICAgICAgICAgIGF2X2xvZyhj dHgsIEFWX0xPR19FUlJPUiwgInZhRGVzdHJveVN1cmZhY2VzIGZhaWxlZCwgc3RhdHVzOiAlZAo+ ID4gJXNcbiIsIHJldCwgdmFFcnJvclN0cihyZXQpICk7Cj4gPiArICAgICAgICAgICAgcmV0dXJu IHJldDsKPiA+ICsgICAgICAgIH0KPiA+ICsgICAgICAgIGF2X2ZyZWUobHV0M2RfY29uZi0+Vmlk ZW9CdWZmZXIuTWVtSWQpOwo+ID4gKyAgICB9Cj4gPiArICAgIG1lbXNldChsdXQzZF9jb25mLCAw LCBzaXplb2YoKmx1dDNkX2NvbmYpKTsKPiA+ICsKPiA+ICsgICAgcmV0dXJuIDA7Cj4gPiArfQo+ ID4gKyNlbmRpZiAvLyBRU1ZfT05FVlBMICYmIENPTkZJR19WQUFQSQo+ID4gKwo+ID4gIHN0YXRp YyBpbnQgdnBwX3NldF9mcmFtZV9leHRfcGFyYW1zKEFWRmlsdGVyQ29udGV4dCAqY3R4LCBjb25z dCBBVkZyYW1lICppbiwKPiA+IEFWRnJhbWUgKm91dCwgIFFTVlZQUEZyYW1lUGFyYW0gKmZwKQo+ ID4gIHsKPiA+ICAjaWYgUVNWX09ORVZQTAo+ID4gQEAgLTQwMSw2ICs2MDAsNyBAQCBzdGF0aWMg aW50IHZwcF9zZXRfZnJhbWVfZXh0X3BhcmFtcyhBVkZpbHRlckNvbnRleHQgKmN0eCwKPiA+IGNv bnN0IEFWRnJhbWUgKmluLCBBVkYKPiA+Cj4gPiAgICAgIGZwLT5udW1fZXh0X2J1ZiA9IDA7Cj4g Pgo+ID4gKyAgICBhdl9sb2coY3R4LCBBVl9MT0dfREVCVUcsICJ2cHBfc2V0X2ZyYW1lX2V4dF9w YXJhbXMgUVNWX09ORVZQTFxuIik7Cj4gPiAgICAgIGlmICghaW4gfHwgIW91dCB8fAo+ID4gICAg ICAgICAgIVFTVl9SVU5USU1FX1ZFUlNJT05fQVRMRUFTVChxc3Z2cHAtPnZlciwgMiwgMCkpCj4g PiAgICAgICAgICByZXR1cm4gMDsKPiA+IEBAIC00OTksNiArNjk5LDEzIEBAIHN0YXRpYyBpbnQg dnBwX3NldF9mcmFtZV9leHRfcGFyYW1zKEFWRmlsdGVyQ29udGV4dCAqY3R4LAo+ID4gY29uc3Qg QVZGcmFtZSAqaW4sIEFWRgo+ID4gICAgICBvdXR2c2lfY29uZi5NYXRyaXhDb2VmZmljaWVudHMg ICAgICAgPSAob3V0LT5jb2xvcnNwYWNlID09Cj4gPiBBVkNPTF9TUENfVU5TUEVDSUZJRUQpID8g QVZDT0xfU1BDX0JUNzA5IDogb3V0LT5jb2xvcnNwYWNlOwo+ID4gICAgICBvdXR2c2lfY29uZi5D b2xvdXJEZXNjcmlwdGlvblByZXNlbnQgPSAxOwo+ID4KPiA+ICsjaWYgQ09ORklHX1ZBQVBJCj4g PiArICAgIGlmICh2cHAtPmx1dDNkLmZpbGUgJiYgKHZwcC0+bHV0M2RfY29uZi5IZWFkZXIuQnVm ZmVySWQgPT0gMCkpIHsKPiA+ICsgICAgICAgIC8vIDNEIExVVCBkb2VzIG5vdCBkZXBlbmQgb24g aW4vb3V0IGZyYW1lLCBzbyBpbml0aWFsaXplIGp1c3Qgb25jZS4KPiA+ICsgICAgICAgIGluaXRf M2RsdXRfc3VyZmFjZShjdHgpOwo+ID4gKyAgICB9Cj4gPiArI2VuZGlmCj4gPiArCj4gPiAgICAg IGlmIChtZW1jbXAoJnZwcC0+aW52c2lfY29uZiwgJmludnNpX2NvbmYsIHNpemVvZihtZnhFeHRW aWRlb1NpZ25hbEluZm8pKQo+ID4gfHwKPiA+ICAgICAgICAgIG1lbWNtcCgmdnBwLT5tZGN2X2Nv bmYsICZtZGN2X2NvbmYsCj4gPiBzaXplb2YobWZ4RXh0TWFzdGVyaW5nRGlzcGxheUNvbG91clZv bHVtZSkpIHx8Cj4gPiAgICAgICAgICBtZW1jbXAoJnZwcC0+Y2xsaV9jb25mLCAmY2xsaV9jb25m LAo+ID4gc2l6ZW9mKG1meEV4dENvbnRlbnRMaWdodExldmVsSW5mbykpIHx8Cj4gPiBAQCAtNTE2 LDYgKzcyMywxMCBAQCBzdGF0aWMgaW50IHZwcF9zZXRfZnJhbWVfZXh0X3BhcmFtcyhBVkZpbHRl ckNvbnRleHQgKmN0eCwKPiA+IGNvbnN0IEFWRnJhbWUgKmluLCBBVkYKPiA+ICAgICAgICAgIHZw cC0+Y2xsaV9jb25mICAgICAgICAgICAgICAgICAgICAgPSBjbGxpX2NvbmY7Cj4gPiAgICAgICAg ICBpZiAoY2xsaV9jb25mLkhlYWRlci5CdWZmZXJJZCkKPiA+ICAgICAgICAgICAgICBmcC0+ZXh0 X2J1ZltmcC0+bnVtX2V4dF9idWYrK10gPSAobWZ4RXh0QnVmZmVyKikmdnBwLT5jbGxpX2NvbmY7 Cj4gPiArCj4gPiArICAgICAgICBpZiAodnBwLT5sdXQzZF9jb25mLkhlYWRlci5CdWZmZXJJZCkg ewo+ID4gKyAgICAgICAgICAgIGZwLT5leHRfYnVmW2ZwLT5udW1fZXh0X2J1ZisrXSA9IChtZnhF eHRCdWZmZXIgKikmdnBwLQo+ID4gPmx1dDNkX2NvbmY7Cj4gPiArICAgICAgICB9Cj4gPiAgICAg IH0KPiA+ICAjZW5kaWYKPiA+Cj4gPiBAQCAtNTI0LDYgKzczNSw3IEBAIHN0YXRpYyBpbnQgdnBw X3NldF9mcmFtZV9leHRfcGFyYW1zKEFWRmlsdGVyQ29udGV4dCAqY3R4LAo+ID4gY29uc3QgQVZG cmFtZSAqaW4sIEFWRgo+ID4KPiA+ICBzdGF0aWMgaW50IGNvbmZpZ19vdXRwdXQoQVZGaWx0ZXJM aW5rICpvdXRsaW5rKQo+ID4gIHsKPiA+ICsgICAgaW50IHJldDsKPiA+ICAgICAgQVZGaWx0ZXJD b250ZXh0ICpjdHggPSBvdXRsaW5rLT5zcmM7Cj4gPiAgICAgIFZQUENvbnRleHQgICAgICAqdnBw ID0gY3R4LT5wcml2Owo+ID4gICAgICBRU1ZWUFBQYXJhbSAgICAgcGFyYW0gPSB7IE5VTEwgfTsK PiA+IEBAIC03MTEsOSArOTIzLDE3IEBAIHN0YXRpYyBpbnQgY29uZmlnX291dHB1dChBVkZpbHRl ckxpbmsgKm91dGxpbmspCj4gPiAgICAgICAgICB2cHAtPmNvbG9yX3RyYW5zZmVyICE9IEFWQ09M X1RSQ19VTlNQRUNJRklFRCB8fAo+ID4gICAgICAgICAgdnBwLT5jb2xvcl9tYXRyaXggIT0gQVZD T0xfU1BDX1VOU1BFQ0lGSUVEIHx8Cj4gPiAgICAgICAgICB2cHAtPnRvbmVtYXAgfHwKPiA+IC0g ICAgICAgICF2cHAtPmhhc19wYXNzdGhyb3VnaCkKPiA+ICsgICAgICAgIHZwcC0+bHV0M2QuZmls ZSB8fAo+ID4gKyAgICAgICAgIXZwcC0+aGFzX3Bhc3N0aHJvdWdoKSB7Cj4gPiArICAgICAgICBp ZiAodnBwLT5sdXQzZC5maWxlKSB7Cj4gPiArICAgICAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9H X0lORk8sICJsb2FkIDNEIExVVCBmcm9tIGZpbGU6ICVzXG4iLCB2cHAtCj4gPiA+bHV0M2QuZmls ZSk7Cj4gPiArICAgICAgICAgICAgcmV0ID0gZmZfbHV0M2RfaW5pdChjdHgsICZ2cHAtPmx1dDNk KTsKPiA+ICsgICAgICAgICAgICBpZiAocmV0ICE9IDApIHsKPiA+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHJldDsKPiA+ICsgICAgICAgICAgICB9Cj4gPiArICAgICAgICB9Cj4gPiAgICAgICAg ICByZXR1cm4gZmZfcXN2dnBwX2luaXQoY3R4LCAmcGFyYW0pOwo+ID4gLSAgICBlbHNlIHsKPiA+ ICsgICAgfSBlbHNlIHsKPiA+ICAgICAgICAgIC8qIE5vIE1GWCBzZXNzaW9uIGlzIGNyZWF0ZWQg aW4gdGhpcyBjYXNlICovCj4gPiAgICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfVkVSQk9TRSwg InFzdiB2cHAgcGFzcyB0aHJvdWdoIG1vZGUuXG4iKTsKPiA+ICAgICAgICAgIGlmIChpbmxpbmst Pmh3X2ZyYW1lc19jdHgpCj4gPiBAQCAtODAxLDYgKzEwMjEsMTUgQEAgZW9mOgo+ID4KPiA+ICBz dGF0aWMgYXZfY29sZCB2b2lkIHZwcF91bmluaXQoQVZGaWx0ZXJDb250ZXh0ICpjdHgpCj4gPiAg ewo+ID4gKyAgICBWUFBDb250ZXh0ICp2cHAgPSBjdHgtPnByaXY7Cj4gPiArCj4gPiArI2lmIFFT Vl9PTkVWUEwgJiYgQ09ORklHX1ZBQVBJCj4gPiArICAgIHVuaW5pdF8zZGx1dF9zdXJmYWNlKGN0 eCk7Cj4gPiArI2VuZGlmCj4gPiArCj4gPiArICAgIGlmICh2cHAtPmx1dDNkLmZpbGUpIHsKPiA+ ICsgICAgICAgIGZmX2x1dDNkX3VuaW5pdCgmdnBwLT5sdXQzZCk7Cj4gPiArICAgIH0KPiA+ICAg ICAgZmZfcXN2dnBwX2Nsb3NlKGN0eCk7Cj4gPiAgfQo+ID4KPiA+IEBAIC05MjQsNyArMTE1Myw5 IEBAIHN0YXRpYyBjb25zdCBBVk9wdGlvbiB2cHBfb3B0aW9uc1tdID0gewo+ID4gICAgICAgIE9G RlNFVChjb2xvcl90cmFuc2Zlcl9zdHIpLCAgQVZfT1BUX1RZUEVfU1RSSU5HLCB7IC5zdHIgPSBO VUxMIH0sCj4gPiAuZmxhZ3MgPSBGTEFHUyB9LAo+ID4KPiA+ICAgICAgeyJ0b25lbWFwIiwgIlBl cmZvcm0gdG9uZW1hcHBpbmcgKDA9ZGlzYWJsZSB0b25lbWFwcGluZywgMT1wZXJmb3JtCj4gPiB0 b25lbWFwcGluZyBpZiB0aGUgaW5wdXQgaGFzIEhEUiBtZXRhZGF0YSkiLCBPRkZTRVQodG9uZW1h cCksIEFWX09QVF9UWVBFX0lOVCwKPiA+IHsuaTY0ID0gMCB9LCAwLCAxLCAuZmxhZ3MgPSBGTEFH U30sCj4gPiAtCj4gPiArI2lmIFFTVl9PTkVWUEwgJiYgQ09ORklHX1ZBQVBJCj4gPiArICAgIHsg Imx1dDNkX2ZpbGUiLCAiTG9hZCBhbmQgYXBwbHkgM0QgTFVUIGZpbGUiLCBPRkZTRVQobHV0M2Qp ICsKPiA+IG9mZnNldG9mKExVVDNEQ29udGV4dCwgZmlsZSksIEFWX09QVF9UWVBFX1NUUklORywg eyAuc3RyID0gTlVMTCB9LCAuZmxhZ3MgPQo+ID4gRkxBR1MgfSwKPiA+ICsjZW5kaWYKPiA+ICAg ICAgeyBOVUxMIH0KPiA+ICB9Owo+ID4KPgoKCi0tIApCZXN0IHJlZ2FyZHMsCkNoZW4gWXVmZWkK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZmZtcGVnLWRl dmVsIG1haWxpbmcgbGlzdApmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwpodHRwczovL2ZmbXBlZy5v cmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKClRvIHVuc3Vic2NyaWJlLCB2aXNpdCBs aW5rIGFib3ZlLCBvciBlbWFpbApmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGgg c3ViamVjdCAidW5zdWJzY3JpYmUiLgo=