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 548614A1B2 for ; Sat, 23 Mar 2024 15:36:06 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 834C368D41D; Sat, 23 Mar 2024 17:36:04 +0200 (EET) Received: from mail-ed1-f50.google.com (mail-ed1-f50.google.com [209.85.208.50]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7A5A968D3DC for ; Sat, 23 Mar 2024 17:35:58 +0200 (EET) Received: by mail-ed1-f50.google.com with SMTP id 4fb4d7f45d1cf-56bc8cfc19fso3349341a12.1 for ; Sat, 23 Mar 2024 08:35:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1711208157; x=1711812957; darn=ffmpeg.org; h=message-id:in-reply-to:to:references:date:subject:mime-version:from :from:to:cc:subject:date:message-id:reply-to; bh=DXtm5PO5xOyoLi8i7h31XXie/cs8l5t1pHBPSPd1H/Q=; b=fdFIKwh4KpjpvMHALcLssVcRC18oeklvmxeMjCWw4+ff6M6DF1sT9G+UMI93Dwxgy/ J4A4md/sX3NMaQ7q/g6JOPGWiqojVLgBGm0buUCAbaTTYw1anWzeH9UgXu8aD54NkTAt /AD3APoGibTOjfNKamc0c8yMZY1BSHAv8uLJ8awCmrPiSsmTkhNUqd6I6ouyJJSAgdFb IiNZqieGHzPLwCoVsrbQG957VyRdhc+L2LgmJSSu+cyTHKsN7MhDLhxICMRHI8f+P7EG hTS0ajzSkO6L85djz98XKVBceyLrTZM0VFjGikA9x0252Duq8k4NHdOYxaFIB2RgJKfs sVLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711208157; x=1711812957; h=message-id:in-reply-to:to:references:date:subject:mime-version:from :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=DXtm5PO5xOyoLi8i7h31XXie/cs8l5t1pHBPSPd1H/Q=; b=r6owYSeECOUvAi9J0aEWrdjMyvWoaDIq5La8EXJeGlMTjUM8+yIaqJI0yUw+E59F1Y eFDYtWYaLZSdFrPV8VSUtKmi539zGvUOWxpJpFJK+s9h2Cln3mbw4LFCzQ/IMfEIk+9W 7BWI8B5NdEQEcF1GUWYkLTrAv0sqqt7189Njoqo26r6fShgradyprQf6n8ikVxh3IEjX GzzyQtGGx+tnokVUwWgw9G6rw5ZiJRT1JL7oduckdIGlVBUhyonMumrw0OJDWLjRVJ7Y m8sNqPCTnkH3Y3WgzAcPKR/lLxHQEPEX0IPmfiRWrdMygC/46o0COvcv/OAiAJyK2nn3 j9aA== X-Gm-Message-State: AOJu0Yz386MMg5oFUhQcYoGtpTGz9mGigpavkm7crx5Ya1ohrV1Y5hWW /hqXVH5B0qH8zzO2+V7zSBQishw9nzlEvAYISsz7pR77kmHt/lFcO7JfGlg= X-Google-Smtp-Source: AGHT+IFUyaF6tXtGk0hFlptT3UgHEVc4OXt4P5hRdHKL6Klwd06JDrAdlH71Ytz9/IlkxDGFN/MZTw== X-Received: by 2002:a50:aa94:0:b0:56b:ebcc:d36f with SMTP id q20-20020a50aa94000000b0056bebccd36fmr1685059edc.13.1711208156683; Sat, 23 Mar 2024 08:35:56 -0700 (PDT) Received: from smtpclient.apple ([2a02:e0:8bc4:3100:1c49:47da:e267:d99f]) by smtp.gmail.com with ESMTPSA id ef3-20020a05640228c300b0056bfb4a94e9sm557015edb.59.2024.03.23.08.35.56 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 23 Mar 2024 08:35:56 -0700 (PDT) From: =?utf-8?Q?Yi=C4=9Fithan_Yi=C4=9Fit?= Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3774.100.2.1.4\)) Date: Sat, 23 Mar 2024 18:35:45 +0300 References: <4401208C-BB2A-4DA4-A2FD-1CB92DAF2FE9@gmail.com> <9D07803F-F9FC-4B97-934B-521E6680F0D4@gmail.com> To: FFmpeg development discussions and patches In-Reply-To: Message-Id: X-Mailer: Apple Mail (2.3774.100.2.1.4) X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH] avfilter/af_volumedetect.c: Add 32bit float audio support 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: 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: CkZpeGVzICM5NjEzCgotLS0KIGxpYmF2ZmlsdGVyL2FmX3ZvbHVtZWRldGVjdC5jIHwgMjM0ICsr KysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxNzIgaW5z ZXJ0aW9ucygrKSwgNjIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliYXZmaWx0ZXIvYWZf dm9sdW1lZGV0ZWN0LmMgYi9saWJhdmZpbHRlci9hZl92b2x1bWVkZXRlY3QuYwppbmRleCA4YjAw MWQxY2YyLi5kMTNkMDQzZjg4IDEwMDY0NAotLS0gYS9saWJhdmZpbHRlci9hZl92b2x1bWVkZXRl Y3QuYworKysgYi9saWJhdmZpbHRlci9hZl92b2x1bWVkZXRlY3QuYwpAQCAtMjQsOTQgKzI0LDE5 MyBAQAogI2luY2x1ZGUgImF2ZmlsdGVyLmgiCiAjaW5jbHVkZSAiaW50ZXJuYWwuaCIKIAorI2Rl ZmluZSBOT0lTRV9GTE9PUl9EQl9GTFQgLTc1OAorI2RlZmluZSBNQVhfREJfRkxUIDc3MAorI2Rl ZmluZSBNQVhfREIgOTEKKyNkZWZpbmUgSElTVE9HUkFNX1NJWkUgMHgxMDAwMAorCiB0eXBlZGVm IHN0cnVjdCBWb2xEZXRlY3RDb250ZXh0IHsKLSAgICAvKioKLSAgICAgKiBOdW1iZXIgb2Ygc2Ft cGxlcyBhdCBlYWNoIFBDTSB2YWx1ZS4KLSAgICAgKiBoaXN0b2dyYW1bMHg4MDAwICsgaV0gaXMg dGhlIG51bWJlciBvZiBzYW1wbGVzIGF0IHZhbHVlIGkuCi0gICAgICogVGhlIGV4dHJhIGVsZW1l bnQgaXMgdGhlcmUgZm9yIHN5bW1ldHJ5LgotICAgICAqLwotICAgIHVpbnQ2NF90IGhpc3RvZ3Jh bVsweDEwMDAxXTsKKyAgICB1aW50NjRfdCogaGlzdG9ncmFtOyAvLy88IGZvciBpbnRlZ2VyIG51 bWJlciBvZiBzYW1wbGVzIGF0IGVhY2ggUENNIHZhbHVlLCBmb3IgZmxvYXQgbnVtYmVyIG9mIHNh bXBsZXMgYXQgZWFjaCBkQgorICAgIHVpbnQ2NF90IG5iX3NhbXBsZXM7IC8vLzwgbnVtYmVyIG9m IHNhbXBsZXMKKyAgICBkb3VibGUgc3VtMjsgICAgICAgICAvLy88IHN1bSBvZiB0aGUgc3F1YXJl cyBvZiB0aGUgc2FtcGxlcworICAgIGRvdWJsZSBtYXg7ICAgICAgICAgIC8vLzwgbWF4aW11bSBz YW1wbGUgdmFsdWUKKyAgICBpbnQgaXNfZmxvYXQ7ICAgICAgICAvLy88IHRydWUgaWYgdGhlIGlu cHV0IGlzIGluIGZsb2F0aW5nIHBvaW50CiB9IFZvbERldGVjdENvbnRleHQ7CiAKK3N0YXRpYyBp bmxpbmUgZG91YmxlIGxvZ2RiKGRvdWJsZSB2LCBlbnVtIEFWU2FtcGxlRm9ybWF0IHNhbXBsZV9m bXQpCit7CisgICAgLyoKKyAgICAqIFNpbmNlIGl0IGlzIGEgbm90IGEgcG93ZXIgdmFsdWUsIGFi bGUgdG8gdXNlIDIwLjAgKiBsb2cxMCh2KQorICAgICovCisgICAgaWYgKHNhbXBsZV9mbXQgPT0g QVZfU0FNUExFX0ZNVF9GTFQpIHsKKyAgICAgICAgaWYgKCF2KQorICAgICAgICAgICAgcmV0dXJu IE1BWF9EQl9GTFQ7CisgICAgICAgIHJldHVybiAyMC4wICogbG9nMTAodik7CisgICAgfSBlbHNl IHsKKyAgICAgICAgZG91YmxlIGQgPSB2IC8gKGRvdWJsZSkoMHg4MDAwICogMHg4MDAwKTsKKyAg ICAgICAgaWYgKCF2KQorICAgICAgICAgICAgcmV0dXJuIE1BWF9EQjsKKyAgICAgICAgcmV0dXJu IC1sb2cxMChkKSAqIDEwOworICAgIH0KK30KKworc3RhdGljIHZvaWQgdXBkYXRlX2Zsb2F0X3N0 YXRzKFZvbERldGVjdENvbnRleHQgKnZkLCBmbG9hdCAqYXVkaW9fZGF0YSkKK3sKKyAgICBkb3Vi bGUgbWF4X3NhbXBsZTsKKyAgICBtYXhfc2FtcGxlID0gZmFic2YoKmF1ZGlvX2RhdGEpOworICAg IGlmIChtYXhfc2FtcGxlID4gdmQtPm1heCkKKyAgICAgICAgdmQtPm1heCA9IG1heF9zYW1wbGU7 CisgICAgdmQtPnN1bTIgKz0gKmF1ZGlvX2RhdGEgKiAqYXVkaW9fZGF0YTsKKyAgICB2ZC0+aGlz dG9ncmFtWyhpbnQpbG9nZGIobWF4X3NhbXBsZSwgQVZfU0FNUExFX0ZNVF9GTFQpICsgTUFYX0RC X0ZMVF0rKzsKKyAgICB2ZC0+bmJfc2FtcGxlcysrOworfQorCiBzdGF0aWMgaW50IGZpbHRlcl9m cmFtZShBVkZpbHRlckxpbmsgKmlubGluaywgQVZGcmFtZSAqc2FtcGxlcykKIHsKICAgICBBVkZp bHRlckNvbnRleHQgKmN0eCA9IGlubGluay0+ZHN0OwogICAgIFZvbERldGVjdENvbnRleHQgKnZk ID0gY3R4LT5wcml2OwotICAgIGludCBuYl9zYW1wbGVzICA9IHNhbXBsZXMtPm5iX3NhbXBsZXM7 CiAgICAgaW50IG5iX2NoYW5uZWxzID0gc2FtcGxlcy0+Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzOwog ICAgIGludCBuYl9wbGFuZXMgICA9IG5iX2NoYW5uZWxzOworICAgIGludCBwbGFuYXIgICAgICA9 IDA7CiAgICAgaW50IHBsYW5lLCBpOwotICAgIGludDE2X3QgKnBjbTsKIAotICAgIGlmICghYXZf c2FtcGxlX2ZtdF9pc19wbGFuYXIoc2FtcGxlcy0+Zm9ybWF0KSkgewotICAgICAgICBuYl9zYW1w bGVzICo9IG5iX2NoYW5uZWxzOworICAgIHBsYW5hciA9IGF2X3NhbXBsZV9mbXRfaXNfcGxhbmFy KHNhbXBsZXMtPmZvcm1hdCk7CisgICAgaWYgKCFwbGFuYXIpCiAgICAgICAgIG5iX3BsYW5lcyA9 IDE7CisgICAgaWYgKHZkLT5pc19mbG9hdCkgeworICAgICAgICBmbG9hdCAqYXVkaW9fZGF0YTsK KyAgICAgICAgZm9yIChwbGFuZSA9IDA7IHBsYW5lIDwgbmJfcGxhbmVzOyBwbGFuZSsrKSB7Cisg ICAgICAgICAgICBhdWRpb19kYXRhID0gKGZsb2F0ICopc2FtcGxlcy0+ZXh0ZW5kZWRfZGF0YVtw bGFuZV07CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2FtcGxlcy0+bmJfc2FtcGxlczsg aSsrKSB7CisgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgKiBJZiB0aGUgaW5w dXQgaXMgcGxhbmFyLCB0aGUgc2FtcGxlcyBhcmUgaW4gdGhlIHNlcGVyYXRlZCBwbGFuZXMuCisg ICAgICAgICAgICAgICAgICogaWYgdGhlIGlucHV0IGlzIG5vdCBwbGFuYXIsIHRoZSBzYW1wbGVz IGFyZSBpbnRlcmxlYXZlZC4KKyAgICAgICAgICAgICAgICAgKiBpZiB0aGUgaW5wdXQgaXMgbm90 IHBsYW5hciwgc3BsaXQgdGhlIHNhbXBsZXMgaW50byB0aGUgcGxhbmVzLgorICAgICAgICAgICAg ICAgICAqLworICAgICAgICAgICAgICAgIGlmIChwbGFuYXIpIHsKKyAgICAgICAgICAgICAgICAg ICAgdXBkYXRlX2Zsb2F0X3N0YXRzKHZkLCAmYXVkaW9fZGF0YVtpXSk7CisgICAgICAgICAgICAg ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBuYl9j aGFubmVsczsgaisrKQorICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlX2Zsb2F0X3N0YXRz KHZkLCAmYXVkaW9fZGF0YVtpICogbmJfY2hhbm5lbHMgKyBqXSk7CisgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaW50MTZf dCAqcGNtOworICAgICAgICBmb3IgKHBsYW5lID0gMDsgcGxhbmUgPCBuYl9wbGFuZXM7IHBsYW5l KyspIHsKKyAgICAgICAgICAgIHBjbSA9IChpbnQxNl90ICopc2FtcGxlcy0+ZXh0ZW5kZWRfZGF0 YVtwbGFuZV07CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2FtcGxlcy0+bmJfc2FtcGxl czsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKHBsYW5hcikgeworICAgICAgICAgICAgICAg ICAgICB2ZC0+aGlzdG9ncmFtW3BjbVtpXSArIDB4ODAwMF0rKzsKKyAgICAgICAgICAgICAgICAg ICAgdmQtPm5iX3NhbXBsZXMrKzsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg ICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG5iX2NoYW5uZWxzOyBqKyspIHsKKyAgICAg ICAgICAgICAgICAgICAgICAgIHZkLT5oaXN0b2dyYW1bcGNtW2kgKiBuYl9jaGFubmVscyArIGpd ICsgMHg4MDAwXSsrOworICAgICAgICAgICAgICAgICAgICAgICAgdmQtPm5iX3NhbXBsZXMrKzsK KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K KyAgICAgICAgfQogICAgIH0KLSAgICBmb3IgKHBsYW5lID0gMDsgcGxhbmUgPCBuYl9wbGFuZXM7 IHBsYW5lKyspIHsKLSAgICAgICAgcGNtID0gKGludDE2X3QgKilzYW1wbGVzLT5leHRlbmRlZF9k YXRhW3BsYW5lXTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IG5iX3NhbXBsZXM7IGkrKykKLSAg ICAgICAgICAgIHZkLT5oaXN0b2dyYW1bcGNtW2ldICsgMHg4MDAwXSsrOwotICAgIH0KLQogICAg IHJldHVybiBmZl9maWx0ZXJfZnJhbWUoaW5saW5rLT5kc3QtPm91dHB1dHNbMF0sIHNhbXBsZXMp OwogfQogCi0jZGVmaW5lIE1BWF9EQiA5MQotCi1zdGF0aWMgaW5saW5lIGRvdWJsZSBsb2dkYih1 aW50NjRfdCB2KQorc3RhdGljIHZvaWQgcHJpbnRfc3RhdHMoQVZGaWx0ZXJDb250ZXh0ICpjdHgp CiB7Ci0gICAgZG91YmxlIGQgPSB2IC8gKGRvdWJsZSkoMHg4MDAwICogMHg4MDAwKTsKLSAgICBp ZiAoIXYpCi0gICAgICAgIHJldHVybiBNQVhfREI7Ci0gICAgcmV0dXJuIC1sb2cxMChkKSAqIDEw OworICAgIFZvbERldGVjdENvbnRleHQgKnZkID0gY3R4LT5wcml2OworCisgICAgaWYgKCF2ZC0+ bmJfc2FtcGxlcykKKyAgICAgICAgcmV0dXJuOworICAgIGlmICh2ZC0+aXNfZmxvYXQpIHsKKyAg ICAgICAgZG91YmxlIHJtczsKKyAgICAgICAgaW50IGksIHN1bSA9IDA7CisgICAgICAgIGF2X2xv ZyhjdHgsIEFWX0xPR19JTkZPLCAibl9zYW1wbGVzOiAlIiBQUklkNjQgIlxuIiwgdmQtPm5iX3Nh bXBsZXMpOworICAgICAgICBybXMgPSBzcXJ0KHZkLT5zdW0yIC8gdmQtPm5iX3NhbXBsZXMpOwor ICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfSU5GTywgIm1lYW5fdm9sdW1lOiAlLjFmIGRCXG4i LCBsb2dkYihybXMsIEFWX1NBTVBMRV9GTVRfRkxUKSk7CisgICAgICAgIGF2X2xvZyhjdHgsIEFW X0xPR19JTkZPLCAibWF4X3ZvbHVtZTogJS4xZiBkQlxuIiwgbG9nZGIodmQtPm1heCwgQVZfU0FN UExFX0ZNVF9GTFQpKTsKKyAgICAgICAgZm9yIChpID0gTUFYX0RCX0ZMVCAtIE5PSVNFX0ZMT09S X0RCX0ZMVDsgaSA+PSAwICYmICF2ZC0+aGlzdG9ncmFtW2ldOyBpLS0pOworICAgICAgICBmb3Ig KDsgaSA+PSAwICYmIHN1bSA8IHZkLT5uYl9zYW1wbGVzIC8gMTAwMDsgaS0tKSB7CisgICAgICAg ICAgICBpZiAoIXZkLT5oaXN0b2dyYW1baV0pCisgICAgICAgICAgICAgICAgY29udGludWU7Cisg ICAgICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfSU5GTywgImhpc3RvZ3JhbV8lZGRiOiAlIiBQ UklkNjQgIlxuIiwgTUFYX0RCX0ZMVCAtIGksIHZkLT5oaXN0b2dyYW1baV0pOworICAgICAgICAg ICAgc3VtICs9IHZkLT5oaXN0b2dyYW1baV07CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAg ICAgICBpbnQgaSwgbWF4X3ZvbHVtZSwgc2hpZnQ7CisgICAgICAgIHVpbnQ2NF90IG5iX3NhbXBs ZXMgPSAwLCBwb3dlciA9IDAsIG5iX3NhbXBsZXNfc2hpZnQgPSAwLCBzdW0gPSAwOworICAgICAg ICB1aW50NjRfdCBoaXN0ZGJbTUFYX0RCICsgMV0gPSB7MH07CisgICAgICAgIGZvciAoaSA9IDA7 IGkgPCAweDEwMDAwOyBpKyspCisgICAgICAgICAgICBuYl9zYW1wbGVzICs9IHZkLT5oaXN0b2dy YW1baV07CisgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19JTkZPLCAibl9zYW1wbGVzOiAlIiBQ UklkNjQgIlxuIiwgbmJfc2FtcGxlcyk7CisgICAgICAgIC8qCisgICAgICAgICAgICAqIElmIG5i X3NhbXBsZXMgPiAxPDwzNCwgdGhlcmUgaXMgYSByaXNrIG9mIG92ZXJmbG93IGluIHRoZQorICAg ICAgICAgICAgKiBtdWx0aXBsaWNhdGlvbiBvciB0aGUgc3VtOiBzaGlmdCBhbGwgaGlzdG9ncmFt IHZhbHVlcyB0byBhdm9pZCB0aGF0LgorICAgICAgICAgICAgKiBUaGUgdG90YWwgbnVtYmVyIG9m IHNhbXBsZXMgbXVzdCBiZSByZWNvbXB1dGVkIHRvIGF2b2lkIHJvdW5kaW5nCisgICAgICAgICAg ICAqIGVycm9ycy4KKyAgICAgICAgKi8KKyAgICAgICAgc2hpZnQgPSBhdl9sb2cyKG5iX3NhbXBs ZXMgPj4gMzMpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMHgxMDAwMDsgaSsrKSB7CisgICAg ICAgICAgICBuYl9zYW1wbGVzX3NoaWZ0ICs9IHZkLT5oaXN0b2dyYW1baV0gPj4gc2hpZnQ7Cisg ICAgICAgICAgICBwb3dlciArPSAoaSAtIDB4ODAwMCkgKiAoaSAtIDB4ODAwMCkgKiAodmQtPmhp c3RvZ3JhbVtpXSA+PiBzaGlmdCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFuYl9zYW1wbGVz X3NoaWZ0KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBwb3dlciA9IChwb3dlciArIG5i X3NhbXBsZXNfc2hpZnQgLyAyKSAvIG5iX3NhbXBsZXNfc2hpZnQ7CisgICAgICAgIGF2X2Fzc2Vy dDAocG93ZXIgPD0gMHg4MDAwICogMHg4MDAwKTsKKyAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9H X0lORk8sICJtZWFuX3ZvbHVtZTogJS4xZiBkQlxuIiwgLWxvZ2RiKChkb3VibGUpcG93ZXIsIEFW X1NBTVBMRV9GTVRfUzE2KSk7CisgICAgICAgIG1heF92b2x1bWUgPSAweDgwMDA7CisgICAgICAg IHdoaWxlIChtYXhfdm9sdW1lID4gMCAmJiAhdmQtPmhpc3RvZ3JhbVsweDgwMDAgKyBtYXhfdm9s dW1lXSAmJgorICAgICAgICAgICAgICAgICF2ZC0+aGlzdG9ncmFtWzB4ODAwMCAtIG1heF92b2x1 bWVdKQorICAgICAgICAgICAgbWF4X3ZvbHVtZS0tOworICAgICAgICBhdl9sb2coY3R4LCBBVl9M T0dfSU5GTywgIm1heF92b2x1bWU6ICUuMWYgZEJcbiIsIC1sb2dkYigoZG91YmxlKShtYXhfdm9s dW1lICogbWF4X3ZvbHVtZSksIEFWX1NBTVBMRV9GTVRfUzE2KSk7CisgICAgICAgIGZvciAoaSA9 IDA7IGkgPCAweDEwMDAwOyBpKyspCisgICAgICAgICAgICBoaXN0ZGJbKGludClsb2dkYigoZG91 YmxlKShpIC0gMHg4MDAwKSAqIChpIC0gMHg4MDAwKSwgQVZfU0FNUExFX0ZNVF9TMTYpXSArPSB2 ZC0+aGlzdG9ncmFtW2ldOworICAgICAgICBmb3IgKGkgPSAwOyBpIDw9IE1BWF9EQiAmJiAhaGlz dGRiW2ldOyBpKyspOworICAgICAgICBmb3IgKDsgaSA8PSBNQVhfREIgJiYgc3VtIDwgbmJfc2Ft cGxlcyAvIDEwMDA7IGkrKykgeworICAgICAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9HX0lORk8s ICJoaXN0b2dyYW1fJWRkYjogJSIgUFJJZDY0ICJcbiIsIGksIGhpc3RkYltpXSk7CisgICAgICAg ICAgICBzdW0gKz0gaGlzdGRiW2ldOworICAgICAgICB9CisgICAgfQogfQogCi1zdGF0aWMgdm9p ZCBwcmludF9zdGF0cyhBVkZpbHRlckNvbnRleHQgKmN0eCkKK3N0YXRpYyBpbnQgY29uZmlnX291 dHB1dChBVkZpbHRlckxpbmsgKm91dGxpbmspCiB7CisgICAgQVZGaWx0ZXJDb250ZXh0ICpjdHgg PSBvdXRsaW5rLT5zcmM7CiAgICAgVm9sRGV0ZWN0Q29udGV4dCAqdmQgPSBjdHgtPnByaXY7Ci0g ICAgaW50IGksIG1heF92b2x1bWUsIHNoaWZ0OwotICAgIHVpbnQ2NF90IG5iX3NhbXBsZXMgPSAw LCBwb3dlciA9IDAsIG5iX3NhbXBsZXNfc2hpZnQgPSAwLCBzdW0gPSAwOwotICAgIHVpbnQ2NF90 IGhpc3RkYltNQVhfREIgKyAxXSA9IHsgMCB9OwotCi0gICAgZm9yIChpID0gMDsgaSA8IDB4MTAw MDA7IGkrKykKLSAgICAgICAgbmJfc2FtcGxlcyArPSB2ZC0+aGlzdG9ncmFtW2ldOwotICAgIGF2 X2xvZyhjdHgsIEFWX0xPR19JTkZPLCAibl9zYW1wbGVzOiAlIlBSSWQ2NCJcbiIsIG5iX3NhbXBs ZXMpOwotICAgIGlmICghbmJfc2FtcGxlcykKLSAgICAgICAgcmV0dXJuOwogCi0gICAgLyogSWYg bmJfc2FtcGxlcyA+IDE8PDM0LCB0aGVyZSBpcyBhIHJpc2sgb2Ygb3ZlcmZsb3cgaW4gdGhlCi0g ICAgICAgbXVsdGlwbGljYXRpb24gb3IgdGhlIHN1bTogc2hpZnQgYWxsIGhpc3RvZ3JhbSB2YWx1 ZXMgdG8gYXZvaWQgdGhhdC4KLSAgICAgICBUaGUgdG90YWwgbnVtYmVyIG9mIHNhbXBsZXMgbXVz dCBiZSByZWNvbXB1dGVkIHRvIGF2b2lkIHJvdW5kaW5nCi0gICAgICAgZXJyb3JzLiAqLwotICAg IHNoaWZ0ID0gYXZfbG9nMihuYl9zYW1wbGVzID4+IDMzKTsKLSAgICBmb3IgKGkgPSAwOyBpIDwg MHgxMDAwMDsgaSsrKSB7Ci0gICAgICAgIG5iX3NhbXBsZXNfc2hpZnQgKz0gdmQtPmhpc3RvZ3Jh bVtpXSA+PiBzaGlmdDsKLSAgICAgICAgcG93ZXIgKz0gKGkgLSAweDgwMDApICogKGkgLSAweDgw MDApICogKHZkLT5oaXN0b2dyYW1baV0gPj4gc2hpZnQpOwotICAgIH0KLSAgICBpZiAoIW5iX3Nh bXBsZXNfc2hpZnQpCi0gICAgICAgIHJldHVybjsKLSAgICBwb3dlciA9IChwb3dlciArIG5iX3Nh bXBsZXNfc2hpZnQgLyAyKSAvIG5iX3NhbXBsZXNfc2hpZnQ7Ci0gICAgYXZfYXNzZXJ0MChwb3dl ciA8PSAweDgwMDAgKiAweDgwMDApOwotICAgIGF2X2xvZyhjdHgsIEFWX0xPR19JTkZPLCAibWVh bl92b2x1bWU6ICUuMWYgZEJcbiIsIC1sb2dkYihwb3dlcikpOwotCi0gICAgbWF4X3ZvbHVtZSA9 IDB4ODAwMDsKLSAgICB3aGlsZSAobWF4X3ZvbHVtZSA+IDAgJiYgIXZkLT5oaXN0b2dyYW1bMHg4 MDAwICsgbWF4X3ZvbHVtZV0gJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXZkLT5o aXN0b2dyYW1bMHg4MDAwIC0gbWF4X3ZvbHVtZV0pCi0gICAgICAgIG1heF92b2x1bWUtLTsKLSAg ICBhdl9sb2coY3R4LCBBVl9MT0dfSU5GTywgIm1heF92b2x1bWU6ICUuMWYgZEJcbiIsIC1sb2dk YihtYXhfdm9sdW1lICogbWF4X3ZvbHVtZSkpOwotCi0gICAgZm9yIChpID0gMDsgaSA8IDB4MTAw MDA7IGkrKykKLSAgICAgICAgaGlzdGRiWyhpbnQpbG9nZGIoKGkgLSAweDgwMDApICogKGkgLSAw eDgwMDApKV0gKz0gdmQtPmhpc3RvZ3JhbVtpXTsKLSAgICBmb3IgKGkgPSAwOyBpIDw9IE1BWF9E QiAmJiAhaGlzdGRiW2ldOyBpKyspOwotICAgIGZvciAoOyBpIDw9IE1BWF9EQiAmJiBzdW0gPCBu Yl9zYW1wbGVzIC8gMTAwMDsgaSsrKSB7Ci0gICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19JTkZP LCAiaGlzdG9ncmFtXyVkZGI6ICUiUFJJZDY0IlxuIiwgaSwgaGlzdGRiW2ldKTsKLSAgICAgICAg c3VtICs9IGhpc3RkYltpXTsKKyAgICB2ZC0+aXNfZmxvYXQgPSBvdXRsaW5rLT5mb3JtYXQgPT0g QVZfU0FNUExFX0ZNVF9GTFQgfHwKKyAgICAgICAgICAgICAgICAgICBvdXRsaW5rLT5mb3JtYXQg PT0gQVZfU0FNUExFX0ZNVF9GTFRQOworCisgICAgaWYgKCF2ZC0+aXNfZmxvYXQpIHsKKyAgICAg ICAgLyoKKyAgICAgICAgKiBOdW1iZXIgb2Ygc2FtcGxlcyBhdCBlYWNoIFBDTSB2YWx1ZS4KKyAg ICAgICAgKiBPbmx5IHVzZWQgZm9yIGludGVnZXIgZm9ybWF0cy4KKyAgICAgICAgKiBGb3IgMTYg Yml0IHNpZ25lZCBQQ00gdGhlcmUgYXJlIDY1NTM2LgorICAgICAgICAqIGhpc3RvZ3JhbVsweDgw MDAgKyBpXSBpcyB0aGUgbnVtYmVyIG9mIHNhbXBsZXMgYXQgdmFsdWUgaS4KKyAgICAgICAgKiBU aGUgZXh0cmEgZWxlbWVudCBpcyB0aGVyZSBmb3Igc3ltbWV0cnkuCisgICAgICAgICovCisgICAg ICAgIHZkLT5oaXN0b2dyYW0gPSBhdl9jYWxsb2MoSElTVE9HUkFNX1NJWkUgKyAxLCBzaXplb2Yo dWludDY0X3QpKTsKKyAgICAgICAgaWYgKCF2ZC0+aGlzdG9ncmFtKQorICAgICAgICAgICAgcmV0 dXJuIEFWRVJST1IoRU5PTUVNKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvKgorICAgICAgICAq IFRoZSBoaXN0b2dyYW0gaXMgdXNlZCB0byBzdG9yZSB0aGUgbnVtYmVyIG9mIHNhbXBsZXMgYXQg ZWFjaCBkQgorICAgICAgICAqIGluc3RlYWQgb2YgdGhlIG51bWJlciBvZiBzYW1wbGVzIGF0IGVh Y2ggUENNIHZhbHVlLgorICAgICAgICAqIFRoZSByYW5nZSBvZiBkQiBpcyBmcm9tIC03NTggdG8g NzcwLgorICAgICAgICAqLworICAgICAgICB2ZC0+aGlzdG9ncmFtID0gYXZfY2FsbG9jKE1BWF9E Ql9GTFQgLSBOT0lTRV9GTE9PUl9EQl9GTFQgKyAxLCBzaXplb2YodWludDY0X3QpKTsKKyAgICAg ICAgaWYgKCF2ZC0+aGlzdG9ncmFtKQorICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVN KTsKICAgICB9CisgICAgcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBhdl9jb2xkIHZvaWQgdW5pbml0 KEFWRmlsdGVyQ29udGV4dCAqY3R4KQogeworICAgIFZvbERldGVjdENvbnRleHQgKnZkID0gY3R4 LT5wcml2OwogICAgIHByaW50X3N0YXRzKGN0eCk7CisgICAgaWYgKHZkLT5oaXN0b2dyYW0pCisg ICAgICAgIGF2X2ZyZWVwKCZ2ZC0+aGlzdG9ncmFtKTsKIH0KIAogc3RhdGljIGNvbnN0IEFWRmls dGVyUGFkIHZvbHVtZWRldGVjdF9pbnB1dHNbXSA9IHsKQEAgLTEyMiw2ICsyMjEsMTQgQEAgc3Rh dGljIGNvbnN0IEFWRmlsdGVyUGFkIHZvbHVtZWRldGVjdF9pbnB1dHNbXSA9IHsKICAgICB9LAog fTsKIAorc3RhdGljIGNvbnN0IEFWRmlsdGVyUGFkIHZvbHVtZWRldGVjdF9vdXRwdXRzW10gPSB7 CisgICAgeworICAgICAgICAubmFtZSAgICAgICAgID0gImRlZmF1bHQiLAorICAgICAgICAudHlw ZSAgICAgICAgID0gQVZNRURJQV9UWVBFX0FVRElPLAorICAgICAgICAuY29uZmlnX3Byb3BzID0g Y29uZmlnX291dHB1dCwKKyAgICB9LAorfTsKKwogY29uc3QgQVZGaWx0ZXIgZmZfYWZfdm9sdW1l ZGV0ZWN0ID0gewogICAgIC5uYW1lICAgICAgICAgID0gInZvbHVtZWRldGVjdCIsCiAgICAgLmRl c2NyaXB0aW9uICAgPSBOVUxMX0lGX0NPTkZJR19TTUFMTCgiRGV0ZWN0IGF1ZGlvIHZvbHVtZS4i KSwKQEAgLTEyOSw2ICsyMzYsOSBAQCBjb25zdCBBVkZpbHRlciBmZl9hZl92b2x1bWVkZXRlY3Qg PSB7CiAgICAgLnVuaW5pdCAgICAgICAgPSB1bmluaXQsCiAgICAgLmZsYWdzICAgICAgICAgPSBB VkZJTFRFUl9GTEFHX01FVEFEQVRBX09OTFksCiAgICAgRklMVEVSX0lOUFVUUyh2b2x1bWVkZXRl Y3RfaW5wdXRzKSwKLSAgICBGSUxURVJfT1VUUFVUUyhmZl9hdWRpb19kZWZhdWx0X2ZpbHRlcnBh ZCksCi0gICAgRklMVEVSX1NBTVBMRUZNVFMoQVZfU0FNUExFX0ZNVF9TMTYsIEFWX1NBTVBMRV9G TVRfUzE2UCksCisgICAgRklMVEVSX09VVFBVVFModm9sdW1lZGV0ZWN0X291dHB1dHMpLAorICAg IEZJTFRFUl9TQU1QTEVGTVRTKEFWX1NBTVBMRV9GTVRfUzE2LAorICAgICAgICAgICAgICAgICAg ICAgIEFWX1NBTVBMRV9GTVRfUzE2UCwKKyAgICAgICAgICAgICAgICAgICAgICBBVl9TQU1QTEVf Rk1UX0ZMVCwKKyAgICAgICAgICAgICAgICAgICAgICBBVl9TQU1QTEVfRk1UX0ZMVFApLAogfTsK LS0gCjIuNDQuMAoKCj4gT24gTWFyIDIzLCAyMDI0LCBhdCA2OjIx4oCvUE0sIFBhdWwgQiBNYWhv bCA8b25lbWRhQGdtYWlsLmNvbT4gd3JvdGU6Cj4gCj4gT24gU2F0LCBNYXIgMjMsIDIwMjQgYXQg MzoyOOKAr1BNIFlpxJ9pdGhhbiBZacSfaXQgPHlpZ2l0aGFueWlnaXQzNUBnbWFpbC5jb20gPG1h aWx0bzp5aWdpdGhhbnlpZ2l0MzVAZ21haWwuY29tPj4KPiB3cm90ZToKPiAKPj4gSGksCj4+IAo+ PiBBY2NvcmRpbmcgdG8geW91ciBhZHZpY2VzLCBJIG1hZGUgc29tZSBjaGFuZ2VzIG9mIG1pbmUg bGFzdCBwYXRjaC4gSSBmZWVsCj4+IGxpa2UgdGhpcyBvbmUgd2F5IG1vcmUgYmV0dGVyLiBJIHJl bW92ZWQgdHJpdmlhbCBjYWxjdWxhdGlvbnMgYnV0IEkgd2FudCB0bwo+PiBzYXkgSSBhbSBub3Qg cHJvdWQgb2YgaG93IEkgaGFuZGxlZCBoaXN0b2dyYW0gaW4gZmxvYXQgZGVzcGl0ZSAxNiBiaXQK Pj4gaW50ZWdlciBoaXN0b2dyYW0uIEkgYW0gc3RvcmluZyBkQiB2YWx1ZXMgaW5zdGVhZCBvZiBz dG9yaW5nIHNhbXBsZXMuIEkKPj4gZmVlbCB0aGlzIG9uZSBpcyBtb3JlIGNvbnZlbmllbnQuIFN0 aWxsIEkgYW0gb3BlbiB0byBhZHZpY2VzLgo+PiAKPj4gCj4gSSBzZWUgbm8gcGF0Y2ggYXQgYWxs Lgo+IAo+IHZvbHVtZWRldGVjdCBkaXNwbGF5cyBoaXN0b2dyYW0gdHlwaWNhbGx5IHdpdGggMWRC IHN0ZXBzLCBzbyBidWlsZAo+IGhpc3RvZ3JhbSB3aXRoIDFkQiByYW5nZSBiZXR3ZWVuIGVhY2gg YmluLgo+IGZvciBmbG9hdCwgb25seSB1c2Ugbm9ybWFsIHZhbHVlcywgbm8gK2luZi9zdWJub3Jt YWxzL25hbnMgZXRjLgo+IEkgYmV0IHRoZXJlIGlzIGxlc3MgdGhhbiBjdXJyZW50IDJeMTYgZW50 cmllcyBpbiBoaXN0b2dyYW0gdGFibGUgb2YgZmlsdGVyCj4gY29udGV4dCB0byBmaWxsLgo+IFRo ZXJlIGlzIG5vIG5lZWQgdG8gY29udmVydCBlYWNoIGlucHV0IHNhbXBsZSB0byBkQiBzY2FsZS4g SnVzdCB0bwo+IGNhbGN1bGF0ZSByYW5nZXMgZm9yIGVhY2ggMWRCIGVudHJ5IGNhbGN1bGF0ZSBy YW5nZSBpbiBsaW5lYXIgc3BhY2UgYW5kCj4gZXZlcnkgc3VjaCBzYW1wbGUgdGhhdCBpcyBpbiBz dWNoIHJhbmdlIGdldCBhZGRlZCB0byBzdWNoIGhpc3RvZ3JhbSBiaW4KPiBlbnRyeS4KPiBPciBp ZiB5b3UgY2FsY3VsYXRlIGluIGRCIHNjYWxlIGFueXdheSB0aGFuIGp1c3Qgcm91bmQoY2VpbGYv Zmxvb3JmL2xyaW50ZikKPiBkQiB2YWx1ZSAocmVtb3ZpbmcgZnJhY3Rpb25hbCBwYXJ0cykgYW5k IGFkZCBpdCBpbnRvIGhpc3RvZ3JhbSB0YWJsZSwgZG8KPiBub3QgZm9yZ2V0IHRvIGNvdW50ID4r Ly0xLjAgdmFsdWVzIHRvby4gKG9uZXMgd2l0aCA+MGRCIHZhbHVlcyksIHlvdSBjYW4KPiB1c2Ug bm9ybWFsIG1lYW4vbWF4L3BlYWsgY2FsY3VsYXRpb25zIChkbyBub3QgdXNlIGhpc3RvZ3JhbSB0 byBjYWxjdWxhdGUKPiB0aGVtIGZvciBmbG9hdC9kb3VibGUpLgo+IAo+IAo+IAo+PiBUaGFuayB5 b3UuCj4+IFlpZ2l0aGFuCj4+IAo+PiAKPj4g77+8Cj4+IAo+Pj4gT24gTWFyIDIxLCAyMDI0LCBh dCAxMTozMOKAr1BNLCBQYXVsIEIgTWFob2wgPG9uZW1kYUBnbWFpbC5jb20gPG1haWx0bzpvbmVt ZGFAZ21haWwuY29tPj4gd3JvdGU6Cj4+PiAKPj4+IE9uIFdlZCwgTWFyIDIwLCAyMDI0IGF0IDEx OjU14oCvUE0gWWnEn2l0aGFuIFlpxJ9pdCA8Cj4+IHlpZ2l0aGFueWlnaXQzNUBnbWFpbC5jb20g PG1haWx0bzp5aWdpdGhhbnlpZ2l0MzVAZ21haWwuY29tPiA8bWFpbHRvOnlpZ2l0aGFueWlnaXQz NUBnbWFpbC5jb20+Pgo+Pj4gd3JvdGU6Cj4+PiAKPj4+PiAKPj4+Pj4gT24gTWFyIDIxLCAyMDI0 LCBhdCAxMjoxMOKAr0FNLCBQYXVsIEIgTWFob2wgPG9uZW1kYUBnbWFpbC5jb20gPG1haWx0bzpv bmVtZGFAZ21haWwuY29tPj4gd3JvdGU6Cj4+Pj4+IAo+Pj4+PiBXaHk/IFRoaXMgaXMgcG9pbnRs ZXNzLgo+Pj4+PiAKPj4+Pj4gdm9sdW1lZGV0ZWN0IGhhdmUgaGlzdG9ncmFtIG91dHB1dCwgZmxv YXQgcGF0Y2ggZG9lcyBub3QgaGF2ZSBpdCBhdAo+PiBhbGwuCj4+Pj4+IFVzZSBhc3RhdHMgZmls dGVyLgo+Pj4+PiAKPj4+Pj4gT24gV2VkLCBNYXIgMjAsIDIwMjQgYXQgOTo0N+KAr1BNIFlpxJ9p dGhhbiBZacSfaXQgPAo+Pj4+IHlpZ2l0aGFueWlnaXQzNUBnbWFpbC5jb20+Cj4+Pj4+IHdyb3Rl Ogo+Pj4+PiAKPj4+Pj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCj4+Pj4+PiBmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0Cj4+Pj4+PiBmZm1wZWctZGV2 ZWxAZmZtcGVnLm9yZwo+Pj4+Pj4gaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8v ZmZtcGVnLWRldmVsCj4+Pj4+PiAKPj4+Pj4+IFRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFi b3ZlLCBvciBlbWFpbAo+Pj4+Pj4gZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRo IHN1YmplY3QgInVuc3Vic2NyaWJlIi4KPj4+Pj4+IAo+Pj4+PiBfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+Pj4+PiBmZm1wZWctZGV2ZWwgbWFpbGluZyBs aXN0Cj4+Pj4+IGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCj4+Pj4+IGh0dHBzOi8vZmZtcGVnLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAo+Pj4+PiAKPj4+Pj4gVG8gdW5zdWJzY3Jp YmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCj4+Pj4+IGZmbXBlZy1kZXZlbC1yZXF1ZXN0 QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZeKAnS4KPj4+PiAKPj4+PiBJIGFt IGEgYmVnaW5uZXIvc3R1ZGVudCBhbHNvIG5ldyBhdCBvcGVuIHNvdXJjZSBidXQgSSBsb3ZlIEZG bXBlZyBhbmQKPj4+PiB1c2luZyBpbiBteSBkYWlseSBsaWZlLiBGcm9tIG15IHBlcnNwZWN0aXZl IHZvbHVtZWRldGVjdCB3YXkgbW9yZSB1c2VyCj4+Pj4gZnJpZW5kbHkuIEkgYmVsaWV2ZSBhZGRp bmcgdGhpcyBwYXRjaCB3b3VsZCBiZSB1c2VmdWwgdG8gcGVvcGxlIHN1Y2ggYXMKPj4+PiAjOTYx My4gVGhlIHJlYXNvbiBsYWNrIG9mIGhpc3RvZ3JhbSBvdXRwdXQgZm9yIGZsb2F0IG1vc3RseSBm b3IgbXkKPj4+PiBpbmRlY2lzaW9uIGFib3V0IHJhbmdlIG9mIHRoZSBoaXN0b2dyYW0uIEkgYW0g b3BlbiB0aGUgc3VnZ2VzdGlvbnMgYW5kCj4+Pj4gYWZ0ZXIgdGhhdCBJIGNhbiBtYWtlIGEgbmV3 IHBhdGNoLgo+Pj4+IAo+Pj4gCj4+PiBJdCBpcyB0cml2aWFsICh0byBzb21lIHBlb3BsZSkgdG8g YWRkIGhpc3RvZ3JhbSBwZXIgZEIgZm9yIGZsb2F0L2RvdWJsZQo+Pj4gaW5wdXRzLgo+Pj4gQnV0 IHRoaXMgcGF0Y2gganVzdCBkb2VzIHNvbWUgZXh0cmVtZWx5IHRyaXZpYWwgbWF0aCBjYWxjdWxh dGlvbnMgc28gdGhhdAo+Pj4gZmxvYXQgaW5wdXQgaGF2ZSBjb21wbGV0ZWx5IGRpZmZlcmVudCBv dXRwdXQgZnJvbSBpbnRlZ2VyIG9uZXMuCj4+PiBUaGF0IGlzIHZlcnkgb2RkIGFuZCB1bmZyaWVu ZGx5IGZyb20gbXkgcGVyc3BlY3RpdmUuCj4+PiAKPj4+IEJlc2lkZXMgaWYgeW91IG9ubHkgaW50 ZXJlc3RlZCBpbiBkaXNjcmV0ZSBzYW1wbGUgYXVkaW8gcGVhayBmaW5kZXIgaW4KPj4+IGF1ZGlv IGlucHV0IHVzZSBhc3RhdHMgYW5kIG1lYXN1cmVfb3ZlcmFsbD1QZWFrX2xldmVsIG9wdGlvbnMu Cj4+PiBZZXMgdGhleSBhcmUgbm90IGRlZmF1bHQgb24uIEJlY2F1c2UgbW9yZSBzdGF0aXN0aWNz IGFyZSBtb3JlIGltcG9ydGFudAo+Pj4gdGhhbiBzaW5nbGUgbnVtYmVyLgo+Pj4gCj4+PiBJJ20g bm90IGFnYWluc3QgYWRkaW5nIHByb3BlciBhbmQgdXNlZnVsIGFuZCBjb3JyZWN0IGZsb2F0L2Rv dWJsZSBzdXBwb3J0Cj4+PiB0byB2b2x1bWVkZXRlY3QsIGJ1dCBpdCBuZWVkcyB0byBoYXZlIHNh bWUvc2ltaWxhciBzdHJ1Y3R1cmUgb2Ygb3V0cHV0IGFzCj4+PiBpbnRlZ2VyIHNhbXBsZSBmb3Jt YXQgaW5wdXQgYXVkaW8sIG90aGVyd2lzZSBpdCBqdXN0IGxvb2tzIGxhenkgYW5kIHByb25lCj4+ PiBmb3IgdXNlcnMgd29uZGVyaW5nIHdoYXQgaXMgZ29pbmcgb24gd2hlbiB0aGV5IHVzZSBkaWZm ZXJlbnQgc2FtcGxlCj4+IGZvcm1hdHMKPj4+IGluIHRoZWlycyBncmFwaHMuCj4+PiAKPj4+IAo+ Pj4+IAo+Pj4+IEJlc3QgUmVnYXJkcwo+Pj4+IFlpZ2l0aGFuCj4+Pj4gCj4+Pj4gCj4+Pj4gX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4+PiBmZm1wZWct ZGV2ZWwgbWFpbGluZyBsaXN0Cj4+Pj4gZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcgPG1haWx0bzpm Zm1wZWctZGV2ZWxAZmZtcGVnLm9yZz4gPG1haWx0bzpmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZz4K Pj4+PiBodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKPj4+ PiAKPj4+PiBUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKPj4+PiBm Zm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIDxtYWlsdG86ZmZtcGVnLWRldmVsLXJlcXVl c3RAZmZtcGVnLm9yZz4gPG1haWx0bzpmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnPgo+ PiB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4KPj4+PiAKPj4+IF9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+PiBmZm1wZWctZGV2ZWwgbWFpbGluZyBs aXN0Cj4+PiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZyA8bWFpbHRvOmZmbXBlZy1kZXZlbEBmZm1w ZWcub3JnPiA8bWFpbHRvOmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnPgo+Pj4gaHR0cHM6Ly9mZm1w ZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCj4+PiAKPj4+IFRvIHVuc3Vic2Ny aWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbAo+Pj4gZmZtcGVnLWRldmVsLXJlcXVlc3RA ZmZtcGVnLm9yZyA8bWFpbHRvOmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmc+IDxtYWls dG86ZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZz4KPj4gd2l0aCBzdWJqZWN0ICJ1bnN1 YnNjcmliZSIuCj4+IAo+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwo+PiBmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0Cj4+IGZmbXBlZy1kZXZlbEBmZm1w ZWcub3JnCj4+IGh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZl bAo+PiAKPj4gVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCj4+IGZm bXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIu Cj4+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4g ZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdAo+IGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCj4gaHR0 cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCj4gCj4gVG8gdW5z dWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCj4gZmZtcGVnLWRldmVsLXJlcXVl c3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4KCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmZmbXBlZy1kZXZlbCBtYWlsaW5nIGxp c3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlz dGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3Ig ZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vi c2NyaWJlIi4K