Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vrzzI-00HCoS-1O for pgsql-hackers@arkaria.postgresql.org; Mon, 16 Feb 2026 14:54:12 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vrzyI-002rzi-0b for pgsql-hackers@arkaria.postgresql.org; Mon, 16 Feb 2026 14:53:10 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vrzyH-002rza-2E for pgsql-hackers@lists.postgresql.org; Mon, 16 Feb 2026 14:53:09 +0000 Received: from mail-wr1-x42f.google.com ([2a00:1450:4864:20::42f]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vrzyE-000000012AJ-05pE for pgsql-hackers@postgresql.org; Mon, 16 Feb 2026 14:53:09 +0000 Received: by mail-wr1-x42f.google.com with SMTP id ffacd0b85a97d-4362507f396so3171089f8f.0 for ; Mon, 16 Feb 2026 06:53:05 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1771253585; cv=none; d=google.com; s=arc-20240605; b=ASPKhFaVAlxEFkj4ESqQGJqaXLlaLJvq1NoSAAujpbqbTOtW+ipNmKdOPw+t5cVad9 CAKZV58FWThdw0+w5peE150zDXXQ8QLdzDOAxj9AY6IyzXhv2Lvt9qOli0YYIG0P4CHT DoGN2stsO7ulLDmTwzD/txHtl8sqJwsly6fEYHlX2Upx5GaCS77dZWorXnsZ7U4uEdOG kDR5K1oNcvgiy1enJGf1Xhw4Z+zXukdK8O3yx1QNPyrWL/nbf79zOWviyvdxY12Y+6vy umYCnCapMK342wceju+OPPkixIxJnVG+xzjUXTVfwN8zMDWunWRaQeYNGTAG9xRl5XmK X4gQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=AMYcf324GdADnGzqy/qqbOiJpg0v1eEOF1cMxbblmEs=; fh=Ljfbc5imjaFEiGkKc+90jFrGqmKNvrtTnC52wVFhJKk=; b=BdUQGBR6/ilexmrAHxFUJEWUStn+FbvsoF13Pgw+x9Vh3BxDUo8t2NIyHjRaQd0SZh hYIWOeM9SkWTWlFnibFsIoicN1UTAgk3gI3EJbGY1MaR8vk26vNta80dXjSQM1Fb8b0U iJzEr4gHkKoxcgyKwhuwP4n2FaBR0el+KsS//2GbdjSi3QNk3qm6lspFwI7PKxnKUN7V YOK2PDR0vyZKZfjnoKPruCu2tNSdnJ/Ko6q6I0bfXWEzDPo3laDER7ykZGF1t9NdXdnW NzF0K5uNpUgBfUmajiQegg//JfOgzmani2E2pHcpDXvotdQtKCbxSBb6d3VeIX1Ng1xK Cvgg==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1771253585; x=1771858385; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=AMYcf324GdADnGzqy/qqbOiJpg0v1eEOF1cMxbblmEs=; b=mhxNNnCRyEgVoNjw4xCn+D2RVZGCNHPQxekNT2JgfknPV2Sow+OstXEn0feDbWROwZ UGKc3zWqu2aiG2TkcliB/gmi9ZDbj/Y59iu+A+mvLu+CV/vtPhqxLfxmD3pkOUJ/k/JP kCTsrETYIBPP0uNxMnFHOK2Db66aqS9QHqFtTbPNq233w6RWFS1OuADOfusEvL/WwvO+ O5ZNoI28W+dgV+FD+1Zlkau80T862UgTQTUXu+NroGHUIOafhEdmb6RQvh7tghp6Cpae 92IPsIVTiMlaKUQ+zFff81zeDv6lrrUZlTor5GyhsbW8wWHgMgOH2Ty4sRExSLlUAmBq zGVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771253585; x=1771858385; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=AMYcf324GdADnGzqy/qqbOiJpg0v1eEOF1cMxbblmEs=; b=DvdGAuZFGsyl2jzErHuCZTwbEuW4zzFiOqtayDQ2ZpBWR8qdQ328AL37i//TxnCp8/ WQXo/rFtGg/k8y64dzyUfh5dMDTIErALDc+khzcwFJZTph6spuI8Y3YQ/PQJjDT3jgN+ ztmAUTHNHH9kToRW+xK7KY/wsfbzZ7SLVvQS88jB+mmZC6uspFxr3kcy92Lt2p+WhiJW dZ2hwzLU4zs6FNyQFDrJVK/hJ46PqpgNDIah2xpDQmbc6W9tEqOkysSvTPGX069xQQx9 RZyEqGyGOzCzkijNOViCNw388JDnJ1Z56MjbJ7eJMXBBuwGoXEglqbY0P/3wGQ6l97q6 YCng== X-Gm-Message-State: AOJu0YwAnIT5KzQnbgH0fQfq1T59GIMAZYrRNXY3ih0avFR878eTUIGC sbygq9AI24mey3mR+xez6TZbEim0Ovm4w3SdmPUUXwCGewfUuSSK9Lb/pjhvR7x1Da9xxSP25w9 /ySDf6SHW/emYHv5qYZ+4gZN84+wqWyo= X-Gm-Gg: AZuq6aKPano357Vm7HX9J3HSgZrKKedobx69GC5chiWw43n0VIB6bU4ulGZtSbfKc8/ 5ZwKOxMm63265TKbJeww4YuW4J5aOHNHgh1njBs+li2NKmLKSNJSn2y6k7O72CWlDW93Pakgdcf sCmbc95m/s5nxICQPm5zwru7Im0yNN3Q4NEiUJS5vwdUdJgI+kjpHunP5w7Qq4ai0cRCBTpT6xk d0NxV/yuTqpDJwxFeXOpETEjw1O5SZ3F+ZW0LgnhTuI1VW77wRF4Rs24ii8PiRLHAscb7KtSdCM 0RnNpuU2vtViMcMWrhX43z3auK4+wezK82VIO7XXyvHOGuT1UVVI X-Received: by 2002:a05:6000:238a:b0:436:216:98d8 with SMTP id ffacd0b85a97d-437978c1a33mr20739659f8f.12.1771253584700; Mon, 16 Feb 2026 06:53:04 -0800 (PST) MIME-Version: 1.0 References: <5a37c2e3-619d-4816-84d7-0b27e3e6797f@iki.fi> In-Reply-To: <5a37c2e3-619d-4816-84d7-0b27e3e6797f@iki.fi> From: Ashutosh Bapat Date: Mon, 16 Feb 2026 20:22:51 +0530 X-Gm-Features: AaiRm5137pd5q47eGo_DETp1H3JpRlxkgG-p4RNDxNQU7zcqbVeivEoKSIkVTKI Message-ID: Subject: Re: Better shared data structure management and resizable shared data structures To: Heikki Linnakangas Cc: pgsql-hackers , Andres Freund , chaturvedipalak1911@gmail.com Content-Type: multipart/mixed; boundary="000000000000b94ae4064af21c1c" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000b94ae4064af21c1c Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Feb 13, 2026 at 5:33=E2=80=AFPM Heikki Linnakangas wrote: > > On 13/02/2026 13:47, Ashutosh Bapat wrote: > > `man madvise` has this > > MADV_REMOVE (since Linux 2.6.16) > > Free up a given range of pages and its associated > > backing store. This is equivalent to punching a > > hole in the corresponding byte range of the backing > > store (see fallocate(2)). Subsequent accesses > > in the specified address range will see bytes containing= zero. > > > > The specified address range must be mapped shared > > and writable. This flag cannot be applied to > > locked pages, Huge TLB pages, or VM_PFNMAP pages. > > > > In the initial implementation, only tmpfs(5) was > > supported MADV_REMOVE; but since Linux 3.5, any > > filesystem which supports the fallocate(2) > > FALLOC_FL_PUNCH_HOLE mode also supports MADV_REMOVE. > > Hugetlbfs fails with the error EINVAL and other > > filesystems fail with the error EOPNOTSUPP. > > > > It says the flag can not be applied to Huge TLB pages. We won't be > > able to make resizable shared memory structures allocated with huge > > pages. That seems like a serious restriction. > > Per https://man7.org/linux/man-pages/man2/madvise.2.html: > > MADV_REMOVE (since Linux 2.6.16) > ... > > Support for the Huge TLB filesystem was added in Linux > v4.3. > > > I may be misunderstanding something, but it seems like this is useful > > to free already allocated memory, not necessarily allocate more > > memory. I don't understand how a user would start with a larger > > reserved address space with only small portions of that space being > > backed by memory. > > Hmm, I guess you'll need to use MAP_NORESERVE in the first mmap() call. > to reserve address space for the maximum size, and then > madvise(MADV_POPULATE_WRITE) using the initial size. Later, > madvise(MADV_REMOVE) to shrink, and madvise(MADV_POPULATE_WRITE) to grow > again. Thank you for the hint. Also thanks to Andres's idea, the resizable structure patch is quite small now. Actually, after experimenting with madvise, memfd_create and ftruncate(), I see that MADV_POPULATE_WRITE is not required at all. We don't have to do anything to expand a structure. Memory will be allocated as and when the program writes to it. I also discovered things that I didn't know about. 1. ftruncate() sets the size of the file but it doesn't allocate the memory pages. 2. to use madvise() the address needs to be backed by a file, so memfd_create is a must. 3. We can't write to a file backed memory at a location beyond the size of the file. Hence we have to set the size of the file to the maximum size at the beginning. 4. the address and length passed to madvise needs to be page aligned, but that passed to fallocate() needn't be. `man fallocate` says "Specifying the FALLOC_FL_PUNCH_HOLE flag (available since Linux 2.6.38) in mode deallocates space (i.e., creates a hole) in the byte range starting at offset and continuing for len bytes. Within the specified range, partial filesystem blocks are zeroed, and whole filesystem blocks are removed from the file.". It seems to be automatically taking care of the page size. So using fallocate() simplifies logic. Further `man madvise` says "but since Linux 3.5, any filesystem which supports the fallocate(2) FALLOC_FL_PUNCH_HOLE mode also supports MADV_REMOVE." fallocate with FALLOC_FL_PUNCH_HOLE is guaranteed to be available on a system which supports MADV_REMOVE. Using fallocate() (or madvise()) to free memory, we don't need multiple segments. So much less code churn compared to the multiple mappings approach. However, there is one drawback. In the multiple mapping approach access beyond the current size of the structure would result in segfault or bus error. But in the fallocate/madvise approach such an access does not cause a crash. A write beyond the pages that fit the current size of the structure causes more memory to be allocated silently. A read returns 0s. So, there's a possibility that bugs in size calculations might go unnoticed. I think that's how it works even today, access in the yet un-allocated part of the shared memory will simply go unnoticed. PFA the patches with 0003 implementing resizable structures using fallocate(). There are TODOs, and also I need to make sure that resizable structures are disabled where memfd_create(), fallocate() and anonymous memory mappings are not available. Also the test is unstable since it prints the memory consumption numbers obtained from /proc/self/status. But it demonstrates that allocation and freeing of shared memory as the shared structures undergo resizing. I don't think there is a stable way to use the numbers though; so we might have to remove those ultimately. --=20 Best Wishes, Ashutosh Bapat --000000000000b94ae4064af21c1c Content-Type: text/x-patch; charset="US-ASCII"; name="0001-wip-Introduce-a-new-way-of-registering-shar-20260216.patch" Content-Disposition: attachment; filename="0001-wip-Introduce-a-new-way-of-registering-shar-20260216.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlpams3x0 RnJvbSA0OTY3NmM1YmEwODhkMTMyMzZmMmMxYzY2ODAwZDdlN2IxYWJiZTVmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5uYWthbmdh c0Bpa2kuZmk+CkRhdGU6IE1vbiwgOSBGZWIgMjAyNiAyMjoyODoyMyArMDIwMApTdWJqZWN0OiBb UEFUQ0ggMS8zXSB3aXA6IEludHJvZHVjZSBhIG5ldyB3YXkgb2YgcmVnaXN0ZXJpbmcgc2hhcmVk IG1lbW9yeQogc3RydWN0cwoKLS0tCiAuLi4vcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3Rh dGVtZW50cy5jICAgfCAxMTIgKysrKy0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS92 YXJzdXAuYyAgICAgICAgICAgfCAgMzIgKy0tCiBzcmMvYmFja2VuZC9ib290c3RyYXAvYm9vdHN0 cmFwLmMgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9sYXVuY2hf YmFja2VuZC5jICAgICAgIHwgIDExICstCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0 ZXIuYyAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvZHNtLmMgICAg ICAgICAgICAgICAgIHwgIDQ2ICsrLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2RzbV9yZWdp c3RyeS5jICAgICAgICB8ICAzNCArKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYyAg ICAgICAgICAgICAgICB8ICA1MSArKy0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wbXNpZ25h bC5jICAgICAgICAgICAgfCAgNTMgKystLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2Fy cmF5LmMgICAgICAgICAgIHwgMTI3ICsrKysrLS0tLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L3Byb2NzaWduYWwuYyAgICAgICAgICB8ICA2MyArKystLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvc2htZW0uYyAgICAgICAgICAgICAgIHwgMjMzICsrKysrKysrKysrKysrKysrLQogc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvc2ludmFsYWR0LmMgICAgICAgICAgIHwgIDM5ICstLQogc3JjL2Jh Y2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYyAgICAgICAgICAgICAgIHwgMTU2ICsrKysrKy0tLS0t LQogc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jICAgICAgICAgICAgICAgICAgIHwgICAyICsK IHNyYy9pbmNsdWRlL2FjY2Vzcy90cmFuc2FtLmggICAgICAgICAgICAgICAgICB8ICAxMiArLQog c3JjL2luY2x1ZGUvc3RvcmFnZS9kc21fcmVnaXN0cnkuaCAgICAgICAgICAgIHwgICAzICstCiBz cmMvaW5jbHVkZS9zdG9yYWdlL2lwYy5oICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3Jj L2luY2x1ZGUvc3RvcmFnZS9wbXNpZ25hbC5oICAgICAgICAgICAgICAgIHwgICAzICstCiBzcmMv aW5jbHVkZS9zdG9yYWdlL3Byb2MuaCAgICAgICAgICAgICAgICAgICAgfCAgIDUgKy0KIHNyYy9p bmNsdWRlL3N0b3JhZ2UvcHJvY2FycmF5LmggICAgICAgICAgICAgICB8ICAgMyArLQogc3JjL2lu Y2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmggICAgICAgICAgICAgIHwgICAzICstCiBzcmMvaW5j bHVkZS9zdG9yYWdlL3NobWVtLmggICAgICAgICAgICAgICAgICAgfCAgNTcgKysrKysKIHNyYy9p bmNsdWRlL3N0b3JhZ2Uvc2ludmFsYWR0LmggICAgICAgICAgICAgICB8ICAgMyArLQogMjQgZmls ZXMgY2hhbmdlZCwgNjY1IGluc2VydGlvbnMoKyksIDM4OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYyBiL2Nv bnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCmluZGV4IDRhNDI3 NTMzYmQ4Li43MWRlYmM4YjQ3ZiAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVu dHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMKKysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMv cGdfc3RhdF9zdGF0ZW1lbnRzLmMKQEAgLTI1OCw2ICsyNTgsMjUgQEAgdHlwZWRlZiBzdHJ1Y3Qg cGdzc1NoYXJlZFN0YXRlCiAJcGdzc0dsb2JhbFN0YXRzIHN0YXRzOwkJLyogZ2xvYmFsIHN0YXRp c3RpY3MgZm9yIHBnc3MgKi8KIH0gcGdzc1NoYXJlZFN0YXRlOwogCitzdGF0aWMgdm9pZCBwZ3Nz X3NobWVtX2luaXQodm9pZCAqYXJnKTsKKworc3RhdGljIFNobWVtU3RydWN0RGVzYyBwZ3NzU2hh cmVkU3RhdGVTaG1lbURlc2MgPSB7CisJLm5hbWUgPSAicGdfc3RhdF9zdGF0ZW1lbnRzIiwKKwku c2l6ZSA9IHNpemVvZihwZ3NzU2hhcmVkU3RhdGUpLAorCS5pbml0X2ZuID0gcGdzc19zaG1lbV9p bml0LAorfTsKKworc3RhdGljIFNobWVtSGFzaERlc2MgcGdzc1NoYXJlZEhhc2hEZXNjID0gewor CS5uYW1lID0gInBnX3N0YXRfc3RhdGVtZW50cyBoYXNoIiwKKwkuaW5pdF9zaXplID0gMCwJCS8q IHNldCBmcm9tICdwZ3NzX21heCcgKi8KKwkubWF4X3NpemUgPSAwLAkJLyogc2V0IGZyb20gJ3Bn c3NfbWF4JyAqLworfTsKKworLyogTGlua3MgdG8gc2hhcmVkIG1lbW9yeSBzdGF0ZSAqLworI2Rl ZmluZSBwZ3NzICgocGdzc1NoYXJlZFN0YXRlICopIHBnc3NTaGFyZWRTdGF0ZVNobWVtRGVzYy5w dHIpCisjZGVmaW5lIHBnc3NfaGFzaCAocGdzc1NoYXJlZEhhc2hEZXNjLnB0cikKKworCiAvKi0t LS0gTG9jYWwgdmFyaWFibGVzIC0tLS0qLwogCiAvKiBDdXJyZW50IG5lc3RpbmcgZGVwdGggb2Yg cGxhbm5lci9FeGVjdXRvclJ1bi9Qcm9jZXNzVXRpbGl0eSBjYWxscyAqLwpAQCAtMjc0LDEwICsy OTMsNiBAQCBzdGF0aWMgRXhlY3V0b3JGaW5pc2hfaG9va190eXBlIHByZXZfRXhlY3V0b3JGaW5p c2ggPSBOVUxMOwogc3RhdGljIEV4ZWN1dG9yRW5kX2hvb2tfdHlwZSBwcmV2X0V4ZWN1dG9yRW5k ID0gTlVMTDsKIHN0YXRpYyBQcm9jZXNzVXRpbGl0eV9ob29rX3R5cGUgcHJldl9Qcm9jZXNzVXRp bGl0eSA9IE5VTEw7CiAKLS8qIExpbmtzIHRvIHNoYXJlZCBtZW1vcnkgc3RhdGUgKi8KLXN0YXRp YyBwZ3NzU2hhcmVkU3RhdGUgKnBnc3MgPSBOVUxMOwotc3RhdGljIEhUQUIgKnBnc3NfaGFzaCA9 IE5VTEw7Ci0KIC8qLS0tLSBHVUMgdmFyaWFibGVzIC0tLS0qLwogCiB0eXBlZGVmIGVudW0KQEAg LTM2NSw3ICszODAsNiBAQCBzdGF0aWMgdm9pZCBwZ3NzX3N0b3JlKGNvbnN0IGNoYXIgKnF1ZXJ5 LCBpbnQ2NCBxdWVyeUlkLAogc3RhdGljIHZvaWQgcGdfc3RhdF9zdGF0ZW1lbnRzX2ludGVybmFs KEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLAogCQkJCQkJCQkJCXBnc3NWZXJzaW9uIGFwaV92ZXJz aW9uLAogCQkJCQkJCQkJCWJvb2wgc2hvd3RleHQpOwotc3RhdGljIFNpemUgcGdzc19tZW1zaXpl KHZvaWQpOwogc3RhdGljIHBnc3NFbnRyeSAqZW50cnlfYWxsb2MocGdzc0hhc2hLZXkgKmtleSwg U2l6ZSBxdWVyeV9vZmZzZXQsIGludCBxdWVyeV9sZW4sCiAJCQkJCQkJICBpbnQgZW5jb2Rpbmcs IGJvb2wgc3RpY2t5KTsKIHN0YXRpYyB2b2lkIGVudHJ5X2RlYWxsb2Modm9pZCk7CkBAIC01MDAs MTEgKzUxNCwzOSBAQCBfUEdfaW5pdCh2b2lkKQogc3RhdGljIHZvaWQKIHBnc3Nfc2htZW1fcmVx dWVzdCh2b2lkKQogeworCUhBU0hDVEwJCWluZm87CisKIAlpZiAocHJldl9zaG1lbV9yZXF1ZXN0 X2hvb2spCiAJCXByZXZfc2htZW1fcmVxdWVzdF9ob29rKCk7CiAKLQlSZXF1ZXN0QWRkaW5TaG1l bVNwYWNlKHBnc3NfbWVtc2l6ZSgpKTsKIAlSZXF1ZXN0TmFtZWRMV0xvY2tUcmFuY2hlKCJwZ19z dGF0X3N0YXRlbWVudHMiLCAxKTsKKworCS8qCisJICogUmVnaXN0ZXIgb3VyIHNoYXJlZCBtZW1v cnkgc3RhdGUsIGluY2x1ZGluZyBoYXNoIHRhYmxlCisJICovCisJU2htZW1SZWdpc3RlclN0cnVj dCgmcGdzc1NoYXJlZFN0YXRlU2htZW1EZXNjKTsKKworCWluZm8ua2V5c2l6ZSA9IHNpemVvZihw Z3NzSGFzaEtleSk7CisJaW5mby5lbnRyeXNpemUgPSBzaXplb2YocGdzc0VudHJ5KTsKKwlwZ3Nz U2hhcmVkSGFzaERlc2MuaW5pdF9zaXplID0gcGdzc19tYXg7CisJcGdzc1NoYXJlZEhhc2hEZXNj Lm1heF9zaXplID0gcGdzc19tYXg7CisJU2htZW1SZWdpc3Rlckhhc2goJnBnc3NTaGFyZWRIYXNo RGVzYywKKwkJCQkJICAmaW5mbywKKwkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKK30K Kworc3RhdGljIHZvaWQKK3Bnc3Nfc2htZW1faW5pdCh2b2lkICphcmcpCit7CisJcGdzcy0+bG9j ayA9ICYoR2V0TmFtZWRMV0xvY2tUcmFuY2hlKCJwZ19zdGF0X3N0YXRlbWVudHMiKSktPmxvY2s7 CisJcGdzcy0+Y3VyX21lZGlhbl91c2FnZSA9IEFTU1VNRURfTUVESUFOX0lOSVQ7CisJcGdzcy0+ bWVhbl9xdWVyeV9sZW4gPSBBU1NVTUVEX0xFTkdUSF9JTklUOworCVNwaW5Mb2NrSW5pdCgmcGdz cy0+bXV0ZXgpOworCXBnc3MtPmV4dGVudCA9IDA7CisJcGdzcy0+bl93cml0ZXJzID0gMDsKKwlw Z3NzLT5nY19jb3VudCA9IDA7CisJcGdzcy0+c3RhdHMuZGVhbGxvYyA9IDA7CisJcGdzcy0+c3Rh dHMuc3RhdHNfcmVzZXQgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CiB9CiAKIC8qCkBAIC01MTYs OCArNTU4LDYgQEAgcGdzc19zaG1lbV9yZXF1ZXN0KHZvaWQpCiBzdGF0aWMgdm9pZAogcGdzc19z aG1lbV9zdGFydHVwKHZvaWQpCiB7Ci0JYm9vbAkJZm91bmQ7Ci0JSEFTSENUTAkJaW5mbzsKIAlG SUxFCSAgICpmaWxlID0gTlVMTDsKIAlGSUxFCSAgICpxZmlsZSA9IE5VTEw7CiAJdWludDMyCQlo ZWFkZXI7CkBAIC01MzAsNDIgKzU3MCw2IEBAIHBnc3Nfc2htZW1fc3RhcnR1cCh2b2lkKQogCWlm IChwcmV2X3NobWVtX3N0YXJ0dXBfaG9vaykKIAkJcHJldl9zaG1lbV9zdGFydHVwX2hvb2soKTsK IAotCS8qIHJlc2V0IGluIGNhc2UgdGhpcyBpcyBhIHJlc3RhcnQgd2l0aGluIHRoZSBwb3N0bWFz dGVyICovCi0JcGdzcyA9IE5VTEw7Ci0JcGdzc19oYXNoID0gTlVMTDsKLQotCS8qCi0JICogQ3Jl YXRlIG9yIGF0dGFjaCB0byB0aGUgc2hhcmVkIG1lbW9yeSBzdGF0ZSwgaW5jbHVkaW5nIGhhc2gg dGFibGUKLQkgKi8KLQlMV0xvY2tBY3F1aXJlKEFkZGluU2htZW1Jbml0TG9jaywgTFdfRVhDTFVT SVZFKTsKLQotCXBnc3MgPSBTaG1lbUluaXRTdHJ1Y3QoInBnX3N0YXRfc3RhdGVtZW50cyIsCi0J CQkJCQkgICBzaXplb2YocGdzc1NoYXJlZFN0YXRlKSwKLQkJCQkJCSAgICZmb3VuZCk7Ci0KLQlp ZiAoIWZvdW5kKQotCXsKLQkJLyogRmlyc3QgdGltZSB0aHJvdWdoIC4uLiAqLwotCQlwZ3NzLT5s b2NrID0gJihHZXROYW1lZExXTG9ja1RyYW5jaGUoInBnX3N0YXRfc3RhdGVtZW50cyIpKS0+bG9j azsKLQkJcGdzcy0+Y3VyX21lZGlhbl91c2FnZSA9IEFTU1VNRURfTUVESUFOX0lOSVQ7Ci0JCXBn c3MtPm1lYW5fcXVlcnlfbGVuID0gQVNTVU1FRF9MRU5HVEhfSU5JVDsKLQkJU3BpbkxvY2tJbml0 KCZwZ3NzLT5tdXRleCk7Ci0JCXBnc3MtPmV4dGVudCA9IDA7Ci0JCXBnc3MtPm5fd3JpdGVycyA9 IDA7Ci0JCXBnc3MtPmdjX2NvdW50ID0gMDsKLQkJcGdzcy0+c3RhdHMuZGVhbGxvYyA9IDA7Ci0J CXBnc3MtPnN0YXRzLnN0YXRzX3Jlc2V0ID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOwotCX0KLQot CWluZm8ua2V5c2l6ZSA9IHNpemVvZihwZ3NzSGFzaEtleSk7Ci0JaW5mby5lbnRyeXNpemUgPSBz aXplb2YocGdzc0VudHJ5KTsKLQlwZ3NzX2hhc2ggPSBTaG1lbUluaXRIYXNoKCJwZ19zdGF0X3N0 YXRlbWVudHMgaGFzaCIsCi0JCQkJCQkJICBwZ3NzX21heCwgcGdzc19tYXgsCi0JCQkJCQkJICAm aW5mbywKLQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOwotCi0JTFdMb2NrUmVsZWFz ZShBZGRpblNobWVtSW5pdExvY2spOwotCiAJLyoKIAkgKiBJZiB3ZSdyZSBpbiB0aGUgcG9zdG1h c3RlciAob3IgYSBzdGFuZGFsb25lIGJhY2tlbmQuLi4pLCBzZXQgdXAgYSBzaG1lbQogCSAqIGV4 aXQgaG9vayB0byBkdW1wIHRoZSBzdGF0aXN0aWNzIHRvIGRpc2suCkBAIC01NzMsMTIgKzU3Nyw2 IEBAIHBnc3Nfc2htZW1fc3RhcnR1cCh2b2lkKQogCWlmICghSXNVbmRlclBvc3RtYXN0ZXIpCiAJ CW9uX3NobWVtX2V4aXQocGdzc19zaG1lbV9zaHV0ZG93biwgKERhdHVtKSAwKTsKIAotCS8qCi0J ICogRG9uZSBpZiBzb21lIG90aGVyIHByb2Nlc3MgYWxyZWFkeSBjb21wbGV0ZWQgb3VyIGluaXRp YWxpemF0aW9uLgotCSAqLwotCWlmIChmb3VuZCkKLQkJcmV0dXJuOwotCiAJLyoKIAkgKiBOb3Rl OiB3ZSBkb24ndCBib3RoZXIgd2l0aCBsb2NrcyBoZXJlLCBiZWNhdXNlIHRoZXJlIHNob3VsZCBi ZSBubyBvdGhlcgogCSAqIHByb2Nlc3NlcyBydW5uaW5nIHdoZW4gdGhpcyBjb2RlIGlzIHJlYWNo ZWQuCkBAIC0yMDgyLDIwICsyMDgwLDYgQEAgcGdfc3RhdF9zdGF0ZW1lbnRzX2luZm8oUEdfRlVO Q1RJT05fQVJHUykKIAlQR19SRVRVUk5fREFUVU0oSGVhcFR1cGxlR2V0RGF0dW0oaGVhcF9mb3Jt X3R1cGxlKHR1cGRlc2MsIHZhbHVlcywgbnVsbHMpKSk7CiB9CiAKLS8qCi0gKiBFc3RpbWF0ZSBz aGFyZWQgbWVtb3J5IHNwYWNlIG5lZWRlZC4KLSAqLwotc3RhdGljIFNpemUKLXBnc3NfbWVtc2l6 ZSh2b2lkKQotewotCVNpemUJCXNpemU7Ci0KLQlzaXplID0gTUFYQUxJR04oc2l6ZW9mKHBnc3NT aGFyZWRTdGF0ZSkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBoYXNoX2VzdGltYXRlX3NpemUo cGdzc19tYXgsIHNpemVvZihwZ3NzRW50cnkpKSk7Ci0KLQlyZXR1cm4gc2l6ZTsKLX0KLQogLyoK ICAqIEFsbG9jYXRlIGEgbmV3IGhhc2h0YWJsZSBlbnRyeS4KICAqIGNhbGxlciBtdXN0IGhvbGQg YW4gZXhjbHVzaXZlIGxvY2sgb24gcGdzcy0+bG9jawpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0vdmFyc3VwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS92YXJz dXAuYwppbmRleCAzZTk1ZDRjZmQxNi4uMTFhZDkwZTczNzIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3ZhcnN1cC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL3ZhcnN1cC5jCkBAIC0zMCwzNSArMzAsMjcgQEAKIC8qIE51bWJlciBvZiBPSURzIHRvIHBy ZWZldGNoIChwcmVhbGxvY2F0ZSkgcGVyIFhMT0cgd3JpdGUgKi8KICNkZWZpbmUgVkFSX09JRF9Q UkVGRVRDSAkJODE5MgogCi0vKiBwb2ludGVyIHRvIHZhcmlhYmxlcyBzdHJ1Y3QgaW4gc2hhcmVk IG1lbW9yeSAqLwotVHJhbnNhbVZhcmlhYmxlc0RhdGEgKlRyYW5zYW1WYXJpYWJsZXMgPSBOVUxM Oworc3RhdGljIHZvaWQgVmFyc3VwU2htZW1Jbml0KHZvaWQgKmFyZyk7CiAKK1NobWVtU3RydWN0 RGVzYyBUcmFuc2FtVmFyaWFibGVzU2htZW1EZXNjID0geworCS5uYW1lID0gIlRyYW5zYW1WYXJp YWJsZXMiLAorCS5zaXplID0gc2l6ZW9mKFRyYW5zYW1WYXJpYWJsZXNEYXRhKSwKKwkuaW5pdF9m biA9IFZhcnN1cFNobWVtSW5pdCwKK307CiAKIC8qCiAgKiBJbml0aWFsaXphdGlvbiBvZiBzaGFy ZWQgbWVtb3J5IGZvciBUcmFuc2FtVmFyaWFibGVzLgogICovCi1TaXplCi1WYXJzdXBTaG1lbVNp emUodm9pZCkKK3ZvaWQKK1ZhcnN1cFNobWVtUmVnaXN0ZXIodm9pZCkKIHsKLQlyZXR1cm4gc2l6 ZW9mKFRyYW5zYW1WYXJpYWJsZXNEYXRhKTsKKwlTaG1lbVJlZ2lzdGVyU3RydWN0KCZUcmFuc2Ft VmFyaWFibGVzU2htZW1EZXNjKTsKIH0KIAotdm9pZAotVmFyc3VwU2htZW1Jbml0KHZvaWQpCitz dGF0aWMgdm9pZAorVmFyc3VwU2htZW1Jbml0KHZvaWQgKmFyZykKIHsKLQlib29sCQlmb3VuZDsK LQotCS8qIEluaXRpYWxpemUgb3VyIHNoYXJlZCBzdGF0ZSBzdHJ1Y3QgKi8KLQlUcmFuc2FtVmFy aWFibGVzID0gU2htZW1Jbml0U3RydWN0KCJUcmFuc2FtVmFyaWFibGVzIiwKLQkJCQkJCQkJCSAg IHNpemVvZihUcmFuc2FtVmFyaWFibGVzRGF0YSksCi0JCQkJCQkJCQkgICAmZm91bmQpOwotCWlm ICghSXNVbmRlclBvc3RtYXN0ZXIpCi0JewotCQlBc3NlcnQoIWZvdW5kKTsKLQkJbWVtc2V0KFRy YW5zYW1WYXJpYWJsZXMsIDAsIHNpemVvZihUcmFuc2FtVmFyaWFibGVzRGF0YSkpOwotCX0KLQll bHNlCi0JCUFzc2VydChmb3VuZCk7CisJbWVtc2V0KFRyYW5zYW1WYXJpYWJsZXMsIDAsIHNpemVv ZihUcmFuc2FtVmFyaWFibGVzRGF0YSkpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYm9vdHN0cmFwL2Jvb3RzdHJhcC5jIGIvc3JjL2JhY2tlbmQvYm9vdHN0cmFwL2Jvb3RzdHJh cC5jCmluZGV4IDdkMzJjZDBlMTU5Li4wZGVkNzAxOGU4NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYm9vdHN0cmFwL2Jvb3RzdHJhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290 c3RyYXAuYwpAQCAtMzM3LDYgKzMzNyw4IEBAIEJvb3RzdHJhcE1vZGVNYWluKGludCBhcmdjLCBj aGFyICphcmd2W10sIGJvb2wgY2hlY2tfb25seSkKIAogCUluaXRpYWxpemVGYXN0UGF0aExvY2tz KCk7CiAKKwlSZWdpc3RlclNobWVtU3RydWN0cygpOworCiAJQ3JlYXRlU2hhcmVkTWVtb3J5QW5k U2VtYXBob3JlcygpOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIv bGF1bmNoX2JhY2tlbmQuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvbGF1bmNoX2JhY2tlbmQu YwppbmRleCA5MjZmZDZmMjcwMC4uOGY2MzgxMThjZGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvbGF1bmNoX2JhY2tlbmQuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L2xhdW5jaF9iYWNrZW5kLmMKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJyZXBsaWNhdGlv bi93YWxyZWNlaXZlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZHNtLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9pb193b3JrZXIuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvcGdfc2htZW0uaCIKICNpbmNsdWRlICJ0Y29wL2JhY2tlbmRfc3RhcnR1cC5oIgogI2lu Y2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCkBAIC0xMDQsMTIgKzEwNSwxMCBAQCB0eXBlZGVmIHN0 cnVjdAogCWNoYXIJICAqKkxXTG9ja1RyYW5jaGVOYW1lczsKIAlpbnQJCSAgICpMV0xvY2tDb3Vu dGVyOwogCUxXTG9ja1BhZGRlZCAqTWFpbkxXTG9ja0FycmF5OwotCXNsb2NrX3QgICAgKlByb2NT dHJ1Y3RMb2NrOwogCVBST0NfSERSICAgKlByb2NHbG9iYWw7CiAJUEdQUk9DCSAgICpBdXhpbGlh cnlQcm9jczsKIAlQR1BST0MJICAgKlByZXBhcmVkWGFjdFByb2NzOwogCXZvbGF0aWxlIFBNU2ln bmFsRGF0YSAqUE1TaWduYWxTdGF0ZTsKLQlQcm9jU2lnbmFsSGVhZGVyICpQcm9jU2lnbmFsOwog CXBpZF90CQlQb3N0bWFzdGVyUGlkOwogCVRpbWVzdGFtcFR6IFBnU3RhcnRUaW1lOwogCVRpbWVz dGFtcFR6IFBnUmVsb2FkVGltZTsKQEAgLTY3OCw4ICs2NzcsMTIgQEAgU3ViUG9zdG1hc3Rlck1h aW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAogCS8qIFJlc3RvcmUgYmFzaWMgc2hhcmVkIG1l bW9yeSBwb2ludGVycyAqLwogCWlmIChVc2VkU2htZW1TZWdBZGRyICE9IE5VTEwpCisJewogCQlJ bml0U2htZW1BbGxvY2F0b3IoVXNlZFNobWVtU2VnQWRkcik7CiAKKwkJUmVnaXN0ZXJTaG1lbVN0 cnVjdHMoKTsKKwl9CisKIAkvKgogCSAqIFJ1biB0aGUgYXBwcm9wcmlhdGUgTWFpbiBmdW5jdGlv bgogCSAqLwpAQCAtNzM1LDEyICs3MzgsMTAgQEAgc2F2ZV9iYWNrZW5kX3ZhcmlhYmxlcyhCYWNr ZW5kUGFyYW1ldGVycyAqcGFyYW0sCiAJcGFyYW0tPkxXTG9ja1RyYW5jaGVOYW1lcyA9IExXTG9j a1RyYW5jaGVOYW1lczsKIAlwYXJhbS0+TFdMb2NrQ291bnRlciA9IExXTG9ja0NvdW50ZXI7CiAJ cGFyYW0tPk1haW5MV0xvY2tBcnJheSA9IE1haW5MV0xvY2tBcnJheTsKLQlwYXJhbS0+UHJvY1N0 cnVjdExvY2sgPSBQcm9jU3RydWN0TG9jazsKIAlwYXJhbS0+UHJvY0dsb2JhbCA9IFByb2NHbG9i YWw7CiAJcGFyYW0tPkF1eGlsaWFyeVByb2NzID0gQXV4aWxpYXJ5UHJvY3M7CiAJcGFyYW0tPlBy ZXBhcmVkWGFjdFByb2NzID0gUHJlcGFyZWRYYWN0UHJvY3M7CiAJcGFyYW0tPlBNU2lnbmFsU3Rh dGUgPSBQTVNpZ25hbFN0YXRlOwotCXBhcmFtLT5Qcm9jU2lnbmFsID0gUHJvY1NpZ25hbDsKIAog CXBhcmFtLT5Qb3N0bWFzdGVyUGlkID0gUG9zdG1hc3RlclBpZDsKIAlwYXJhbS0+UGdTdGFydFRp bWUgPSBQZ1N0YXJ0VGltZTsKQEAgLTk5NSwxMiArOTk2LDEwIEBAIHJlc3RvcmVfYmFja2VuZF92 YXJpYWJsZXMoQmFja2VuZFBhcmFtZXRlcnMgKnBhcmFtKQogCUxXTG9ja1RyYW5jaGVOYW1lcyA9 IHBhcmFtLT5MV0xvY2tUcmFuY2hlTmFtZXM7CiAJTFdMb2NrQ291bnRlciA9IHBhcmFtLT5MV0xv Y2tDb3VudGVyOwogCU1haW5MV0xvY2tBcnJheSA9IHBhcmFtLT5NYWluTFdMb2NrQXJyYXk7Ci0J UHJvY1N0cnVjdExvY2sgPSBwYXJhbS0+UHJvY1N0cnVjdExvY2s7CiAJUHJvY0dsb2JhbCA9IHBh cmFtLT5Qcm9jR2xvYmFsOwogCUF1eGlsaWFyeVByb2NzID0gcGFyYW0tPkF1eGlsaWFyeVByb2Nz OwogCVByZXBhcmVkWGFjdFByb2NzID0gcGFyYW0tPlByZXBhcmVkWGFjdFByb2NzOwogCVBNU2ln bmFsU3RhdGUgPSBwYXJhbS0+UE1TaWduYWxTdGF0ZTsKLQlQcm9jU2lnbmFsID0gcGFyYW0tPlBy b2NTaWduYWw7CiAKIAlQb3N0bWFzdGVyUGlkID0gcGFyYW0tPlBvc3RtYXN0ZXJQaWQ7CiAJUGdT dGFydFRpbWUgPSBwYXJhbS0+UGdTdGFydFRpbWU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9w b3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rl ci5jCmluZGV4IGQ2MTMzYmZlYmM2Li5mNmQzMzY5ZjkxNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9w b3N0bWFzdGVyLmMKQEAgLTk2OCw2ICs5NjgsOCBAQCBQb3N0bWFzdGVyTWFpbihpbnQgYXJnYywg Y2hhciAqYXJndltdKQogCSAqIHNoYXJlZCBtZW1vcnksIGRldGVybWluZSB0aGUgdmFsdWUgb2Yg YW55IHJ1bnRpbWUtY29tcHV0ZWQgR1VDcyB0aGF0CiAJICogZGVwZW5kIG9uIHRoZSBhbW91bnQg b2Ygc2hhcmVkIG1lbW9yeSByZXF1aXJlZC4KIAkgKi8KKwlSZWdpc3RlclNobWVtU3RydWN0cygp OworCiAJSW5pdGlhbGl6ZVNobWVtR1VDcygpOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvaXBjL2RzbS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvZHNtLmMKaW5k ZXggNmE1YjE2MzkyZjcuLjU1ZjQ2Yzc2ODdlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9y YWdlL2lwYy9kc20uYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9kc20uYwpAQCAtMTA4 LDcgKzEwOCwxNSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNfbWFpbl9yZWdpb25fZHNtX2hhbmRs ZShkc21faGFuZGxlIGhhbmRsZSk7CiBzdGF0aWMgYm9vbCBkc21faW5pdF9kb25lID0gZmFsc2U7 CiAKIC8qIFByZWFsbG9jYXRlZCBEU00gc3BhY2UgaW4gdGhlIG1haW4gc2hhcmVkIG1lbW9yeSBy ZWdpb24uICovCi1zdGF0aWMgdm9pZCAqZHNtX21haW5fc3BhY2VfYmVnaW4gPSBOVUxMOworc3Rh dGljIHZvaWQgZHNtX21haW5fc3BhY2VfaW5pdCh2b2lkICopOworCitzdGF0aWMgU2htZW1TdHJ1 Y3REZXNjIGRzbV9tYWluX3NwYWNlX3NobWVtX2Rlc2MgPSB7CisJLm5hbWUgPSAiUHJlYWxsb2Nh dGVkIERTTSIsCisJLnNpemUgPSAwLCAvKiBkeW5hbWljICovCisJLmluaXRfZm4gPSBkc21fbWFp bl9zcGFjZV9pbml0LAorfTsKKworI2RlZmluZSBkc21fbWFpbl9zcGFjZV9iZWdpbiAoZHNtX21h aW5fc3BhY2Vfc2htZW1fZGVzYy5wdHIpCiAKIC8qCiAgKiBMaXN0IG9mIGR5bmFtaWMgc2hhcmVk IG1lbW9yeSBzZWdtZW50cyB1c2VkIGJ5IHRoaXMgYmFja2VuZC4KQEAgLTQ3OSwyNyArNDg3LDI5 IEBAIHZvaWQKIGRzbV9zaG1lbV9pbml0KHZvaWQpCiB7CiAJc2l6ZV90CQlzaXplID0gZHNtX2Vz dGltYXRlX3NpemUoKTsKLQlib29sCQlmb3VuZDsKIAogCWlmIChzaXplID09IDApCiAJCXJldHVy bjsKIAotCWRzbV9tYWluX3NwYWNlX2JlZ2luID0gU2htZW1Jbml0U3RydWN0KCJQcmVhbGxvY2F0 ZWQgRFNNIiwgc2l6ZSwgJmZvdW5kKTsKLQlpZiAoIWZvdW5kKQotCXsKLQkJRnJlZVBhZ2VNYW5h Z2VyICpmcG0gPSAoRnJlZVBhZ2VNYW5hZ2VyICopIGRzbV9tYWluX3NwYWNlX2JlZ2luOwotCQlz aXplX3QJCWZpcnN0X3BhZ2UgPSAwOwotCQlzaXplX3QJCXBhZ2VzOwotCi0JCS8qIFJlc2VydmUg c3BhY2UgZm9yIHRoZSBGcmVlUGFnZU1hbmFnZXIuICovCi0JCXdoaWxlIChmaXJzdF9wYWdlICog RlBNX1BBR0VfU0laRSA8IHNpemVvZihGcmVlUGFnZU1hbmFnZXIpKQotCQkJKytmaXJzdF9wYWdl OwotCi0JCS8qIEluaXRpYWxpemUgaXQgYW5kIGdpdmUgaXQgYWxsIHRoZSByZXN0IG9mIHRoZSBz cGFjZS4gKi8KLQkJRnJlZVBhZ2VNYW5hZ2VySW5pdGlhbGl6ZShmcG0sIGRzbV9tYWluX3NwYWNl X2JlZ2luKTsKLQkJcGFnZXMgPSAoc2l6ZSAvIEZQTV9QQUdFX1NJWkUpIC0gZmlyc3RfcGFnZTsK LQkJRnJlZVBhZ2VNYW5hZ2VyUHV0KGZwbSwgZmlyc3RfcGFnZSwgcGFnZXMpOwotCX0KKwlTaG1l bVJlZ2lzdGVyU3RydWN0KCZkc21fbWFpbl9zcGFjZV9zaG1lbV9kZXNjKTsKK30KKworc3RhdGlj IHZvaWQKK2RzbV9tYWluX3NwYWNlX2luaXQodm9pZCAqYXJnKQoreworCXNpemVfdAkJc2l6ZSA9 IGRzbV9tYWluX3NwYWNlX3NobWVtX2Rlc2Muc2l6ZTsKKwlGcmVlUGFnZU1hbmFnZXIgKmZwbSA9 IChGcmVlUGFnZU1hbmFnZXIgKikgZHNtX21haW5fc3BhY2VfYmVnaW47CisJc2l6ZV90CQlmaXJz dF9wYWdlID0gMDsKKwlzaXplX3QJCXBhZ2VzOworCisJLyogUmVzZXJ2ZSBzcGFjZSBmb3IgdGhl IEZyZWVQYWdlTWFuYWdlci4gKi8KKwl3aGlsZSAoZmlyc3RfcGFnZSAqIEZQTV9QQUdFX1NJWkUg PCBzaXplb2YoRnJlZVBhZ2VNYW5hZ2VyKSkKKwkJKytmaXJzdF9wYWdlOworCisJLyogSW5pdGlh bGl6ZSBpdCBhbmQgZ2l2ZSBpdCBhbGwgdGhlIHJlc3Qgb2YgdGhlIHNwYWNlLiAqLworCUZyZWVQ YWdlTWFuYWdlckluaXRpYWxpemUoZnBtLCBkc21fbWFpbl9zcGFjZV9iZWdpbik7CisJcGFnZXMg PSAoc2l6ZSAvIEZQTV9QQUdFX1NJWkUpIC0gZmlyc3RfcGFnZTsKKwlGcmVlUGFnZU1hbmFnZXJQ dXQoZnBtLCBmaXJzdF9wYWdlLCBwYWdlcyk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9kc21fcmVnaXN0cnkuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L2RzbV9yZWdpc3RyeS5jCmluZGV4IDA2OGMxNTc3YjEyLi44ODJhZjgzYjdiMiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvZHNtX3JlZ2lzdHJ5LmMKKysrIGIvc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvZHNtX3JlZ2lzdHJ5LmMKQEAgLTU0LDcgKzU0LDE1IEBAIHR5cGVkZWYg c3RydWN0IERTTVJlZ2lzdHJ5Q3R4U3RydWN0CiAJZHNoYXNoX3RhYmxlX2hhbmRsZSBkc2hoOwog fSBEU01SZWdpc3RyeUN0eFN0cnVjdDsKIAotc3RhdGljIERTTVJlZ2lzdHJ5Q3R4U3RydWN0ICpE U01SZWdpc3RyeUN0eDsKK3N0YXRpYyB2b2lkIERTTVJlZ2lzdHJ5Q3R4U2htZW1Jbml0KHZvaWQg KmFyZyk7CisKK3N0YXRpYyBTaG1lbVN0cnVjdERlc2MgRFNNUmVnaXN0cnlDdHhTaG1lbURlc2Mg PSB7CisJLm5hbWUgPSAiRFNNIFJlZ2lzdHJ5IERhdGEiLAorCS5zaXplID0gc2l6ZW9mKERTTVJl Z2lzdHJ5Q3R4U3RydWN0KSwKKwkuaW5pdF9mbiA9IERTTVJlZ2lzdHJ5Q3R4U2htZW1Jbml0LAor fTsKKworI2RlZmluZSBEU01SZWdpc3RyeUN0eCAoKERTTVJlZ2lzdHJ5Q3R4U3RydWN0ICopIERT TVJlZ2lzdHJ5Q3R4U2htZW1EZXNjLnB0cikKIAogdHlwZWRlZiBzdHJ1Y3QgTmFtZWREU01TdGF0 ZQogewpAQCAtMTEzLDI3ICsxMjEsMTcgQEAgc3RhdGljIGNvbnN0IGRzaGFzaF9wYXJhbWV0ZXJz IGRzaF9wYXJhbXMgPSB7CiBzdGF0aWMgZHNhX2FyZWEgKmRzbV9yZWdpc3RyeV9kc2E7CiBzdGF0 aWMgZHNoYXNoX3RhYmxlICpkc21fcmVnaXN0cnlfdGFibGU7CiAKLVNpemUKLURTTVJlZ2lzdHJ5 U2htZW1TaXplKHZvaWQpCit2b2lkCitEU01SZWdpc3RyeVNobWVtUmVnaXN0ZXIodm9pZCkKIHsK LQlyZXR1cm4gTUFYQUxJR04oc2l6ZW9mKERTTVJlZ2lzdHJ5Q3R4U3RydWN0KSk7CisJU2htZW1S ZWdpc3RlclN0cnVjdCgmRFNNUmVnaXN0cnlDdHhTaG1lbURlc2MpOwogfQogCi12b2lkCi1EU01S ZWdpc3RyeVNobWVtSW5pdCh2b2lkKQorc3RhdGljIHZvaWQKK0RTTVJlZ2lzdHJ5Q3R4U2htZW1J bml0KHZvaWQgKikKIHsKLQlib29sCQlmb3VuZDsKLQotCURTTVJlZ2lzdHJ5Q3R4ID0gKERTTVJl Z2lzdHJ5Q3R4U3RydWN0ICopCi0JCVNobWVtSW5pdFN0cnVjdCgiRFNNIFJlZ2lzdHJ5IERhdGEi LAotCQkJCQkJRFNNUmVnaXN0cnlTaG1lbVNpemUoKSwKLQkJCQkJCSZmb3VuZCk7Ci0KLQlpZiAo IWZvdW5kKQotCXsKLQkJRFNNUmVnaXN0cnlDdHgtPmRzYWggPSBEU0FfSEFORExFX0lOVkFMSUQ7 Ci0JCURTTVJlZ2lzdHJ5Q3R4LT5kc2hoID0gRFNIQVNIX0hBTkRMRV9JTlZBTElEOwotCX0KKwlE U01SZWdpc3RyeUN0eC0+ZHNhaCA9IERTQV9IQU5ETEVfSU5WQUxJRDsKKwlEU01SZWdpc3RyeUN0 eC0+ZHNoaCA9IERTSEFTSF9IQU5ETEVfSU5WQUxJRDsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lw Y2kuYwppbmRleCAxZjdlOTMzZDUwMC4uOTUyOTg4NjQ1ZDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNp LmMKQEAgLTEwMSwxMyArMTAxLDE0IEBAIENhbGN1bGF0ZVNobWVtU2l6ZSh2b2lkKQogCXNpemUg PSBhZGRfc2l6ZShzaXplLCBoYXNoX2VzdGltYXRlX3NpemUoU0hNRU1fSU5ERVhfU0laRSwKIAkJ CQkJCQkJCQkJIHNpemVvZihTaG1lbUluZGV4RW50KSkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXpl LCBkc21fZXN0aW1hdGVfc2l6ZSgpKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgRFNNUmVnaXN0 cnlTaG1lbVNpemUoKSk7CisKKwlzaXplID0gYWRkX3NpemUoc2l6ZSwgU2htZW1SZWdpc3RlcmVk U2l6ZSgpKTsKKworCS8qIGxlZ2FjeSBzdWJzeXN0bWVzICovCiAJc2l6ZSA9IGFkZF9zaXplKHNp emUsIEJ1ZmZlck1hbmFnZXJTaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIExv Y2tNYW5hZ2VyU2htZW1TaXplKCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBQcmVkaWNhdGVM b2NrU2htZW1TaXplKCkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBQcm9jR2xvYmFsU2htZW1T aXplKCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBYTG9nUHJlZmV0Y2hTaG1lbVNpemUoKSk7 Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIFZhcnN1cFNobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRk X3NpemUoc2l6ZSwgWExPR1NobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgWExv Z1JlY292ZXJ5U2htZW1TaXplKCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBDTE9HU2htZW1T aXplKCkpOwpAQCAtMTE3LDExICsxMTgsNyBAQCBDYWxjdWxhdGVTaG1lbVNpemUodm9pZCkKIAlz aXplID0gYWRkX3NpemUoc2l6ZSwgQmFja2dyb3VuZFdvcmtlclNobWVtU2l6ZSgpKTsKIAlzaXpl ID0gYWRkX3NpemUoc2l6ZSwgTXVsdGlYYWN0U2htZW1TaXplKCkpOwogCXNpemUgPSBhZGRfc2l6 ZShzaXplLCBMV0xvY2tTaG1lbVNpemUoKSk7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIFByb2NB cnJheVNobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgQmFja2VuZFN0YXR1c1No bWVtU2l6ZSgpKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgU2hhcmVkSW52YWxTaG1lbVNpemUo KSk7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIFBNU2lnbmFsU2htZW1TaXplKCkpOwotCXNpemUg PSBhZGRfc2l6ZShzaXplLCBQcm9jU2lnbmFsU2htZW1TaXplKCkpOwogCXNpemUgPSBhZGRfc2l6 ZShzaXplLCBDaGVja3BvaW50ZXJTaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUs IEF1dG9WYWN1dW1TaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFJlcGxpY2F0 aW9uU2xvdHNTaG1lbVNpemUoKSk7CkBAIC0yMTcsNiArMjE0LDEwIEBAIENyZWF0ZVNoYXJlZE1l bW9yeUFuZFNlbWFwaG9yZXModm9pZCkKIAkgKi8KIAlJbml0U2htZW1BbGxvY2F0b3Ioc2VnaGRy KTsKIAorCS8qIFJlc2VydmUgc3BhY2UgZm9yIHNlbWFwaG9yZXMuICovCisJaWYgKCFJc1VuZGVy UG9zdG1hc3RlcikKKwkJUEdSZXNlcnZlU2VtYXBob3JlcyhQcm9jR2xvYmFsU2VtYXMoKSk7CisK IAkvKiBJbml0aWFsaXplIHN1YnN5c3RlbXMgKi8KIAlDcmVhdGVPckF0dGFjaFNobWVtU3RydWN0 cygpOwogCkBAIC0yMzAsNiArMjMxLDE5IEBAIENyZWF0ZVNoYXJlZE1lbW9yeUFuZFNlbWFwaG9y ZXModm9pZCkKIAkJc2htZW1fc3RhcnR1cF9ob29rKCk7CiB9CiAKK3ZvaWQKK1JlZ2lzdGVyU2ht ZW1TdHJ1Y3RzKHZvaWQpCit7CisJRFNNUmVnaXN0cnlTaG1lbVJlZ2lzdGVyKCk7CisKKwlQcm9j R2xvYmFsU2htZW1SZWdpc3RlcigpOworCVZhcnN1cFNobWVtUmVnaXN0ZXIoKTsKKwlQcm9jQXJy YXlTaG1lbVJlZ2lzdGVyKCk7CisJU2hhcmVkSW52YWxTaG1lbVJlZ2lzdGVyKCk7CisJUE1TaWdu YWxTaG1lbVJlZ2lzdGVyKCk7CisJUHJvY1NpZ25hbFNobWVtUmVnaXN0ZXIoKTsKK30KKwogLyoK ICAqIEluaXRpYWxpemUgdmFyaW91cyBzdWJzeXN0ZW1zLCBzZXR0aW5nIHVwIHRoZWlyIGRhdGEg c3RydWN0dXJlcyBpbgogICogc2hhcmVkIG1lbW9yeS4KQEAgLTI1OSwxNCArMjczLDIzIEBAIENy ZWF0ZU9yQXR0YWNoU2htZW1TdHJ1Y3RzKHZvaWQpCiAJICovCiAJSW5pdFNobWVtSW5kZXgoKTsK IAorI2lmZGVmIEVYRUNfQkFDS0VORAorCWlmIChJc1VuZGVyUG9zdG1hc3RlcikKKwkJU2htZW1B dHRhY2hSZWdpc3RlcmVkKCk7CisJZWxzZQorI2VuZGlmCisJeworCQlTaG1lbUluaXRSZWdpc3Rl cmVkKCk7CisJfQorCiAJZHNtX3NobWVtX2luaXQoKTsKLQlEU01SZWdpc3RyeVNobWVtSW5pdCgp OworCS8vRFNNUmVnaXN0cnlTaG1lbUluaXQoKTsKIAogCS8qCiAJICogU2V0IHVwIHhsb2csIGNs b2csIGFuZCBidWZmZXJzCiAJICovCi0JVmFyc3VwU2htZW1Jbml0KCk7CiAJWExPR1NobWVtSW5p dCgpOworCiAJWExvZ1ByZWZldGNoU2htZW1Jbml0KCk7CiAJWExvZ1JlY292ZXJ5U2htZW1Jbml0 KCk7CiAJQ0xPR1NobWVtSW5pdCgpOwpAQCAtMjg4LDIzICszMTEsMTMgQEAgQ3JlYXRlT3JBdHRh Y2hTaG1lbVN0cnVjdHModm9pZCkKIAkvKgogCSAqIFNldCB1cCBwcm9jZXNzIHRhYmxlCiAJICov Ci0JaWYgKCFJc1VuZGVyUG9zdG1hc3RlcikKLQkJSW5pdFByb2NHbG9iYWwoKTsKLQlQcm9jQXJy YXlTaG1lbUluaXQoKTsKIAlCYWNrZW5kU3RhdHVzU2htZW1Jbml0KCk7CiAJVHdvUGhhc2VTaG1l bUluaXQoKTsKIAlCYWNrZ3JvdW5kV29ya2VyU2htZW1Jbml0KCk7CiAKLQkvKgotCSAqIFNldCB1 cCBzaGFyZWQtaW52YWwgbWVzc2FnaW5nCi0JICovCi0JU2hhcmVkSW52YWxTaG1lbUluaXQoKTsK LQogCS8qCiAJICogU2V0IHVwIGludGVycHJvY2VzcyBzaWduYWxpbmcgbWVjaGFuaXNtcwogCSAq LwotCVBNU2lnbmFsU2htZW1Jbml0KCk7Ci0JUHJvY1NpZ25hbFNobWVtSW5pdCgpOwogCUNoZWNr cG9pbnRlclNobWVtSW5pdCgpOwogCUF1dG9WYWN1dW1TaG1lbUluaXQoKTsKIAlSZXBsaWNhdGlv blNsb3RzU2htZW1Jbml0KCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9w bXNpZ25hbC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcG1zaWduYWwuYwppbmRleCA0NjE4 ODIwYjMzNy4uMjM3NTI1MDBkMTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L3Btc2lnbmFsLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcG1zaWduYWwuYwpAQCAt ODAsOSArODAsMjQgQEAgc3RydWN0IFBNU2lnbmFsRGF0YQogCXNpZ19hdG9taWNfdCBQTUNoaWxk RmxhZ3NbRkxFWElCTEVfQVJSQVlfTUVNQkVSXTsKIH07CiAKLS8qIFBNU2lnbmFsU3RhdGUgcG9p bnRlciBpcyB2YWxpZCBpbiBib3RoIHBvc3RtYXN0ZXIgYW5kIGNoaWxkIHByb2Nlc3NlcyAqLwor c3RhdGljIHZvaWQgUE1TaWduYWxTaG1lbUluaXQodm9pZCAqKTsKKworc3RhdGljIFNobWVtU3Ry dWN0RGVzYyBQTVNpZ25hbFNobWVtRGVzYyA9IHsKKwkubmFtZSA9ICJQTVNpZ25hbFN0YXRlIiwK Kwkuc2l6ZSA9IDAsIC8qIGR5bmFtaWMgKi8KKwkuaW5pdF9mbiA9IFBNU2lnbmFsU2htZW1Jbml0 LAorfTsKKworLyoKKyAqIFBNU2lnbmFsU3RhdGUgcG9pbnRlciBpcyB2YWxpZCBpbiBib3RoIHBv c3RtYXN0ZXIgYW5kIGNoaWxkIHByb2Nlc3NlcworICoKKyAqIFRoaXMgaXMgYSBzdGFuZC1hbG9u ZSB2YXJpYWJsZSByYXRoZXIgdGhhbiBqdXN0IGEgI2RlZmluZSBvdmVyCisgKiBQTVNpZ25hbFNo bWVtRGVzYy5wdHIgYmVjYXVzZSBpdCBpcyBuZWVkZWQgZWFybHkgYXQgYmFja2VuZCBzdGFydHVw IGFuZAorICogcGFzc2VkIGFzIGEgYmFja2VuZCBwYXJhbWV0ZXIgaW4gRVhFQ19CQUNLRU5EIG1v ZGUKKyAqLwogTk9OX0VYRUNfU1RBVElDIHZvbGF0aWxlIFBNU2lnbmFsRGF0YSAqUE1TaWduYWxT dGF0ZSA9IE5VTEw7CiAKKwogLyoKICAqIExvY2FsIGNvcHkgb2YgUE1TaWduYWxTdGF0ZS0+bnVt X2NoaWxkX2ZsYWdzLCBvbmx5IHZhbGlkIGluIHRoZQogICogcG9zdG1hc3Rlci4gIFBvc3RtYXN0 ZXIga2VlcHMgYSBsb2NhbCBjb3B5IHNvIHRoYXQgaXQgZG9lc24ndCBuZWVkIHRvCkBAIC0xMjMs MzkgKzEzOCwyOCBAQCBwb3N0bWFzdGVyX2RlYXRoX2hhbmRsZXIoU0lHTkFMX0FSR1MpCiBzdGF0 aWMgdm9pZCBNYXJrUG9zdG1hc3RlckNoaWxkSW5hY3RpdmUoaW50IGNvZGUsIERhdHVtIGFyZyk7 CiAKIC8qCi0gKiBQTVNpZ25hbFNobWVtU2l6ZQotICoJCUNvbXB1dGUgc3BhY2UgbmVlZGVkIGZv ciBwbXNpZ25hbC5jJ3Mgc2hhcmVkIG1lbW9yeQorICogUE1TaWduYWxTaG1lbVJlZ2lzdGVyIC0g UmVnaXN0ZXIgb3VyIHNoYXJlZCBtZW1vcnkKICAqLwotU2l6ZQotUE1TaWduYWxTaG1lbVNpemUo dm9pZCkKK3ZvaWQKK1BNU2lnbmFsU2htZW1SZWdpc3Rlcih2b2lkKQogewogCVNpemUJCXNpemU7 CiAKIAlzaXplID0gb2Zmc2V0b2YoUE1TaWduYWxEYXRhLCBQTUNoaWxkRmxhZ3MpOwogCXNpemUg PSBhZGRfc2l6ZShzaXplLCBtdWxfc2l6ZShNYXhMaXZlUG9zdG1hc3RlckNoaWxkcmVuKCksCiAJ CQkJCQkJCSAgIHNpemVvZihzaWdfYXRvbWljX3QpKSk7Ci0KLQlyZXR1cm4gc2l6ZTsKKwlQTVNp Z25hbFNobWVtRGVzYy5zaXplID0gc2l6ZTsKKwlTaG1lbVJlZ2lzdGVyU3RydWN0KCZQTVNpZ25h bFNobWVtRGVzYyk7CiB9CiAKLS8qCi0gKiBQTVNpZ25hbFNobWVtSW5pdCAtIGluaXRpYWxpemUg ZHVyaW5nIHNoYXJlZC1tZW1vcnkgY3JlYXRpb24KLSAqLwotdm9pZAotUE1TaWduYWxTaG1lbUlu aXQodm9pZCkKK3N0YXRpYyB2b2lkCitQTVNpZ25hbFNobWVtSW5pdCh2b2lkICphcmcpCiB7Ci0J Ym9vbAkJZm91bmQ7Ci0KLQlQTVNpZ25hbFN0YXRlID0gKFBNU2lnbmFsRGF0YSAqKQotCQlTaG1l bUluaXRTdHJ1Y3QoIlBNU2lnbmFsU3RhdGUiLCBQTVNpZ25hbFNobWVtU2l6ZSgpLCAmZm91bmQp OwotCi0JaWYgKCFmb3VuZCkKLQl7Ci0JCS8qIGluaXRpYWxpemUgYWxsIGZsYWdzIHRvIHplcm9l cyAqLwotCQlNZW1TZXQodW52b2xhdGl6ZShQTVNpZ25hbERhdGEgKiwgUE1TaWduYWxTdGF0ZSks IDAsIFBNU2lnbmFsU2htZW1TaXplKCkpOwotCQludW1fY2hpbGRfZmxhZ3MgPSBNYXhMaXZlUG9z dG1hc3RlckNoaWxkcmVuKCk7Ci0JCVBNU2lnbmFsU3RhdGUtPm51bV9jaGlsZF9mbGFncyA9IG51 bV9jaGlsZF9mbGFnczsKLQl9CisJLyogaW5pdGlhbGl6ZSBhbGwgZmxhZ3MgdG8gemVyb2VzICov CisJUE1TaWduYWxTdGF0ZSA9IFBNU2lnbmFsU2htZW1EZXNjLnB0cjsKKwlNZW1TZXQodW52b2xh dGl6ZShQTVNpZ25hbERhdGEgKiwgUE1TaWduYWxTdGF0ZSksIDAsIFBNU2lnbmFsU2htZW1EZXNj LnNpemUpOworCW51bV9jaGlsZF9mbGFncyA9IE1heExpdmVQb3N0bWFzdGVyQ2hpbGRyZW4oKTsK KwlQTVNpZ25hbFN0YXRlLT5udW1fY2hpbGRfZmxhZ3MgPSBudW1fY2hpbGRfZmxhZ3M7CiB9CiAK IC8qCkBAIC0yOTEsNiArMjk1LDcgQEAgUmVnaXN0ZXJQb3N0bWFzdGVyQ2hpbGRBY3RpdmUodm9p ZCkKIHsKIAlpbnQJCQlzbG90ID0gTXlQTUNoaWxkU2xvdDsKIAorCUFzc2VydChQTVNpZ25hbFN0 YXRlKTsKIAlBc3NlcnQoc2xvdCA+IDAgJiYgc2xvdCA8PSBQTVNpZ25hbFN0YXRlLT5udW1fY2hp bGRfZmxhZ3MpOwogCXNsb3QtLTsKIAlBc3NlcnQoUE1TaWduYWxTdGF0ZS0+UE1DaGlsZEZsYWdz W3Nsb3RdID09IFBNX0NISUxEX0FTU0lHTkVEKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvaXBjL3Byb2NhcnJheS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5 LmMKaW5kZXggMzAxZjU0ZmI1YTguLjA4YzYzYmNiMmE3IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9w cm9jYXJyYXkuYwpAQCAtMTAxLDYgKzEwMSwxOCBAQCB0eXBlZGVmIHN0cnVjdCBQcm9jQXJyYXlT dHJ1Y3QKIAlpbnQJCQlwZ3Byb2Nub3NbRkxFWElCTEVfQVJSQVlfTUVNQkVSXTsKIH0gUHJvY0Fy cmF5U3RydWN0OwogCitzdGF0aWMgdm9pZCBQcm9jQXJyYXlTaG1lbUluaXQodm9pZCAqYXJnKTsK K3N0YXRpYyB2b2lkIFByb2NBcnJheVNobWVtQXR0YWNoKHZvaWQgKmFyZyk7CisKK3N0YXRpYyBT aG1lbVN0cnVjdERlc2MgUHJvY0FycmF5U2htZW1EZXNjID0geworCS5uYW1lID0gIlByb2MgQXJy YXkiLAorCS5zaXplID0gMCwgLyogZHluYW1pYyAqLworCS5pbml0X2ZuID0gUHJvY0FycmF5U2ht ZW1Jbml0LAorCS5hdHRhY2hfZm4gPSBQcm9jQXJyYXlTaG1lbUF0dGFjaCwKK307CisKKyNkZWZp bmUgcHJvY0FycmF5ICgoUHJvY0FycmF5U3RydWN0ICopIFByb2NBcnJheVNobWVtRGVzYy5wdHIp CisKIC8qCiAgKiBTdGF0ZSBmb3IgdGhlIEdsb2JhbFZpc1Rlc3QqIGZhbWlseSBvZiBmdW5jdGlv bnMuIFRob3NlIGZ1bmN0aW9ucyBjYW4KICAqIGUuZy4gYmUgdXNlZCB0byBkZWNpZGUgaWYgYSBk ZWxldGVkIHJvdyBjYW4gYmUgcmVtb3ZlZCB3aXRob3V0IHZpb2xhdGluZwpAQCAtMjY3LDkgKzI3 OSw2IEBAIHR5cGVkZWYgZW51bSBLQVhDb21wcmVzc1JlYXNvbgogCUtBWF9TVEFSVFVQX1BST0NF U1NfSURMRSwJLyogc3RhcnR1cCBwcm9jZXNzIGlzIGFib3V0IHRvIHNsZWVwICovCiB9IEtBWENv bXByZXNzUmVhc29uOwogCi0KLXN0YXRpYyBQcm9jQXJyYXlTdHJ1Y3QgKnByb2NBcnJheTsKLQog c3RhdGljIFBHUFJPQyAqYWxsUHJvY3M7CiAKIC8qCkBAIC0yODAsOCArMjg5LDIzIEBAIHN0YXRp YyBUcmFuc2FjdGlvbklkIGNhY2hlZFhpZElzTm90SW5Qcm9ncmVzcyA9IEludmFsaWRUcmFuc2Fj dGlvbklkOwogLyoKICAqIEJvb2trZWVwaW5nIGZvciB0cmFja2luZyBlbXVsYXRlZCB0cmFuc2Fj dGlvbnMgaW4gcmVjb3ZlcnkKICAqLwotc3RhdGljIFRyYW5zYWN0aW9uSWQgKktub3duQXNzaWdu ZWRYaWRzOwotc3RhdGljIGJvb2wgKktub3duQXNzaWduZWRYaWRzVmFsaWQ7CisKK3N0YXRpYyBT aG1lbVN0cnVjdERlc2MgS25vd25Bc3NpZ25lZFhpZHNTaG1lbURlc2MgPSB7CisJLm5hbWUgPSAi S25vd25Bc3NpZ25lZFhpZHMiLAorCS5zaXplID0gMCwgLyogZHluYW1pYyAqLworCS5pbml0X2Zu ID0gTlVMTCwKK307CisKKyNkZWZpbmUgS25vd25Bc3NpZ25lZFhpZHMgKChUcmFuc2FjdGlvbklk ICopIEtub3duQXNzaWduZWRYaWRzU2htZW1EZXNjLnB0cikKKworc3RhdGljIFNobWVtU3RydWN0 RGVzYyBLbm93bkFzc2lnbmVkWGlkc1ZhbGlkU2htZW1EZXNjID0geworCS5uYW1lID0gIktub3du QXNzaWduZWRYaWRzVmFsaWQiLAorCS5zaXplID0gMCwgLyogZHluYW1pYyAqLworCS5pbml0X2Zu ID0gTlVMTCwKK307CisKKyNkZWZpbmUgS25vd25Bc3NpZ25lZFhpZHNWYWxpZCAoKGJvb2wgKikg S25vd25Bc3NpZ25lZFhpZHNWYWxpZFNobWVtRGVzYy5wdHIpCisKIHN0YXRpYyBUcmFuc2FjdGlv bklkIGxhdGVzdE9ic2VydmVkWGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAKIC8qCkBAIC0z NzIsMTggKzM5NiwxOSBAQCBzdGF0aWMgaW5saW5lIEZ1bGxUcmFuc2FjdGlvbklkIEZ1bGxYaWRS ZWxhdGl2ZVRvKEZ1bGxUcmFuc2FjdGlvbklkIHJlbCwKIHN0YXRpYyB2b2lkIEdsb2JhbFZpc1Vw ZGF0ZUFwcGx5KENvbXB1dGVYaWRIb3Jpem9uc1Jlc3VsdCAqaG9yaXpvbnMpOwogCiAvKgotICog UmVwb3J0IHNoYXJlZC1tZW1vcnkgc3BhY2UgbmVlZGVkIGJ5IFByb2NBcnJheVNobWVtSW5pdAor ICogUmVnaXN0ZXIgdGhlIHNoYXJlZCBQR1BST0MgYXJyYXkgZHVyaW5nIHBvc3RtYXN0ZXIgc3Rh cnR1cC4KICAqLwotU2l6ZQotUHJvY0FycmF5U2htZW1TaXplKHZvaWQpCit2b2lkCitQcm9jQXJy YXlTaG1lbVJlZ2lzdGVyKHZvaWQpCiB7Ci0JU2l6ZQkJc2l6ZTsKLQotCS8qIFNpemUgb2YgdGhl IFByb2NBcnJheSBzdHJ1Y3R1cmUgaXRzZWxmICovCiAjZGVmaW5lIFBST0NBUlJBWV9NQVhQUk9D UwkoTWF4QmFja2VuZHMgKyBtYXhfcHJlcGFyZWRfeGFjdHMpCiAKLQlzaXplID0gb2Zmc2V0b2Yo UHJvY0FycmF5U3RydWN0LCBwZ3Byb2Nub3MpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBtdWxf c2l6ZShzaXplb2YoaW50KSwgUFJPQ0FSUkFZX01BWFBST0NTKSk7CisJLyogQ3JlYXRlIG9yIGF0 dGFjaCB0byB0aGUgUHJvY0FycmF5IHNoYXJlZCBzdHJ1Y3R1cmUgKi8KKwlQcm9jQXJyYXlTaG1l bURlc2Muc2l6ZSA9CisJCWFkZF9zaXplKG9mZnNldG9mKFByb2NBcnJheVN0cnVjdCwgcGdwcm9j bm9zKSwKKwkJCQkgbXVsX3NpemUoc2l6ZW9mKGludCksCisJCQkJCQkgIFBST0NBUlJBWV9NQVhQ Uk9DUykpOworCVNobWVtUmVnaXN0ZXJTdHJ1Y3QoJlByb2NBcnJheVNobWVtRGVzYyk7CiAKIAkv KgogCSAqIER1cmluZyBIb3QgU3RhbmRieSBwcm9jZXNzaW5nIHdlIGhhdmUgYSBkYXRhIHN0cnVj dHVyZSBjYWxsZWQKQEAgLTQwMyw2NCArNDI4LDM4IEBAIFByb2NBcnJheVNobWVtU2l6ZSh2b2lk KQogCiAJaWYgKEVuYWJsZUhvdFN0YW5kYnkpCiAJewotCQlzaXplID0gYWRkX3NpemUoc2l6ZSwK LQkJCQkJCW11bF9zaXplKHNpemVvZihUcmFuc2FjdGlvbklkKSwKLQkJCQkJCQkJIFRPVEFMX01B WF9DQUNIRURfU1VCWElEUykpOwotCQlzaXplID0gYWRkX3NpemUoc2l6ZSwKLQkJCQkJCW11bF9z aXplKHNpemVvZihib29sKSwgVE9UQUxfTUFYX0NBQ0hFRF9TVUJYSURTKSk7CisJCUtub3duQXNz aWduZWRYaWRzU2htZW1EZXNjLnNpemUgPQorCQkJbXVsX3NpemUoc2l6ZW9mKFRyYW5zYWN0aW9u SWQpLAorCQkJCQkgVE9UQUxfTUFYX0NBQ0hFRF9TVUJYSURTKTsKKwkJU2htZW1SZWdpc3RlclN0 cnVjdCgmS25vd25Bc3NpZ25lZFhpZHNTaG1lbURlc2MpOworCisJCUtub3duQXNzaWduZWRYaWRz VmFsaWRTaG1lbURlc2Muc2l6ZSA9CisJCQltdWxfc2l6ZShzaXplb2YoYm9vbCksIFRPVEFMX01B WF9DQUNIRURfU1VCWElEUyk7CisJCVNobWVtUmVnaXN0ZXJTdHJ1Y3QoJktub3duQXNzaWduZWRY aWRzVmFsaWRTaG1lbURlc2MpOwogCX0KLQotCXJldHVybiBzaXplOwogfQogCi0vKgotICogSW5p dGlhbGl6ZSB0aGUgc2hhcmVkIFBHUFJPQyBhcnJheSBkdXJpbmcgcG9zdG1hc3RlciBzdGFydHVw LgotICovCi12b2lkCi1Qcm9jQXJyYXlTaG1lbUluaXQodm9pZCkKK3N0YXRpYyB2b2lkCitQcm9j QXJyYXlTaG1lbUluaXQodm9pZCAqYXJnKQogewotCWJvb2wJCWZvdW5kOwotCi0JLyogQ3JlYXRl IG9yIGF0dGFjaCB0byB0aGUgUHJvY0FycmF5IHNoYXJlZCBzdHJ1Y3R1cmUgKi8KLQlwcm9jQXJy YXkgPSAoUHJvY0FycmF5U3RydWN0ICopCi0JCVNobWVtSW5pdFN0cnVjdCgiUHJvYyBBcnJheSIs Ci0JCQkJCQlhZGRfc2l6ZShvZmZzZXRvZihQcm9jQXJyYXlTdHJ1Y3QsIHBncHJvY25vcyksCi0J CQkJCQkJCSBtdWxfc2l6ZShzaXplb2YoaW50KSwKLQkJCQkJCQkJCQkgIFBST0NBUlJBWV9NQVhQ Uk9DUykpLAotCQkJCQkJJmZvdW5kKTsKLQotCWlmICghZm91bmQpCi0JewotCQkvKgotCQkgKiBX ZSdyZSB0aGUgZmlyc3QgLSBpbml0aWFsaXplLgotCQkgKi8KLQkJcHJvY0FycmF5LT5udW1Qcm9j cyA9IDA7Ci0JCXByb2NBcnJheS0+bWF4UHJvY3MgPSBQUk9DQVJSQVlfTUFYUFJPQ1M7Ci0JCXBy b2NBcnJheS0+bWF4S25vd25Bc3NpZ25lZFhpZHMgPSBUT1RBTF9NQVhfQ0FDSEVEX1NVQlhJRFM7 Ci0JCXByb2NBcnJheS0+bnVtS25vd25Bc3NpZ25lZFhpZHMgPSAwOwotCQlwcm9jQXJyYXktPnRh aWxLbm93bkFzc2lnbmVkWGlkcyA9IDA7Ci0JCXByb2NBcnJheS0+aGVhZEtub3duQXNzaWduZWRY aWRzID0gMDsKLQkJcHJvY0FycmF5LT5sYXN0T3ZlcmZsb3dlZFhpZCA9IEludmFsaWRUcmFuc2Fj dGlvbklkOwotCQlwcm9jQXJyYXktPnJlcGxpY2F0aW9uX3Nsb3RfeG1pbiA9IEludmFsaWRUcmFu c2FjdGlvbklkOwotCQlwcm9jQXJyYXktPnJlcGxpY2F0aW9uX3Nsb3RfY2F0YWxvZ194bWluID0g SW52YWxpZFRyYW5zYWN0aW9uSWQ7Ci0JCVRyYW5zYW1WYXJpYWJsZXMtPnhhY3RDb21wbGV0aW9u Q291bnQgPSAxOwotCX0KKwlwcm9jQXJyYXktPm51bVByb2NzID0gMDsKKwlwcm9jQXJyYXktPm1h eFByb2NzID0gUFJPQ0FSUkFZX01BWFBST0NTOworCXByb2NBcnJheS0+bWF4S25vd25Bc3NpZ25l ZFhpZHMgPSBUT1RBTF9NQVhfQ0FDSEVEX1NVQlhJRFM7CisJcHJvY0FycmF5LT5udW1Lbm93bkFz c2lnbmVkWGlkcyA9IDA7CisJcHJvY0FycmF5LT50YWlsS25vd25Bc3NpZ25lZFhpZHMgPSAwOwor CXByb2NBcnJheS0+aGVhZEtub3duQXNzaWduZWRYaWRzID0gMDsKKwlwcm9jQXJyYXktPmxhc3RP dmVyZmxvd2VkWGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJcHJvY0FycmF5LT5yZXBsaWNh dGlvbl9zbG90X3htaW4gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwlwcm9jQXJyYXktPnJlcGxp Y2F0aW9uX3Nsb3RfY2F0YWxvZ194bWluID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJVHJhbnNh bVZhcmlhYmxlcy0+eGFjdENvbXBsZXRpb25Db3VudCA9IDE7CiAKIAlhbGxQcm9jcyA9IFByb2NH bG9iYWwtPmFsbFByb2NzOworfQogCi0JLyogQ3JlYXRlIG9yIGF0dGFjaCB0byB0aGUgS25vd25B c3NpZ25lZFhpZHMgYXJyYXlzIHRvbywgaWYgbmVlZGVkICovCi0JaWYgKEVuYWJsZUhvdFN0YW5k YnkpCi0JewotCQlLbm93bkFzc2lnbmVkWGlkcyA9IChUcmFuc2FjdGlvbklkICopCi0JCQlTaG1l bUluaXRTdHJ1Y3QoIktub3duQXNzaWduZWRYaWRzIiwKLQkJCQkJCQltdWxfc2l6ZShzaXplb2Yo VHJhbnNhY3Rpb25JZCksCi0JCQkJCQkJCQkgVE9UQUxfTUFYX0NBQ0hFRF9TVUJYSURTKSwKLQkJ CQkJCQkmZm91bmQpOwotCQlLbm93bkFzc2lnbmVkWGlkc1ZhbGlkID0gKGJvb2wgKikKLQkJCVNo bWVtSW5pdFN0cnVjdCgiS25vd25Bc3NpZ25lZFhpZHNWYWxpZCIsCi0JCQkJCQkJbXVsX3NpemUo c2l6ZW9mKGJvb2wpLCBUT1RBTF9NQVhfQ0FDSEVEX1NVQlhJRFMpLAotCQkJCQkJCSZmb3VuZCk7 Ci0JfQorc3RhdGljIHZvaWQKK1Byb2NBcnJheVNobWVtQXR0YWNoKHZvaWQgKmFyZykKK3sKKwlh bGxQcm9jcyA9IFByb2NHbG9iYWwtPmFsbFByb2NzOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvcHJvY3NpZ25hbC5jCmluZGV4IDhlNTY5MjJkY2VhLi41NzQzZjA4ODMyNCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCisrKyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwpAQCAtMTAyLDcgKzEwMiwxNiBAQCBzdHJ1Y3QgUHJv Y1NpZ25hbEhlYWRlcgogI2RlZmluZSBCQVJSSUVSX0NMRUFSX0JJVChmbGFncywgdHlwZSkgXAog CSgoZmxhZ3MpICY9IH4oKCh1aW50MzIpIDEpIDw8ICh1aW50MzIpICh0eXBlKSkpCiAKLU5PTl9F WEVDX1NUQVRJQyBQcm9jU2lnbmFsSGVhZGVyICpQcm9jU2lnbmFsID0gTlVMTDsKK3N0YXRpYyB2 b2lkIFByb2NTaWduYWxTaG1lbUluaXQodm9pZCAqYXJnKTsKKworc3RhdGljIFNobWVtU3RydWN0 RGVzYyBQcm9jU2lnbmFsU2htZW1EZXNjID0geworCS5uYW1lID0gIlByb2NTaWduYWwiLAorCS5z aXplID0gMCwgLyogZHluYW1pYyAqLworCS5pbml0X2ZuID0gUHJvY1NpZ25hbFNobWVtSW5pdCwK K307CisKKyNkZWZpbmUgUHJvY1NpZ25hbCAoKFByb2NTaWduYWxIZWFkZXIgKikgUHJvY1NpZ25h bFNobWVtRGVzYy5wdHIpCisKIHN0YXRpYyBQcm9jU2lnbmFsU2xvdCAqTXlQcm9jU2lnbmFsU2xv dCA9IE5VTEw7CiAKIHN0YXRpYyBib29sIENoZWNrUHJvY1NpZ25hbChQcm9jU2lnbmFsUmVhc29u IHJlYXNvbik7CkBAIC0xMTAsNTEgKzExOSwzNyBAQCBzdGF0aWMgdm9pZCBDbGVhbnVwUHJvY1Np Z25hbFN0YXRlKGludCBzdGF0dXMsIERhdHVtIGFyZyk7CiBzdGF0aWMgdm9pZCBSZXNldFByb2NT aWduYWxCYXJyaWVyQml0cyh1aW50MzIgZmxhZ3MpOwogCiAvKgotICogUHJvY1NpZ25hbFNobWVt U2l6ZQotICoJCUNvbXB1dGUgc3BhY2UgbmVlZGVkIGZvciBQcm9jU2lnbmFsJ3Mgc2hhcmVkIG1l bW9yeQorICogUHJvY1NpZ25hbFNobWVtUmVnaXN0ZXIKKyAqCQlSZWdpc3RlciBQcm9jU2lnbmFs J3Mgc2hhcmVkIG1lbW9yeSBuZWVkcyBhdCBwb3N0bWFzdGVyIHN0YXJ0dXAKICAqLwotU2l6ZQot UHJvY1NpZ25hbFNobWVtU2l6ZSh2b2lkKQordm9pZAorUHJvY1NpZ25hbFNobWVtUmVnaXN0ZXIo dm9pZCkKIHsKIAlTaXplCQlzaXplOwogCiAJc2l6ZSA9IG11bF9zaXplKE51bVByb2NTaWduYWxT bG90cywgc2l6ZW9mKFByb2NTaWduYWxTbG90KSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIG9m ZnNldG9mKFByb2NTaWduYWxIZWFkZXIsIHBzaF9zbG90KSk7Ci0JcmV0dXJuIHNpemU7CisKKwlQ cm9jU2lnbmFsU2htZW1EZXNjLnNpemUgPSBzaXplOworCVNobWVtUmVnaXN0ZXJTdHJ1Y3QoJlBy b2NTaWduYWxTaG1lbURlc2MpOwogfQogCi0vKgotICogUHJvY1NpZ25hbFNobWVtSW5pdAotICoJ CUFsbG9jYXRlIGFuZCBpbml0aWFsaXplIFByb2NTaWduYWwncyBzaGFyZWQgbWVtb3J5Ci0gKi8K LXZvaWQKLVByb2NTaWduYWxTaG1lbUluaXQodm9pZCkKK3N0YXRpYyB2b2lkCitQcm9jU2lnbmFs U2htZW1Jbml0KHZvaWQgKmFyZykKIHsKLQlTaXplCQlzaXplID0gUHJvY1NpZ25hbFNobWVtU2l6 ZSgpOwotCWJvb2wJCWZvdW5kOworCXBnX2F0b21pY19pbml0X3U2NCgmUHJvY1NpZ25hbC0+cHNo X2JhcnJpZXJHZW5lcmF0aW9uLCAwKTsKIAotCVByb2NTaWduYWwgPSAoUHJvY1NpZ25hbEhlYWRl ciAqKQotCQlTaG1lbUluaXRTdHJ1Y3QoIlByb2NTaWduYWwiLCBzaXplLCAmZm91bmQpOwotCi0J LyogSWYgd2UncmUgZmlyc3QsIGluaXRpYWxpemUuICovCi0JaWYgKCFmb3VuZCkKKwlmb3IgKGlu dCBpID0gMDsgaSA8IE51bVByb2NTaWduYWxTbG90czsgKytpKQogCXsKLQkJaW50CQkJaTsKLQot CQlwZ19hdG9taWNfaW5pdF91NjQoJlByb2NTaWduYWwtPnBzaF9iYXJyaWVyR2VuZXJhdGlvbiwg MCk7CisJCVByb2NTaWduYWxTbG90ICpzbG90ID0gJlByb2NTaWduYWwtPnBzaF9zbG90W2ldOwog Ci0JCWZvciAoaSA9IDA7IGkgPCBOdW1Qcm9jU2lnbmFsU2xvdHM7ICsraSkKLQkJewotCQkJUHJv Y1NpZ25hbFNsb3QgKnNsb3QgPSAmUHJvY1NpZ25hbC0+cHNoX3Nsb3RbaV07Ci0KLQkJCVNwaW5M b2NrSW5pdCgmc2xvdC0+cHNzX211dGV4KTsKLQkJCXBnX2F0b21pY19pbml0X3UzMigmc2xvdC0+ cHNzX3BpZCwgMCk7Ci0JCQlzbG90LT5wc3NfY2FuY2VsX2tleV9sZW4gPSAwOwotCQkJTWVtU2V0 KHNsb3QtPnBzc19zaWduYWxGbGFncywgMCwgc2l6ZW9mKHNsb3QtPnBzc19zaWduYWxGbGFncykp OwotCQkJcGdfYXRvbWljX2luaXRfdTY0KCZzbG90LT5wc3NfYmFycmllckdlbmVyYXRpb24sIFBH X1VJTlQ2NF9NQVgpOwotCQkJcGdfYXRvbWljX2luaXRfdTMyKCZzbG90LT5wc3NfYmFycmllckNo ZWNrTWFzaywgMCk7Ci0JCQlDb25kaXRpb25WYXJpYWJsZUluaXQoJnNsb3QtPnBzc19iYXJyaWVy Q1YpOwotCQl9CisJCVNwaW5Mb2NrSW5pdCgmc2xvdC0+cHNzX211dGV4KTsKKwkJcGdfYXRvbWlj X2luaXRfdTMyKCZzbG90LT5wc3NfcGlkLCAwKTsKKwkJc2xvdC0+cHNzX2NhbmNlbF9rZXlfbGVu ID0gMDsKKwkJTWVtU2V0KHNsb3QtPnBzc19zaWduYWxGbGFncywgMCwgc2l6ZW9mKHNsb3QtPnBz c19zaWduYWxGbGFncykpOworCQlwZ19hdG9taWNfaW5pdF91NjQoJnNsb3QtPnBzc19iYXJyaWVy R2VuZXJhdGlvbiwgUEdfVUlOVDY0X01BWCk7CisJCXBnX2F0b21pY19pbml0X3UzMigmc2xvdC0+ cHNzX2JhcnJpZXJDaGVja01hc2ssIDApOworCQlDb25kaXRpb25WYXJpYWJsZUluaXQoJnNsb3Qt PnBzc19iYXJyaWVyQ1YpOwogCX0KIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvc2htZW0uYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMKaW5kZXggOWYz NjJjZTg2NDEuLmZhYTBmY2JkMjFlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9zaG1lbS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMKQEAgLTE5LDYg KzE5LDggQEAKICAqIG1ldGhvZHMpLiAgVGhlIHJvdXRpbmVzIGluIHRoaXMgZmlsZSBhcmUgdXNl ZCBmb3IgYWxsb2NhdGluZyBhbmQKICAqIGJpbmRpbmcgdG8gc2hhcmVkIG1lbW9yeSBkYXRhIHN0 cnVjdHVyZXMuCiAgKgorICogRklYTUU6IE5PVEVTIGJlbG93IGFyZSBvdXRkYXRlZAorICoKICAq IE5PVEVTOgogICoJCShhKSBUaGVyZSBhcmUgdGhyZWUga2luZHMgb2Ygc2hhcmVkIG1lbW9yeSBk YXRhIHN0cnVjdHVyZXMKICAqCWF2YWlsYWJsZSB0byBQT1NUR1JFUzogZml4ZWQtc2l6ZSBzdHJ1 Y3R1cmVzLCBxdWV1ZXMgYW5kIGhhc2gKQEAgLTc2LDYgKzc4LDE2IEBACiAjaW5jbHVkZSAic3Rv cmFnZS9zcGluLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKIAorLyogc2l6ZSBjb25z dGFudHMgZm9yIHRoZSBzaG1lbSBpbmRleCB0YWJsZSAqLworIC8qIG1heCBzaXplIG9mIGRhdGEg c3RydWN0dXJlIHN0cmluZyBuYW1lICovCisjZGVmaW5lIFNITUVNX0lOREVYX0tFWVNJWkUJCSAo NDgpCisgLyogZXN0aW1hdGVkIHNpemUgb2YgdGhlIHNobWVtIGluZGV4IHRhYmxlIChub3QgYSBo YXJkIGxpbWl0KSAqLworI2RlZmluZSBTSE1FTV9JTkRFWF9TSVpFCQkgKDY0KQorCisvKiB0aGVz ZSBhcmUgaW4gcG9zdG1hc3RlciBwcml2YXRlIG1lbW9yeSAqLworc3RhdGljIFNobWVtU3RydWN0 RGVzYyAqcmVnaXN0cnlbU0hNRU1fSU5ERVhfU0laRV07CitzdGF0aWMgaW50IG51bV9yZWdpc3Ry YXRpb25zID0gMDsKKwogLyoKICAqIFRoaXMgaXMgdGhlIGZpcnN0IGRhdGEgc3RydWN0dXJlIHN0 b3JlZCBpbiB0aGUgc2hhcmVkIG1lbW9yeSBzZWdtZW50LCBhdAogICogdGhlIG9mZnNldCB0aGF0 IFBHU2htZW1IZWFkZXItPmNvbnRlbnRfb2Zmc2V0IHBvaW50cyB0by4gIEFsbG9jYXRpb25zIGJ5 CkBAIC05NSw2ICsxMDcsOSBAQCB0eXBlZGVmIHN0cnVjdCBTaG1lbUFsbG9jYXRvckRhdGEKIAog c3RhdGljIHZvaWQgKlNobWVtQWxsb2NSYXcoU2l6ZSBzaXplLCBTaXplICphbGxvY2F0ZWRfc2l6 ZSk7CiAKK3N0YXRpYyB2b2lkIHNobWVtX2hhc2hfaW5pdCh2b2lkICphcmcpOworc3RhdGljIHZv aWQgc2htZW1faGFzaF9hdHRhY2godm9pZCAqYXJnKTsKKwogLyogc2hhcmVkIG1lbW9yeSBnbG9i YWwgdmFyaWFibGVzICovCiAKIHN0YXRpYyBQR1NobWVtSGVhZGVyICpTaG1lbVNlZ0hkcjsJLyog c2hhcmVkIG1lbSBzZWdtZW50IGhlYWRlciAqLwpAQCAtMTAzLDEzICsxMTgsMTM3IEBAIHN0YXRp YyB2b2lkICpTaG1lbUVuZDsJCQkvKiBlbmQrMSBhZGRyZXNzIG9mIHNoYXJlZCBtZW1vcnkgKi8K IAogc3RhdGljIFNobWVtQWxsb2NhdG9yRGF0YSAqU2htZW1BbGxvY2F0b3I7CiBzbG9ja190ICAg ICpTaG1lbUxvY2s7CQkJLyogcG9pbnRzIHRvIFNobWVtQWxsb2NhdG9yLT5zaG1lbV9sb2NrICov Ci1zdGF0aWMgSFRBQiAqU2htZW1JbmRleCA9IE5VTEw7IC8qIHByaW1hcnkgaW5kZXggaGFzaHRh YmxlIGZvciBzaG1lbSAqLworCisKK3N0YXRpYyBTaG1lbUhhc2hEZXNjIFNobWVtSW5kZXhIYXNo RGVzYyA9IHsKKwkubmFtZSA9ICJTaG1lbUluZGV4IiwKKwkuaW5pdF9zaXplID0gU0hNRU1fSU5E RVhfU0laRSwKKwkubWF4X3NpemUgPSBTSE1FTV9JTkRFWF9TSVpFLAorfTsKKworIC8qIHByaW1h cnkgaW5kZXggaGFzaHRhYmxlIGZvciBzaG1lbSAqLworI2RlZmluZSBTaG1lbUluZGV4IChTaG1l bUluZGV4SGFzaERlc2MucHRyKQorCiAKIC8qIFRvIGdldCByZWxpYWJsZSByZXN1bHRzIGZvciBO VU1BIGlucXVpcnkgd2UgbmVlZCB0byAidG91Y2ggcGFnZXMiIG9uY2UgKi8KIHN0YXRpYyBib29s IGZpcnN0TnVtYVRvdWNoID0gdHJ1ZTsKIAogRGF0dW0JCXBnX251bWFfYXZhaWxhYmxlKFBHX0ZV TkNUSU9OX0FSR1MpOwogCisKK3ZvaWQKK1NobWVtUmVnaXN0ZXJTdHJ1Y3QoU2htZW1TdHJ1Y3RE ZXNjICpkZXNjKQoreworCWVsb2coREVCVUcyLCAiUkVHSVNURVI6ICVzIHdpdGggc2l6ZSAlemQi LCBkZXNjLT5uYW1lLCBkZXNjLT5zaXplKTsKKworCXJlZ2lzdHJ5W251bV9yZWdpc3RyYXRpb25z KytdID0gZGVzYzsKK30KKworc2l6ZV90CitTaG1lbVJlZ2lzdGVyZWRTaXplKHZvaWQpCit7CisJ c2l6ZV90CQlzaXplOworCisJc2l6ZSA9IDA7CisJZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fcmVn aXN0cmF0aW9uczsgaSsrKQorCXsKKwkJc2l6ZSA9IGFkZF9zaXplKHNpemUsIHJlZ2lzdHJ5W2ld LT5zaXplKTsKKwkJc2l6ZSA9IGFkZF9zaXplKHNpemUsIHJlZ2lzdHJ5W2ldLT5leHRyYV9zaXpl KTsKKwl9CisKKwllbG9nKERFQlVHMiwgIlNJWkU6IHRvdGFsICV6ZCIsIHNpemUpOworCisJcmV0 dXJuIHNpemU7Cit9CisKK3ZvaWQKK1NobWVtSW5pdFJlZ2lzdGVyZWQodm9pZCkKK3sKKwkvKiBT aG91bGQgYmUgY2FsbGVkIG9ubHkgYnkgdGhlIHBvc3RtYXN0ZXIgb3IgYSBzdGFuZGFsb25lIGJh Y2tlbmQuICovCisJQXNzZXJ0KCFJc1VuZGVyUG9zdG1hc3Rlcik7CisKKwlmb3IgKGludCBpID0g MDsgaSA8IG51bV9yZWdpc3RyYXRpb25zOyBpKyspCisJeworCQlzaXplX3QJCWFsbG9jYXRlZF9z aXplOworCQl2b2lkCSAgICpzdHJ1Y3RQdHI7CisJCWJvb2wJCWZvdW5kOworCQlTaG1lbUluZGV4 RW50ICpyZXN1bHQ7CisKKwkJZWxvZyhERUJVRzIsICJJTklUIFslZC8lZF06ICVzIiwgaSwgbnVt X3JlZ2lzdHJhdGlvbnMsIHJlZ2lzdHJ5W2ldLT5uYW1lKTsKKworCQkvKiBsb29rIGl0IHVwIGlu IHRoZSBzaG1lbSBpbmRleCAqLworCQlyZXN1bHQgPSAoU2htZW1JbmRleEVudCAqKQorCQkJaGFz aF9zZWFyY2goU2htZW1JbmRleCwgcmVnaXN0cnlbaV0tPm5hbWUsIEhBU0hfRU5URVJfTlVMTCwg JmZvdW5kKTsKKwkJaWYgKCFyZXN1bHQpCisJCXsKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShl cnJjb2RlKEVSUkNPREVfT1VUX09GX01FTU9SWSksCisJCQkJCSBlcnJtc2coImNvdWxkIG5vdCBj cmVhdGUgU2htZW1JbmRleCBlbnRyeSBmb3IgZGF0YSBzdHJ1Y3R1cmUgXCIlc1wiIiwKKwkJCQkJ CQlyZWdpc3RyeVtpXS0+bmFtZSkpKTsKKwkJfQorCQlpZiAoZm91bmQpCisJCQllbG9nKEVSUk9S LCAic2htZW0gc3RydWN0IFwiJXNcIiBpcyBhbHJlYWR5IGluaXRpYWxpemVkIiwgcmVnaXN0cnlb aV0tPm5hbWUpOworCisJCS8qIGFsbG9jYXRlIGFuZCBpbml0aWFsaXplIGl0ICovCisJCXN0cnVj dFB0ciA9IFNobWVtQWxsb2NSYXcocmVnaXN0cnlbaV0tPnNpemUsICZhbGxvY2F0ZWRfc2l6ZSk7 CisJCWlmIChzdHJ1Y3RQdHIgPT0gTlVMTCkKKwkJeworCQkJLyogb3V0IG9mIG1lbW9yeTsgcmVt b3ZlIHRoZSBmYWlsZWQgU2htZW1JbmRleCBlbnRyeSAqLworCQkJaGFzaF9zZWFyY2goU2htZW1J bmRleCwgcmVnaXN0cnlbaV0tPm5hbWUsIEhBU0hfUkVNT1ZFLCBOVUxMKTsKKwkJCWVyZXBvcnQo RVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfT1VUX09GX01FTU9SWSksCisJCQkJCSBlcnJt c2coIm5vdCBlbm91Z2ggc2hhcmVkIG1lbW9yeSBmb3IgZGF0YSBzdHJ1Y3R1cmUiCisJCQkJCQkJ IiBcIiVzXCIgKCV6dSBieXRlcyByZXF1ZXN0ZWQpIiwKKwkJCQkJCQlyZWdpc3RyeVtpXS0+bmFt ZSwgcmVnaXN0cnlbaV0tPnNpemUpKSk7CisJCX0KKwkJcmVzdWx0LT5zaXplID0gcmVnaXN0cnlb aV0tPnNpemU7CisJCXJlc3VsdC0+YWxsb2NhdGVkX3NpemUgPSBhbGxvY2F0ZWRfc2l6ZTsKKwkJ cmVzdWx0LT5sb2NhdGlvbiA9IHN0cnVjdFB0cjsKKworCQlyZWdpc3RyeVtpXS0+cHRyID0gc3Ry dWN0UHRyOworCQlpZiAocmVnaXN0cnlbaV0tPmluaXRfZm4pCisJCQlyZWdpc3RyeVtpXS0+aW5p dF9mbihyZWdpc3RyeVtpXS0+aW5pdF9mbl9hcmcpOworCX0KK30KKworI2lmZGVmIEVYRUNfQkFD S0VORAordm9pZAorU2htZW1BdHRhY2hSZWdpc3RlcmVkKHZvaWQpCit7CisJLyogTXVzdCBiZSBp bml0aWFsaXppbmcgYSAobm9uLXN0YW5kYWxvbmUpIGJhY2tlbmQgKi8KKwlBc3NlcnQoSXNVbmRl clBvc3RtYXN0ZXIpOworCUFzc2VydChTaG1lbUFsbG9jYXRvci0+aW5kZXggIT0gTlVMTCk7CisK KwlMV0xvY2tBY3F1aXJlKFNobWVtSW5kZXhMb2NrLCBMV19FWENMVVNJVkUpOworCisJZm9yIChp bnQgaSA9IDA7IGkgPCBudW1fcmVnaXN0cmF0aW9uczsgaSsrKQorCXsKKwkJYm9vbAkJZm91bmQ7 CisJCVNobWVtSW5kZXhFbnQgKnJlc3VsdDsKKworCQllbG9nKExPRywgIkFUVEFDSCBbJWQvJWRd OiAlcyIsIGksIG51bV9yZWdpc3RyYXRpb25zLCByZWdpc3RyeVtpXS0+bmFtZSk7CisKKwkJLyog bG9vayBpdCB1cCBpbiB0aGUgc2htZW0gaW5kZXggKi8KKwkJcmVzdWx0ID0gKFNobWVtSW5kZXhF bnQgKikKKwkJCWhhc2hfc2VhcmNoKFNobWVtSW5kZXgsIHJlZ2lzdHJ5W2ldLT5uYW1lLCBIQVNI X0ZJTkQsICZmb3VuZCk7CisJCWlmICghZm91bmQpCisJCXsKKwkJCWVyZXBvcnQoRVJST1IsCisJ CQkJCShlcnJjb2RlKEVSUkNPREVfT1VUX09GX01FTU9SWSksCisJCQkJCSBlcnJtc2coImNvdWxk IG5vdCBmaW5kIFNobWVtSW5kZXggZW50cnkgZm9yIGRhdGEgc3RydWN0dXJlIFwiJXNcIiIsCisJ CQkJCQkJcmVnaXN0cnlbaV0tPm5hbWUpKSk7CisJCX0KKworCQlyZWdpc3RyeVtpXS0+cHRyID0g cmVzdWx0LT5sb2NhdGlvbjsKKworCQlpZiAocmVnaXN0cnlbaV0tPmF0dGFjaF9mbikKKwkJCXJl Z2lzdHJ5W2ldLT5hdHRhY2hfZm4ocmVnaXN0cnlbaV0tPmF0dGFjaF9mbl9hcmcpOworCX0KKwor CUxXTG9ja1JlbGVhc2UoU2htZW1JbmRleExvY2spOworfQorI2VuZGlmCisKIC8qCiAgKglJbml0 U2htZW1BbGxvY2F0b3IoKSAtLS0gc2V0IHVwIGJhc2ljIHBvaW50ZXJzIHRvIHNoYXJlZCBtZW1v cnkuCiAgKgpAQCAtMjkyLDYgKzQzMSw5OCBAQCBJbml0U2htZW1JbmRleCh2b2lkKQogCQkJCQkJ CSAgIEhBU0hfRUxFTSB8IEhBU0hfU1RSSU5HUyk7CiB9CiAKKy8qCisgKiBTaG1lbUluaXRIYXNo IC0tIENyZWF0ZSBhbmQgaW5pdGlhbGl6ZSwgb3IgYXR0YWNoIHRvLCBhCisgKgkJc2hhcmVkIG1l bW9yeSBoYXNoIHRhYmxlLgorICoKKyAqIFdlIGFzc3VtZSBjYWxsZXIgaXMgZG9pbmcgc29tZSBr aW5kIG9mIHN5bmNocm9uaXphdGlvbgorICogc28gdGhhdCB0d28gcHJvY2Vzc2VzIGRvbid0IHRy eSB0byBjcmVhdGUvaW5pdGlhbGl6ZSB0aGUgc2FtZQorICogdGFibGUgYXQgb25jZS4gIChJbiBw cmFjdGljZSwgYWxsIGNyZWF0aW9ucyBhcmUgZG9uZSBpbiB0aGUgcG9zdG1hc3RlcgorICogcHJv Y2VzczsgY2hpbGQgcHJvY2Vzc2VzIHNob3VsZCBhbHdheXMgYmUgYXR0YWNoaW5nIHRvIGV4aXN0 aW5nIHRhYmxlcy4pCisgKgorICogbWF4X3NpemUgaXMgdGhlIGVzdGltYXRlZCBtYXhpbXVtIG51 bWJlciBvZiBoYXNodGFibGUgZW50cmllcy4gIFRoaXMgaXMKKyAqIG5vdCBhIGhhcmQgbGltaXQs IGJ1dCB0aGUgYWNjZXNzIGVmZmljaWVuY3kgd2lsbCBkZWdyYWRlIGlmIGl0IGlzCisgKiBleGNl ZWRlZCBzdWJzdGFudGlhbGx5IChzaW5jZSBpdCdzIHVzZWQgdG8gY29tcHV0ZSBkaXJlY3Rvcnkg c2l6ZSBhbmQKKyAqIHRoZSBoYXNoIHRhYmxlIGJ1Y2tldHMgd2lsbCBnZXQgb3ZlcmZ1bGwpLgor ICoKKyAqIGluaXRfc2l6ZSBpcyB0aGUgbnVtYmVyIG9mIGhhc2h0YWJsZSBlbnRyaWVzIHRvIHBy ZWFsbG9jYXRlLiAgRm9yIGEgdGFibGUKKyAqIHdob3NlIG1heGltdW0gc2l6ZSBpcyBjZXJ0YWlu LCB0aGlzIHNob3VsZCBiZSBlcXVhbCB0byBtYXhfc2l6ZTsgdGhhdAorICogZW5zdXJlcyB0aGF0 IG5vIHJ1bi10aW1lIG91dC1vZi1zaGFyZWQtbWVtb3J5IGZhaWx1cmVzIGNhbiBvY2N1ci4KKyAq CisgKiAqaW5mb1AgYW5kIGhhc2hfZmxhZ3MgbXVzdCBzcGVjaWZ5IGF0IGxlYXN0IHRoZSBlbnRy eSBzaXplcyBhbmQga2V5CisgKiBjb21wYXJpc29uIHNlbWFudGljcyAoc2VlIGhhc2hfY3JlYXRl KCkpLiAgRmxhZyBiaXRzIGFuZCB2YWx1ZXMgc3BlY2lmaWMKKyAqIHRvIHNoYXJlZC1tZW1vcnkg aGFzaCB0YWJsZXMgYXJlIGFkZGVkIGhlcmUsIGV4Y2VwdCB0aGF0IGNhbGxlcnMgbWF5CisgKiBj aG9vc2UgdG8gc3BlY2lmeSBIQVNIX1BBUlRJVElPTiBhbmQvb3IgSEFTSF9GSVhFRF9TSVpFLgor ICoKKyAqIE5vdGU6IGJlZm9yZSBQb3N0Z3JlcyA5LjAsIHRoaXMgZnVuY3Rpb24gcmV0dXJuZWQg TlVMTCBmb3Igc29tZSBmYWlsdXJlCisgKiBjYXNlcy4gIE5vdywgaXQgYWx3YXlzIHRocm93cyBl cnJvciBpbnN0ZWFkLCBzbyBjYWxsZXJzIG5lZWQgbm90IGNoZWNrCisgKiBmb3IgTlVMTC4KKyAq Lwordm9pZAorU2htZW1SZWdpc3Rlckhhc2goU2htZW1IYXNoRGVzYyAqZGVzYywJCS8qIGNvbmZp Z3VyYXRpb24gKi8KKwkJCQkgIEhBU0hDVEwgKmluZm9QLAkvKiBpbmZvIGFib3V0IGtleSBhbmQg YnVja2V0IHNpemUgKi8KKwkJCQkgIGludCBoYXNoX2ZsYWdzKQkvKiBpbmZvIGFib3V0IGluZm9Q ICovCit7CisJLyoKKwkgKiBIYXNoIHRhYmxlcyBhbGxvY2F0ZWQgaW4gc2hhcmVkIG1lbW9yeSBo YXZlIGEgZml4ZWQgZGlyZWN0b3J5OyBpdCBjYW4ndAorCSAqIGdyb3cgb3Igb3RoZXIgYmFja2Vu ZHMgd291bGRuJ3QgYmUgYWJsZSB0byBmaW5kIGl0LiBTbywgbWFrZSBzdXJlIHdlCisJICogbWFr ZSBpdCBiaWcgZW5vdWdoIHRvIHN0YXJ0IHdpdGguCisJICoKKwkgKiBUaGUgc2hhcmVkIG1lbW9y eSBhbGxvY2F0b3IgbXVzdCBiZSBzcGVjaWZpZWQgdG9vLgorCSAqLworCWluZm9QLT5kc2l6ZSA9 IGluZm9QLT5tYXhfZHNpemUgPSBoYXNoX3NlbGVjdF9kaXJzaXplKGRlc2MtPm1heF9zaXplKTsK KwlpbmZvUC0+YWxsb2MgPSBTaG1lbUFsbG9jTm9FcnJvcjsKKwloYXNoX2ZsYWdzIHw9IEhBU0hf U0hBUkVEX01FTSB8IEhBU0hfQUxMT0MgfCBIQVNIX0RJUlNJWkU7CisKKwkvKiBsb29rIGl0IHVw IGluIHRoZSBzaG1lbSBpbmRleCAqLworCW1lbXNldCgmZGVzYy0+YmFzZV9kZXNjLCAwLCBzaXpl b2YoZGVzYy0+YmFzZV9kZXNjKSk7CisJZGVzYy0+YmFzZV9kZXNjLm5hbWUgPSBkZXNjLT5uYW1l OworCWRlc2MtPmJhc2VfZGVzYy5zaXplID0gaGFzaF9nZXRfc2hhcmVkX3NpemUoaW5mb1AsIGhh c2hfZmxhZ3MpOworCWRlc2MtPmJhc2VfZGVzYy5pbml0X2ZuID0gc2htZW1faGFzaF9pbml0Owor CWRlc2MtPmJhc2VfZGVzYy5pbml0X2ZuX2FyZyA9IGRlc2M7CisJZGVzYy0+YmFzZV9kZXNjLmF0 dGFjaF9mbiA9IHNobWVtX2hhc2hfYXR0YWNoOworCWRlc2MtPmJhc2VfZGVzYy5hdHRhY2hfZm5f YXJnID0gZGVzYzsKKworCWRlc2MtPmJhc2VfZGVzYy5leHRyYV9zaXplID0gaGFzaF9lc3RpbWF0 ZV9zaXplKGRlc2MtPm1heF9zaXplLCBpbmZvUC0+ZW50cnlzaXplKSAtIGRlc2MtPmJhc2VfZGVz Yy5zaXplOworCisJZGVzYy0+aGFzaF9mbGFncyA9IGhhc2hfZmxhZ3M7CisJZGVzYy0+aW5mb1Ag PSBNZW1vcnlDb250ZXh0QWxsb2MoVG9wTWVtb3J5Q29udGV4dCwgc2l6ZW9mKEhBU0hDVEwpKTsK KwltZW1jcHkoZGVzYy0+aW5mb1AsIGluZm9QLCBzaXplb2YoSEFTSENUTCkpOworCisJU2htZW1S ZWdpc3RlclN0cnVjdCgmZGVzYy0+YmFzZV9kZXNjKTsKK30KKworc3RhdGljIHZvaWQKK3NobWVt X2hhc2hfaW5pdCh2b2lkICphcmcpCit7CisJU2htZW1IYXNoRGVzYyAqZGVzYyA9IChTaG1lbUhh c2hEZXNjICopIGFyZzsKKwlpbnQJCQloYXNoX2ZsYWdzID0gZGVzYy0+aGFzaF9mbGFnczsKKwor CS8qIFBhc3MgbG9jYXRpb24gb2YgaGFzaHRhYmxlIGhlYWRlciB0byBoYXNoX2NyZWF0ZSAqLwor CWRlc2MtPnB0ciA9IGRlc2MtPmJhc2VfZGVzYy5wdHI7CisJZGVzYy0+aW5mb1AtPmhjdGwgPSAo SEFTSEhEUiAqKSBkZXNjLT5wdHI7CisKKwlkZXNjLT5wdHIgPSBoYXNoX2NyZWF0ZShkZXNjLT5u YW1lLCBkZXNjLT5pbml0X3NpemUsIGRlc2MtPmluZm9QLCBoYXNoX2ZsYWdzKTsKK30KKworc3Rh dGljIHZvaWQKK3NobWVtX2hhc2hfYXR0YWNoKHZvaWQgKmFyZykKK3sKKwlTaG1lbUhhc2hEZXNj ICpkZXNjID0gKFNobWVtSGFzaERlc2MgKikgYXJnOworCWludAkJCWhhc2hfZmxhZ3MgPSBkZXNj LT5oYXNoX2ZsYWdzOworCisJLyoKKwkgKiBpZiBpdCBhbHJlYWR5IGV4aXN0cywgYXR0YWNoIHRv IGl0IHJhdGhlciB0aGFuIGFsbG9jYXRlIGFuZCBpbml0aWFsaXplCisJICogbmV3IHNwYWNlCisJ ICovCisJaGFzaF9mbGFncyB8PSBIQVNIX0FUVEFDSDsKKworCS8qIFBhc3MgbG9jYXRpb24gb2Yg aGFzaHRhYmxlIGhlYWRlciB0byBoYXNoX2NyZWF0ZSAqLworCWRlc2MtPmluZm9QLT5oY3RsID0g KEhBU0hIRFIgKikgZGVzYy0+cHRyOworCisJZGVzYy0+cHRyID0gaGFzaF9jcmVhdGUoZGVzYy0+ bmFtZSwgZGVzYy0+aW5pdF9zaXplLCBkZXNjLT5pbmZvUCwgaGFzaF9mbGFncyk7Cit9CisKIC8q CiAgKiBTaG1lbUluaXRIYXNoIC0tIENyZWF0ZSBhbmQgaW5pdGlhbGl6ZSwgb3IgYXR0YWNoIHRv LCBhCiAgKgkJc2hhcmVkIG1lbW9yeSBoYXNoIHRhYmxlLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvc2ludmFsYWR0LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaW52 YWxhZHQuYwppbmRleCBhN2E3Y2M0ZjBhOS4uMGZlMGYyNTY5NzEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3NpbnZhbGFkdC5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL3NpbnZhbGFkdC5jCkBAIC0yMDMsNyArMjAzLDE2IEBAIHR5cGVkZWYgc3RydWN0IFNJU2Vn CiAgKi8KICNkZWZpbmUgTnVtUHJvY1N0YXRlU2xvdHMJKE1heEJhY2tlbmRzICsgTlVNX0FVWElM SUFSWV9QUk9DUykKIAotc3RhdGljIFNJU2VnICpzaG1JbnZhbEJ1ZmZlcjsJLyogcG9pbnRlciB0 byB0aGUgc2hhcmVkIGludmFsIGJ1ZmZlciAqLworc3RhdGljIHZvaWQgU2hhcmVkSW52YWxTaG1l bUluaXQodm9pZCAqYXJnKTsKKworc3RhdGljIFNobWVtU3RydWN0RGVzYyBTaGFyZWRJbnZhbFNo bWVtRGVzYyA9IHsKKwkubmFtZSA9ICJzaG1JbnZhbEJ1ZmZlciIsCisJLnNpemUgPSAwLAkvKiBk eW5hbWljICovCisJLmluaXRfZm4gPSBTaGFyZWRJbnZhbFNobWVtSW5pdCwKK307CisKKy8qIHBv aW50ZXIgdG8gdGhlIHNoYXJlZCBpbnZhbCBidWZmZXIgKi8KKyNkZWZpbmUgc2htSW52YWxCdWZm ZXIgKChTSVNlZyAqKSBTaGFyZWRJbnZhbFNobWVtRGVzYy5wdHIpCiAKIAogc3RhdGljIExvY2Fs VHJhbnNhY3Rpb25JZCBuZXh0TG9jYWxUcmFuc2FjdGlvbklkOwpAQCAtMjEyLDEwICsyMjEsMTEg QEAgc3RhdGljIHZvaWQgQ2xlYW51cEludmFsaWRhdGlvblN0YXRlKGludCBzdGF0dXMsIERhdHVt IGFyZyk7CiAKIAogLyoKLSAqIFNoYXJlZEludmFsU2htZW1TaXplIC0tLSByZXR1cm4gc2hhcmVk LW1lbW9yeSBzcGFjZSBuZWVkZWQKKyAqIFNoYXJlZEludmFsU2htZW1SZWdpc3RlcgorICoJCVJl Z2lzdGVyIHNoYXJlZCBtZW1vcnkgbmVlZHMgZm9yIHRoZSBTSSBtZXNzYWdlIGJ1ZmZlcgogICov Ci1TaXplCi1TaGFyZWRJbnZhbFNobWVtU2l6ZSh2b2lkKQordm9pZAorU2hhcmVkSW52YWxTaG1l bVJlZ2lzdGVyKHZvaWQpCiB7CiAJU2l6ZQkJc2l6ZTsKIApAQCAtMjIzLDI2ICsyMzMsMTcgQEAg U2hhcmVkSW52YWxTaG1lbVNpemUodm9pZCkKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgbXVsX3Np emUoc2l6ZW9mKFByb2NTdGF0ZSksIE51bVByb2NTdGF0ZVNsb3RzKSk7CS8qIHByb2NTdGF0ZSAq LwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBtdWxfc2l6ZShzaXplb2YoaW50KSwgTnVtUHJvY1N0 YXRlU2xvdHMpKTsJLyogcGdwcm9jbm9zICovCiAKLQlyZXR1cm4gc2l6ZTsKKwkvKiBBbGxvY2F0 ZSBzcGFjZSBpbiBzaGFyZWQgbWVtb3J5ICovCisJU2hhcmVkSW52YWxTaG1lbURlc2Muc2l6ZSA9 IHNpemU7CisJU2htZW1SZWdpc3RlclN0cnVjdCgmU2hhcmVkSW52YWxTaG1lbURlc2MpOwogfQog Ci0vKgotICogU2hhcmVkSW52YWxTaG1lbUluaXQKLSAqCQlDcmVhdGUgYW5kIGluaXRpYWxpemUg dGhlIFNJIG1lc3NhZ2UgYnVmZmVyCi0gKi8KLXZvaWQKLVNoYXJlZEludmFsU2htZW1Jbml0KHZv aWQpCitzdGF0aWMgdm9pZAorU2hhcmVkSW52YWxTaG1lbUluaXQodm9pZCAqYXJnKQogewogCWlu dAkJCWk7Ci0JYm9vbAkJZm91bmQ7Ci0KLQkvKiBBbGxvY2F0ZSBzcGFjZSBpbiBzaGFyZWQgbWVt b3J5ICovCi0Jc2htSW52YWxCdWZmZXIgPSAoU0lTZWcgKikKLQkJU2htZW1Jbml0U3RydWN0KCJz aG1JbnZhbEJ1ZmZlciIsIFNoYXJlZEludmFsU2htZW1TaXplKCksICZmb3VuZCk7Ci0JaWYgKGZv dW5kKQotCQlyZXR1cm47CiAKLQkvKiBDbGVhciBtZXNzYWdlIGNvdW50ZXJzLCBzYXZlIHNpemUg b2YgcHJvY1N0YXRlIGFycmF5LCBpbml0IHNwaW5sb2NrICovCisJLyogQ2xlYXIgbWVzc2FnZSBj b3VudGVycywgc2F2ZSBzaXplIG9mIHByb2NTdGF0ZSBhcnJheSBGSVhNRSwgaW5pdCBzcGlubG9j ayAqLwogCXNobUludmFsQnVmZmVyLT5taW5Nc2dOdW0gPSAwOwogCXNobUludmFsQnVmZmVyLT5t YXhNc2dOdW0gPSAwOwogCXNobUludmFsQnVmZmVyLT5uZXh0VGhyZXNob2xkID0gQ0xFQU5VUF9N SU47CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYwppbmRleCBjN2EwMDFiM2I3OS4uODUzNzViNTE5NWUg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKKysrIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYwpAQCAtNzMsMTMgKzczLDMzIEBAIFBHUFJPQwkgICAq TXlQcm9jID0gTlVMTDsKICAqIHJlbGF0aXZlbHkgaW5mcmVxdWVudGx5IChvbmx5IGF0IGJhY2tl bmQgc3RhcnR1cCBvciBzaHV0ZG93bikgYW5kIG5vdCBmb3IKICAqIHZlcnkgbG9uZywgc28gYSBz cGlubG9jayBpcyBva2F5LgogICovCi1OT05fRVhFQ19TVEFUSUMgc2xvY2tfdCAqUHJvY1N0cnVj dExvY2sgPSBOVUxMOworI2RlZmluZSBQcm9jU3RydWN0TG9jayAoJlByb2NHbG9iYWwtPmZyZWVQ cm9jc0xvY2spCisKK3N0YXRpYyB2b2lkIFByb2NHbG9iYWxTaG1lbUluaXQodm9pZCAqYXJnKTsK Kworc3RhdGljIFNobWVtU3RydWN0RGVzYyBQcm9jR2xvYmFsU2htZW1EZXNjID0geworCS5uYW1l ID0gIlByb2MgSGVhZGVyIiwKKwkuc2l6ZSA9IHNpemVvZihQUk9DX0hEUiksCisJLmluaXRfZm4g PSBQcm9jR2xvYmFsU2htZW1Jbml0LAorfTsKKworc3RhdGljIFNobWVtU3RydWN0RGVzYyBQcm9j R2xvYmFsQWxsUHJvY3NTaG1lbURlc2MgPSB7CisJLm5hbWUgPSAiUEdQUk9DIHN0cnVjdHVyZXMi LAorCS5zaXplID0gMCwgLyogZHluYW1pYyAqLworfTsKKworc3RhdGljIFNobWVtU3RydWN0RGVz YyBGYXN0UGF0aExvY2tBcnJheVNobWVtRGVzYyA9IHsKKwkubmFtZSA9ICJGYXN0LVBhdGggTG9j ayBBcnJheSIsCisJLnNpemUgPSAwLCAvKiBkeW5hbWljICovCit9OwogCiAvKiBQb2ludGVycyB0 byBzaGFyZWQtbWVtb3J5IHN0cnVjdHVyZXMgKi8KIFBST0NfSERSICAgKlByb2NHbG9iYWwgPSBO VUxMOwogTk9OX0VYRUNfU1RBVElDIFBHUFJPQyAqQXV4aWxpYXJ5UHJvY3MgPSBOVUxMOwogUEdQ Uk9DCSAgICpQcmVwYXJlZFhhY3RQcm9jcyA9IE5VTEw7CiAKK3N0YXRpYyB1aW50MzIgVG90YWxQ cm9jczsKKwogc3RhdGljIERlYWRMb2NrU3RhdGUgZGVhZGxvY2tfc3RhdGUgPSBEU19OT1RfWUVU X0NIRUNLRUQ7CiAKIC8qIElzIGEgZGVhZGxvY2sgY2hlY2sgcGVuZGluZz8gKi8KQEAgLTkxLDI0 ICsxMTEsNiBAQCBzdGF0aWMgdm9pZCBBdXhpbGlhcnlQcm9jS2lsbChpbnQgY29kZSwgRGF0dW0g YXJnKTsKIHN0YXRpYyB2b2lkIENoZWNrRGVhZExvY2sodm9pZCk7CiAKIAotLyoKLSAqIFJlcG9y dCBzaGFyZWQtbWVtb3J5IHNwYWNlIG5lZWRlZCBieSBQR1BST0MuCi0gKi8KLXN0YXRpYyBTaXpl Ci1QR1Byb2NTaG1lbVNpemUodm9pZCkKLXsKLQlTaXplCQlzaXplID0gMDsKLQlTaXplCQlUb3Rh bFByb2NzID0KLQkJYWRkX3NpemUoTWF4QmFja2VuZHMsIGFkZF9zaXplKE5VTV9BVVhJTElBUllf UFJPQ1MsIG1heF9wcmVwYXJlZF94YWN0cykpOwotCi0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIG11 bF9zaXplKFRvdGFsUHJvY3MsIHNpemVvZihQR1BST0MpKSk7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNp emUsIG11bF9zaXplKFRvdGFsUHJvY3MsIHNpemVvZigqUHJvY0dsb2JhbC0+eGlkcykpKTsKLQlz aXplID0gYWRkX3NpemUoc2l6ZSwgbXVsX3NpemUoVG90YWxQcm9jcywgc2l6ZW9mKCpQcm9jR2xv YmFsLT5zdWJ4aWRTdGF0ZXMpKSk7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIG11bF9zaXplKFRv dGFsUHJvY3MsIHNpemVvZigqUHJvY0dsb2JhbC0+c3RhdHVzRmxhZ3MpKSk7Ci0KLQlyZXR1cm4g c2l6ZTsKLX0KLQogLyoKICAqIFJlcG9ydCBzaGFyZWQtbWVtb3J5IHNwYWNlIG5lZWRlZCBieSBG YXN0LVBhdGggbG9ja3MuCiAgKi8KQEAgLTExNiw4ICsxMTgsNiBAQCBzdGF0aWMgU2l6ZQogRmFz dFBhdGhMb2NrU2htZW1TaXplKHZvaWQpCiB7CiAJU2l6ZQkJc2l6ZSA9IDA7Ci0JU2l6ZQkJVG90 YWxQcm9jcyA9Ci0JCWFkZF9zaXplKE1heEJhY2tlbmRzLCBhZGRfc2l6ZShOVU1fQVVYSUxJQVJZ X1BST0NTLCBtYXhfcHJlcGFyZWRfeGFjdHMpKTsKIAlTaXplCQlmcExvY2tCaXRzU2l6ZSwKIAkJ CQlmcFJlbElkU2l6ZTsKIApAQCAtMTMzLDI1ICsxMzMsNiBAQCBGYXN0UGF0aExvY2tTaG1lbVNp emUodm9pZCkKIAlyZXR1cm4gc2l6ZTsKIH0KIAotLyoKLSAqIFJlcG9ydCBzaGFyZWQtbWVtb3J5 IHNwYWNlIG5lZWRlZCBieSBJbml0UHJvY0dsb2JhbC4KLSAqLwotU2l6ZQotUHJvY0dsb2JhbFNo bWVtU2l6ZSh2b2lkKQotewotCVNpemUJCXNpemUgPSAwOwotCi0JLyogUHJvY0dsb2JhbCAqLwot CXNpemUgPSBhZGRfc2l6ZShzaXplLCBzaXplb2YoUFJPQ19IRFIpKTsKLQlzaXplID0gYWRkX3Np emUoc2l6ZSwgc2l6ZW9mKHNsb2NrX3QpKTsKLQotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBQR1Nl bWFwaG9yZVNobWVtU2l6ZShQcm9jR2xvYmFsU2VtYXMoKSkpOwotCXNpemUgPSBhZGRfc2l6ZShz aXplLCBQR1Byb2NTaG1lbVNpemUoKSk7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIEZhc3RQYXRo TG9ja1NobWVtU2l6ZSgpKTsKLQotCXJldHVybiBzaXplOwotfQotCiAvKgogICogUmVwb3J0IG51 bWJlciBvZiBzZW1hcGhvcmVzIG5lZWRlZCBieSBJbml0UHJvY0dsb2JhbC4KICAqLwpAQCAtMTg2 LDM1ICsxNjcsNjMgQEAgUHJvY0dsb2JhbFNlbWFzKHZvaWQpCiAgKgkgIGltcGxlbWVudGF0aW9u IHR5cGljYWxseSByZXF1aXJlcyB1cyB0byBjcmVhdGUgc2VtYXBob3JlcyBpbiB0aGUKICAqCSAg cG9zdG1hc3Rlciwgbm90IGluIGJhY2tlbmRzLgogICoKLSAqIE5vdGU6IHRoaXMgaXMgTk9UIGNh bGxlZCBieSBpbmRpdmlkdWFsIGJhY2tlbmRzIHVuZGVyIGEgcG9zdG1hc3RlciwKKyAqIE5vdGU6 IHRoaXMgaXMgTk9UIGNhbGxlZCBieSBpbmRpdmlkdWFsIGJhY2tlbmRzIHVuZGVyIGEgcG9zdG1h c3RlciwgWFhYCiAgKiBub3QgZXZlbiBpbiB0aGUgRVhFQ19CQUNLRU5EIGNhc2UuICBUaGUgUHJv Y0dsb2JhbCBhbmQgQXV4aWxpYXJ5UHJvY3MKICAqIHBvaW50ZXJzIG11c3QgYmUgcHJvcGFnYXRl ZCBzcGVjaWFsbHkgZm9yIEVYRUNfQkFDS0VORCBvcGVyYXRpb24uCiAgKi8KIHZvaWQKLUluaXRQ cm9jR2xvYmFsKHZvaWQpCitQcm9jR2xvYmFsU2htZW1SZWdpc3Rlcih2b2lkKQoreworCVNpemUJ CXNpemUgPSAwOworCisJLyoKKwkgKiBSZXNlcnZlIGFsbCB0aGUgUEdQUk9DIHN0cnVjdHVyZXMg d2UnbGwgbmVlZC4gIFRoZXJlIGFyZQorCSAqIHNpeCBzZXBhcmF0ZSBjb25zdW1lcnM6ICgxKSBu b3JtYWwgYmFja2VuZHMsICgyKSBhdXRvdmFjdXVtIHdvcmtlcnMgYW5kCisJICogc3BlY2lhbCB3 b3JrZXJzLCAoMykgYmFja2dyb3VuZCB3b3JrZXJzLCAoNCkgd2Fsc2VuZGVycywgKDUpIGF1eGls aWFyeQorCSAqIHByb2Nlc3NlcywgYW5kICg2KSBwcmVwYXJlZCB0cmFuc2FjdGlvbnMuICAoRm9y IGxhcmdlbHktaGlzdG9yaWNhbAorCSAqIHJlYXNvbnMsIHdlIGNvbWJpbmUgYXV0b3ZhY3V1bSBh bmQgc3BlY2lhbCB3b3JrZXJzIGludG8gb25lIGNhdGVnb3J5CisJICogd2l0aCBhIHNpbmdsZSBm cmVlbGlzdC4pICBFYWNoIFBHUFJPQyBzdHJ1Y3R1cmUgaXMgZGVkaWNhdGVkIHRvIGV4YWN0bHkK KwkgKiBvbmUgb2YgdGhlc2UgcHVycG9zZXMsIGFuZCB0aGV5IGRvIG5vdCBtb3ZlIGJldHdlZW4g Z3JvdXBzLgorCSAqLworCVRvdGFsUHJvY3MgPQorCQlhZGRfc2l6ZShNYXhCYWNrZW5kcywgYWRk X3NpemUoTlVNX0FVWElMSUFSWV9QUk9DUywgbWF4X3ByZXBhcmVkX3hhY3RzKSk7CisKKwlzaXpl ID0gYWRkX3NpemUoc2l6ZSwgbXVsX3NpemUoVG90YWxQcm9jcywgc2l6ZW9mKFBHUFJPQykpKTsK KworCS8qIEZJWE1FOiB0aGUgc2l6ZW9mcyBsb29rIGRhbmdlcm91cyBiZWNhdXNlIFByb2NHbG9i YWwgaXMgbm90IGluaXRpYWxpemVkIHlldCAqLworCXNpemUgPSBhZGRfc2l6ZShzaXplLCBtdWxf c2l6ZShUb3RhbFByb2NzLCBzaXplb2YoKlByb2NHbG9iYWwtPnhpZHMpKSk7CisJc2l6ZSA9IGFk ZF9zaXplKHNpemUsIG11bF9zaXplKFRvdGFsUHJvY3MsIHNpemVvZigqUHJvY0dsb2JhbC0+c3Vi eGlkU3RhdGVzKSkpOworCXNpemUgPSBhZGRfc2l6ZShzaXplLCBtdWxfc2l6ZShUb3RhbFByb2Nz LCBzaXplb2YoKlByb2NHbG9iYWwtPnN0YXR1c0ZsYWdzKSkpOworCisJUHJvY0dsb2JhbEFsbFBy b2NzU2htZW1EZXNjLnNpemUgPSBzaXplOworCVNobWVtUmVnaXN0ZXJTdHJ1Y3QoJlByb2NHbG9i YWxBbGxQcm9jc1NobWVtRGVzYyk7CisKKwlGYXN0UGF0aExvY2tBcnJheVNobWVtRGVzYy5zaXpl ID0gRmFzdFBhdGhMb2NrU2htZW1TaXplKCk7CisJU2htZW1SZWdpc3RlclN0cnVjdCgmRmFzdFBh dGhMb2NrQXJyYXlTaG1lbURlc2MpOworCisJLyoKKwkgKiBDcmVhdGUgdGhlIFByb2NHbG9iYWwg c2hhcmVkIHN0cnVjdHVyZSBsYXN0LiBJdHMgaW5pdCBjYWxsYmFjaworCSAqIGluaXRpYWxpemVz IHRoZSBvdGhlcnMgdG9vLgorCSAqLworCVNobWVtUmVnaXN0ZXJTdHJ1Y3QoJlByb2NHbG9iYWxT aG1lbURlc2MpOworfQorCitzdGF0aWMgdm9pZAorUHJvY0dsb2JhbFNobWVtSW5pdCh2b2lkICph cmcpCiB7CisJY2hhcgkgICAqcHRyOworCXNpemVfdAkJcmVxdWVzdFNpemU7CiAJUEdQUk9DCSAg ICpwcm9jczsKIAlpbnQJCQlpLAogCQkJCWo7Ci0JYm9vbAkJZm91bmQ7Ci0JdWludDMyCQlUb3Rh bFByb2NzID0gTWF4QmFja2VuZHMgKyBOVU1fQVVYSUxJQVJZX1BST0NTICsgbWF4X3ByZXBhcmVk X3hhY3RzOwotCiAJLyogVXNlZCBmb3Igc2V0dXAgb2YgcGVyLWJhY2tlbmQgZmFzdC1wYXRoIHNs b3RzLiAqLwogCWNoYXIJICAgKmZwUHRyLAogCQkJICAgKmZwRW5kUHRyIFBHX1VTRURfRk9SX0FT U0VSVFNfT05MWTsKIAlTaXplCQlmcExvY2tCaXRzU2l6ZSwKIAkJCQlmcFJlbElkU2l6ZTsKLQlT aXplCQlyZXF1ZXN0U2l6ZTsKLQljaGFyCSAgICpwdHI7CiAKLQkvKiBDcmVhdGUgdGhlIFByb2NH bG9iYWwgc2hhcmVkIHN0cnVjdHVyZSAqLwotCVByb2NHbG9iYWwgPSAoUFJPQ19IRFIgKikKLQkJ U2htZW1Jbml0U3RydWN0KCJQcm9jIEhlYWRlciIsIHNpemVvZihQUk9DX0hEUiksICZmb3VuZCk7 Ci0JQXNzZXJ0KCFmb3VuZCk7CisJUHJvY0dsb2JhbCA9IFByb2NHbG9iYWxTaG1lbURlc2MucHRy OwogCi0JLyoKLQkgKiBJbml0aWFsaXplIHRoZSBkYXRhIHN0cnVjdHVyZXMuCi0JICovCiAJUHJv Y0dsb2JhbC0+c3BpbnNfcGVyX2RlbGF5ID0gREVGQVVMVF9TUElOU19QRVJfREVMQVk7CiAJZGxp c3RfaW5pdCgmUHJvY0dsb2JhbC0+ZnJlZVByb2NzKTsKIAlkbGlzdF9pbml0KCZQcm9jR2xvYmFs LT5hdXRvdmFjRnJlZVByb2NzKTsKQEAgLTIyNSwyMyArMjM0LDExIEBAIEluaXRQcm9jR2xvYmFs KHZvaWQpCiAJUHJvY0dsb2JhbC0+Y2hlY2twb2ludGVyUHJvYyA9IElOVkFMSURfUFJPQ19OVU1C RVI7CiAJcGdfYXRvbWljX2luaXRfdTMyKCZQcm9jR2xvYmFsLT5wcm9jQXJyYXlHcm91cEZpcnN0 LCBJTlZBTElEX1BST0NfTlVNQkVSKTsKIAlwZ19hdG9taWNfaW5pdF91MzIoJlByb2NHbG9iYWwt PmNsb2dHcm91cEZpcnN0LCBJTlZBTElEX1BST0NfTlVNQkVSKTsKKwlTcGluTG9ja0luaXQoUHJv Y1N0cnVjdExvY2spOwogCi0JLyoKLQkgKiBDcmVhdGUgYW5kIGluaXRpYWxpemUgYWxsIHRoZSBQ R1BST0Mgc3RydWN0dXJlcyB3ZSdsbCBuZWVkLiAgVGhlcmUgYXJlCi0JICogc2l4IHNlcGFyYXRl IGNvbnN1bWVyczogKDEpIG5vcm1hbCBiYWNrZW5kcywgKDIpIGF1dG92YWN1dW0gd29ya2VycyBh bmQKLQkgKiBzcGVjaWFsIHdvcmtlcnMsICgzKSBiYWNrZ3JvdW5kIHdvcmtlcnMsICg0KSB3YWxz ZW5kZXJzLCAoNSkgYXV4aWxpYXJ5Ci0JICogcHJvY2Vzc2VzLCBhbmQgKDYpIHByZXBhcmVkIHRy YW5zYWN0aW9ucy4gIChGb3IgbGFyZ2VseS1oaXN0b3JpY2FsCi0JICogcmVhc29ucywgd2UgY29t YmluZSBhdXRvdmFjdXVtIGFuZCBzcGVjaWFsIHdvcmtlcnMgaW50byBvbmUgY2F0ZWdvcnkKLQkg KiB3aXRoIGEgc2luZ2xlIGZyZWVsaXN0LikgIEVhY2ggUEdQUk9DIHN0cnVjdHVyZSBpcyBkZWRp Y2F0ZWQgdG8gZXhhY3RseQotCSAqIG9uZSBvZiB0aGVzZSBwdXJwb3NlcywgYW5kIHRoZXkgZG8g bm90IG1vdmUgYmV0d2VlbiBncm91cHMuCi0JICovCi0JcmVxdWVzdFNpemUgPSBQR1Byb2NTaG1l bVNpemUoKTsKLQotCXB0ciA9IFNobWVtSW5pdFN0cnVjdCgiUEdQUk9DIHN0cnVjdHVyZXMiLAot CQkJCQkJICByZXF1ZXN0U2l6ZSwKLQkJCQkJCSAgJmZvdW5kKTsKLQotCU1lbVNldChwdHIsIDAs IHJlcXVlc3RTaXplKTsKKwlwdHIgPSBQcm9jR2xvYmFsQWxsUHJvY3NTaG1lbURlc2MucHRyOwor CXJlcXVlc3RTaXplID0gUHJvY0dsb2JhbEFsbFByb2NzU2htZW1EZXNjLnNpemU7CisJbWVtc2V0 KHB0ciwgMCwgcmVxdWVzdFNpemUpOwogCiAJcHJvY3MgPSAoUEdQUk9DICopIHB0cjsKIAlwdHIg PSBwdHIgKyBUb3RhbFByb2NzICogc2l6ZW9mKFBHUFJPQyk7CkBAIC0yNzcsMjAgKzI3NCwxMyBA QCBJbml0UHJvY0dsb2JhbCh2b2lkKQogCWZwTG9ja0JpdHNTaXplID0gTUFYQUxJR04oRmFzdFBh dGhMb2NrR3JvdXBzUGVyQmFja2VuZCAqIHNpemVvZih1aW50NjQpKTsKIAlmcFJlbElkU2l6ZSA9 IE1BWEFMSUdOKEZhc3RQYXRoTG9ja1Nsb3RzUGVyQmFja2VuZCgpICogc2l6ZW9mKE9pZCkpOwog Ci0JcmVxdWVzdFNpemUgPSBGYXN0UGF0aExvY2tTaG1lbVNpemUoKTsKLQotCWZwUHRyID0gU2ht ZW1Jbml0U3RydWN0KCJGYXN0LVBhdGggTG9jayBBcnJheSIsCi0JCQkJCQkJcmVxdWVzdFNpemUs Ci0JCQkJCQkJJmZvdW5kKTsKLQotCU1lbVNldChmcFB0ciwgMCwgcmVxdWVzdFNpemUpOworCWZw UHRyID0gRmFzdFBhdGhMb2NrQXJyYXlTaG1lbURlc2MucHRyOworCXJlcXVlc3RTaXplID0gRmFz dFBhdGhMb2NrQXJyYXlTaG1lbURlc2Muc2l6ZTsKKwltZW1zZXQoZnBQdHIsIDAsIHJlcXVlc3RT aXplKTsKIAogCS8qIEZvciBhc3NlcnRzIGNoZWNraW5nIHdlIGRpZCBub3Qgb3ZlcmZsb3cuICov CiAJZnBFbmRQdHIgPSBmcFB0ciArIHJlcXVlc3RTaXplOwogCi0JLyogUmVzZXJ2ZSBzcGFjZSBm b3Igc2VtYXBob3Jlcy4gKi8KLQlQR1Jlc2VydmVTZW1hcGhvcmVzKFByb2NHbG9iYWxTZW1hcygp KTsKLQogCWZvciAoaSA9IDA7IGkgPCBUb3RhbFByb2NzOyBpKyspCiAJewogCQlQR1BST0MJICAg KnByb2MgPSAmcHJvY3NbaV07CkBAIC0zODAsMTIgKzM3MCw2IEBAIEluaXRQcm9jR2xvYmFsKHZv aWQpCiAJICovCiAJQXV4aWxpYXJ5UHJvY3MgPSAmcHJvY3NbTWF4QmFja2VuZHNdOwogCVByZXBh cmVkWGFjdFByb2NzID0gJnByb2NzW01heEJhY2tlbmRzICsgTlVNX0FVWElMSUFSWV9QUk9DU107 Ci0KLQkvKiBDcmVhdGUgUHJvY1N0cnVjdExvY2sgc3BpbmxvY2ssIHRvbyAqLwotCVByb2NTdHJ1 Y3RMb2NrID0gKHNsb2NrX3QgKikgU2htZW1Jbml0U3RydWN0KCJQcm9jU3RydWN0TG9jayBzcGlu bG9jayIsCi0JCQkJCQkJCQkJCQkgc2l6ZW9mKHNsb2NrX3QpLAotCQkJCQkJCQkJCQkJICZmb3Vu ZCk7Ci0JU3BpbkxvY2tJbml0KFByb2NTdHJ1Y3RMb2NrKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMu YwppbmRleCAwMmU5YWFhNmJjYS4uZWVkMTg4NDE2ZWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3Rjb3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTQx MTcsNiArNDExNyw4IEBAIFBvc3RncmVzU2luZ2xlVXNlck1haW4oaW50IGFyZ2MsIGNoYXIgKmFy Z3ZbXSwKIAkgKiBzaGFyZWQgbWVtb3J5LCBkZXRlcm1pbmUgdGhlIHZhbHVlIG9mIGFueSBydW50 aW1lLWNvbXB1dGVkIEdVQ3MgdGhhdAogCSAqIGRlcGVuZCBvbiB0aGUgYW1vdW50IG9mIHNoYXJl ZCBtZW1vcnkgcmVxdWlyZWQuCiAJICovCisJUmVnaXN0ZXJTaG1lbVN0cnVjdHMoKTsKKwogCUlu aXRpYWxpemVTaG1lbUdVQ3MoKTsKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nl c3MvdHJhbnNhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RyYW5zYW0uaAppbmRleCA2ZmE5MWJm Y2RjMC4uNDlkNDc2ZTlkNWMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90cmFuc2Ft LmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RyYW5zYW0uaApAQCAtMTUsNyArMTUsOSBAQAog I2RlZmluZSBUUkFOU0FNX0gKIAogI2luY2x1ZGUgImFjY2Vzcy94bG9nZGVmcy5oIgotCisjaWZu ZGVmIEZST05URU5ECisjaW5jbHVkZSAic3RvcmFnZS9zaG1lbS5oIgorI2VuZGlmCiAKIC8qIC0t LS0tLS0tLS0tLS0tLS0KICAqCQlTcGVjaWFsIHRyYW5zYWN0aW9uIElEIHZhbHVlcwpAQCAtMzMw LDcgKzMzMiwxMCBAQCBUcmFuc2FjdGlvbklkRm9sbG93c09yRXF1YWxzKFRyYW5zYWN0aW9uSWQg aWQxLCBUcmFuc2FjdGlvbklkIGlkMikKIGV4dGVybiBib29sIFRyYW5zYWN0aW9uU3RhcnRlZER1 cmluZ1JlY292ZXJ5KHZvaWQpOwogCiAvKiBpbiB0cmFuc2FtL3ZhcnN1cC5jICovCi1leHRlcm4g UEdETExJTVBPUlQgVHJhbnNhbVZhcmlhYmxlc0RhdGEgKlRyYW5zYW1WYXJpYWJsZXM7CisjaWZu ZGVmIEZST05URU5ECitleHRlcm4gUEdETExJTVBPUlQgc3RydWN0IFNobWVtU3RydWN0RGVzYyBU cmFuc2FtVmFyaWFibGVzU2htZW1EZXNjOworI2RlZmluZSBUcmFuc2FtVmFyaWFibGVzICgoVHJh bnNhbVZhcmlhYmxlc0RhdGEgKikgVHJhbnNhbVZhcmlhYmxlc1NobWVtRGVzYy5wdHIpCisjZW5k aWYKIAogLyoKICAqIHByb3RvdHlwZXMgZm9yIGZ1bmN0aW9ucyBpbiB0cmFuc2FtL3RyYW5zYW0u YwpAQCAtMzQ1LDggKzM1MCw3IEBAIGV4dGVybiBUcmFuc2FjdGlvbklkIFRyYW5zYWN0aW9uSWRM YXRlc3QoVHJhbnNhY3Rpb25JZCBtYWlueGlkLAogZXh0ZXJuIFhMb2dSZWNQdHIgVHJhbnNhY3Rp b25JZEdldENvbW1pdExTTihUcmFuc2FjdGlvbklkIHhpZCk7CiAKIC8qIGluIHRyYW5zYW0vdmFy c3VwLmMgKi8KLWV4dGVybiBTaXplIFZhcnN1cFNobWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2b2lk IFZhcnN1cFNobWVtSW5pdCh2b2lkKTsKK2V4dGVybiB2b2lkIFZhcnN1cFNobWVtUmVnaXN0ZXIo dm9pZCk7CiBleHRlcm4gRnVsbFRyYW5zYWN0aW9uSWQgR2V0TmV3VHJhbnNhY3Rpb25JZChib29s IGlzU3ViWGFjdCk7CiBleHRlcm4gdm9pZCBBZHZhbmNlTmV4dEZ1bGxUcmFuc2FjdGlvbklkUGFz dFhpZChUcmFuc2FjdGlvbklkIHhpZCk7CiBleHRlcm4gRnVsbFRyYW5zYWN0aW9uSWQgUmVhZE5l eHRGdWxsVHJhbnNhY3Rpb25JZCh2b2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3Jh Z2UvZHNtX3JlZ2lzdHJ5LmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2RzbV9yZWdpc3RyeS5oCmlu ZGV4IDUwNmZhZTJjOWNhLi45YTFiNGQ5ODJhZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3Rv cmFnZS9kc21fcmVnaXN0cnkuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2RzbV9yZWdpc3Ry eS5oCkBAIC0yMiw3ICsyMiw2IEBAIGV4dGVybiBkc2FfYXJlYSAqR2V0TmFtZWREU0EoY29uc3Qg Y2hhciAqbmFtZSwgYm9vbCAqZm91bmQpOwogZXh0ZXJuIGRzaGFzaF90YWJsZSAqR2V0TmFtZWRE U0hhc2goY29uc3QgY2hhciAqbmFtZSwKIAkJCQkJCQkJCWNvbnN0IGRzaGFzaF9wYXJhbWV0ZXJz ICpwYXJhbXMsCiAJCQkJCQkJCQlib29sICpmb3VuZCk7Ci1leHRlcm4gU2l6ZSBEU01SZWdpc3Ry eVNobWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2b2lkIERTTVJlZ2lzdHJ5U2htZW1Jbml0KHZvaWQp OworZXh0ZXJuIHZvaWQgRFNNUmVnaXN0cnlTaG1lbVJlZ2lzdGVyKHZvaWQpOwogCiAjZW5kaWYJ CQkJCQkJLyogRFNNX1JFR0lTVFJZX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3Jh Z2UvaXBjLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2lwYy5oCmluZGV4IGRhMzI3ODdhYjUxLi44 YTNiNzFhZDVkMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9pcGMuaAorKysgYi9z cmMvaW5jbHVkZS9zdG9yYWdlL2lwYy5oCkBAIC03Nyw2ICs3Nyw3IEBAIGV4dGVybiB2b2lkIGNo ZWNrX29uX3NobWVtX2V4aXRfbGlzdHNfYXJlX2VtcHR5KHZvaWQpOwogLyogaXBjaS5jICovCiBl eHRlcm4gUEdETExJTVBPUlQgc2htZW1fc3RhcnR1cF9ob29rX3R5cGUgc2htZW1fc3RhcnR1cF9o b29rOwogCitleHRlcm4gdm9pZCBSZWdpc3RlclNobWVtU3RydWN0cyh2b2lkKTsKIGV4dGVybiBT aXplIENhbGN1bGF0ZVNobWVtU2l6ZSh2b2lkKTsKIGV4dGVybiB2b2lkIENyZWF0ZVNoYXJlZE1l bW9yeUFuZFNlbWFwaG9yZXModm9pZCk7CiAjaWZkZWYgRVhFQ19CQUNLRU5ECmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Btc2lnbmFsLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Bt c2lnbmFsLmgKaW5kZXggMjA2ZmI3OGY4YTUuLjdjZGM0ODUyMzM0IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9zdG9yYWdlL3Btc2lnbmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wbXNp Z25hbC5oCkBAIC02Niw4ICs2Niw3IEBAIGV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBQTVNp Z25hbERhdGEgKlBNU2lnbmFsU3RhdGU7CiAvKgogICogcHJvdG90eXBlcyBmb3IgZnVuY3Rpb25z IGluIHBtc2lnbmFsLmMKICAqLwotZXh0ZXJuIFNpemUgUE1TaWduYWxTaG1lbVNpemUodm9pZCk7 Ci1leHRlcm4gdm9pZCBQTVNpZ25hbFNobWVtSW5pdCh2b2lkKTsKK2V4dGVybiB2b2lkIFBNU2ln bmFsU2htZW1SZWdpc3Rlcih2b2lkKTsKIGV4dGVybiB2b2lkIFNlbmRQb3N0bWFzdGVyU2lnbmFs KFBNU2lnbmFsUmVhc29uIHJlYXNvbik7CiBleHRlcm4gYm9vbCBDaGVja1Bvc3RtYXN0ZXJTaWdu YWwoUE1TaWduYWxSZWFzb24gcmVhc29uKTsKIGV4dGVybiB2b2lkIFNldFF1aXRTaWduYWxSZWFz b24oUXVpdFNpZ25hbFJlYXNvbiByZWFzb24pOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3Rv cmFnZS9wcm9jLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2MuaAppbmRleCA2NzlmMDYyNGY5 Mi4uMzcwMjNlMWE5M2YgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oCisr KyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oCkBAIC00MTgsNiArNDE4LDkgQEAgdHlwZWRl ZiBzdHJ1Y3QgUFJPQ19IRFIKIAlkbGlzdF9oZWFkCWJnd29ya2VyRnJlZVByb2NzOwogCS8qIEhl YWQgb2YgbGlzdCBvZiB3YWxzZW5kZXIgZnJlZSBQR1BST0Mgc3RydWN0dXJlcyAqLwogCWRsaXN0 X2hlYWQJd2Fsc2VuZGVyRnJlZVByb2NzOworCisJc2xvY2tfdAkJZnJlZVByb2NzTG9jazsKKwog CS8qIEZpcnN0IHBncHJvYyB3YWl0aW5nIGZvciBncm91cCBYSUQgY2xlYXIgKi8KIAlwZ19hdG9t aWNfdWludDMyIHByb2NBcnJheUdyb3VwRmlyc3Q7CiAJLyogRmlyc3QgcGdwcm9jIHdhaXRpbmcg Zm9yIGdyb3VwIHRyYW5zYWN0aW9uIHN0YXR1cyB1cGRhdGUgKi8KQEAgLTQ4OCw3ICs0OTEsNyBA QCBleHRlcm4gUEdETExJTVBPUlQgUEdQUk9DICpBdXhpbGlhcnlQcm9jczsKICAqIEZ1bmN0aW9u IFByb3RvdHlwZXMKICAqLwogZXh0ZXJuIGludAlQcm9jR2xvYmFsU2VtYXModm9pZCk7Ci1leHRl cm4gU2l6ZSBQcm9jR2xvYmFsU2htZW1TaXplKHZvaWQpOworZXh0ZXJuIHZvaWQgUHJvY0dsb2Jh bFNobWVtUmVnaXN0ZXIodm9pZCk7CiBleHRlcm4gdm9pZCBJbml0UHJvY0dsb2JhbCh2b2lkKTsK IGV4dGVybiB2b2lkIEluaXRQcm9jZXNzKHZvaWQpOwogZXh0ZXJuIHZvaWQgSW5pdFByb2Nlc3NQ aGFzZTIodm9pZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NhcnJheS5o IGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jYXJyYXkuaAppbmRleCAzYTg1OTNmODdiYS4uNDE3 NTNjM2E2MzAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY2FycmF5LmgKKysr IGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jYXJyYXkuaApAQCAtMjAsOCArMjAsNyBAQAogI2lu Y2x1ZGUgInV0aWxzL3NuYXBzaG90LmgiCiAKIAotZXh0ZXJuIFNpemUgUHJvY0FycmF5U2htZW1T aXplKHZvaWQpOwotZXh0ZXJuIHZvaWQgUHJvY0FycmF5U2htZW1Jbml0KHZvaWQpOworZXh0ZXJu IHZvaWQgUHJvY0FycmF5U2htZW1SZWdpc3Rlcih2b2lkKTsKIGV4dGVybiB2b2lkIFByb2NBcnJh eUFkZChQR1BST0MgKnByb2MpOwogZXh0ZXJuIHZvaWQgUHJvY0FycmF5UmVtb3ZlKFBHUFJPQyAq cHJvYywgVHJhbnNhY3Rpb25JZCBsYXRlc3RYaWQpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9zdG9yYWdlL3Byb2NzaWduYWwuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5o CmluZGV4IGU1MmI4ZWI3Njk3Li5mMmRmMWYzMGM1ZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv c3RvcmFnZS9wcm9jc2lnbmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFs LmgKQEAgLTcxLDggKzcxLDcgQEAgdHlwZWRlZiBlbnVtCiAvKgogICogcHJvdG90eXBlcyBmb3Ig ZnVuY3Rpb25zIGluIHByb2NzaWduYWwuYwogICovCi1leHRlcm4gU2l6ZSBQcm9jU2lnbmFsU2ht ZW1TaXplKHZvaWQpOwotZXh0ZXJuIHZvaWQgUHJvY1NpZ25hbFNobWVtSW5pdCh2b2lkKTsKK2V4 dGVybiB2b2lkIFByb2NTaWduYWxTaG1lbVJlZ2lzdGVyKHZvaWQpOwogCiBleHRlcm4gdm9pZCBQ cm9jU2lnbmFsSW5pdChjb25zdCB1aW50OCAqY2FuY2VsX2tleSwgaW50IGNhbmNlbF9rZXlfbGVu KTsKIGV4dGVybiBpbnQJU2VuZFByb2NTaWduYWwocGlkX3QgcGlkLCBQcm9jU2lnbmFsUmVhc29u IHJlYXNvbiwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW0uaCBiL3NyYy9p bmNsdWRlL3N0b3JhZ2Uvc2htZW0uaAppbmRleCA4OWQ0NTI4N2MxNy4uNDBlMmZjMTcwNTYgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW0uaAorKysgYi9zcmMvaW5jbHVkZS9z dG9yYWdlL3NobWVtLmgKQEAgLTI0LDYgKzI0LDUzIEBACiAjaW5jbHVkZSAic3RvcmFnZS9zcGlu LmgiCiAjaW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgogCit0eXBlZGVmIHZvaWQgKCpTaG1lbUlu aXRDYWxsYmFjaykgKHZvaWQgKmFyZyk7Cit0eXBlZGVmIHZvaWQgKCpTaG1lbUF0dGFjaENhbGxi YWNrKSAodm9pZCAqYXJnKTsKKworLyoKKyAqIERlc2NyaXB0b3IgZm9yIGEgbmFtZWQgYXJlYSBv ciBzdHJ1Y3QgaW4gc2hhcmVkIG1lbW9yeQorICovCit0eXBlZGVmIHN0cnVjdCBTaG1lbVN0cnVj dERlc2MKK3sKKwkvKiBOYW1lIG9mIHRoZSBzaGFyZWQgbWVtb3J5IGFyZWEuIE11c3QgYmUgdW5p cXVlIGFjcm9zcyB0aGUgc3lzdGVtICovCisJY29uc3QgY2hhciAqbmFtZTsKKworCXNpemVfdAkJ c2l6ZTsKKworCXNpemVfdAkJYWxpZ25tZW50OworCVNobWVtSW5pdENhbGxiYWNrIGluaXRfZm47 CisJU2htZW1Jbml0Q2FsbGJhY2sgYXR0YWNoX2ZuOworCXZvaWQJICAgKmluaXRfZm5fYXJnOwor CXZvaWQJICAgKmF0dGFjaF9mbl9hcmc7CisKKwkvKgorCSAqIEV4dHJhIHNwYWNlIHRvIGFsbG9j YXRlZCBpbiB0aGUgc2hhcmVkIG1lbW9yeSBzZWdtZW50LCBidXQgaXQncyBub3QKKwkgKiBwYXJ0 IG9mIHRoZSBzdHJ1Y3QgaXRzZWxmLiBUaGlzIGlzIHVzZWQgZm9yIHNoYXJlZCBtZW1vcnkgaGFz aCB0YWJsZXMKKwkgKiB0aGF0IGNhbiBncm93IGJleW9uZCB0aGUgaW5pdGlhbCBzaXplIHdoZW4g bW9yZSBidWNrZXRzIGFyZSBhbGxvY2F0ZWQuCisJICovCisJc2l6ZV90CQlleHRyYV9zaXplOwor CisJLyogUG9pbnRlciB0byB0aGUgc2hhcmVkIG1lbW9yeSBhcmVhLCB3aGVuIGl0J3MgYWxsb2Nh dGVkLiAqLworCXZvaWQJICAgKnB0cjsKK30gU2htZW1TdHJ1Y3REZXNjOworCisvKgorICogRGVz Y3JpcHRvciBmb3Igc2hhcmVkIG1lbW9yeSBoYXNoIHRhYmxlCisgKi8KK3R5cGVkZWYgc3RydWN0 IFNobWVtSGFzaERlc2MKK3sKKwljb25zdCBjaGFyICpuYW1lOworCisJaW50CQkJaGFzaF9mbGFn czsKKworCXNpemVfdAkJaW5pdF9zaXplOwkJLyogaW5pdGlhbCBudW1iZXIgb2YgZW50cmllcyAq LworCXNpemVfdAkJbWF4X3NpemU7CQkvKiBtYXggbnVtYmVyIG9mIGVudHJpZXMgKi8KKwlIQVNI Q1RMCSAgICppbmZvUDsKKworCUhUQUIJICAgKnB0cjsKKworCVNobWVtU3RydWN0RGVzYwliYXNl X2Rlc2M7Cit9IFNobWVtSGFzaERlc2M7CiAKIC8qIHNobWVtLmMgKi8KIGV4dGVybiBQR0RMTElN UE9SVCBzbG9ja190ICpTaG1lbUxvY2s7CkBAIC0zNCw5ICs4MSwxOSBAQCBleHRlcm4gdm9pZCAq U2htZW1BbGxvYyhTaXplIHNpemUpOwogZXh0ZXJuIHZvaWQgKlNobWVtQWxsb2NOb0Vycm9yKFNp emUgc2l6ZSk7CiBleHRlcm4gYm9vbCBTaG1lbUFkZHJJc1ZhbGlkKGNvbnN0IHZvaWQgKmFkZHIp OwogZXh0ZXJuIHZvaWQgSW5pdFNobWVtSW5kZXgodm9pZCk7CisKK2V4dGVybiB2b2lkIFNobWVt UmVnaXN0ZXJIYXNoKFNobWVtSGFzaERlc2MgKmRlc2MsIEhBU0hDVEwgKmluZm9QLCBpbnQgaGFz aF9mbGFncyk7CitleHRlcm4gdm9pZCBTaG1lbVJlZ2lzdGVyU3RydWN0KFNobWVtU3RydWN0RGVz YyAqZGVzYyk7CisKKy8qIExlZ2FjeSBmdW5jdGlvbnMgKi8KIGV4dGVybiBIVEFCICpTaG1lbUlu aXRIYXNoKGNvbnN0IGNoYXIgKm5hbWUsIGludDY0IGluaXRfc2l6ZSwgaW50NjQgbWF4X3NpemUs CiAJCQkJCQkgICBIQVNIQ1RMICppbmZvUCwgaW50IGhhc2hfZmxhZ3MpOwogZXh0ZXJuIHZvaWQg KlNobWVtSW5pdFN0cnVjdChjb25zdCBjaGFyICpuYW1lLCBTaXplIHNpemUsIGJvb2wgKmZvdW5k UHRyKTsKKworZXh0ZXJuIHNpemVfdCBTaG1lbVJlZ2lzdGVyZWRTaXplKHZvaWQpOworZXh0ZXJu IHZvaWQgU2htZW1Jbml0UmVnaXN0ZXJlZCh2b2lkKTsKK2V4dGVybiB2b2lkIFNobWVtQXR0YWNo UmVnaXN0ZXJlZCh2b2lkKTsKKwogZXh0ZXJuIFNpemUgYWRkX3NpemUoU2l6ZSBzMSwgU2l6ZSBz Mik7CiBleHRlcm4gU2l6ZSBtdWxfc2l6ZShTaXplIHMxLCBTaXplIHMyKTsKIApkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zaW52YWxhZHQuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uv c2ludmFsYWR0LmgKaW5kZXggYTE2OTQ1MDBhODUuLjRlZGJhMjkzNmU2IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9zdG9yYWdlL3NpbnZhbGFkdC5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uv c2ludmFsYWR0LmgKQEAgLTI4LDggKzI4LDcgQEAKIC8qCiAgKiBwcm90b3R5cGVzIGZvciBmdW5j dGlvbnMgaW4gc2ludmFsYWR0LmMKICAqLwotZXh0ZXJuIFNpemUgU2hhcmVkSW52YWxTaG1lbVNp emUodm9pZCk7Ci1leHRlcm4gdm9pZCBTaGFyZWRJbnZhbFNobWVtSW5pdCh2b2lkKTsKK2V4dGVy biB2b2lkIFNoYXJlZEludmFsU2htZW1SZWdpc3Rlcih2b2lkKTsKIGV4dGVybiB2b2lkIFNoYXJl ZEludmFsQmFja2VuZEluaXQoYm9vbCBzZW5kT25seSk7CiAKIGV4dGVybiB2b2lkIFNJSW5zZXJ0 RGF0YUVudHJpZXMoY29uc3QgU2hhcmVkSW52YWxpZGF0aW9uTWVzc2FnZSAqZGF0YSwgaW50IG4p OwoKYmFzZS1jb21taXQ6IGM2N2JlZjNmMzI1MmEzYTM4YmYzNDdmOWYxMTk5NDQxNzZhNzk2Y2UK LS0gCjIuMzQuMQoK --000000000000b94ae4064af21c1c Content-Type: text/x-patch; charset="US-ASCII"; name="0002-Get-rid-of-global-shared-memory-pointer-mac-20260216.patch" Content-Disposition: attachment; filename="0002-Get-rid-of-global-shared-memory-pointer-mac-20260216.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlpams491 RnJvbSAzOTVhOTVlOTkzNDI4Njg2OWIxZmU4ZDQ1ZGM1YTE1NWVhOWJlMDMwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBc2h1dG9zaCBCYXBhdCA8YXNodXRvc2guYmFwYXQub3NzQGdt YWlsLmNvbT4KRGF0ZTogVHVlLCAxMCBGZWIgMjAyNiAyMDoyNjozMSArMDUzMApTdWJqZWN0OiBb UEFUQ0ggMi8zXSBHZXQgcmlkIG9mIGdsb2JhbCBzaGFyZWQgbWVtb3J5IHBvaW50ZXIgbWFjcm8K IGRlY2xhcmF0aW9ucwoKLS0tCiAuLi4vcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVt ZW50cy5jICAgfCAxMCArKysrLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS92YXJzdXAu YyAgICAgICAgICAgfCAgNSArKysrCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9kc20uYyAgICAg ICAgICAgICAgICAgfCAgNSArKy0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9kc21fcmVnaXN0 cnkuYyAgICAgICAgfCAgNCArKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Btc2lnbmFsLmMg ICAgICAgICAgICB8IDE4ICsrKysrLS0tLS0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJv Y2FycmF5LmMgICAgICAgICAgIHwgMTMgKysrKystLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9wcm9jc2lnbmFsLmMgICAgICAgICAgfCAgNCArKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L3NobWVtLmMgICAgICAgICAgICAgICB8IDI5ICsrKysrKysrKysrKy0tLS0tLS0KIHNyYy9iYWNr ZW5kL3N0b3JhZ2UvaXBjL3NpbnZhbGFkdC5jICAgICAgICAgICB8ICA3ICsrKy0tCiBzcmMvYmFj a2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jICAgICAgICAgICAgICAgfCAyNSArKysrKysrKysrLS0t LS0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdHJhbnNhbS5oICAgICAgICAgICAgICAgICAgfCAgMiAr LQogc3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1lbS5oICAgICAgICAgICAgICAgICAgIHwgIDYgKyst LQogMTIgZmlsZXMgY2hhbmdlZCwgNzcgaW5zZXJ0aW9ucygrKSwgNTEgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRz LmMgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYwppbmRl eCA3MWRlYmM4YjQ3Zi4uNzNmZGY1NjE0MTkgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfc3RhdF9z dGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCisrKyBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0 ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCkBAIC0yNTgsMjQgKzI1OCwyNiBAQCB0eXBlZGVm IHN0cnVjdCBwZ3NzU2hhcmVkU3RhdGUKIAlwZ3NzR2xvYmFsU3RhdHMgc3RhdHM7CQkvKiBnbG9i YWwgc3RhdGlzdGljcyBmb3IgcGdzcyAqLwogfSBwZ3NzU2hhcmVkU3RhdGU7CiAKKy8qIExpbmtz IHRvIHNoYXJlZCBtZW1vcnkgc3RhdGUgKi8KK3Bnc3NTaGFyZWRTdGF0ZSAqcGdzcyA9IE5VTEw7 CitIVEFCICpwZ3NzX2hhc2ggPSBOVUxMOworCiBzdGF0aWMgdm9pZCBwZ3NzX3NobWVtX2luaXQo dm9pZCAqYXJnKTsKIAogc3RhdGljIFNobWVtU3RydWN0RGVzYyBwZ3NzU2hhcmVkU3RhdGVTaG1l bURlc2MgPSB7CiAJLm5hbWUgPSAicGdfc3RhdF9zdGF0ZW1lbnRzIiwKIAkuc2l6ZSA9IHNpemVv ZihwZ3NzU2hhcmVkU3RhdGUpLAogCS5pbml0X2ZuID0gcGdzc19zaG1lbV9pbml0LAorCS5wdHIg PSAodm9pZCAqKSAmcGdzcywKIH07CiAKIHN0YXRpYyBTaG1lbUhhc2hEZXNjIHBnc3NTaGFyZWRI YXNoRGVzYyA9IHsKIAkubmFtZSA9ICJwZ19zdGF0X3N0YXRlbWVudHMgaGFzaCIsCiAJLmluaXRf c2l6ZSA9IDAsCQkvKiBzZXQgZnJvbSAncGdzc19tYXgnICovCiAJLm1heF9zaXplID0gMCwJCS8q IHNldCBmcm9tICdwZ3NzX21heCcgKi8KKwkucHRyID0gJnBnc3NfaGFzaCwKIH07CiAKLS8qIExp bmtzIHRvIHNoYXJlZCBtZW1vcnkgc3RhdGUgKi8KLSNkZWZpbmUgcGdzcyAoKHBnc3NTaGFyZWRT dGF0ZSAqKSBwZ3NzU2hhcmVkU3RhdGVTaG1lbURlc2MucHRyKQotI2RlZmluZSBwZ3NzX2hhc2gg KHBnc3NTaGFyZWRIYXNoRGVzYy5wdHIpCi0KIAogLyotLS0tIExvY2FsIHZhcmlhYmxlcyAtLS0t Ki8KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vdmFyc3VwLmMgYi9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS92YXJzdXAuYwppbmRleCAxMWFkOTBlNzM3Mi4uM2Rm ZGE4NzVlODAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3ZhcnN1cC5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3ZhcnN1cC5jCkBAIC0zMiwxMCArMzIs MTQgQEAKIAogc3RhdGljIHZvaWQgVmFyc3VwU2htZW1Jbml0KHZvaWQgKmFyZyk7CiAKKy8qIHBv aW50ZXIgdG8gdmFyaWFibGVzIHN0cnVjdCBpbiBzaGFyZWQgbWVtb3J5ICovCitUcmFuc2FtVmFy aWFibGVzRGF0YSAqVHJhbnNhbVZhcmlhYmxlcyA9IE5VTEw7CisKIFNobWVtU3RydWN0RGVzYyBU cmFuc2FtVmFyaWFibGVzU2htZW1EZXNjID0gewogCS5uYW1lID0gIlRyYW5zYW1WYXJpYWJsZXMi LAogCS5zaXplID0gc2l6ZW9mKFRyYW5zYW1WYXJpYWJsZXNEYXRhKSwKIAkuaW5pdF9mbiA9IFZh cnN1cFNobWVtSW5pdCwKKwkucHRyID0gKHZvaWQgKiopICZUcmFuc2FtVmFyaWFibGVzLAogfTsK IAogLyoKQEAgLTQ5LDYgKzUzLDcgQEAgVmFyc3VwU2htZW1SZWdpc3Rlcih2b2lkKQogCiBzdGF0 aWMgdm9pZAogVmFyc3VwU2htZW1Jbml0KHZvaWQgKmFyZykKKwogewogCW1lbXNldChUcmFuc2Ft VmFyaWFibGVzLCAwLCBzaXplb2YoVHJhbnNhbVZhcmlhYmxlc0RhdGEpKTsKIH0KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2RzbS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvZHNtLmMKaW5kZXggNTVmNDZjNzY4N2UuLjczNjQ0ZWMzYmJiIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9kc20uYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9k c20uYwpAQCAtMTEwLDE0ICsxMTAsMTUgQEAgc3RhdGljIGJvb2wgZHNtX2luaXRfZG9uZSA9IGZh bHNlOwogLyogUHJlYWxsb2NhdGVkIERTTSBzcGFjZSBpbiB0aGUgbWFpbiBzaGFyZWQgbWVtb3J5 IHJlZ2lvbi4gKi8KIHN0YXRpYyB2b2lkIGRzbV9tYWluX3NwYWNlX2luaXQodm9pZCAqKTsKIAor c3RhdGljIHZvaWQgKmRzbV9tYWluX3NwYWNlX2JlZ2luID0gTlVMTDsKKwogc3RhdGljIFNobWVt U3RydWN0RGVzYyBkc21fbWFpbl9zcGFjZV9zaG1lbV9kZXNjID0gewogCS5uYW1lID0gIlByZWFs bG9jYXRlZCBEU00iLAogCS5zaXplID0gMCwgLyogZHluYW1pYyAqLwogCS5pbml0X2ZuID0gZHNt X21haW5fc3BhY2VfaW5pdCwKKwkucHRyID0gJmRzbV9tYWluX3NwYWNlX2JlZ2luLAogfTsKIAot I2RlZmluZSBkc21fbWFpbl9zcGFjZV9iZWdpbiAoZHNtX21haW5fc3BhY2Vfc2htZW1fZGVzYy5w dHIpCi0KIC8qCiAgKiBMaXN0IG9mIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBzZWdtZW50cyB1c2Vk IGJ5IHRoaXMgYmFja2VuZC4KICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9kc21fcmVnaXN0cnkuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2RzbV9yZWdpc3RyeS5j CmluZGV4IDg4MmFmODNiN2IyLi4xNjU5ZTFkZDcxZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv c3RvcmFnZS9pcGMvZHNtX3JlZ2lzdHJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMv ZHNtX3JlZ2lzdHJ5LmMKQEAgLTU2LDEzICs1NiwxNSBAQCB0eXBlZGVmIHN0cnVjdCBEU01SZWdp c3RyeUN0eFN0cnVjdAogCiBzdGF0aWMgdm9pZCBEU01SZWdpc3RyeUN0eFNobWVtSW5pdCh2b2lk ICphcmcpOwogCitEU01SZWdpc3RyeUN0eFN0cnVjdCAqRFNNUmVnaXN0cnlDdHggPSBOVUxMOwor CiBzdGF0aWMgU2htZW1TdHJ1Y3REZXNjIERTTVJlZ2lzdHJ5Q3R4U2htZW1EZXNjID0gewogCS5u YW1lID0gIkRTTSBSZWdpc3RyeSBEYXRhIiwKIAkuc2l6ZSA9IHNpemVvZihEU01SZWdpc3RyeUN0 eFN0cnVjdCksCiAJLmluaXRfZm4gPSBEU01SZWdpc3RyeUN0eFNobWVtSW5pdCwKKwkucHRyID0g KHZvaWQgKiopICZEU01SZWdpc3RyeUN0eCwKIH07CiAKLSNkZWZpbmUgRFNNUmVnaXN0cnlDdHgg KChEU01SZWdpc3RyeUN0eFN0cnVjdCAqKSBEU01SZWdpc3RyeUN0eFNobWVtRGVzYy5wdHIpCiAK IHR5cGVkZWYgc3RydWN0IE5hbWVkRFNNU3RhdGUKIHsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL3Btc2lnbmFsLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wbXNpZ25h bC5jCmluZGV4IDIzNzUyNTAwZDE2Li4zYWEwMzgwZWFkZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvcG1zaWduYWwuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9w bXNpZ25hbC5jCkBAIC04MiwyMSArODIsMTcgQEAgc3RydWN0IFBNU2lnbmFsRGF0YQogCiBzdGF0 aWMgdm9pZCBQTVNpZ25hbFNobWVtSW5pdCh2b2lkICopOwogCi1zdGF0aWMgU2htZW1TdHJ1Y3RE ZXNjIFBNU2lnbmFsU2htZW1EZXNjID0gewotCS5uYW1lID0gIlBNU2lnbmFsU3RhdGUiLAotCS5z aXplID0gMCwgLyogZHluYW1pYyAqLwotCS5pbml0X2ZuID0gUE1TaWduYWxTaG1lbUluaXQsCi19 OwotCiAvKgogICogUE1TaWduYWxTdGF0ZSBwb2ludGVyIGlzIHZhbGlkIGluIGJvdGggcG9zdG1h c3RlciBhbmQgY2hpbGQgcHJvY2Vzc2VzCi0gKgotICogVGhpcyBpcyBhIHN0YW5kLWFsb25lIHZh cmlhYmxlIHJhdGhlciB0aGFuIGp1c3QgYSAjZGVmaW5lIG92ZXIKLSAqIFBNU2lnbmFsU2htZW1E ZXNjLnB0ciBiZWNhdXNlIGl0IGlzIG5lZWRlZCBlYXJseSBhdCBiYWNrZW5kIHN0YXJ0dXAgYW5k Ci0gKiBwYXNzZWQgYXMgYSBiYWNrZW5kIHBhcmFtZXRlciBpbiBFWEVDX0JBQ0tFTkQgbW9kZQog ICovCiBOT05fRVhFQ19TVEFUSUMgdm9sYXRpbGUgUE1TaWduYWxEYXRhICpQTVNpZ25hbFN0YXRl ID0gTlVMTDsKIAorc3RhdGljIFNobWVtU3RydWN0RGVzYyBQTVNpZ25hbFNobWVtRGVzYyA9IHsK KwkubmFtZSA9ICJQTVNpZ25hbFN0YXRlIiwKKwkuc2l6ZSA9IDAsIC8qIGR5bmFtaWMgKi8KKwku aW5pdF9mbiA9IFBNU2lnbmFsU2htZW1Jbml0LAorCS5wdHIgPSAodm9pZCAqKikgJlBNU2lnbmFs U3RhdGUsCit9OwogCiAvKgogICogTG9jYWwgY29weSBvZiBQTVNpZ25hbFN0YXRlLT5udW1fY2hp bGRfZmxhZ3MsIG9ubHkgdmFsaWQgaW4gdGhlCkBAIC0xNTYsNyArMTUyLDcgQEAgc3RhdGljIHZv aWQKIFBNU2lnbmFsU2htZW1Jbml0KHZvaWQgKmFyZykKIHsKIAkvKiBpbml0aWFsaXplIGFsbCBm bGFncyB0byB6ZXJvZXMgKi8KLQlQTVNpZ25hbFN0YXRlID0gUE1TaWduYWxTaG1lbURlc2MucHRy OworCUFzc2VydChQTVNpZ25hbFN0YXRlKTsKIAlNZW1TZXQodW52b2xhdGl6ZShQTVNpZ25hbERh dGEgKiwgUE1TaWduYWxTdGF0ZSksIDAsIFBNU2lnbmFsU2htZW1EZXNjLnNpemUpOwogCW51bV9j aGlsZF9mbGFncyA9IE1heExpdmVQb3N0bWFzdGVyQ2hpbGRyZW4oKTsKIAlQTVNpZ25hbFN0YXRl LT5udW1fY2hpbGRfZmxhZ3MgPSBudW1fY2hpbGRfZmxhZ3M7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3By b2NhcnJheS5jCmluZGV4IDA4YzYzYmNiMmE3Li43MzY1MDRkM2EzZSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvcHJvY2FycmF5LmMKQEAgLTEwNCwxNSArMTA0LDE2IEBAIHR5cGVkZWYgc3RydWN0IFBy b2NBcnJheVN0cnVjdAogc3RhdGljIHZvaWQgUHJvY0FycmF5U2htZW1Jbml0KHZvaWQgKmFyZyk7 CiBzdGF0aWMgdm9pZCBQcm9jQXJyYXlTaG1lbUF0dGFjaCh2b2lkICphcmcpOwogCitQcm9jQXJy YXlTdHJ1Y3QgKnByb2NBcnJheSA9IE5VTEw7CisKIHN0YXRpYyBTaG1lbVN0cnVjdERlc2MgUHJv Y0FycmF5U2htZW1EZXNjID0gewogCS5uYW1lID0gIlByb2MgQXJyYXkiLAogCS5zaXplID0gMCwg LyogZHluYW1pYyAqLwogCS5pbml0X2ZuID0gUHJvY0FycmF5U2htZW1Jbml0LAogCS5hdHRhY2hf Zm4gPSBQcm9jQXJyYXlTaG1lbUF0dGFjaCwKKwkucHRyID0gKHZvaWQgKiopICZwcm9jQXJyYXks CiB9OwogCi0jZGVmaW5lIHByb2NBcnJheSAoKFByb2NBcnJheVN0cnVjdCAqKSBQcm9jQXJyYXlT aG1lbURlc2MucHRyKQotCiAvKgogICogU3RhdGUgZm9yIHRoZSBHbG9iYWxWaXNUZXN0KiBmYW1p bHkgb2YgZnVuY3Rpb25zLiBUaG9zZSBmdW5jdGlvbnMgY2FuCiAgKiBlLmcuIGJlIHVzZWQgdG8g ZGVjaWRlIGlmIGEgZGVsZXRlZCByb3cgY2FuIGJlIHJlbW92ZWQgd2l0aG91dCB2aW9sYXRpbmcK QEAgLTI5MCwyMiArMjkxLDI0IEBAIHN0YXRpYyBUcmFuc2FjdGlvbklkIGNhY2hlZFhpZElzTm90 SW5Qcm9ncmVzcyA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogICogQm9va2tlZXBpbmcgZm9yIHRy YWNraW5nIGVtdWxhdGVkIHRyYW5zYWN0aW9ucyBpbiByZWNvdmVyeQogICovCiAKK1RyYW5zYWN0 aW9uSWQgKktub3duQXNzaWduZWRYaWRzID0gTlVMTDsKKwogc3RhdGljIFNobWVtU3RydWN0RGVz YyBLbm93bkFzc2lnbmVkWGlkc1NobWVtRGVzYyA9IHsKIAkubmFtZSA9ICJLbm93bkFzc2lnbmVk WGlkcyIsCiAJLnNpemUgPSAwLCAvKiBkeW5hbWljICovCiAJLmluaXRfZm4gPSBOVUxMLAorCS5w dHIgPSAodm9pZCAqKikgJktub3duQXNzaWduZWRYaWRzLAogfTsKIAotI2RlZmluZSBLbm93bkFz c2lnbmVkWGlkcyAoKFRyYW5zYWN0aW9uSWQgKikgS25vd25Bc3NpZ25lZFhpZHNTaG1lbURlc2Mu cHRyKQorYm9vbCAqS25vd25Bc3NpZ25lZFhpZHNWYWxpZCA9IE5VTEw7CiAKIHN0YXRpYyBTaG1l bVN0cnVjdERlc2MgS25vd25Bc3NpZ25lZFhpZHNWYWxpZFNobWVtRGVzYyA9IHsKIAkubmFtZSA9 ICJLbm93bkFzc2lnbmVkWGlkc1ZhbGlkIiwKIAkuc2l6ZSA9IDAsIC8qIGR5bmFtaWMgKi8KIAku aW5pdF9mbiA9IE5VTEwsCisJLnB0ciA9ICh2b2lkICoqKSAmS25vd25Bc3NpZ25lZFhpZHNWYWxp ZCwKIH07CiAKLSNkZWZpbmUgS25vd25Bc3NpZ25lZFhpZHNWYWxpZCAoKGJvb2wgKikgS25vd25B c3NpZ25lZFhpZHNWYWxpZFNobWVtRGVzYy5wdHIpCi0KIHN0YXRpYyBUcmFuc2FjdGlvbklkIGxh dGVzdE9ic2VydmVkWGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAKIC8qCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMgYi9zcmMvYmFja2VuZC9zdG9y YWdlL2lwYy9wcm9jc2lnbmFsLmMKaW5kZXggNTc0M2YwODgzMjQuLmVlYzA0ZWFlM2Y0IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKKysrIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCkBAIC0xMDQsMTMgKzEwNCwxNSBAQCBzdHJ1 Y3QgUHJvY1NpZ25hbEhlYWRlcgogCiBzdGF0aWMgdm9pZCBQcm9jU2lnbmFsU2htZW1Jbml0KHZv aWQgKmFyZyk7CiAKK1Byb2NTaWduYWxIZWFkZXIgKlByb2NTaWduYWwgPSBOVUxMOworCiBzdGF0 aWMgU2htZW1TdHJ1Y3REZXNjIFByb2NTaWduYWxTaG1lbURlc2MgPSB7CiAJLm5hbWUgPSAiUHJv Y1NpZ25hbCIsCiAJLnNpemUgPSAwLCAvKiBkeW5hbWljICovCiAJLmluaXRfZm4gPSBQcm9jU2ln bmFsU2htZW1Jbml0LAorCS5wdHIgPSAodm9pZCAqKikgJlByb2NTaWduYWwsCiB9OwogCi0jZGVm aW5lIFByb2NTaWduYWwgKChQcm9jU2lnbmFsSGVhZGVyICopIFByb2NTaWduYWxTaG1lbURlc2Mu cHRyKQogCiBzdGF0aWMgUHJvY1NpZ25hbFNsb3QgKk15UHJvY1NpZ25hbFNsb3QgPSBOVUxMOwog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jIGIvc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvc2htZW0uYwppbmRleCBmYWEwZmNiZDIxZS4uZTczYWM0ODliMmIgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMKKysrIGIvc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvc2htZW0uYwpAQCAtMTE4LDE3ICsxMTgsMTggQEAgc3RhdGljIHZvaWQg KlNobWVtRW5kOwkJCS8qIGVuZCsxIGFkZHJlc3Mgb2Ygc2hhcmVkIG1lbW9yeSAqLwogCiBzdGF0 aWMgU2htZW1BbGxvY2F0b3JEYXRhICpTaG1lbUFsbG9jYXRvcjsKIHNsb2NrX3QgICAgKlNobWVt TG9jazsJCQkvKiBwb2ludHMgdG8gU2htZW1BbGxvY2F0b3ItPnNobWVtX2xvY2sgKi8KKyAvKiBw cmltYXJ5IGluZGV4IGhhc2h0YWJsZSBmb3Igc2htZW0gKi8KK0hUQUIgKlNobWVtSW5kZXggPSBO VUxMOworCiAKIAogc3RhdGljIFNobWVtSGFzaERlc2MgU2htZW1JbmRleEhhc2hEZXNjID0gewog CS5uYW1lID0gIlNobWVtSW5kZXgiLAogCS5pbml0X3NpemUgPSBTSE1FTV9JTkRFWF9TSVpFLAog CS5tYXhfc2l6ZSA9IFNITUVNX0lOREVYX1NJWkUsCisJLnB0ciA9ICZTaG1lbUluZGV4CiB9Owog Ci0gLyogcHJpbWFyeSBpbmRleCBoYXNodGFibGUgZm9yIHNobWVtICovCi0jZGVmaW5lIFNobWVt SW5kZXggKFNobWVtSW5kZXhIYXNoRGVzYy5wdHIpCi0KIAogLyogVG8gZ2V0IHJlbGlhYmxlIHJl c3VsdHMgZm9yIE5VTUEgaW5xdWlyeSB3ZSBuZWVkIHRvICJ0b3VjaCBwYWdlcyIgb25jZSAqLwog c3RhdGljIGJvb2wgZmlyc3ROdW1hVG91Y2ggPSB0cnVlOwpAQCAtMjA1LDcgKzIwNiw3IEBAIFNo bWVtSW5pdFJlZ2lzdGVyZWQodm9pZCkKIAkJcmVzdWx0LT5hbGxvY2F0ZWRfc2l6ZSA9IGFsbG9j YXRlZF9zaXplOwogCQlyZXN1bHQtPmxvY2F0aW9uID0gc3RydWN0UHRyOwogCi0JCXJlZ2lzdHJ5 W2ldLT5wdHIgPSBzdHJ1Y3RQdHI7CisJCSoocmVnaXN0cnlbaV0tPnB0cikgPSBzdHJ1Y3RQdHI7 CiAJCWlmIChyZWdpc3RyeVtpXS0+aW5pdF9mbikKIAkJCXJlZ2lzdHJ5W2ldLT5pbml0X2ZuKHJl Z2lzdHJ5W2ldLT5pbml0X2ZuX2FyZyk7CiAJfQpAQCAtMjM5LDcgKzI0MCw3IEBAIFNobWVtQXR0 YWNoUmVnaXN0ZXJlZCh2b2lkKQogCQkJCQkJCXJlZ2lzdHJ5W2ldLT5uYW1lKSkpOwogCQl9CiAK LQkJcmVnaXN0cnlbaV0tPnB0ciA9IHJlc3VsdC0+bG9jYXRpb247CisJCSpyZWdpc3RyeVtpXS0+ cHRyID0gcmVzdWx0LT5sb2NhdGlvbjsKIAogCQlpZiAocmVnaXN0cnlbaV0tPmF0dGFjaF9mbikK IAkJCXJlZ2lzdHJ5W2ldLT5hdHRhY2hfZm4ocmVnaXN0cnlbaV0tPmF0dGFjaF9mbl9hcmcpOwpA QCAtNDI1LDEwICs0MjYsMTEgQEAgSW5pdFNobWVtSW5kZXgodm9pZCkKIAlpbmZvLmtleXNpemUg PSBTSE1FTV9JTkRFWF9LRVlTSVpFOwogCWluZm8uZW50cnlzaXplID0gc2l6ZW9mKFNobWVtSW5k ZXhFbnQpOwogCi0JU2htZW1JbmRleCA9IFNobWVtSW5pdEhhc2goIlNobWVtSW5kZXgiLAorCSpT aG1lbUluZGV4SGFzaERlc2MucHRyID0gU2htZW1Jbml0SGFzaCgiU2htZW1JbmRleCIsCiAJCQkJ CQkJICAgU0hNRU1fSU5ERVhfU0laRSwgU0hNRU1fSU5ERVhfU0laRSwKIAkJCQkJCQkgICAmaW5m bywKIAkJCQkJCQkgICBIQVNIX0VMRU0gfCBIQVNIX1NUUklOR1MpOworCUFzc2VydChTaG1lbUlu ZGV4ICE9IE5VTEwgJiYgKlNobWVtSW5kZXhIYXNoRGVzYy5wdHIgPT0gU2htZW1JbmRleCk7CiB9 CiAKIC8qCkBAIC00ODIsNiArNDg0LDEyIEBAIFNobWVtUmVnaXN0ZXJIYXNoKFNobWVtSGFzaERl c2MgKmRlc2MsCQkvKiBjb25maWd1cmF0aW9uICovCiAJZGVzYy0+YmFzZV9kZXNjLmluaXRfZm5f YXJnID0gZGVzYzsKIAlkZXNjLT5iYXNlX2Rlc2MuYXR0YWNoX2ZuID0gc2htZW1faGFzaF9hdHRh Y2g7CiAJZGVzYy0+YmFzZV9kZXNjLmF0dGFjaF9mbl9hcmcgPSBkZXNjOworCS8qCisJICogV2Ug bmVlZCBhIHN0YWJsZSBwb2ludGVyIHRvIGhvbGQgdGhlIHBvaW50ZXIgdG8gdGhlIHNoYXJlZCBt ZW1vcnkuIFVzZQorCSAqIHRoZSBvbmUgcGFzc2VkIGluIHRoZSBkZXNjcmlwdG9yIG5vdy4gSXQg d2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSBoYXNoCisJICogdGFibGUgaGVhZGVyIGJ5IGluaXQg b3IgYXR0YWNoIGZ1bmN0aW9uLgorCSAqLworCWRlc2MtPmJhc2VfZGVzYy5wdHIgPSAodm9pZCAq KikgZGVzYy0+cHRyOwogCiAJZGVzYy0+YmFzZV9kZXNjLmV4dHJhX3NpemUgPSBoYXNoX2VzdGlt YXRlX3NpemUoZGVzYy0+bWF4X3NpemUsIGluZm9QLT5lbnRyeXNpemUpIC0gZGVzYy0+YmFzZV9k ZXNjLnNpemU7CiAKQEAgLTQ5OSwxMCArNTA3LDkgQEAgc2htZW1faGFzaF9pbml0KHZvaWQgKmFy ZykKIAlpbnQJCQloYXNoX2ZsYWdzID0gZGVzYy0+aGFzaF9mbGFnczsKIAogCS8qIFBhc3MgbG9j YXRpb24gb2YgaGFzaHRhYmxlIGhlYWRlciB0byBoYXNoX2NyZWF0ZSAqLwotCWRlc2MtPnB0ciA9 IGRlc2MtPmJhc2VfZGVzYy5wdHI7Ci0JZGVzYy0+aW5mb1AtPmhjdGwgPSAoSEFTSEhEUiAqKSBk ZXNjLT5wdHI7CisJZGVzYy0+aW5mb1AtPmhjdGwgPSAoSEFTSEhEUiAqKSAqZGVzYy0+YmFzZV9k ZXNjLnB0cjsKIAotCWRlc2MtPnB0ciA9IGhhc2hfY3JlYXRlKGRlc2MtPm5hbWUsIGRlc2MtPmlu aXRfc2l6ZSwgZGVzYy0+aW5mb1AsIGhhc2hfZmxhZ3MpOworCSpkZXNjLT5wdHIgPSBoYXNoX2Ny ZWF0ZShkZXNjLT5uYW1lLCBkZXNjLT5pbml0X3NpemUsIGRlc2MtPmluZm9QLCBoYXNoX2ZsYWdz KTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTUxOCw5ICs1MjUsOSBAQCBzaG1lbV9oYXNoX2F0dGFj aCh2b2lkICphcmcpCiAJaGFzaF9mbGFncyB8PSBIQVNIX0FUVEFDSDsKIAogCS8qIFBhc3MgbG9j YXRpb24gb2YgaGFzaHRhYmxlIGhlYWRlciB0byBoYXNoX2NyZWF0ZSAqLwotCWRlc2MtPmluZm9Q LT5oY3RsID0gKEhBU0hIRFIgKikgZGVzYy0+cHRyOworCWRlc2MtPmluZm9QLT5oY3RsID0gKEhB U0hIRFIgKikgKmRlc2MtPmJhc2VfZGVzYy5wdHI7CiAKLQlkZXNjLT5wdHIgPSBoYXNoX2NyZWF0 ZShkZXNjLT5uYW1lLCBkZXNjLT5pbml0X3NpemUsIGRlc2MtPmluZm9QLCBoYXNoX2ZsYWdzKTsK KwkqZGVzYy0+cHRyID0gaGFzaF9jcmVhdGUoZGVzYy0+bmFtZSwgZGVzYy0+aW5pdF9zaXplLCBk ZXNjLT5pbmZvUCwgaGFzaF9mbGFncyk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9zdG9yYWdlL2lwYy9zaW52YWxhZHQuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NpbnZh bGFkdC5jCmluZGV4IDBmZTBmMjU2OTcxLi44MzIxYmQ5YjUyZCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvc2ludmFsYWR0LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvc2ludmFsYWR0LmMKQEAgLTIwNSwxNSArMjA1LDE2IEBAIHR5cGVkZWYgc3RydWN0IFNJU2Vn CiAKIHN0YXRpYyB2b2lkIFNoYXJlZEludmFsU2htZW1Jbml0KHZvaWQgKmFyZyk7CiAKKy8qIHBv aW50ZXIgdG8gdGhlIHNoYXJlZCBpbnZhbCBidWZmZXIgKi8KK1NJU2VnICpzaG1JbnZhbEJ1ZmZl ciA9IE5VTEw7CisKIHN0YXRpYyBTaG1lbVN0cnVjdERlc2MgU2hhcmVkSW52YWxTaG1lbURlc2Mg PSB7CiAJLm5hbWUgPSAic2htSW52YWxCdWZmZXIiLAogCS5zaXplID0gMCwJLyogZHluYW1pYyAq LwogCS5pbml0X2ZuID0gU2hhcmVkSW52YWxTaG1lbUluaXQsCisJLnB0ciA9ICh2b2lkICoqKSAm c2htSW52YWxCdWZmZXIsCiB9OwogCi0vKiBwb2ludGVyIHRvIHRoZSBzaGFyZWQgaW52YWwgYnVm ZmVyICovCi0jZGVmaW5lIHNobUludmFsQnVmZmVyICgoU0lTZWcgKikgU2hhcmVkSW52YWxTaG1l bURlc2MucHRyKQotCiAKIHN0YXRpYyBMb2NhbFRyYW5zYWN0aW9uSWQgbmV4dExvY2FsVHJhbnNh Y3Rpb25JZDsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYyBi L3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKaW5kZXggODUzNzViNTE5NWUuLmEzZDY1 NTdhYTlkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jCisrKyBi L3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKQEAgLTc3LDI3ICs3NywzMyBAQCBQR1BS T0MJICAgKk15UHJvYyA9IE5VTEw7CiAKIHN0YXRpYyB2b2lkIFByb2NHbG9iYWxTaG1lbUluaXQo dm9pZCAqYXJnKTsKIAorLyogUG9pbnRlcnMgdG8gc2hhcmVkLW1lbW9yeSBzdHJ1Y3R1cmVzICov CitQUk9DX0hEUiAgICpQcm9jR2xvYmFsID0gTlVMTDsKK3ZvaWQgKnRtcEFsbFByb2NzID0gTlVM TDsKK3ZvaWQgKnRtcEZhc3RQYXRoTG9ja0FycmF5ID0gTlVMTDsKK05PTl9FWEVDX1NUQVRJQyBQ R1BST0MgKkF1eGlsaWFyeVByb2NzID0gTlVMTDsKK1BHUFJPQwkgICAqUHJlcGFyZWRYYWN0UHJv Y3MgPSBOVUxMOworCisKIHN0YXRpYyBTaG1lbVN0cnVjdERlc2MgUHJvY0dsb2JhbFNobWVtRGVz YyA9IHsKIAkubmFtZSA9ICJQcm9jIEhlYWRlciIsCiAJLnNpemUgPSBzaXplb2YoUFJPQ19IRFIp LAogCS5pbml0X2ZuID0gUHJvY0dsb2JhbFNobWVtSW5pdCwKKwkucHRyID0gKHZvaWQgKiopICZQ cm9jR2xvYmFsLAogfTsKIAogc3RhdGljIFNobWVtU3RydWN0RGVzYyBQcm9jR2xvYmFsQWxsUHJv Y3NTaG1lbURlc2MgPSB7CiAJLm5hbWUgPSAiUEdQUk9DIHN0cnVjdHVyZXMiLAogCS5zaXplID0g MCwgLyogZHluYW1pYyAqLworCS5wdHIgPSAodm9pZCAqKikgJnRtcEFsbFByb2NzLAogfTsKIAog c3RhdGljIFNobWVtU3RydWN0RGVzYyBGYXN0UGF0aExvY2tBcnJheVNobWVtRGVzYyA9IHsKIAku bmFtZSA9ICJGYXN0LVBhdGggTG9jayBBcnJheSIsCiAJLnNpemUgPSAwLCAvKiBkeW5hbWljICov CisJLnB0ciA9ICh2b2lkICoqKSAmdG1wRmFzdFBhdGhMb2NrQXJyYXksCiB9OwogCi0vKiBQb2lu dGVycyB0byBzaGFyZWQtbWVtb3J5IHN0cnVjdHVyZXMgKi8KLVBST0NfSERSICAgKlByb2NHbG9i YWwgPSBOVUxMOwotTk9OX0VYRUNfU1RBVElDIFBHUFJPQyAqQXV4aWxpYXJ5UHJvY3MgPSBOVUxM OwotUEdQUk9DCSAgICpQcmVwYXJlZFhhY3RQcm9jcyA9IE5VTEw7Ci0KIHN0YXRpYyB1aW50MzIg VG90YWxQcm9jczsKIAogc3RhdGljIERlYWRMb2NrU3RhdGUgZGVhZGxvY2tfc3RhdGUgPSBEU19O T1RfWUVUX0NIRUNLRUQ7CkBAIC0yMjIsOCArMjI4LDcgQEAgUHJvY0dsb2JhbFNobWVtSW5pdCh2 b2lkICphcmcpCiAJU2l6ZQkJZnBMb2NrQml0c1NpemUsCiAJCQkJZnBSZWxJZFNpemU7CiAKLQlQ cm9jR2xvYmFsID0gUHJvY0dsb2JhbFNobWVtRGVzYy5wdHI7Ci0KKwlBc3NlcnQoUHJvY0dsb2Jh bCk7CiAJUHJvY0dsb2JhbC0+c3BpbnNfcGVyX2RlbGF5ID0gREVGQVVMVF9TUElOU19QRVJfREVM QVk7CiAJZGxpc3RfaW5pdCgmUHJvY0dsb2JhbC0+ZnJlZVByb2NzKTsKIAlkbGlzdF9pbml0KCZQ cm9jR2xvYmFsLT5hdXRvdmFjRnJlZVByb2NzKTsKQEAgLTIzNiw3ICsyNDEsOCBAQCBQcm9jR2xv YmFsU2htZW1Jbml0KHZvaWQgKmFyZykKIAlwZ19hdG9taWNfaW5pdF91MzIoJlByb2NHbG9iYWwt PmNsb2dHcm91cEZpcnN0LCBJTlZBTElEX1BST0NfTlVNQkVSKTsKIAlTcGluTG9ja0luaXQoUHJv Y1N0cnVjdExvY2spOwogCi0JcHRyID0gUHJvY0dsb2JhbEFsbFByb2NzU2htZW1EZXNjLnB0cjsK KwlBc3NlcnQodG1wQWxsUHJvY3MpOworCXB0ciA9IHRtcEFsbFByb2NzOwogCXJlcXVlc3RTaXpl ID0gUHJvY0dsb2JhbEFsbFByb2NzU2htZW1EZXNjLnNpemU7CiAJbWVtc2V0KHB0ciwgMCwgcmVx dWVzdFNpemUpOwogCkBAIC0yNzQsNyArMjgwLDggQEAgUHJvY0dsb2JhbFNobWVtSW5pdCh2b2lk ICphcmcpCiAJZnBMb2NrQml0c1NpemUgPSBNQVhBTElHTihGYXN0UGF0aExvY2tHcm91cHNQZXJC YWNrZW5kICogc2l6ZW9mKHVpbnQ2NCkpOwogCWZwUmVsSWRTaXplID0gTUFYQUxJR04oRmFzdFBh dGhMb2NrU2xvdHNQZXJCYWNrZW5kKCkgKiBzaXplb2YoT2lkKSk7CiAKLQlmcFB0ciA9IEZhc3RQ YXRoTG9ja0FycmF5U2htZW1EZXNjLnB0cjsKKwlBc3NlcnQodG1wRmFzdFBhdGhMb2NrQXJyYXkp OworCWZwUHRyID0gdG1wRmFzdFBhdGhMb2NrQXJyYXk7CiAJcmVxdWVzdFNpemUgPSBGYXN0UGF0 aExvY2tBcnJheVNobWVtRGVzYy5zaXplOwogCW1lbXNldChmcFB0ciwgMCwgcmVxdWVzdFNpemUp OwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdHJhbnNhbS5oIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL3RyYW5zYW0uaAppbmRleCA0OWQ0NzZlOWQ1Yy4uNmU1YTU0NmY0MTEgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90cmFuc2FtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL3RyYW5zYW0uaApAQCAtMzM0LDcgKzMzNCw3IEBAIGV4dGVybiBib29sIFRyYW5zYWN0aW9u U3RhcnRlZER1cmluZ1JlY292ZXJ5KHZvaWQpOwogLyogaW4gdHJhbnNhbS92YXJzdXAuYyAqLwog I2lmbmRlZiBGUk9OVEVORAogZXh0ZXJuIFBHRExMSU1QT1JUIHN0cnVjdCBTaG1lbVN0cnVjdERl c2MgVHJhbnNhbVZhcmlhYmxlc1NobWVtRGVzYzsKLSNkZWZpbmUgVHJhbnNhbVZhcmlhYmxlcyAo KFRyYW5zYW1WYXJpYWJsZXNEYXRhICopIFRyYW5zYW1WYXJpYWJsZXNTaG1lbURlc2MucHRyKQor ZXh0ZXJuIFBHRExMSU1QT1JUIFRyYW5zYW1WYXJpYWJsZXNEYXRhICpUcmFuc2FtVmFyaWFibGVz OwogI2VuZGlmCiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3NobWVtLmgg Yi9zcmMvaW5jbHVkZS9zdG9yYWdlL3NobWVtLmgKaW5kZXggNDBlMmZjMTcwNTYuLmNiZDRlZjhk MDNmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3NobWVtLmgKKysrIGIvc3JjL2lu Y2x1ZGUvc3RvcmFnZS9zaG1lbS5oCkBAIC01MCw4ICs1MCw4IEBAIHR5cGVkZWYgc3RydWN0IFNo bWVtU3RydWN0RGVzYwogCSAqLwogCXNpemVfdAkJZXh0cmFfc2l6ZTsKIAotCS8qIFBvaW50ZXIg dG8gdGhlIHNoYXJlZCBtZW1vcnkgYXJlYSwgd2hlbiBpdCdzIGFsbG9jYXRlZC4gKi8KLQl2b2lk CSAgICpwdHI7CisJLyogUG9pbnRlciB0byB0aGUgdmFyaWFibGUgdG8gd2hpY2ggcG9pbnRlciB0 byB0aGlzIHNoYXJlZCBtZW1vcnkgYXJlYSBpcyBhc3NpZ25lZCBhZnRlciBhbGxvY2F0aW9uLiAq LworCXZvaWQJICAgKipwdHI7CiB9IFNobWVtU3RydWN0RGVzYzsKIAogLyoKQEAgLTY3LDcgKzY3 LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgU2htZW1IYXNoRGVzYwogCXNpemVfdAkJbWF4X3NpemU7CQkv KiBtYXggbnVtYmVyIG9mIGVudHJpZXMgKi8KIAlIQVNIQ1RMCSAgICppbmZvUDsKIAotCUhUQUIJ ICAgKnB0cjsKKwlIVEFCCSAgICoqcHRyOwogCiAJU2htZW1TdHJ1Y3REZXNjCWJhc2VfZGVzYzsK IH0gU2htZW1IYXNoRGVzYzsKLS0gCjIuMzQuMQoK --000000000000b94ae4064af21c1c Content-Type: text/x-patch; charset="US-ASCII"; name="0003-WIP-resizable-shared-memory-structures-20260216.patch" Content-Disposition: attachment; filename="0003-WIP-resizable-shared-memory-structures-20260216.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlpams4e2 RnJvbSA0ZTljODI1ZjljMzUxNTMzZTJjOWFjNGVkMmYzMzkwZWFhNGUwZDVkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBc2h1dG9zaCBCYXBhdCA8YXNodXRvc2guYmFwYXQub3NzQGdt YWlsLmNvbT4KRGF0ZTogTW9uLCAxNiBGZWIgMjAyNiAyMDowMDoxMCArMDUzMApTdWJqZWN0OiBb UEFUQ0ggMy8zXSBXSVA6IHJlc2l6YWJsZSBzaGFyZWQgbWVtb3J5IHN0cnVjdHVyZXMKCi0tLQog ZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sICAgICAgICAgICAgICAgIHwgIDEwICsKIHNy Yy9iYWNrZW5kL3BvcnQvc3lzdl9zaG1lbS5jICAgICAgICAgICAgICAgICB8IDE0MCArKysrKysr LS0KIHNyYy9iYWNrZW5kL3BvcnQvd2luMzJfc2htZW0uYyAgICAgICAgICAgICAgICB8ICAxNiAr LQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jICAgICAgICAgICAgICAgIHwgICA1ICst CiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jICAgICAgICAgICAgICAgfCAxMDEgKysr KysrLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAgICAgICAgIHwgICA0 ICstCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3BnX3NobWVtLmggICAgICAgICAgICAgICAgfCAgIDQg Ky0KIHNyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW0uaCAgICAgICAgICAgICAgICAgICB8ICAgOCAr CiBzcmMvdGVzdC9tb2R1bGVzL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwog c3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNy Yy90ZXN0L21vZHVsZXMvcmVzaXphYmxlX3NobWVtL01ha2VmaWxlICAgICB8ICAyMyArKwogLi4u L2V4cGVjdGVkL3Jlc2l6YWJsZV9zaG1lbS5vdXQgICAgICAgICAgICAgIHwgMTQ5ICsrKysrKysr KysKIHNyYy90ZXN0L21vZHVsZXMvcmVzaXphYmxlX3NobWVtL21lc29uLmJ1aWxkICB8ICAzNyAr KysKIC4uLi9yZXNpemFibGVfc2htZW0vcmVzaXphYmxlX3NobWVtLS0xLjAuc3FsICB8ICAzOSAr KysKIC4uLi9tb2R1bGVzL3Jlc2l6YWJsZV9zaG1lbS9yZXNpemFibGVfc2htZW0uYyB8IDI3MCAr KysrKysrKysrKysrKysrKysKIC4uLi9yZXNpemFibGVfc2htZW0vcmVzaXphYmxlX3NobWVtLmNv bmYgICAgICB8ICAgNCArCiAuLi4vcmVzaXphYmxlX3NobWVtL3Jlc2l6YWJsZV9zaG1lbS5jb250 cm9sICAgfCAgIDUgKwogLi4uL3NwZWNzL3Jlc2l6YWJsZV9zaG1lbS5zcGVjICAgICAgICAgICAg ICAgIHwgIDQyICsrKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgICAgICAg ICAgIHwgICA1ICstCiAxOSBmaWxlcyBjaGFuZ2VkLCA4MzAgaW5zZXJ0aW9ucygrKSwgMzQgZGVs ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy9yZXNpemFibGVf c2htZW0vTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Jlc2l6 YWJsZV9zaG1lbS9leHBlY3RlZC9yZXNpemFibGVfc2htZW0ub3V0CiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjL3Rlc3QvbW9kdWxlcy9yZXNpemFibGVfc2htZW0vbWVzb24uYnVpbGQKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Jlc2l6YWJsZV9zaG1lbS9yZXNpemFibGVfc2ht ZW0tLTEuMC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Jlc2l6YWJs ZV9zaG1lbS9yZXNpemFibGVfc2htZW0uYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21v ZHVsZXMvcmVzaXphYmxlX3NobWVtL3Jlc2l6YWJsZV9zaG1lbS5jb25mCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy9yZXNpemFibGVfc2htZW0vcmVzaXphYmxlX3NobWVtLmNv bnRyb2wKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Jlc2l6YWJsZV9zaG1l bS9zcGVjcy9yZXNpemFibGVfc2htZW0uc3BlYwoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9z eXN0ZW0tdmlld3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbAppbmRleCA4 YjRhYmVmOGM2OC4uMTE3M2U5OWZjNTYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9zeXN0ZW0t dmlld3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwKQEAgLTQyNDcs NiArNDI0NywxNiBAQCBTRUxFQ1QgKiBGUk9NIHBnX2xvY2tzIHBsIExFRlQgSk9JTiBwZ19wcmVw YXJlZF94YWN0cyBwcHgKICAgICAgICB0aGUgY29sdW1ucyB3aWxsIGJlIGVxdWFsIGluIHRoYXQg Y2FzZSBhbHNvLgogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgorCisgICAgIDxy b3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0i Y29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5tYXhpbXVtX3NpemU8L3N0 cnVjdGZpZWxkPiA8dHlwZT5pbnQ4PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+ CisgICAgICAgTWF4aW11bSBzaXplIGluIGJ5dGVzIHRoYXQgdGhlIGFsbG9jYXRpb24gY2FuIGdy b3cgdXB0byBpbmNsdWRpbmcgcGFkZGluZworICAgICAgIGluIGNhc2Ugb2YgcmVzaXphYmxlIGFs bG9jYXRpb25zLiBJdCBpcyB6ZXJvIG90aGVyd2lzZS4KKyAgICAgIDwvcGFyYT48L2VudHJ5Pgor ICAgICA8L3Jvdz4KICAgICA8L3Rib2R5PgogICAgPC90Z3JvdXA+CiAgIDwvdGFibGU+CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9wb3J0L3N5c3Zfc2htZW0uYyBiL3NyYy9iYWNrZW5kL3BvcnQv c3lzdl9zaG1lbS5jCmluZGV4IDJlMzg4NmNmOWZlLi44ZDdiMWE2NGM5MiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcG9ydC9zeXN2X3NobWVtLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9ydC9zeXN2 X3NobWVtLmMKQEAgLTM5LDcgKzM5LDEzIEBACiAjaW5jbHVkZSAidXRpbHMvZ3VjX2hvb2tzLmgi CiAjaW5jbHVkZSAidXRpbHMvcGlkZmlsZS5oIgogCi0KKy8qCisgKiBUT0RPOiB0aGlyZCBwYXJh Z3JhcGggc2hvdWxkIG1lbnRpb24gdGhhdCB3ZSB1c2UgbWVtZmRfY3JlYXRlIHRvIGNyZWF0ZQor ICogc2hhcmVkIG1lbW9yeSBzZWdtZW50LCBhbmQgcG9zc2libHkgdGhlcmUncyBhIHdheSB0byBz aGFyZSB0aGF0IHNlZ21lbnQKKyAqIGJldHdlZW4gdHdvIHByb2Nlc3NlcyB1c2luZyB0aGUgZmls ZSBkZXNjcmlwdG9yIGluc3RlYWQgb2YgZ29pbmcgdGhyb3VnaCBTeXNWCisgKiBzaGFyZWQgbWVt b3J5IHNlZ21lbnQuIFNvIG9uZSBkYXkgRVhFQ19CQUNLRU5EIGNhbiBhbHNvIHVzZSBhbm9ueW1v dXMgc2hhcmVkCisgKiBtZW1vcnkuCisgKi8KIC8qCiAgKiBBcyBvZiBQb3N0Z3JlU1FMIDkuMywg d2Ugbm9ybWFsbHkgYWxsb2NhdGUgb25seSBhIHZlcnkgc21hbGwgYW1vdW50IG9mCiAgKiBTeXN0 ZW0gViBzaGFyZWQgbWVtb3J5LCBhbmQgb25seSBmb3IgdGhlIHB1cnBvc2VzIG9mIHByb3ZpZGlu ZyBhbgpAQCAtOTcsNiArMTAzLDcgQEAgdm9pZAkgICAqVXNlZFNobWVtU2VnQWRkciA9IE5VTEw7 CiAKIHN0YXRpYyBTaXplIEFub255bW91c1NobWVtU2l6ZTsKIHN0YXRpYyB2b2lkICpBbm9ueW1v dXNTaG1lbSA9IE5VTEw7CitzdGF0aWMgaW50IEFub255bW91c1NobWVtRmQgPSAtMTsKIAogc3Rh dGljIHZvaWQgKkludGVybmFsSXBjTWVtb3J5Q3JlYXRlKElwY01lbW9yeUtleSBtZW1LZXksIFNp emUgc2l6ZSk7CiBzdGF0aWMgdm9pZCBJcGNNZW1vcnlEZXRhY2goaW50IHN0YXR1cywgRGF0dW0g c2htYWRkcik7CkBAIC00NzEsMTkgKzQ3OCwyMCBAQCBQR1NoYXJlZE1lbW9yeUF0dGFjaChJcGNN ZW1vcnlJZCBzaG1JZCwKICAqIGh1Z2VwYWdlIHNpemVzLCB3ZSBtaWdodCB3YW50IHRvIHRoaW5r IGFib3V0IG1vcmUgaW52YXNpdmUgc3RyYXRlZ2llcywKICAqIHN1Y2ggYXMgaW5jcmVhc2luZyBz aGFyZWRfYnVmZmVycyB0byBhYnNvcmIgdGhlIGV4dHJhIHNwYWNlLgogICoKLSAqIFJldHVybnMg dGhlIChyZWFsLCBhc3N1bWVkIG9yIGNvbmZpZyBwcm92aWRlZCkgcGFnZSBzaXplIGludG8KLSAq ICpodWdlcGFnZXNpemUsIGFuZCB0aGUgaHVnZXBhZ2UtcmVsYXRlZCBtbWFwIGZsYWdzIHRvIHVz ZSBpbnRvCi0gKiAqbW1hcF9mbGFncyBpZiByZXF1ZXN0ZWQgYnkgdGhlIGNhbGxlci4gIElmIGh1 Z2UgcGFnZXMgYXJlIG5vdCBzdXBwb3J0ZWQsCi0gKiAqaHVnZXBhZ2VzaXplIGFuZCAqbW1hcF9m bGFncyBhcmUgc2V0IHRvIDAuCisgKiBSZXR1cm5zIHRoZSAocmVhbCwgYXNzdW1lZCBvciBjb25m aWcgcHJvdmlkZWQpIHBhZ2Ugc2l6ZSBpbnRvICpodWdlcGFnZXNpemUsCisgKiB0aGUgaHVnZXBh Z2UtcmVsYXRlZCBtbWFwIGFuZCBtZW1mZCBmbGFncyB0byB1c2UgaW50byAqbW1hcF9mbGFncyBh bmQKKyAqICptZW1mZF9mbGFncyByZXNwZWN0aXZlbHkgaWYgcmVxdWVzdGVkIGJ5IHRoZSBjYWxs ZXIuIElmIGh1Z2UgcGFnZXMgYXJlIG5vdCBzdXBwb3J0ZWQsCisgKiAqaHVnZXBhZ2VzaXplLCAq bW1hcF9mbGFncyBhbmQgKm1lbWZkX2ZsYWdzIGFyZSBzZXQgdG8gMC4KICAqLwogdm9pZAotR2V0 SHVnZVBhZ2VTaXplKFNpemUgKmh1Z2VwYWdlc2l6ZSwgaW50ICptbWFwX2ZsYWdzKQorR2V0SHVn ZVBhZ2VTaXplKFNpemUgKmh1Z2VwYWdlc2l6ZSwgaW50ICptbWFwX2ZsYWdzLCBpbnQgKm1lbWZk X2ZsYWdzKQogewogI2lmZGVmIE1BUF9IVUdFVExCCiAKIAlTaXplCQlkZWZhdWx0X2h1Z2VwYWdl c2l6ZSA9IDA7CiAJU2l6ZQkJaHVnZXBhZ2VzaXplX2xvY2FsID0gMDsKIAlpbnQJCQltbWFwX2Zs YWdzX2xvY2FsID0gMDsKKwlpbnQJCQltZW1mZF9mbGFnc19sb2NhbCA9IDA7CiAKIAkvKgogCSAq IFN5c3RlbS1kZXBlbmRlbnQgY29kZSB0byBmaW5kIG91dCB0aGUgZGVmYXVsdCBodWdlIHBhZ2Ug c2l6ZS4KQEAgLTU0Miw2ICs1NTAsNyBAQCBHZXRIdWdlUGFnZVNpemUoU2l6ZSAqaHVnZXBhZ2Vz aXplLCBpbnQgKm1tYXBfZmxhZ3MpCiAJfQogCiAJbW1hcF9mbGFnc19sb2NhbCA9IE1BUF9IVUdF VExCOworCW1lbWZkX2ZsYWdzX2xvY2FsID0gTUZEX0hVR0VUTEI7CiAKIAkvKgogCSAqIE9uIHJl Y2VudCBlbm91Z2ggTGludXgsIGFsc28gaW5jbHVkZSB0aGUgZXhwbGljaXQgcGFnZSBzaXplLCBp ZgpAQCAtNTU2LDExICs1NjUsMjIgQEAgR2V0SHVnZVBhZ2VTaXplKFNpemUgKmh1Z2VwYWdlc2l6 ZSwgaW50ICptbWFwX2ZsYWdzKQogCX0KICNlbmRpZgogCisjaWYgZGVmaW5lZChNRkRfSFVHRV9N QVNLKSAmJiBkZWZpbmVkKE1GRF9IVUdFX1NISUZUKQorCWlmIChodWdlcGFnZXNpemVfbG9jYWwg IT0gZGVmYXVsdF9odWdlcGFnZXNpemUpCisJeworCQlpbnQJCQlzaGlmdCA9IHBnX2NlaWxfbG9n Ml82NChodWdlcGFnZXNpemVfbG9jYWwpOworCisJCW1lbWZkX2ZsYWdzX2xvY2FsIHw9IChzaGlm dCAmIE1GRF9IVUdFX01BU0spIDw8IE1GRF9IVUdFX1NISUZUOworCX0KKyNlbmRpZgorCiAJLyog YXNzaWduIHRoZSByZXN1bHRzIGZvdW5kICovCiAJaWYgKG1tYXBfZmxhZ3MpCiAJCSptbWFwX2Zs YWdzID0gbW1hcF9mbGFnc19sb2NhbDsKIAlpZiAoaHVnZXBhZ2VzaXplKQogCQkqaHVnZXBhZ2Vz aXplID0gaHVnZXBhZ2VzaXplX2xvY2FsOworCWlmIChtZW1mZF9mbGFncykKKwkJKm1lbWZkX2Zs YWdzID0gbWVtZmRfZmxhZ3NfbG9jYWw7CiAKICNlbHNlCiAKQEAgLTU2OCw2ICs1ODgsOCBAQCBH ZXRIdWdlUGFnZVNpemUoU2l6ZSAqaHVnZXBhZ2VzaXplLCBpbnQgKm1tYXBfZmxhZ3MpCiAJCSpo dWdlcGFnZXNpemUgPSAwOwogCWlmIChtbWFwX2ZsYWdzKQogCQkqbW1hcF9mbGFncyA9IDA7CisJ aWYgKG1lbWZkX2ZsYWdzKQorCQkqbWVtZmRfZmxhZ3MgPSAwOwogCiAjZW5kaWYJCQkJCQkJLyog TUFQX0hVR0VUTEIgKi8KIH0KQEAgLTU5NywxMiArNjE5LDE1IEBAIGNoZWNrX2h1Z2VfcGFnZV9z aXplKGludCAqbmV3dmFsLCB2b2lkICoqZXh0cmEsIEd1Y1NvdXJjZSBzb3VyY2UpCiAgKiBsYXJn ZXIgdGhhbiByZXF1ZXN0ZWQuCiAgKi8KIHN0YXRpYyB2b2lkICoKLUNyZWF0ZUFub255bW91c1Nl Z21lbnQoU2l6ZSAqc2l6ZSkKK0NyZWF0ZUFub255bW91c1NlZ21lbnQoU2l6ZSAqc2l6ZSwgaW50 ICpmZCkKIHsKIAlTaXplCQlhbGxvY3NpemUgPSAqc2l6ZTsKIAl2b2lkCSAgICpwdHIgPSBNQVBf RkFJTEVEOwogCWludAkJCW1tYXBfZXJybm8gPSAwOwotCWludAkJCW1tYXBfZmxhZ3MgPSBNQVBf U0hBUkVEIHwgTUFQX0FOT05ZTU9VUyB8IE1BUF9IQVNTRU1BUEhPUkU7CisJLyogVE9ETzogV2hl biBtZW1mZF9jcmVhdGUgaXMgbm90IGF2YWlsYWJsZSB3ZSBzaG91bGQgYWRkIE1BUF9BTk9OWU1P VVMgKi8KKwlpbnQJCQltbWFwX2ZsYWdzID0gTUFQX1NIQVJFRCB8IE1BUF9IQVNTRU1BUEhPUkU7 CisJaW50CQkJbWVtZmRfZmxhZ3MgPSAwOworCWludAkJCWFub25mZCA9IC0xOwogCiAjaWZuZGVm IE1BUF9IVUdFVExCCiAJLyogUEdTaGFyZWRNZW1vcnlDcmVhdGUgc2hvdWxkIGhhdmUgZGVhbHQg d2l0aCB0aGlzIGNhc2UgKi8KQEAgLTYxNSwxOCArNjQwLDMzIEBAIENyZWF0ZUFub255bW91c1Nl Z21lbnQoU2l6ZSAqc2l6ZSkKIAkJICovCiAJCVNpemUJCWh1Z2VwYWdlc2l6ZTsKIAkJaW50CQkJ aHVnZV9tbWFwX2ZsYWdzOworCQlpbnQgCQlodWdlX21lbWZkX2ZsYWdzOwogCi0JCUdldEh1Z2VQ YWdlU2l6ZSgmaHVnZXBhZ2VzaXplLCAmaHVnZV9tbWFwX2ZsYWdzKTsKKwkJR2V0SHVnZVBhZ2VT aXplKCZodWdlcGFnZXNpemUsICZodWdlX21tYXBfZmxhZ3MsICZodWdlX21lbWZkX2ZsYWdzKTsK IAotCQlpZiAoYWxsb2NzaXplICUgaHVnZXBhZ2VzaXplICE9IDApCi0JCQlhbGxvY3NpemUgPSBh ZGRfc2l6ZShhbGxvY3NpemUsIGh1Z2VwYWdlc2l6ZSAtIChhbGxvY3NpemUgJSBodWdlcGFnZXNp emUpKTsKLQotCQlwdHIgPSBtbWFwKE5VTEwsIGFsbG9jc2l6ZSwgUFJPVF9SRUFEIHwgUFJPVF9X UklURSwKLQkJCQkgICBtbWFwX2ZsYWdzIHwgaHVnZV9tbWFwX2ZsYWdzLCAtMSwgMCk7Ci0JCW1t YXBfZXJybm8gPSBlcnJubzsKLQkJaWYgKGh1Z2VfcGFnZXMgPT0gSFVHRV9QQUdFU19UUlkgJiYg cHRyID09IE1BUF9GQUlMRUQpCi0JCQllbG9nKERFQlVHMSwgIm1tYXAoJXp1KSB3aXRoIE1BUF9I VUdFVExCIGZhaWxlZCwgaHVnZSBwYWdlcyBkaXNhYmxlZDogJW0iLAotCQkJCSBhbGxvY3NpemUp OworCQkvKgorCQkgKiBDcmVhdGUgYW4gYW5vbnltb3VzIHNoYXJlZCBtZW1vcnkgZmlsZSwgd2hp Y2ggY2FuIGJlIHVzZWQgd2l0aCBmYWxsb2NhdGUKKwkJICogdG8gcmVsZWFzZSBtZW1vcnkgZnJv bSByZXNpemFibGUgc2hhcmVkIG1lbW9yeSBzdHJ1Y3R1cmVzLgorCQkgKgorCQkgKiBUT0RPOiBX ZSBuZWVkIGEgd2F5IHRvIGRldGVjdCB3aGV0aGVyIG1lbWZkX2NyZWF0ZSBpcyBzdXBwb3J0ZWQg YnkgdGhlCisJCSAqIHJ1bm5pbmcga2VybmVsIHRvIGRlY2lkZSB3aGV0aGVyIHdlIGNhbiBzdXBw b3J0IHJlc2l6YWJsZSBzaGFyZWQgbWVtb3J5CisJCSAqIG9iamVjdHMgb3Igbm90LiBOZWVkIGEg Y29uZmlndXJlIGxldmVsIHN3aXRjaC4KKwkJICovCisJCWFub25mZCA9IG1lbWZkX2NyZWF0ZSgi bWFpbiIsIG1lbWZkX2ZsYWdzIHwgaHVnZV9tZW1mZF9mbGFncyk7CisJCWlmIChhbm9uZmQgPT0g LTEpCisJCQllbG9nKERFQlVHMSwgIm1lbWZkX2NyZWF0ZSB3aXRoIE1GRF9IVUdFVEJMIGZhaWxl ZCwgaHVnZSBwYWdlcyB3aWxsIGJlIGRpc2FibGVkOiAlbSIpOworCQllbHNlCisJCXsKKwkJCWlm IChhbGxvY3NpemUgJSBodWdlcGFnZXNpemUgIT0gMCkKKwkJCQlhbGxvY3NpemUgPSBhZGRfc2l6 ZShhbGxvY3NpemUsIGh1Z2VwYWdlc2l6ZSAtIChhbGxvY3NpemUgJSBodWdlcGFnZXNpemUpKTsK KworCQkJcHRyID0gbW1hcChOVUxMLCBhbGxvY3NpemUsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUs CisJCQkJCSAgIG1tYXBfZmxhZ3MgfCBodWdlX21tYXBfZmxhZ3MsIGFub25mZCwgMCk7CisJCQlt bWFwX2Vycm5vID0gZXJybm87CisJCQlpZiAoaHVnZV9wYWdlcyA9PSBIVUdFX1BBR0VTX1RSWSAm JiBwdHIgPT0gTUFQX0ZBSUxFRCkKKwkJCQllbG9nKERFQlVHMSwgIm1tYXAoJXp1KSB3aXRoIE1B UF9IVUdFVExCIGZhaWxlZCwgaHVnZSBwYWdlcyBkaXNhYmxlZDogJW0iLAorCQkJCQkgYWxsb2Nz aXplKTsKKwkJfQogCX0KICNlbmRpZgogCkBAIC02NDAsMTMgKzY4MCwyNiBAQCBDcmVhdGVBbm9u eW1vdXNTZWdtZW50KFNpemUgKnNpemUpCiAKIAlpZiAocHRyID09IE1BUF9GQUlMRUQgJiYgaHVn ZV9wYWdlcyAhPSBIVUdFX1BBR0VTX09OKQogCXsKKwkJLyoKKwkJICogQ3JlYXRlIGFuIGFub255 bW91cyBzaGFyZWQgbWVtb3J5IGZpbGUsIHdoaWNoIGNhbiBiZSB1c2VkIHdpdGggZmFsbG9jYXRl CisJCSAqIHRvIHJlbGVhc2UgbWVtb3J5IGZyb20gcmVzaXphYmxlIHNoYXJlZCBtZW1vcnkgc3Ry dWN0dXJlcy4KKwkJICoKKwkJICogVE9ETzogV2UgbmVlZCBhIHdheSB0byBkZXRlY3Qgd2hldGhl ciBtZW1mZF9jcmVhdGUgaXMgc3VwcG9ydGVkIGJ5IHRoZQorCQkgKiBydW5uaW5nIGtlcm5lbCB0 byBkZWNpZGUgd2hldGhlciB3ZSBjYW4gc3VwcG9ydCByZXNpemFibGUgc2hhcmVkIG1lbW9yeQor CQkgKiBvYmplY3RzIG9yIG5vdC4gTmVlZCBhIGNvbmZpZ3VyZSBsZXZlbCBzd2l0Y2guCisJCSAq LworCQlhbm9uZmQgPSBtZW1mZF9jcmVhdGUoIm1haW4iLCBtZW1mZF9mbGFncyk7CisJCWlmIChh bm9uZmQgPT0gLTEpCisJCQllcmVwb3J0KEZBVEFMLAorCQkJCQkoZXJybXNnKCJjb3VsZCBub3Qg Y3JlYXRlIGFub255bW91cyBzaGFyZWQgbWVtb3J5IGZpbGU6ICVtIikpKTsKKwogCQkvKgogCQkg KiBVc2UgdGhlIG9yaWdpbmFsIHNpemUsIG5vdCB0aGUgcm91bmRlZC11cCB2YWx1ZSwgd2hlbiBm YWxsaW5nIGJhY2sKIAkJICogdG8gbm9uLWh1Z2UgcGFnZXMuCiAJCSAqLwogCQlhbGxvY3NpemUg PSAqc2l6ZTsKIAkJcHRyID0gbW1hcChOVUxMLCBhbGxvY3NpemUsIFBST1RfUkVBRCB8IFBST1Rf V1JJVEUsCi0JCQkJICAgbW1hcF9mbGFncywgLTEsIDApOworCQkJCSAgIG1tYXBfZmxhZ3MsIGFu b25mZCwgMCk7CiAJCW1tYXBfZXJybm8gPSBlcnJubzsKIAl9CiAKQEAgLTY2NSw3ICs3MTgsMzYg QEAgQ3JlYXRlQW5vbnltb3VzU2VnbWVudChTaXplICpzaXplKQogCQkJCQkJIGFsbG9jc2l6ZSkg OiAwKSk7CiAJfQogCisJLyoKKwkgKiBTZXQgdGhlIHNpemUgb2YgdGhlIGFub255bW91cyBmaWxl IHRvIHRoZSBhY3R1YWwgc2l6ZSBvZiB0aGUgbWFwcGluZywgc28KKwkgKiB0aGF0IGFjY2VzcyB0 byB0aGUgc2hhcmVkIG1lbW9yeSB3aWxsIGJlIGFsbG93ZWQuIFRoaXMgZG9lcyBub3QgYWxsb2Nh dGUKKwkgKiB0aGUgbWVtb3J5LCB3aGljaCB3aWxsIGJlIGFsbG9jYXRlZCBhcyB3cml0dGVuLgor CSAqLworCWlmIChhbm9uZmQgIT0gLTEpCisJeworCQlpZiAoZnRydW5jYXRlKGFub25mZCwgYWxs b2NzaXplKSA9PSAtMSkKKwkJeworCQkJaW50CQkJc2F2ZV9lcnJubyA9IGVycm5vOworCisJCQlj bG9zZShhbm9uZmQpOworCQkJYW5vbmZkID0gLTE7CisKKwkJCWVycm5vID0gc2F2ZV9lcnJubzsK KwkJCWVyZXBvcnQoRkFUQUwsCisJCQkJCShlcnJtc2coImNvdWxkIG5vdCB0cnVuY2F0ZSBhbm9u eW1vdXMgZmlsZSB0byBzaXplICV6dTogJW0iLAorCQkJCQkJCWFsbG9jc2l6ZSksCisJCQkJCSAo c2F2ZV9lcnJubyA9PSBFRkJJRykgPworCQkJCQkgZXJyaGludCgiVGhpcyBlcnJvciB1c3VhbGx5 IG1lYW5zIHRoYXQgUG9zdGdyZVNRTCdzIHJlcXVlc3QgIgorCQkJCQkJCSAiZm9yIGEgc2hhcmVk IG1lbW9yeSBzZWdtZW50IGV4Y2VlZGVkIG1heGltdW0gZmlsZSBzaXplLiAiCisJCQkJCQkJICJU byByZWR1Y2UgdGhlIHJlcXVlc3Qgc2l6ZSAoY3VycmVudGx5ICV6dSBieXRlcyksIHJlZHVjZSBQ b3N0Z3JlU1FMJ3Mgc2hhcmVkICIKKwkJCQkJCQkgIm1lbW9yeSB1c2FnZSwgcGVyaGFwcyBieSBy ZWR1Y2luZyBcInNoYXJlZF9idWZmZXJzXCIgb3IgIgorCQkJCQkJCSAiXCJtYXhfY29ubmVjdGlv bnNcIi4iLAorCQkJCQkJCSBhbGxvY3NpemUpIDogMCkpOworCQl9CisJfQorCiAJKnNpemUgPSBh bGxvY3NpemU7CisJKmZkID0gYW5vbmZkOwogCXJldHVybiBwdHI7CiB9CiAKQEAgLTczOCw3ICs4 MjAsNyBAQCBQR1NoYXJlZE1lbW9yeUNyZWF0ZShTaXplIHNpemUsCiAKIAlpZiAoc2hhcmVkX21l bW9yeV90eXBlID09IFNITUVNX1RZUEVfTU1BUCkKIAl7Ci0JCUFub255bW91c1NobWVtID0gQ3Jl YXRlQW5vbnltb3VzU2VnbWVudCgmc2l6ZSk7CisJCUFub255bW91c1NobWVtID0gQ3JlYXRlQW5v bnltb3VzU2VnbWVudCgmc2l6ZSwgJkFub255bW91c1NobWVtRmQpOwogCQlBbm9ueW1vdXNTaG1l bVNpemUgPSBzaXplOwogCiAJCS8qIFJlZ2lzdGVyIG9uLWV4aXQgcm91dGluZSB0byB1bm1hcCB0 aGUgYW5vbnltb3VzIHNlZ21lbnQgKi8KQEAgLTk5MSwzICsxMDczLDIxIEBAIFBHU2hhcmVkTWVt b3J5RGV0YWNoKHZvaWQpCiAJCUFub255bW91c1NobWVtID0gTlVMTDsKIAl9CiB9CisKKy8qCisg KiBSZWxlYXNlIHBhcnQgb2YgdGhlIHNoYXJlZCBtZW1vcnkgb2YgZ2l2ZW4gc2l6ZSBzdGFydGlu ZyBhdCBnaXZlbiBhZGRyZXNzLgorICoKKyAqIE9ubHkgc3VwcG9ydGVkIG9uIHBsYXRmb3JtcyB0 aGF0IHN1cHBvcnQgYW5vbnltb3VzIHNoYXJlZCBtZW1vcnkuCisgKi8KK3ZvaWQgUEdTaGFyZWRN ZW1vcnlSZWxlYXNlKHZvaWQgKmFkZHIsIFNpemUgc2l6ZSkKK3sKKwlpZiAoIUFub255bW91c1No bWVtKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1Rf U1VQUE9SVEVEKSwKKwkJCQkgZXJybXNnKCJyZWxlYXNpbmcgc2hhcmVkIG1lbW9yeSBpcyBub3Qg c3VwcG9ydGVkIHdpdGggdGhlIGN1cnJlbnQgXCJzaGFyZWRfbWVtb3J5X3R5cGVcIiBzZXR0aW5n IikpKTsKKworCWlmIChmYWxsb2NhdGUoQW5vbnltb3VzU2htZW1GZCwgRkFMTE9DX0ZMX1BVTkNI X0hPTEUgfCBGQUxMT0NfRkxfS0VFUF9TSVpFLAorCQkJCSAob2ZmX3QpICgoY2hhciAqKSBhZGRy IC0gKGNoYXIgKikgQW5vbnltb3VzU2htZW0pLCAob2ZmX3QpIHNpemUpID09IC0xKQorCQllcmVw b3J0KEVSUk9SLAorCQkJCShlcnJtc2coImNvdWxkIG5vdCByZWxlYXNlIHNoYXJlZCBtZW1vcnk6 ICVtIikpKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BvcnQvd2luMzJfc2htZW0uYyBi L3NyYy9iYWNrZW5kL3BvcnQvd2luMzJfc2htZW0uYwppbmRleCA3OTRlNGZjYjJhZC4uNTYzNDUw YjYwYzIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BvcnQvd2luMzJfc2htZW0uYworKysgYi9z cmMvYmFja2VuZC9wb3J0L3dpbjMyX3NobWVtLmMKQEAgLTYyMSwxOCArNjIxLDMyIEBAIHBnd2lu MzJfUmVzZXJ2ZVNoYXJlZE1lbW9yeVJlZ2lvbihIQU5ETEUgaENoaWxkKQogCXJldHVybiB0cnVl OwogfQogCisvKgorICogUmVsZWFzZSBwYXJ0IG9mIHRoZSBzaGFyZWQgbWVtb3J5IG9mIGdpdmVu IHNpemUgZnJvbSBnaXZlbiBhZGRyZXNzLgorICoKKyAqIE5vdCBzdXBwb3J0ZWQgb24gV2luZG93 cyBjdXJyZW50bHkuCisgKi8KK3ZvaWQgUEdTaGFyZWRNZW1vcnlSZWxlYXNlKHZvaWQgKmFkZHIs IFNpemUgc2l6ZSkKK3sKKwllcmVwb3J0KEVSUk9SLAorCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFU VVJFX05PVF9TVVBQT1JURUQpLAorCQkJIGVycm1zZygicmVsZWFzaW5nIHBhcnQgb2Ygc2hhcmVk IG1lbW9yeSBpcyBub3Qgc3VwcG9ydGVkIG9uIHdpbmRvd3MiKSkpOworfQorCiAvKgogICogVGhp cyBmdW5jdGlvbiBpcyBwcm92aWRlZCBmb3IgY29uc2lzdGVuY3kgd2l0aCBzeXN2X3NobWVtLmMg YW5kIGRvZXMgbm90CiAgKiBwcm92aWRlIGFueSB1c2VmdWwgaW5mb3JtYXRpb24gZm9yIFdpbmRv d3MuICBUbyBvYnRhaW4gdGhlIGxhcmdlIHBhZ2Ugc2l6ZSwKICAqIHVzZSBHZXRMYXJnZVBhZ2VN aW5pbXVtKCkgaW5zdGVhZC4KICAqLwogdm9pZAotR2V0SHVnZVBhZ2VTaXplKFNpemUgKmh1Z2Vw YWdlc2l6ZSwgaW50ICptbWFwX2ZsYWdzKQorR2V0SHVnZVBhZ2VTaXplKFNpemUgKmh1Z2VwYWdl c2l6ZSwgaW50ICptbWFwX2ZsYWdzLCBpbnQgKm1lbWZkX2ZsYWdzKQogewogCWlmIChodWdlcGFn ZXNpemUpCiAJCSpodWdlcGFnZXNpemUgPSAwOwogCWlmIChtbWFwX2ZsYWdzKQogCQkqbW1hcF9m bGFncyA9IDA7CisJaWYgKG1lbWZkX2ZsYWdzKQorCQkqbWVtZmRfZmxhZ3MgPSAwOwogfQogCiAv KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jIGIvc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvaXBjaS5jCmluZGV4IDk1Mjk4ODY0NWQwLi5iZDUyNjY0M2Q4ZiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jCisrKyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL2lwY2kuYwpAQCAtMzYwLDYgKzM2MCw5IEBAIEluaXRpYWxpemVTaG1lbUdV Q3Modm9pZCkKIAkvKgogCSAqIENhbGN1bGF0ZSB0aGUgc2hhcmVkIG1lbW9yeSBzaXplIGFuZCBy b3VuZCB1cCB0byB0aGUgbmVhcmVzdCBtZWdhYnl0ZS4KIAkgKi8KKwkvKgorCSAqIFRPRE86IHdl IG5lZWQgdG8gZG8gYSBiZXR0ZXIgam9iIG9mIHNlcGFyYXRpbmcgb3V0IG1heGltdW0gc2hhcmVk IG1lbW9yeQorCSAqIGFuZCBtaW5pbXVtIHNoYXJlZCBtZW1vcnkgYmVjYXVzZSBvZiBvbi1kZW1h bmQgc2hhcmVkIG1lbW9yeSBzZWdtZW50cy4gKi8KIAlzaXplX2IgPSBDYWxjdWxhdGVTaG1lbVNp emUoKTsKIAlzaXplX21iID0gYWRkX3NpemUoc2l6ZV9iLCAoMTAyNCAqIDEwMjQpIC0gMSkgLyAo MTAyNCAqIDEwMjQpOwogCXNwcmludGYoYnVmLCAiJXp1Iiwgc2l6ZV9tYik7CkBAIC0zNjksNyAr MzcyLDcgQEAgSW5pdGlhbGl6ZVNobWVtR1VDcyh2b2lkKQogCS8qCiAJICogQ2FsY3VsYXRlIHRo ZSBudW1iZXIgb2YgaHVnZSBwYWdlcyByZXF1aXJlZC4KIAkgKi8KLQlHZXRIdWdlUGFnZVNpemUo JmhwX3NpemUsIE5VTEwpOworCUdldEh1Z2VQYWdlU2l6ZSgmaHBfc2l6ZSwgTlVMTCwgTlVMTCk7 CiAJaWYgKGhwX3NpemUgIT0gMCkKIAl7CiAJCVNpemUJCWhwX3JlcXVpcmVkOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL3NobWVtLmMKaW5kZXggZTczYWM0ODliMmIuLjFlMTljMzBlZjU4IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL3NobWVtLmMKQEAgLTE0Myw2ICsxNDMsOSBAQCBTaG1lbVJlZ2lzdGVyU3RydWN0KFNobWVt U3RydWN0RGVzYyAqZGVzYykKIAllbG9nKERFQlVHMiwgIlJFR0lTVEVSOiAlcyB3aXRoIHNpemUg JXpkIiwgZGVzYy0+bmFtZSwgZGVzYy0+c2l6ZSk7CiAKIAlyZWdpc3RyeVtudW1fcmVnaXN0cmF0 aW9ucysrXSA9IGRlc2M7CisKKwlpZiAoZGVzYy0+bWF4X3NpemUgPiAwKQorCQllbG9nKERFQlVH MiwgIlJFU0laQUJMRSBzdHJ1Y3R1cmU6ICVzIGhhcyBtYXhfc2l6ZSAlemQiLCBkZXNjLT5uYW1l LCBkZXNjLT5tYXhfc2l6ZSk7CiB9CiAKIHNpemVfdApAQCAtMTUzLDcgKzE1Niw3IEBAIFNobWVt UmVnaXN0ZXJlZFNpemUodm9pZCkKIAlzaXplID0gMDsKIAlmb3IgKGludCBpID0gMDsgaSA8IG51 bV9yZWdpc3RyYXRpb25zOyBpKyspCiAJewotCQlzaXplID0gYWRkX3NpemUoc2l6ZSwgcmVnaXN0 cnlbaV0tPnNpemUpOworCQlzaXplID0gYWRkX3NpemUoc2l6ZSwgcmVnaXN0cnlbaV0tPm1heF9z aXplID4gMCA/IHJlZ2lzdHJ5W2ldLT5tYXhfc2l6ZSA6IHJlZ2lzdHJ5W2ldLT5zaXplKTsKIAkJ c2l6ZSA9IGFkZF9zaXplKHNpemUsIHJlZ2lzdHJ5W2ldLT5leHRyYV9zaXplKTsKIAl9CiAKQEAg LTE5MCw4ICsxOTMsMTcgQEAgU2htZW1Jbml0UmVnaXN0ZXJlZCh2b2lkKQogCQlpZiAoZm91bmQp CiAJCQllbG9nKEVSUk9SLCAic2htZW0gc3RydWN0IFwiJXNcIiBpcyBhbHJlYWR5IGluaXRpYWxp emVkIiwgcmVnaXN0cnlbaV0tPm5hbWUpOwogCi0JCS8qIGFsbG9jYXRlIGFuZCBpbml0aWFsaXpl IGl0ICovCi0JCXN0cnVjdFB0ciA9IFNobWVtQWxsb2NSYXcocmVnaXN0cnlbaV0tPnNpemUsICZh bGxvY2F0ZWRfc2l6ZSk7CisJCS8qCisJCSAqIGFsbG9jYXRlIGFuZCBpbml0aWFsaXplIHRoZSBz dHJ1Y3R1cmVzLgorCQkgKgorCQkgKiBBbGxvY2F0ZSBtYXhpbXVtIHNpemUgZm9yIHJlc2l6YWJs ZSBzdHJ1Y3R1cmVzLiBUaGlzIHNob3VsZCBub3QKKwkJICogYWxsb2NhdGUgbWVtb3J5IGJ1dCBq dXN0IHRoZSBhZGRyZXNzIHNwYWNlLiBNZW1vcnkgd2lsbCBiZSBhbGxvY2F0ZWQKKwkJICogYXMg dGhlIGFkZHJlc3Mgc3BhY2UgaXMgd3JpdHRlbiB0by4gSXQgaXMgZXhwZWN0ZWQgdGhhdCB0aGUK KwkJICogcmVnaXN0cmFudHMgZG8gbm90IHVzZSBtZW1vcnkgYmV5b25kIHRoZSBpbml0aWFsIHNp emUgdW50aWwgdGhleSBoYXZlCisJCSAqIHJlc2l6ZWQgdGhlIHN0cnVjdHVyZS4gSWYgdGhleSBk byBzbywgdGhpcyB3aWxsIHJlc3VsdCBpbiBhbGxvY2F0aW5nCisJCSAqIG1vcmUgbWVtb3J5IHRo YW4gZXhwZWN0ZWQuCisJCSAqLworCQlzdHJ1Y3RQdHIgPSBTaG1lbUFsbG9jUmF3KHJlZ2lzdHJ5 W2ldLT5tYXhfc2l6ZSA+IDAgPyByZWdpc3RyeVtpXS0+bWF4X3NpemUgOiByZWdpc3RyeVtpXS0+ c2l6ZSwgJmFsbG9jYXRlZF9zaXplKTsKIAkJaWYgKHN0cnVjdFB0ciA9PSBOVUxMKQogCQl7CiAJ CQkvKiBvdXQgb2YgbWVtb3J5OyByZW1vdmUgdGhlIGZhaWxlZCBTaG1lbUluZGV4IGVudHJ5ICov CkBAIC0yMDMsNyArMjE1LDggQEAgU2htZW1Jbml0UmVnaXN0ZXJlZCh2b2lkKQogCQkJCQkJCXJl Z2lzdHJ5W2ldLT5uYW1lLCByZWdpc3RyeVtpXS0+c2l6ZSkpKTsKIAkJfQogCQlyZXN1bHQtPnNp emUgPSByZWdpc3RyeVtpXS0+c2l6ZTsKLQkJcmVzdWx0LT5hbGxvY2F0ZWRfc2l6ZSA9IGFsbG9j YXRlZF9zaXplOworCQlyZXN1bHQtPmFsbG9jYXRlZF9zaXplID0gcmVnaXN0cnlbaV0tPm1heF9z aXplID4gMCA/IHJlZ2lzdHJ5W2ldLT5zaXplIDogYWxsb2NhdGVkX3NpemU7CisJCXJlc3VsdC0+ cmVzZXJ2ZWRzaXplID0gYWxsb2NhdGVkX3NpemU7CiAJCXJlc3VsdC0+bG9jYXRpb24gPSBzdHJ1 Y3RQdHI7CiAKIAkJKihyZWdpc3RyeVtpXS0+cHRyKSA9IHN0cnVjdFB0cjsKQEAgLTIxMiw2ICsy MjUsNTQgQEAgU2htZW1Jbml0UmVnaXN0ZXJlZCh2b2lkKQogCX0KIH0KIAorI2lmbmRlZiBFWEVD X0JBQ0tFTkQKK3ZvaWQKK1NobWVtUmVzaXplUmVnaXN0ZXJlZChjb25zdCBjaGFyICpuYW1lLCBT aXplIG5ld19zaXplKQoreworCVNobWVtSW5kZXhFbnQgKnJlc3VsdDsKKwlib29sIGZvdW5kOwor CS8qIENhY2hlYWxpZ24gbmV3IHNpemUgKi8KKwlTaXplIGFsbG9jYXRlZF9zaXplID0gQ0FDSEVM SU5FQUxJR04obmV3X3NpemUpOworCisJLyogbG9vayBpdCB1cCBpbiB0aGUgc2htZW0gaW5kZXgg Ki8KKwlMV0xvY2tBY3F1aXJlKFNobWVtSW5kZXhMb2NrLCBMV19FWENMVVNJVkUpOworCXJlc3Vs dCA9IChTaG1lbUluZGV4RW50ICopCisJCWhhc2hfc2VhcmNoKFNobWVtSW5kZXgsIG5hbWUsIEhB U0hfRklORCwgJmZvdW5kKTsKKwlpZiAoIWZvdW5kKQorCQllbG9nKEVSUk9SLCAic2htZW0gc3Ry dWN0IFwiJXNcIiBpcyBub3QgaW5pdGlhbGl6ZWQiLCBuYW1lKTsKKworCUFzc2VydChyZXN1bHQp OworCisJaWYgKHJlc3VsdC0+cmVzZXJ2ZWRzaXplIDwgYWxsb2NhdGVkX3NpemUpCisJCWVyZXBv cnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUkVTT1VSQ0VTKSwK KwkJCQkgZXJybXNnKCJub3QgZW5vdWdoIGFkZHJlc3Mgc3BhY2UgaXMgcmVzZXJ2ZWQgZm9yIHJl c2l6aW5nIHN0cnVjdHVyZSBcIiVzXCIiLCBuYW1lKSkpOworCisJaWYgKGFsbG9jYXRlZF9zaXpl ID09IHJlc3VsdC0+YWxsb2NhdGVkX3NpemUpCisJeworCQlyZXN1bHQtPnNpemUgPSBuZXdfc2l6 ZTsKKwkJLyogTm8gbmVlZCB0byByZXNpemUgaWYgdGhlIGV4aXN0aW5nIGFsbG9jYXRlZCBzaXpl IGlzIHN1ZmZpY2llbnQgKi8KKwkJTFdMb2NrUmVsZWFzZShTaG1lbUluZGV4TG9jayk7CisJCXJl dHVybjsKKwl9CisKKwkvKgorCSAqIFJlc2l6ZTogSWYgc2hyaW5raW5nIHJlbGVhc2UgbWVtb3J5 IHdoaWNoIGlzIG5vdCByZXF1aXJlZCBhbnltb3JlLiBJZgorCSAqIGV4cGFuZGluZyB3ZSBkb24n dCBoYXZlIGRvIGFueXRoaW5nIGFzIHRoZSBtZW1vcnkgaXMgYWxsb2NhdGVkIHdoZW4gaXQncwor CSAqIHdyaXR0ZW4gdG8uCisJICovCisJaWYgKGFsbG9jYXRlZF9zaXplIDwgcmVzdWx0LT5hbGxv Y2F0ZWRfc2l6ZSkKKwkJUEdTaGFyZWRNZW1vcnlSZWxlYXNlKChjaGFyICopIHJlc3VsdC0+bG9j YXRpb24gKyBhbGxvY2F0ZWRfc2l6ZSwKKwkJCQkJCQkJcmVzdWx0LT5hbGxvY2F0ZWRfc2l6ZSAt IGFsbG9jYXRlZF9zaXplKTsKKworCS8qIFVwZGF0ZSBzaG1lbSBpbmRleCBlbnRyeS4gKi8KKwly ZXN1bHQtPnNpemUgPSBuZXdfc2l6ZTsKKwlyZXN1bHQtPmFsbG9jYXRlZF9zaXplID0gYWxsb2Nh dGVkX3NpemU7CisKKwlMV0xvY2tSZWxlYXNlKFNobWVtSW5kZXhMb2NrKTsKK30KKyNlbmRpZgor CiAjaWZkZWYgRVhFQ19CQUNLRU5ECiB2b2lkCiBTaG1lbUF0dGFjaFJlZ2lzdGVyZWQodm9pZCkK QEAgLTcwMCw2ICs3NjEsNyBAQCBTaG1lbUluaXRTdHJ1Y3QoY29uc3QgY2hhciAqbmFtZSwgU2l6 ZSBzaXplLCBib29sICpmb3VuZFB0cikKIAkJfQogCQlyZXN1bHQtPnNpemUgPSBzaXplOwogCQly ZXN1bHQtPmFsbG9jYXRlZF9zaXplID0gYWxsb2NhdGVkX3NpemU7CisJCXJlc3VsdC0+cmVzZXJ2 ZWRzaXplID0gYWxsb2NhdGVkX3NpemU7CiAJCXJlc3VsdC0+bG9jYXRpb24gPSBzdHJ1Y3RQdHI7 CiAJfQogCkBAIC03NDMsMTEgKzgwNSwyNiBAQCBtdWxfc2l6ZShTaXplIHMxLCBTaXplIHMyKQog CXJldHVybiByZXN1bHQ7CiB9CiAKKy8qCisgKiBSb3VuZCB1cCB0aGUgZ2l2ZW4gc2l6ZSB0byB0 aGUgbmV4dCBtdWx0aXBsZSBvZiB0aGUgZ2l2ZW4gYWxpZ25tZW50LCBjaGVja2luZworICogZm9y IG92ZXJmbG93LgorICovCitTaXplCithbGlnbl9zaXplKFNpemUgc2l6ZSwgU2l6ZSBhbGlnbm1l bnQpCit7CisKKwlBc3NlcnQoYWxpZ25tZW50ICE9IDApOworCisJaWYgKHNpemUgJSBhbGlnbm1l bnQgPT0gMCkKKwkJcmV0dXJuIHNpemU7CisJcmV0dXJuIGFkZF9zaXplKHNpemUsIGFsaWdubWVu dCAtIChzaXplICUgYWxpZ25tZW50KSk7Cit9CisKIC8qIFNRTCBTUkYgc2hvd2luZyBhbGxvY2F0 ZWQgc2hhcmVkIG1lbW9yeSAqLwogRGF0dW0KIHBnX2dldF9zaG1lbV9hbGxvY2F0aW9ucyhQR19G VU5DVElPTl9BUkdTKQogewotI2RlZmluZSBQR19HRVRfU0hNRU1fU0laRVNfQ09MUyA0CisjZGVm aW5lIFBHX0dFVF9TSE1FTV9TSVpFU19DT0xTIDUKIAlSZXR1cm5TZXRJbmZvICpyc2luZm8gPSAo UmV0dXJuU2V0SW5mbyAqKSBmY2luZm8tPnJlc3VsdGluZm87CiAJSEFTSF9TRVFfU1RBVFVTIGhz dGF0OwogCVNobWVtSW5kZXhFbnQgKmVudDsKQEAgLTc2OSw3ICs4NDYsMTcgQEAgcGdfZ2V0X3No bWVtX2FsbG9jYXRpb25zKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCXZhbHVlc1sxXSA9IEludDY0R2V0 RGF0dW0oKGNoYXIgKikgZW50LT5sb2NhdGlvbiAtIChjaGFyICopIFNobWVtU2VnSGRyKTsKIAkJ dmFsdWVzWzJdID0gSW50NjRHZXREYXR1bShlbnQtPnNpemUpOwogCQl2YWx1ZXNbM10gPSBJbnQ2 NEdldERhdHVtKGVudC0+YWxsb2NhdGVkX3NpemUpOwotCQluYW1lZF9hbGxvY2F0ZWQgKz0gZW50 LT5hbGxvY2F0ZWRfc2l6ZTsKKwkJdmFsdWVzWzRdID0gSW50NjRHZXREYXR1bShlbnQtPnJlc2Vy dmVkc2l6ZSk7CisKKwkJLyoKKwkJICogVGhlIHNoYXJlZCBtZW1vcnkgc2VnbWVudCBtZXRhZGF0 YSBkb2VzIG5vdCBrbm93IGFib3V0IHRoZSBpbnRlcm5hbAorCQkgKiByZXNlcnZhdGlvbi4gRnJv bSBpdCdzIHBvaW50IG9mIHZpZXcgdGhlIG1heGltdW0gc2l6ZSBvZiBhIHJlc2l6YWJsZQorCQkg KiBzaGFyZWQgc3RydWN0dXJlIGlzIGNvbnNpZGVyZWQgdG8gYmUgYWxsb2NhdGVkLiBJbiBvcmRl ciB0byBjb21wdXRlCisJCSAqIHRoZSBhbW91bnQgb2YgbWVtb3J5IGFsbG9jYXRlZCB0byB0aGUg dW5uYW1lZCBzdHJ1Y3R1cmVzLCBhZGQKKwkJICogcmVzZXJ2ZWQgc2l6ZSwgd2hpY2ggaXMgc2Ft ZSBhcyB0aGUgYWxsb2NhdGVkIHNpemUgZm9yIGEgZml4ZWQgc2l6ZWQKKwkJICogc3RydWN0dXJl LgorCQkgKi8KKwkJbmFtZWRfYWxsb2NhdGVkICs9IGVudC0+cmVzZXJ2ZWRzaXplOwogCiAJCXR1 cGxlc3RvcmVfcHV0dmFsdWVzKHJzaW5mby0+c2V0UmVzdWx0LCByc2luZm8tPnNldERlc2MsCiAJ CQkJCQkJIHZhbHVlcywgbnVsbHMpOwpAQCAtOTg5LDcgKzEwNzYsNyBAQCBwZ19nZXRfc2htZW1f cGFnZXNpemUodm9pZCkKIAlBc3NlcnQoaHVnZV9wYWdlc19zdGF0dXMgIT0gSFVHRV9QQUdFU19V TktOT1dOKTsKIAogCWlmIChodWdlX3BhZ2VzX3N0YXR1cyA9PSBIVUdFX1BBR0VTX09OKQotCQlH ZXRIdWdlUGFnZVNpemUoJm9zX3BhZ2Vfc2l6ZSwgTlVMTCk7CisJCUdldEh1Z2VQYWdlU2l6ZSgm b3NfcGFnZV9zaXplLCBOVUxMLCBOVUxMKTsKIAogCXJldHVybiBvc19wYWdlX3NpemU7CiB9CmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCA4M2Y2NTAxZGYzOC4uZGZkMzM4OWNlZDMgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtODU5Miw4ICs4NTkyLDggQEAKIHsgb2lkID0+ICc1MDUy JywgZGVzY3IgPT4gJ2FsbG9jYXRpb25zIGZyb20gdGhlIG1haW4gc2hhcmVkIG1lbW9yeSBzZWdt ZW50JywKICAgcHJvbmFtZSA9PiAncGdfZ2V0X3NobWVtX2FsbG9jYXRpb25zJywgcHJvcm93cyA9 PiAnNTAnLCBwcm9yZXRzZXQgPT4gJ3QnLAogICBwcm92b2xhdGlsZSA9PiAndicsIHByb3JldHR5 cGUgPT4gJ3JlY29yZCcsIHByb2FyZ3R5cGVzID0+ICcnLAotICBwcm9hbGxhcmd0eXBlcyA9PiAn e3RleHQsaW50OCxpbnQ4LGludDh9JywgcHJvYXJnbW9kZXMgPT4gJ3tvLG8sbyxvfScsCi0gIHBy b2FyZ25hbWVzID0+ICd7bmFtZSxvZmYsc2l6ZSxhbGxvY2F0ZWRfc2l6ZX0nLAorICBwcm9hbGxh cmd0eXBlcyA9PiAne3RleHQsaW50OCxpbnQ4LGludDgsaW50OH0nLCBwcm9hcmdtb2RlcyA9PiAn e28sbyxvLG8sb30nLAorICBwcm9hcmduYW1lcyA9PiAne25hbWUsb2ZmLHNpemUsYWxsb2NhdGVk X3NpemUscmVzZXJ2ZWRfc2l6ZX0nLAogICBwcm9zcmMgPT4gJ3BnX2dldF9zaG1lbV9hbGxvY2F0 aW9ucycgfSwKIAogeyBvaWQgPT4gJzQwOTknLCBkZXNjciA9PiAnSXMgTlVNQSBzdXBwb3J0IGF2 YWlsYWJsZT8nLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wZ19zaG1lbS5oIGIv c3JjL2luY2x1ZGUvc3RvcmFnZS9wZ19zaG1lbS5oCmluZGV4IDEwYzdiMDY1ODYxLi4xMGJmMjUw NWE0YSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wZ19zaG1lbS5oCisrKyBiL3Ny Yy9pbmNsdWRlL3N0b3JhZ2UvcGdfc2htZW0uaApAQCAtODksNiArODksOCBAQCBleHRlcm4gUEdT aG1lbUhlYWRlciAqUEdTaGFyZWRNZW1vcnlDcmVhdGUoU2l6ZSBzaXplLAogCQkJCQkJCQkJCSAg IFBHU2htZW1IZWFkZXIgKipzaGltKTsKIGV4dGVybiBib29sIFBHU2hhcmVkTWVtb3J5SXNJblVz ZSh1bnNpZ25lZCBsb25nIGlkMSwgdW5zaWduZWQgbG9uZyBpZDIpOwogZXh0ZXJuIHZvaWQgUEdT aGFyZWRNZW1vcnlEZXRhY2godm9pZCk7Ci1leHRlcm4gdm9pZCBHZXRIdWdlUGFnZVNpemUoU2l6 ZSAqaHVnZXBhZ2VzaXplLCBpbnQgKm1tYXBfZmxhZ3MpOworZXh0ZXJuIHZvaWQgUEdTaGFyZWRN ZW1vcnlSZWxlYXNlKHZvaWQgKmFkZHIsIFNpemUgc2l6ZSk7CitleHRlcm4gdm9pZCBHZXRIdWdl UGFnZVNpemUoU2l6ZSAqaHVnZXBhZ2VzaXplLCBpbnQgKm1tYXBfZmxhZ3MsCisJCQkJCQkJaW50 ICptZW1mZF9mbGFncyk7CiAKICNlbmRpZgkJCQkJCQkvKiBQR19TSE1FTV9IICovCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3NobWVtLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3No bWVtLmgKaW5kZXggY2JkNGVmOGQwM2YuLjY4NDg1YzYxMTY3IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9zdG9yYWdlL3NobWVtLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1lbS5oCkBA IC01MCw2ICs1MCw5IEBAIHR5cGVkZWYgc3RydWN0IFNobWVtU3RydWN0RGVzYwogCSAqLwogCXNp emVfdAkJZXh0cmFfc2l6ZTsKIAorCS8qIE1heGltdW0gc2l6ZSB0aGlzIHN0cnVjdHVyZSBjYW4g Z3JvdyB1cHRvIGluIGZ1dHVyZS4gVGhlIG1lbW9yeSBpcyBub3QgYWxsb2NhdGVkIHJpZ2h0IGF3 YXkgYnV0IHRoZSBjb3JyZXNwb25kaW5nIGFkZHJlc3Mgc3BhY2UgaXMgYWxsb2NhdGVkIHNvIHRo YXQgbWVtb3J5IGNhbiBiZSBtYXBwZWQgdG8gaXQgd2hlbiB0aGUgc3RydWN0dXJlIGdyb3dzLiBU eXBpY2FsbHkgc2hvdWxkIGJlIHVzZWQgZm9yIHN0cnVjdHVyZXMgbGlrZSBidWZmZXIgYmxvY2tz IHdoaWNoIG5lZWQgY29udGlndW91cyBhbmQgbGFyZ2UgbWVtb3J5LiAqLworCXNpemVfdAkJbWF4 X3NpemU7CisKIAkvKiBQb2ludGVyIHRvIHRoZSB2YXJpYWJsZSB0byB3aGljaCBwb2ludGVyIHRv IHRoaXMgc2hhcmVkIG1lbW9yeSBhcmVhIGlzIGFzc2lnbmVkIGFmdGVyIGFsbG9jYXRpb24uICov CiAJdm9pZAkgICAqKnB0cjsKIH0gU2htZW1TdHJ1Y3REZXNjOwpAQCAtODQsNiArODcsOSBAQCBl eHRlcm4gdm9pZCBJbml0U2htZW1JbmRleCh2b2lkKTsKIAogZXh0ZXJuIHZvaWQgU2htZW1SZWdp c3Rlckhhc2goU2htZW1IYXNoRGVzYyAqZGVzYywgSEFTSENUTCAqaW5mb1AsIGludCBoYXNoX2Zs YWdzKTsKIGV4dGVybiB2b2lkIFNobWVtUmVnaXN0ZXJTdHJ1Y3QoU2htZW1TdHJ1Y3REZXNjICpk ZXNjKTsKKyNpZm5kZWYgRVhFQ19CQUNLRU5ECitleHRlcm4gdm9pZCBTaG1lbVJlc2l6ZVJlZ2lz dGVyZWQoY29uc3QgY2hhciAqbmFtZSwgU2l6ZSBuZXdfc2l6ZSk7CisjZW5kaWYKIAogLyogTGVn YWN5IGZ1bmN0aW9ucyAqLwogZXh0ZXJuIEhUQUIgKlNobWVtSW5pdEhhc2goY29uc3QgY2hhciAq bmFtZSwgaW50NjQgaW5pdF9zaXplLCBpbnQ2NCBtYXhfc2l6ZSwKQEAgLTk2LDYgKzEwMiw3IEBA IGV4dGVybiB2b2lkIFNobWVtQXR0YWNoUmVnaXN0ZXJlZCh2b2lkKTsKIAogZXh0ZXJuIFNpemUg YWRkX3NpemUoU2l6ZSBzMSwgU2l6ZSBzMik7CiBleHRlcm4gU2l6ZSBtdWxfc2l6ZShTaXplIHMx LCBTaXplIHMyKTsKK2V4dGVybiBTaXplIGFsaWduX3NpemUoU2l6ZSBzaXplLCBTaXplIGFsaWdu KTsKIAogZXh0ZXJuIFBHRExMSU1QT1JUIFNpemUgcGdfZ2V0X3NobWVtX3BhZ2VzaXplKHZvaWQp OwogCkBAIC0xMTUsNiArMTIyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QKIAl2b2lkCSAgICpsb2NhdGlv bjsJCS8qIGxvY2F0aW9uIGluIHNoYXJlZCBtZW0gKi8KIAlTaXplCQlzaXplOwkJCS8qICMgYnl0 ZXMgcmVxdWVzdGVkIGZvciB0aGUgc3RydWN0dXJlICovCiAJU2l6ZQkJYWxsb2NhdGVkX3NpemU7 IC8qICMgYnl0ZXMgYWN0dWFsbHkgYWxsb2NhdGVkICovCisJU2l6ZQkJcmVzZXJ2ZWRzaXplOyAg IC8qICMgYnl0ZXMgcmVzZXJ2ZWQgZm9yIHRoaXMgcmVzaXphYmxlIHN0cnVjdHVyZS4gKi8KIH0g U2htZW1JbmRleEVudDsKIAogI2VuZGlmCQkJCQkJCS8qIFNITUVNX0ggKi8KZGlmZiAtLWdpdCBh L3NyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUgYi9zcmMvdGVzdC9tb2R1bGVzL01ha2VmaWxlCmlu ZGV4IDQ0YzcxNjNjMWNkLi5hNWRmNmVkYWUxOCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxl cy9NYWtlZmlsZQorKysgYi9zcmMvdGVzdC9tb2R1bGVzL01ha2VmaWxlCkBAIC0xNCw2ICsxNCw3 IEBAIFNVQkRJUlMgPSBcCiAJCSAgbGlicHFfcGlwZWxpbmUgXAogCQkgIG9hdXRoX3ZhbGlkYXRv ciBcCiAJCSAgcGxzYW1wbGUgXAorCQkgIHJlc2l6YWJsZV9zaG1lbSBcCiAJCSAgc3BnaXN0X25h bWVfb3BzIFwKIAkJICB0ZXN0X2FpbyBcCiAJCSAgdGVzdF9iaW5hcnloZWFwIFwKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9tb2R1bGVzL21lc29u LmJ1aWxkCmluZGV4IDI2MzRhNTE5OTM1Li45NjFiYjYyNzU5ZCAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvbW9kdWxlcy9tZXNvbi5idWlsZAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL21lc29uLmJ1aWxk CkBAIC0xMyw2ICsxMyw3IEBAIHN1YmRpcignbGlicHFfcGlwZWxpbmUnKQogc3ViZGlyKCduYnRy ZWUnKQogc3ViZGlyKCdvYXV0aF92YWxpZGF0b3InKQogc3ViZGlyKCdwbHNhbXBsZScpCitzdWJk aXIoJ3Jlc2l6YWJsZV9zaG1lbScpCiBzdWJkaXIoJ3NwZ2lzdF9uYW1lX29wcycpCiBzdWJkaXIo J3NzbF9wYXNzcGhyYXNlX2NhbGxiYWNrJykKIHN1YmRpcigndGVzdF9haW8nKQpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvbW9kdWxlcy9yZXNpemFibGVfc2htZW0vTWFrZWZpbGUgYi9zcmMvdGVzdC9t b2R1bGVzL3Jlc2l6YWJsZV9zaG1lbS9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uYWQyZjA0MGIyZjAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9t b2R1bGVzL3Jlc2l6YWJsZV9zaG1lbS9NYWtlZmlsZQpAQCAtMCwwICsxLDIzIEBACisjIHNyYy90 ZXN0L21vZHVsZXMvcmVzaXphYmxlX3NobWVtL01ha2VmaWxlCisKK01PRFVMRVMgPSByZXNpemFi bGVfc2htZW0KK0lTT0xBVElPTiA9IHJlc2l6YWJsZV9zaG1lbQorCitFWFRFTlNJT04gPSByZXNp emFibGVfc2htZW0KK0RBVEEgPSByZXNpemFibGVfc2htZW0tLTEuMC5zcWwKK1BHRklMRURFU0Mg PSAicmVzaXphYmxlX3NobWVtIC0gdGVzdCBtb2R1bGUgZm9yIHJlc2l6YWJsZSBzaGFyZWQgbWVt b3J5IgorCisjIFRoaXMgdGVzdCByZXF1aXJlcyBsaWJyYXJ5IHRvIGJlIGxvYWRlZCBhdCB0aGUg c2VydmVyIHN0YXJ0LCBzbyBkaXNhYmxlCisjIGluc3RhbGxjaGVjaworTk9fSU5TVEFMTENIRUNL ID0gMQorCitpZmRlZiBVU0VfUEdYUworUEdfQ09ORklHID0gcGdfY29uZmlnCitQR1hTIDo9ICQo c2hlbGwgJChQR19DT05GSUcpIC0tcGd4cykKK2luY2x1ZGUgJChQR1hTKQorZWxzZQorc3ViZGly ID0gc3JjL3Rlc3QvbW9kdWxlcy9yZXNpemFibGVfc2htZW0KK3RvcF9idWlsZGRpciA9IC4uLy4u Ly4uLy4uCitpbmNsdWRlICQodG9wX2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUuZ2xvYmFsCitpbmNs dWRlICQodG9wX3NyY2Rpcikvc3JjL21ha2VmaWxlcy9wZ3hzLm1rCitlbmRpZgpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvbW9kdWxlcy9yZXNpemFibGVfc2htZW0vZXhwZWN0ZWQvcmVzaXphYmxlX3No bWVtLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvcmVzaXphYmxlX3NobWVtL2V4cGVjdGVkL3Jlc2l6 YWJsZV9zaG1lbS5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjYw YmU1M2MwY2ZlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9yZXNpemFibGVf c2htZW0vZXhwZWN0ZWQvcmVzaXphYmxlX3NobWVtLm91dApAQCAtMCwwICsxLDE0OSBAQAorUGFy c2VkIHRlc3Qgc3BlYyB3aXRoIDMgc2Vzc2lvbnMKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMx dSBzMnUgenUgemlhIHMxd19pbml0aWFsIHMxdSBzMnJfaW5pdGlhbCBzMnUgenNfbWF4IHp1IHpp YSBzMnJfaW5pdGlhbCBzMndfbWF4IHMydSBzMXJfbWF4IHMxdSB6c19zaHJpbmsgenUgemlhIHMx cl9zaHJpbmsgczF3X3NocmluayBzMXUgczJyX3NocmluayBzMnUgenNfZmFpbAorc3RlcCBzMXU6 IFNFTEVDVCBwZ19zaXplX3ByZXR0eShyc3NfYW5vbikgQVMgcnNzX2Fub24sIHBnX3NpemVfcHJl dHR5KHJzc19maWxlKSBBUyByc3NfZmlsZSwgcGdfc2l6ZV9wcmV0dHkocnNzX3NobWVtKSBBUyBy c3Nfc2htZW0sIHBnX3NpemVfcHJldHR5KHZtX3NpemUpIEFTIHZtX3NpemUgRlJPTSByZXNpemFi bGVfc2htZW1fdXNhZ2UoKSBBUyAic2Vzc2lvbjFfc2htZW1fdXNhZ2UiOworcnNzX2Fub258cnNz X2ZpbGV8cnNzX3NobWVtfHZtX3NpemUKKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tCisxODI4IGtCIHwxMCBNQiAgIHw1MjQ4IGtCICB8MTE3MyBNQgorKDEgcm93KQorCitzdGVw IHMydTogU0VMRUNUIHBnX3NpemVfcHJldHR5KHJzc19hbm9uKSBBUyByc3NfYW5vbiwgcGdfc2l6 ZV9wcmV0dHkocnNzX2ZpbGUpIEFTIHJzc19maWxlLCBwZ19zaXplX3ByZXR0eShyc3Nfc2htZW0p IEFTIHJzc19zaG1lbSwgcGdfc2l6ZV9wcmV0dHkodm1fc2l6ZSkgQVMgdm1fc2l6ZSBGUk9NIHJl c2l6YWJsZV9zaG1lbV91c2FnZSgpIEFTICJzZXNzaW9uMl9zaG1lbV91c2FnZSI7Cityc3NfYW5v bnxyc3NfZmlsZXxyc3Nfc2htZW18dm1fc2l6ZQorLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0KKzE4Mjgga0IgfDEwIE1CICAgfDUxMjAga0IgIHwxMTczIE1CCisoMSByb3cpCisK K3N0ZXAgenU6IFNFTEVDVCBwZ19zaXplX3ByZXR0eShyc3NfYW5vbikgQVMgcnNzX2Fub24sIHBn X3NpemVfcHJldHR5KHJzc19maWxlKSBBUyByc3NfZmlsZSwgcGdfc2l6ZV9wcmV0dHkocnNzX3No bWVtKSBBUyByc3Nfc2htZW0sIHBnX3NpemVfcHJldHR5KHZtX3NpemUpIEFTIHZtX3NpemUgRlJP TSByZXNpemFibGVfc2htZW1fdXNhZ2UoKSBBUyAicmVzaXplcl9zaG1lbV91c2FnZSI7Cityc3Nf YW5vbnxyc3NfZmlsZXxyc3Nfc2htZW18dm1fc2l6ZQorLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0KKzE2ODQga0IgfDEwIE1CICAgfDUyNDgga0IgIHwxMTczIE1CCisoMSByb3cp CisKK3N0ZXAgemlhOiBTRUxFQ1QgbmFtZSwgcGdfc2l6ZV9wcmV0dHkoc2l6ZSkgQVMgc2l6ZSwg cGdfc2l6ZV9wcmV0dHkoYWxsb2NhdGVkX3NpemUpIEFTIGFsbG9jYXRlZF9zaXplLCBwZ19zaXpl X3ByZXR0eShyZXNlcnZlZF9zaXplKSBBUyByZXNlcnZlZF9zaXplIEZST00gcGdfc2htZW1fYWxs b2NhdGlvbnMgV0hFUkUgbmFtZSA9ICdyZXNpemFibGVfc2htZW0nOworbmFtZSAgICAgICAgICAg fHNpemUgIHxhbGxvY2F0ZWRfc2l6ZXxyZXNlcnZlZF9zaXplCistLS0tLS0tLS0tLS0tLS0rLS0t LS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KK3Jlc2l6YWJsZV9zaG1lbXwxMDAgTUJ8 MTAwIE1CICAgICAgICB8NDAwIE1CICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxd19pbml0aWFs OiBTRUxFQ1QgcmVzaXphYmxlX3NobWVtX3dyaXRlKDEwMCk7CityZXNpemFibGVfc2htZW1fd3Jp dGUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cp CisKK3N0ZXAgczF1OiBTRUxFQ1QgcGdfc2l6ZV9wcmV0dHkocnNzX2Fub24pIEFTIHJzc19hbm9u LCBwZ19zaXplX3ByZXR0eShyc3NfZmlsZSkgQVMgcnNzX2ZpbGUsIHBnX3NpemVfcHJldHR5KHJz c19zaG1lbSkgQVMgcnNzX3NobWVtLCBwZ19zaXplX3ByZXR0eSh2bV9zaXplKSBBUyB2bV9zaXpl IEZST00gcmVzaXphYmxlX3NobWVtX3VzYWdlKCkgQVMgInNlc3Npb24xX3NobWVtX3VzYWdlIjsK K3Jzc19hbm9ufHJzc19maWxlfHJzc19zaG1lbXx2bV9zaXplCistLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLQorMTgyOCBrQiB8MTAgTUIgICB8MTA1IE1CICAgfDExNzMgTUIKKygx IHJvdykKKworc3RlcCBzMnJfaW5pdGlhbDogU0VMRUNUIHJlc2l6YWJsZV9zaG1lbV9yZWFkKDI1 ICogMTAyNCAqIDEwMjQsIDEwMCk7CityZXNpemFibGVfc2htZW1fcmVhZAorLS0tLS0tLS0tLS0t LS0tLS0tLS0KK3QgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczJ1OiBTRUxF Q1QgcGdfc2l6ZV9wcmV0dHkocnNzX2Fub24pIEFTIHJzc19hbm9uLCBwZ19zaXplX3ByZXR0eShy c3NfZmlsZSkgQVMgcnNzX2ZpbGUsIHBnX3NpemVfcHJldHR5KHJzc19zaG1lbSkgQVMgcnNzX3No bWVtLCBwZ19zaXplX3ByZXR0eSh2bV9zaXplKSBBUyB2bV9zaXplIEZST00gcmVzaXphYmxlX3No bWVtX3VzYWdlKCkgQVMgInNlc3Npb24yX3NobWVtX3VzYWdlIjsKK3Jzc19hbm9ufHJzc19maWxl fHJzc19zaG1lbXx2bV9zaXplCistLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLQor MTgyOCBrQiB8MTAgTUIgICB8MTA1IE1CICAgfDExNzMgTUIKKygxIHJvdykKKworc3RlcCB6c19t YXg6IFNFTEVDVCByZXNpemFibGVfc2htZW1fcmVzaXplKDEwMCAqIDEwMjQgKiAxMDI0KTsKK3Jl c2l6YWJsZV9zaG1lbV9yZXNpemUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAg ICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCB6dTogU0VMRUNUIHBnX3NpemVfcHJldHR5KHJz c19hbm9uKSBBUyByc3NfYW5vbiwgcGdfc2l6ZV9wcmV0dHkocnNzX2ZpbGUpIEFTIHJzc19maWxl LCBwZ19zaXplX3ByZXR0eShyc3Nfc2htZW0pIEFTIHJzc19zaG1lbSwgcGdfc2l6ZV9wcmV0dHko dm1fc2l6ZSkgQVMgdm1fc2l6ZSBGUk9NIHJlc2l6YWJsZV9zaG1lbV91c2FnZSgpIEFTICJyZXNp emVyX3NobWVtX3VzYWdlIjsKK3Jzc19hbm9ufHJzc19maWxlfHJzc19zaG1lbXx2bV9zaXplCist LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLQorMTgxMiBrQiB8MTAgTUIgICB8NTg4 OCBrQiAgfDExNzMgTUIKKygxIHJvdykKKworc3RlcCB6aWE6IFNFTEVDVCBuYW1lLCBwZ19zaXpl X3ByZXR0eShzaXplKSBBUyBzaXplLCBwZ19zaXplX3ByZXR0eShhbGxvY2F0ZWRfc2l6ZSkgQVMg YWxsb2NhdGVkX3NpemUsIHBnX3NpemVfcHJldHR5KHJlc2VydmVkX3NpemUpIEFTIHJlc2VydmVk X3NpemUgRlJPTSBwZ19zaG1lbV9hbGxvY2F0aW9ucyBXSEVSRSBuYW1lID0gJ3Jlc2l6YWJsZV9z aG1lbSc7CituYW1lICAgICAgICAgICB8c2l6ZSAgfGFsbG9jYXRlZF9zaXplfHJlc2VydmVkX3Np emUKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQor cmVzaXphYmxlX3NobWVtfDQwMCBNQnw0MDAgTUIgICAgICAgIHw0MDAgTUIgICAgICAgCisoMSBy b3cpCisKK3N0ZXAgczJyX2luaXRpYWw6IFNFTEVDVCByZXNpemFibGVfc2htZW1fcmVhZCgyNSAq IDEwMjQgKiAxMDI0LCAxMDApOworcmVzaXphYmxlX3NobWVtX3JlYWQKKy0tLS0tLS0tLS0tLS0t LS0tLS0tCit0ICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMyd19tYXg6IFNF TEVDVCByZXNpemFibGVfc2htZW1fd3JpdGUoNTAwKTsKK3Jlc2l6YWJsZV9zaG1lbV93cml0ZQor LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykKKwor c3RlcCBzMnU6IFNFTEVDVCBwZ19zaXplX3ByZXR0eShyc3NfYW5vbikgQVMgcnNzX2Fub24sIHBn X3NpemVfcHJldHR5KHJzc19maWxlKSBBUyByc3NfZmlsZSwgcGdfc2l6ZV9wcmV0dHkocnNzX3No bWVtKSBBUyByc3Nfc2htZW0sIHBnX3NpemVfcHJldHR5KHZtX3NpemUpIEFTIHZtX3NpemUgRlJP TSByZXNpemFibGVfc2htZW1fdXNhZ2UoKSBBUyAic2Vzc2lvbjJfc2htZW1fdXNhZ2UiOworcnNz X2Fub258cnNzX2ZpbGV8cnNzX3NobWVtfHZtX3NpemUKKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tCisxODI4IGtCIHwxMCBNQiAgIHw0MDUgTUIgICB8MTE3MyBNQgorKDEgcm93 KQorCitzdGVwIHMxcl9tYXg6IFNFTEVDVCByZXNpemFibGVfc2htZW1fcmVhZCgxMDAgKiAxMDI0 ICogMTAyNCwgNTAwKTsKK3Jlc2l6YWJsZV9zaG1lbV9yZWFkCistLS0tLS0tLS0tLS0tLS0tLS0t LQordCAgICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzMXU6IFNFTEVDVCBwZ19z aXplX3ByZXR0eShyc3NfYW5vbikgQVMgcnNzX2Fub24sIHBnX3NpemVfcHJldHR5KHJzc19maWxl KSBBUyByc3NfZmlsZSwgcGdfc2l6ZV9wcmV0dHkocnNzX3NobWVtKSBBUyByc3Nfc2htZW0sIHBn X3NpemVfcHJldHR5KHZtX3NpemUpIEFTIHZtX3NpemUgRlJPTSByZXNpemFibGVfc2htZW1fdXNh Z2UoKSBBUyAic2Vzc2lvbjFfc2htZW1fdXNhZ2UiOworcnNzX2Fub258cnNzX2ZpbGV8cnNzX3No bWVtfHZtX3NpemUKKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tCisxODI4IGtC IHwxMCBNQiAgIHw0MDUgTUIgICB8MTE3MyBNQgorKDEgcm93KQorCitzdGVwIHpzX3Nocmluazog U0VMRUNUIHJlc2l6YWJsZV9zaG1lbV9yZXNpemUoNzUgKiAxMDI0ICogMTAyNCk7CityZXNpemFi bGVfc2htZW1fcmVzaXplCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAg ICAgICAgCisoMSByb3cpCisKK3N0ZXAgenU6IFNFTEVDVCBwZ19zaXplX3ByZXR0eShyc3NfYW5v bikgQVMgcnNzX2Fub24sIHBnX3NpemVfcHJldHR5KHJzc19maWxlKSBBUyByc3NfZmlsZSwgcGdf c2l6ZV9wcmV0dHkocnNzX3NobWVtKSBBUyByc3Nfc2htZW0sIHBnX3NpemVfcHJldHR5KHZtX3Np emUpIEFTIHZtX3NpemUgRlJPTSByZXNpemFibGVfc2htZW1fdXNhZ2UoKSBBUyAicmVzaXplcl9z aG1lbV91c2FnZSI7Cityc3NfYW5vbnxyc3NfZmlsZXxyc3Nfc2htZW18dm1fc2l6ZQorLS0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0KKzE4MTIga0IgfDEwIE1CICAgfDU4ODgga0Ig IHwxMTczIE1CCisoMSByb3cpCisKK3N0ZXAgemlhOiBTRUxFQ1QgbmFtZSwgcGdfc2l6ZV9wcmV0 dHkoc2l6ZSkgQVMgc2l6ZSwgcGdfc2l6ZV9wcmV0dHkoYWxsb2NhdGVkX3NpemUpIEFTIGFsbG9j YXRlZF9zaXplLCBwZ19zaXplX3ByZXR0eShyZXNlcnZlZF9zaXplKSBBUyByZXNlcnZlZF9zaXpl IEZST00gcGdfc2htZW1fYWxsb2NhdGlvbnMgV0hFUkUgbmFtZSA9ICdyZXNpemFibGVfc2htZW0n OworbmFtZSAgICAgICAgICAgfHNpemUgIHxhbGxvY2F0ZWRfc2l6ZXxyZXNlcnZlZF9zaXplCist LS0tLS0tLS0tLS0tLS0rLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KK3Jlc2l6 YWJsZV9zaG1lbXwzMDAgTUJ8MzAwIE1CICAgICAgICB8NDAwIE1CICAgICAgIAorKDEgcm93KQor CitzdGVwIHMxcl9zaHJpbms6IFNFTEVDVCByZXNpemFibGVfc2htZW1fcmVhZCg3NSAqIDEwMjQg KiAxMDI0LCA1MDApOworcmVzaXphYmxlX3NobWVtX3JlYWQKKy0tLS0tLS0tLS0tLS0tLS0tLS0t Cit0ICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxd19zaHJpbms6IFNFTEVD VCByZXNpemFibGVfc2htZW1fd3JpdGUoOTk5KTsKK3Jlc2l6YWJsZV9zaG1lbV93cml0ZQorLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3Rl cCBzMXU6IFNFTEVDVCBwZ19zaXplX3ByZXR0eShyc3NfYW5vbikgQVMgcnNzX2Fub24sIHBnX3Np emVfcHJldHR5KHJzc19maWxlKSBBUyByc3NfZmlsZSwgcGdfc2l6ZV9wcmV0dHkocnNzX3NobWVt KSBBUyByc3Nfc2htZW0sIHBnX3NpemVfcHJldHR5KHZtX3NpemUpIEFTIHZtX3NpemUgRlJPTSBy ZXNpemFibGVfc2htZW1fdXNhZ2UoKSBBUyAic2Vzc2lvbjFfc2htZW1fdXNhZ2UiOworcnNzX2Fu b258cnNzX2ZpbGV8cnNzX3NobWVtfHZtX3NpemUKKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tCisxODI4IGtCIHwxMCBNQiAgIHwzMDUgTUIgICB8MTE3MyBNQgorKDEgcm93KQor CitzdGVwIHMycl9zaHJpbms6IFNFTEVDVCByZXNpemFibGVfc2htZW1fcmVhZCg3NSAqIDEwMjQg KiAxMDI0LCA5OTkpOworcmVzaXphYmxlX3NobWVtX3JlYWQKKy0tLS0tLS0tLS0tLS0tLS0tLS0t Cit0ICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMydTogU0VMRUNUIHBnX3Np emVfcHJldHR5KHJzc19hbm9uKSBBUyByc3NfYW5vbiwgcGdfc2l6ZV9wcmV0dHkocnNzX2ZpbGUp IEFTIHJzc19maWxlLCBwZ19zaXplX3ByZXR0eShyc3Nfc2htZW0pIEFTIHJzc19zaG1lbSwgcGdf c2l6ZV9wcmV0dHkodm1fc2l6ZSkgQVMgdm1fc2l6ZSBGUk9NIHJlc2l6YWJsZV9zaG1lbV91c2Fn ZSgpIEFTICJzZXNzaW9uMl9zaG1lbV91c2FnZSI7Cityc3NfYW5vbnxyc3NfZmlsZXxyc3Nfc2ht ZW18dm1fc2l6ZQorLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0KKzE4Mjgga0Ig fDEwIE1CICAgfDMwNSBNQiAgIHwxMTczIE1CCisoMSByb3cpCisKK3N0ZXAgenNfZmFpbDogU0VM RUNUIHJlc2l6YWJsZV9zaG1lbV9yZXNpemUoMTI4ICogMTAyNCAqIDEwMjQpOworRVJST1I6ICBu b3QgZW5vdWdoIGFkZHJlc3Mgc3BhY2UgaXMgcmVzZXJ2ZWQgZm9yIHJlc2l6aW5nIHN0cnVjdHVy ZSAicmVzaXphYmxlX3NobWVtIgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9yZXNpemFi bGVfc2htZW0vbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9tb2R1bGVzL3Jlc2l6YWJsZV9zaG1lbS9t ZXNvbi5idWlsZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNmU1ZjZk NWNhYWYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Jlc2l6YWJsZV9zaG1l bS9tZXNvbi5idWlsZApAQCAtMCwwICsxLDM3IEBACisjIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9y ZXNpemFibGVfc2htZW0vbWVzb24uYnVpbGQKKworcmVzaXphYmxlX3NobWVtX3NvdXJjZXMgPSBm aWxlcygKKyAgJ3Jlc2l6YWJsZV9zaG1lbS5jJywKKykKKworaWYgaG9zdF9zeXN0ZW0gPT0gJ3dp bmRvd3MnCisgIHJlc2l6YWJsZV9zaG1lbV9zb3VyY2VzICs9IHJjX2xpYl9nZW4ucHJvY2Vzcyh3 aW4zMnZlcl9yYywgZXh0cmFfYXJnczogWworICAgICctLU5BTUUnLCAncmVzaXphYmxlX3NobWVt JywKKyAgICAnLS1GSUxFREVTQycsICdyZXNpemFibGVfc2htZW0gLSB0ZXN0IG1vZHVsZSBmb3Ig cmVzaXphYmxlIHNoYXJlZCBtZW1vcnknLF0pCitlbmRpZgorCityZXNpemFibGVfc2htZW0gPSBz aGFyZWRfbW9kdWxlKCdyZXNpemFibGVfc2htZW0nLAorICByZXNpemFibGVfc2htZW1fc291cmNl cywKKyAga3dhcmdzOiBwZ190ZXN0X21vZF9hcmdzLAorKQordGVzdF9pbnN0YWxsX2xpYnMgKz0g cmVzaXphYmxlX3NobWVtCisKK3Rlc3RfaW5zdGFsbF9kYXRhICs9IGZpbGVzKAorICAncmVzaXph YmxlX3NobWVtLmNvbnRyb2wnLAorICAncmVzaXphYmxlX3NobWVtLS0xLjAuc3FsJywKKykKKwor dGVzdHMgKz0geworICAnbmFtZSc6ICdyZXNpemFibGVfc2htZW0nLAorICAnc2QnOiBtZXNvbi5j dXJyZW50X3NvdXJjZV9kaXIoKSwKKyAgJ2JkJzogbWVzb24uY3VycmVudF9idWlsZF9kaXIoKSwK KyAgJ2lzb2xhdGlvbic6IHsKKyAgICAnc3BlY3MnOiBbCisgICAgICAncmVzaXphYmxlX3NobWVt JywKKyAgICBdLAorICAgICdyZWdyZXNzX2FyZ3MnOiBbJy0tdGVtcC1jb25maWcnLCBmaWxlcygn cmVzaXphYmxlX3NobWVtLmNvbmYnKV0sCisgICAgIyBUaGlzIHRlc3QgcmVxdWlyZXMgbGlicmFy eSB0byBiZSBsb2FkZWQgYXQgdGhlIHNlcnZlciBzdGFydCwgc28gZGlzYWJsZQorICAgICMgaW5z dGFsbGNoZWNrCisgICAgJ3J1bm5pbmdjaGVjayc6IGZhbHNlLAorICB9LAorfQpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvbW9kdWxlcy9yZXNpemFibGVfc2htZW0vcmVzaXphYmxlX3NobWVtLS0xLjAu c3FsIGIvc3JjL3Rlc3QvbW9kdWxlcy9yZXNpemFibGVfc2htZW0vcmVzaXphYmxlX3NobWVtLS0x LjAuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yYTVmYTk1NzE2 NwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvcmVzaXphYmxlX3NobWVtL3Jl c2l6YWJsZV9zaG1lbS0tMS4wLnNxbApAQCAtMCwwICsxLDM5IEBACisvKiBzcmMvdGVzdC9tb2R1 bGVzL3Jlc2l6YWJsZV9zaG1lbS9yZXNpemFibGVfc2htZW0tLTEuMC5zcWwgKi8KKworLS0gY29t cGxhaW4gaWYgc2NyaXB0IGlzIHNvdXJjZWQgaW4gcHNxbCwgcmF0aGVyIHRoYW4gdmlhIENSRUFU RSBFWFRFTlNJT04KK1xlY2hvIFVzZSAiQ1JFQVRFIEVYVEVOU0lPTiByZXNpemFibGVfc2htZW0i IHRvIGxvYWQgdGhpcyBmaWxlLiBccXVpdAorCistLSBGdW5jdGlvbiB0byByZXNpemUgdGhlIHRl c3Qgc3RydWN0dXJlIGluIHRoZSBzaGFyZWQgbWVtb3J5CitDUkVBVEUgRlVOQ1RJT04gcmVzaXph YmxlX3NobWVtX3Jlc2l6ZShuZXdfZW50cmllcyBpbnRlZ2VyKQorUkVUVVJOUyB2b2lkCitBUyAn TU9EVUxFX1BBVEhOQU1FJworTEFOR1VBR0UgQyBTVFJJQ1Q7CisKKy0tIEZ1bmN0aW9uIHRvIHdy aXRlIGRhdGEgdG8gYWxsIGVudHJpZXMgaW4gdGhlIHRlc3Qgc3RydWN0dXJlIGluIHNoYXJlZCBt ZW1vcnkKKy0tIFdyaXRpbmcgYWxsIHRoZSBlbnRyaWVzIG1ha2VzIHN1cmUgdGhhdCB0aGUgbWVt b3J5IGlzIGFjdHVhbGx5IGFsbG9jYXRlZCBhbmQKKy0tIG1hcHBlZCB0byB0aGUgcHJvY2Vzcywg c28gdGhhdCB3ZSBjYW4gbGF0ZXIgbWVhc3VyZSB0aGUgbWVtb3J5IHVzYWdlLgorQ1JFQVRFIEZV TkNUSU9OIHJlc2l6YWJsZV9zaG1lbV93cml0ZShlbnRyeV92YWx1ZSBpbnRlZ2VyKQorUkVUVVJO UyB2b2lkCitBUyAnTU9EVUxFX1BBVEhOQU1FJworTEFOR1VBR0UgQyBTVFJJQ1Q7CisKKy0tIEZ1 bmN0aW9uIHRvIHZlcmlmeSB0aGF0IHNwZWNpZmllZCBudW1iZXIgb2YgaW5pdGlhbCBlbnRyaWVz IGhhdmUgZXhwZWN0ZWQgdmFsdWUuCistLSBSZWFkaW5nIGFsbCB0aGUgZW50cmllcyBtYWtlcyBz dXJlIHRoYXQgdGhlIG1lbW9yeSBpcyBhY3R1YWxseSBtYXBwZWQgdG8gdGhlCistLSBwcm9jZXNz LCBzbyB0aGF0IHdlIGNhbiBsYXRlciBtZWFzdXJlIHRoZSBtZW1vcnkgdXNhZ2UuCitDUkVBVEUg RlVOQ1RJT04gcmVzaXphYmxlX3NobWVtX3JlYWQoZW50cnlfY291bnQgaW50ZWdlciwgZW50cnlf dmFsdWUgaW50ZWdlcikKK1JFVFVSTlMgYm9vbGVhbgorQVMgJ01PRFVMRV9QQVRITkFNRScKK0xB TkdVQUdFIEMgU1RSSUNUOworCistLSBGdW5jdGlvbiB0byByZXBvcnQgbWVtb3J5IHVzYWdlIHN0 YXRpc3RpY3Mgb2YgdGhlIGNhbGxpbmcgYmFja2VuZAorLS0KKy0tIFRPRE86IFRoaXMgZnVuY3Rp b24gaXMgdXNlZnVsIHRvIGRldGVybWluZSB0aGF0IHRoZSBtZW1vcnkgaXMgZnJlZWQgYWZ0ZXIK Ky0tIHNocmlua2luZyBhbmQgdGhhdCB3ZSBkb24ndCBhbGxvY2F0ZSBhbGwgdGhlIG1lbW9yeSB1 cGZyb250IGluc3RlYWQgb2YganVzdAorLS0gcmVzZXJ2aW5nIHRoZSBhZGRyZXNzIHNwYWNlLiB0 aGUgQyBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uIHJlbGllcworLS0gaGVhdmlseSBv biBMaW51eC1zcGVjaWZpYyAvcHJvYy9zZWxmL3N0YXRzIGFuZCBhbHNvIHRoZSBzaXplcyB0aGF0 IGl0IHJldHVybnMKKy0tIG1heSBub3QgYmUgc3RhYmxlIGFjcm9zcyBkaWZmZXJlbnQgbWFjaGlu ZXMuIEhlbmNlIHdlIHNob3VsZCBjb25zaWRlcgorLS0gcmVtb3ZpbmcgdGhpcyBmdW5jdGlvbiBh bmQgdGhlIHJlbGF0ZWQgdGVzdHMgYWZ0ZXIgd2UgaGF2ZSB2ZXJpZmllZCB0aGUKKy0tIHJlc2l6 aW5nIHdvcmtzIGFzIGV4cGVjdGVkLgorQ1JFQVRFIEZVTkNUSU9OIHJlc2l6YWJsZV9zaG1lbV91 c2FnZShPVVQgcnNzX2Fub24gYmlnaW50LCBPVVQgcnNzX2ZpbGUgYmlnaW50LCBPVVQgcnNzX3No bWVtIGJpZ2ludCwgT1VUIHZtX3NpemUgYmlnaW50KQorQVMgJ01PRFVMRV9QQVRITkFNRScKK0xB TkdVQUdFIEMgU1RSSUNUOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9yZXNpemFibGVf c2htZW0vcmVzaXphYmxlX3NobWVtLmMgYi9zcmMvdGVzdC9tb2R1bGVzL3Jlc2l6YWJsZV9zaG1l bS9yZXNpemFibGVfc2htZW0uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uNTVjODZiOGUxYWIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Jlc2l6 YWJsZV9zaG1lbS9yZXNpemFibGVfc2htZW0uYwpAQCAtMCwwICsxLDI3MCBAQAorLyogLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICoKKyAqIHJlc2l6YWJsZV9zaG1lbS5jCisgKgkJVGVzdCBtb2R1bGUgZm9y IFBvc3RncmVTUUwncyByZXNpemFibGUgc2hhcmVkIG1lbW9yeSBmdW5jdGlvbmFsaXR5CisgKgor ICogVGhpcyBtb2R1bGUgZGVtb25zdHJhdGVzIGFuZCB0ZXN0cyB0aGUgcmVzaXphYmxlIHNoYXJl ZCBtZW1vcnkgQVBJCisgKiBwcm92aWRlZCBieSBzaG1lbS5jL3NobWVtLmguCisgKgorICogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICovCisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUgImZt Z3IuaCIKKyNpbmNsdWRlICJmdW5jYXBpLmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5j bHVkZSAic3RvcmFnZS9zaG1lbS5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc3Bpbi5oIgorI2luY2x1 ZGUgInV0aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCisjaW5jbHVkZSAi dXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKKyNpbmNsdWRl ICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCisKKyNpbmNsdWRlIDxzdGRpby5oPgorCitQR19NT0RV TEVfTUFHSUM7CisKKy8qCisgKiBEZWZhdWx0IGFtb3VudCBvZiBzaGFyZWQgYnVmZmVycyBhbmQg aGVuY2UgdGhlIGFtb3VudCBvZiBzaGFyZWQgbWVtb3J5CisgKiBhbGxvY2F0ZWQgYnkgZGVmYXVs dCBpcyBpbiBodW5kcmVkcyBvZiBNQnMuIFRoZSBtZW1vcnkgYWxsb2NhdGVkIHRvIHRoZSB0ZXN0 CisgKiBzdHJ1Y3R1cmUgd2lsbCBiZSBub3RpY2VhYmxlIG9ubHkgd2hlbiBpdCdzIGluIHRoZSBz YW1lIG9yZGVyLgorICovCisjZGVmaW5lIFRFU1RfSU5JVElBTF9FTlRSSUVTCSgyNSAqIDEwMjQg KiAxMDI0KQkJLyogSW5pdGlhbCBudW1iZXIgb2YgZW50cmllcyAoMTAwTUIpICovCisjZGVmaW5l IFRFU1RfTUFYX0VOVFJJRVMJCSgxMDAgKiAxMDI0ICogMTAyNCkJCS8qIE1heGltdW0gbnVtYmVy IG9mIGVudHJpZXMgKDQwME1CLCA0eCBpbml0aWFsKSAqLworI2RlZmluZSBURVNUX0VOVFJZX1NJ WkUJCQlzaXplb2YoaW50MzIpCQkvKiBTaXplIG9mIGVhY2ggZW50cnkgKi8KKworLyoKKyAqIFJl c2l6YWJsZSB0ZXN0IGRhdGEgc3RydWN0dXJlIHN0b3JlZCBpbiBzaGFyZWQgbWVtb3J5LgorICoK KyAqIFdlIGRvIG5vdCB1c2UgYW55IGxvY2tzLiBUaGUgdGVzdCBwZXJmb3JtcyByZXNpemluZywg cmVhZHMgYW5kIHdyaXRlcyBub25lIG9mCisgKiB3aGljaCBhcmUgY29uY3VycmVudCB0byBrZWVw IHRoZSBjb2RlIGFuZCB0aGUgdGVzdCBzaW1wbGUuCisgKi8KK3R5cGVkZWYgc3RydWN0IFRlc3RS ZXNpemFibGVTaG1lbVN0cnVjdAoreworCS8qIE1ldGFkYXRhICovCisJaW50MzIJCW51bV9lbnRy aWVzOwkJLyogTnVtYmVyIG9mIGVudHJpZXMgdGhhdCBjYW4gZml0ICovCisKKwkvKiBEYXRhIGFy ZWEgLSB2YXJpYWJsZSBzaXplICovCisJaW50MzIJCWRhdGFbRkxFWElCTEVfQVJSQVlfTUVNQkVS XTsKK30gVGVzdFJlc2l6YWJsZVNobWVtU3RydWN0OworCisvKiBHbG9iYWwgcG9pbnRlciB0byBv dXIgc2hhcmVkIG1lbW9yeSBzdHJ1Y3R1cmUgKi8KK3N0YXRpYyBUZXN0UmVzaXphYmxlU2htZW1T dHJ1Y3QgKnJlc2l6YWJsZV9zaG1lbSA9IE5VTEw7CisKK3N0YXRpYyB2b2lkIHJlc2l6YWJsZV9z aG1lbV9zaG1lbV9pbml0KHZvaWQgKmFyZyk7CisKK3N0YXRpYyBTaG1lbVN0cnVjdERlc2MgdGVz dFNobWVtRGVzYyA9IHsKKwkubmFtZSA9ICJyZXNpemFibGVfc2htZW0iLAorCS5zaXplID0gb2Zm c2V0b2YoVGVzdFJlc2l6YWJsZVNobWVtU3RydWN0LCBkYXRhKSArIChURVNUX0lOSVRJQUxfRU5U UklFUyAqIFRFU1RfRU5UUllfU0laRSksCisJLm1heF9zaXplID0gb2Zmc2V0b2YoVGVzdFJlc2l6 YWJsZVNobWVtU3RydWN0LCBkYXRhKSArIChURVNUX01BWF9FTlRSSUVTICogVEVTVF9FTlRSWV9T SVpFKSwKKwkuYWxpZ25tZW50ID0gTUFYSU1VTV9BTElHTk9GLAorCS5pbml0X2ZuID0gcmVzaXph YmxlX3NobWVtX3NobWVtX2luaXQsCisJLnB0ciA9ICh2b2lkICoqKSAmcmVzaXphYmxlX3NobWVt LAorfTsKKworc3RhdGljIHNobWVtX3JlcXVlc3RfaG9va190eXBlIHByZXZfc2htZW1fcmVxdWVz dF9ob29rID0gTlVMTDsKKworc3RhdGljIHZvaWQgcmVzaXphYmxlX3NobWVtX3JlcXVlc3Qodm9p ZCk7CisKKy8qIFNRTC1jYWxsYWJsZSBmdW5jdGlvbnMgKi8KK1BHX0ZVTkNUSU9OX0lORk9fVjEo cmVzaXphYmxlX3NobWVtX3Jlc2l6ZSk7CitQR19GVU5DVElPTl9JTkZPX1YxKHJlc2l6YWJsZV9z aG1lbV93cml0ZSk7CitQR19GVU5DVElPTl9JTkZPX1YxKHJlc2l6YWJsZV9zaG1lbV9yZWFkKTsK K1BHX0ZVTkNUSU9OX0lORk9fVjEocmVzaXphYmxlX3NobWVtX3VzYWdlKTsKKworLyoKKyAqIE1v ZHVsZSBsb2FkIGNhbGxiYWNrCisgKi8KK3ZvaWQKK19QR19pbml0KHZvaWQpCit7CisJLyoKKwkg KiBUaGUgbW9kdWxlIG5lZWRzIHRvIGJlIGxvYWRlZCB2aWEgc2hhcmVkX3ByZWxvYWRfbGlicmFy aWVzIHRvIHJlZ2lzdGVyCisJICogc2hhcmVkIG1lbW9yeSBzdHJ1Y3R1cmUuIEJ1dCBpZiB0aGF0 J3Mgbm90IHRoZSBjYXNlLCBkb24ndCB0aHJvdyBhbiBlcnJvci4KKwkgKiBUaGUgU1FMIGZ1bmN0 aW9ucyBjaGVjayBmb3IgZXhpc3RlbmNlIG9mIHRoZSBzaGFyZWQgbWVtb3J5IGRhdGEgc3RydWN0 dXJlLgorCSAqLworCWlmICghcHJvY2Vzc19zaGFyZWRfcHJlbG9hZF9saWJyYXJpZXNfaW5fcHJv Z3Jlc3MpCisJCXJldHVybjsKKworI2lmZGVmIEVYRUNfQkFDS0VORAorCWVyZXBvcnQoRVJST1Is CisJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkgZXJybXNn KCJyZXNpemFibGVfc2htZW0gaXMgbm90IHN1cHBvcnRlZCBpbiBFWEVDX0JBQ0tFTkQgYnVpbGRz IikpKTsKKyNlbmRpZgorCisJLyogSW5zdGFsbCBob29rIHRvIHJlZ2lzdGVyIHNoYXJlZCBtZW1v cnkgc3RydWN0dXJlLiAqLworCXByZXZfc2htZW1fcmVxdWVzdF9ob29rID0gc2htZW1fcmVxdWVz dF9ob29rOworCXNobWVtX3JlcXVlc3RfaG9vayA9IHJlc2l6YWJsZV9zaG1lbV9yZXF1ZXN0Owor fQorCisvKgorICogUmVxdWVzdCBzaGFyZWQgbWVtb3J5IHJlc291cmNlcworICovCitzdGF0aWMg dm9pZAorcmVzaXphYmxlX3NobWVtX3JlcXVlc3Qodm9pZCkKK3sKKwlpZiAocHJldl9zaG1lbV9y ZXF1ZXN0X2hvb2spCisJCXByZXZfc2htZW1fcmVxdWVzdF9ob29rKCk7CisKKwkvKiBSZWdpc3Rl ciBvdXIgcmVzaXphYmxlIHNoYXJlZCBtZW1vcnkgc3RydWN0dXJlICovCisJU2htZW1SZWdpc3Rl clN0cnVjdCgmdGVzdFNobWVtRGVzYyk7Cit9CisKKy8qCisgKiBJbml0aWFsaXplIHNoYXJlZCBt ZW1vcnkgc3RydWN0dXJlCisgKi8KK3N0YXRpYyB2b2lkCityZXNpemFibGVfc2htZW1fc2htZW1f aW5pdCh2b2lkICphcmcpCit7CisJLyoKKwkgKiBTaGFyZWQgbWVtb3J5IHN0cnVjdHVyZSBzaG91 bGQgaGF2ZSBiZWVuIGFsbG9jYXRlZCB3aXRoIHRoZSByZXF1ZXN0ZWQKKwkgKiBzaXplLiBJbml0 aWFsaXplIHRoZSBtZXRhZGF0YS4KKwkgKi8KKwlBc3NlcnQocmVzaXphYmxlX3NobWVtICE9IE5V TEwpOworCXJlc2l6YWJsZV9zaG1lbS0+bnVtX2VudHJpZXMgPSBURVNUX0lOSVRJQUxfRU5UUklF UzsKK30KKworLyoKKyAqIFJlc2l6ZSB0aGUgc2hhcmVkIG1lbW9yeSBzdHJ1Y3R1cmUgdG8gYWNj b21tb2RhdGUgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YKKyAqIGVudHJpZXMuCisgKi8KK0RhdHVt CityZXNpemFibGVfc2htZW1fcmVzaXplKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisjaWZuZGVmIEVY RUNfQkFDS0VORAorCWludDMyCQluZXdfZW50cmllcyA9IFBHX0dFVEFSR19JTlQzMigwKTsKKwlT aXplCQluZXdfc2l6ZTsKKworCWlmICghcmVzaXphYmxlX3NobWVtKQorCQllcmVwb3J0KEVSUk9S LAorCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUp LAorCQkJCSBlcnJtc2coInJlc2l6YWJsZV9zaG1lbSBpcyBub3QgaW5pdGlhbGl6ZWQiKSkpOwor CisJbmV3X3NpemUgPSBvZmZzZXRvZihUZXN0UmVzaXphYmxlU2htZW1TdHJ1Y3QsIGRhdGEpICsg KG5ld19lbnRyaWVzICogVEVTVF9FTlRSWV9TSVpFKTsKKwlTaG1lbVJlc2l6ZVJlZ2lzdGVyZWQo dGVzdFNobWVtRGVzYy5uYW1lLCBuZXdfc2l6ZSk7CisJcmVzaXphYmxlX3NobWVtLT5udW1fZW50 cmllcyA9IG5ld19lbnRyaWVzOworCisJUEdfUkVUVVJOX1ZPSUQoKTsKKyNlbHNlCisJZXJlcG9y dChFUlJPUiwKKwkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJ CSBlcnJtc2coInJlc2l6aW5nIHNoYXJlZCBtZW1vcnkgaXMgbm90IHN1cHBvcnRlZCBpbiBFWEVD X0JBQ0tFTkQgYnVpbGRzIikpKTsKKyNlbmRpZgorfQorCisvKgorICogV3JpdGUgdGhlIGdpdmVu IGludGVnZXIgdmFsdWUgdG8gYWxsIGVudHJpZXMgaW4gdGhlIGRhdGEgYXJyYXkuCisgKi8KK0Rh dHVtCityZXNpemFibGVfc2htZW1fd3JpdGUoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlpbnQzMgkJ ZW50cnlfdmFsdWUgPSBQR19HRVRBUkdfSU5UMzIoMCk7CisJaW50MzIJCWk7CisKKwlpZiAoIXJl c2l6YWJsZV9zaG1lbSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX09C SkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJybXNnKCJyZXNpemFibGVf c2htZW0gaXMgbm90IGluaXRpYWxpemVkIikpKTsKKworCS8qIFdyaXRlIHRoZSB2YWx1ZSB0byBh bGwgY3VycmVudCBlbnRyaWVzICovCisJZm9yIChpID0gMDsgaSA8IHJlc2l6YWJsZV9zaG1lbS0+ bnVtX2VudHJpZXM7IGkrKykKKwkJcmVzaXphYmxlX3NobWVtLT5kYXRhW2ldID0gZW50cnlfdmFs dWU7CisKKwlQR19SRVRVUk5fVk9JRCgpOworfQorCisvKgorICogQ2hlY2sgd2hldGhlciB0aGUg Zmlyc3QgJ2VudHJ5X2NvdW50JyBlbnRyaWVzIGFsbCBoYXZlIHRoZSBleHBlY3RlZCAnZW50cnlf dmFsdWUnLgorICogUmV0dXJucyB0cnVlIGlmIGFsbCBtYXRjaCwgZmFsc2Ugb3RoZXJ3aXNlLgor ICovCitEYXR1bQorcmVzaXphYmxlX3NobWVtX3JlYWQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlp bnQzMgkJZW50cnlfY291bnQgPSBQR19HRVRBUkdfSU5UMzIoMCk7CisJaW50MzIJCWVudHJ5X3Zh bHVlID0gUEdfR0VUQVJHX0lOVDMyKDEpOworCWludDMyCQlpOworCisJaWYgKHJlc2l6YWJsZV9z aG1lbSA9PSBOVUxMKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfT0JK RUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCSBlcnJtc2coInJlc2l6YWJsZV9z aG1lbSBpcyBub3QgaW5pdGlhbGl6ZWQiKSkpOworCisJLyogVmFsaWRhdGUgZW50cnlfY291bnQg Ki8KKwlpZiAoZW50cnlfY291bnQgPCAwIHx8IGVudHJ5X2NvdW50ID4gcmVzaXphYmxlX3NobWVt LT5udW1fZW50cmllcykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lO VkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkgZXJybXNnKCJlbnRyeV9jb3VudCAlZCBpcyBv dXQgb2YgcmFuZ2UgKDAuLiVkKSIsIGVudHJ5X2NvdW50LCByZXNpemFibGVfc2htZW0tPm51bV9l bnRyaWVzKSkpOworCisJLyogQ2hlY2sgaWYgZmlyc3QgZW50cnlfY291bnQgZW50cmllcyBoYXZl IHRoZSBleHBlY3RlZCB2YWx1ZSAqLworCWZvciAoaSA9IDA7IGkgPCBlbnRyeV9jb3VudDsgaSsr KQorCXsKKwkJaWYgKHJlc2l6YWJsZV9zaG1lbS0+ZGF0YVtpXSAhPSBlbnRyeV92YWx1ZSkKKwkJ CVBHX1JFVFVSTl9CT09MKGZhbHNlKTsKKwl9CisKKwlQR19SRVRVUk5fQk9PTCh0cnVlKTsKK30K KworLyoKKyAqIFJlcG9ydCBtdWx0aXBsZSBtZW1vcnkgdXNhZ2Ugc3RhdGlzdGljcyBvZiB0aGUg Y2FsbGluZyBiYWNrZW5kIHByb2Nlc3MKKyAqIGFzIHJlcG9ydGVkIGJ5IHRoZSBrZXJuZWwuCisg KiBSZXR1cm5zIFJzc0Fub24sIFJzc0ZpbGUsIFJzc1NobWVtLCBWbVNpemUgZnJvbSAvcHJvYy9z ZWxmL3N0YXR1cyBhcyBhIHJlY29yZC4KKyAqCisgKiBUT0RPOiBTZWUgVE9ETyBub3RlIGluIFNR TCBkZWZpbml0aW9uIG9mIHRoaXMgZnVuY3Rpb24uCisgKi8KK0RhdHVtCityZXNpemFibGVfc2ht ZW1fdXNhZ2UoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlGSUxFCSAgICpmOworCWNoYXIJCWxpbmVb MjU2XTsKKwlpbnQ2NAkJcnNzX2Fub25fa2IgPSAtMTsKKwlpbnQ2NAkJcnNzX2ZpbGVfa2IgPSAt MTsKKwlpbnQ2NAkJcnNzX3NobWVtX2tiID0gLTE7CisJaW50NjQJCXZtX3NpemVfa2IgPSAtMTsK KwlpbnQJCQlmb3VuZCA9IDA7CisJVHVwbGVEZXNjCXR1cGRlc2M7CisJRGF0dW0JCXZhbHVlc1s0 XTsKKwlib29sCQludWxsc1s0XTsKKwlIZWFwVHVwbGUJdHVwbGU7CisKKwkvKiBPcGVuIC9wcm9j L3NlbGYvc3RhdHVzIHRvIHJlYWQgbWVtb3J5IGluZm9ybWF0aW9uICovCisJZiA9IGZvcGVuKCIv cHJvYy9zZWxmL3N0YXR1cyIsICJyIik7CisJaWYgKGYgPT0gTlVMTCkKKwkJZXJlcG9ydChFUlJP UiwKKwkJCQkoZXJyY29kZV9mb3JfZmlsZV9hY2Nlc3MoKSwKKwkJCQkgZXJybXNnKCJjb3VsZCBu b3Qgb3BlbiAvcHJvYy9zZWxmL3N0YXR1czogJW0iKSkpOworCisJLyogTG9vayBmb3IgdGhlIG1l bW9yeSB1c2FnZSBsaW5lcyAqLworCXdoaWxlIChmZ2V0cyhsaW5lLCBzaXplb2YobGluZSksIGYp ICE9IE5VTEwgJiYgZm91bmQgPCA0KQorCXsKKwkJaWYgKHJzc19hbm9uX2tiID09IC0xICYmIHNz Y2FuZihsaW5lLCAiUnNzQW5vbjogJWxkIGtCIiwgJnJzc19hbm9uX2tiKSA9PSAxKQorCQkJZm91 bmQrKzsKKwkJZWxzZSBpZiAocnNzX2ZpbGVfa2IgPT0gLTEgJiYgc3NjYW5mKGxpbmUsICJSc3NG aWxlOiAlbGQga0IiLCAmcnNzX2ZpbGVfa2IpID09IDEpCisJCQlmb3VuZCsrOworCQllbHNlIGlm IChyc3Nfc2htZW1fa2IgPT0gLTEgJiYgc3NjYW5mKGxpbmUsICJSc3NTaG1lbTogJWxkIGtCIiwg JnJzc19zaG1lbV9rYikgPT0gMSkKKwkJCWZvdW5kKys7CisJCWVsc2UgaWYgKHZtX3NpemVfa2Ig PT0gLTEgJiYgc3NjYW5mKGxpbmUsICJWbVNpemU6ICVsZCBrQiIsICZ2bV9zaXplX2tiKSA9PSAx KQorCQkJZm91bmQrKzsKKwl9CisKKwlmY2xvc2UoZik7CisKKwkvKiBCdWlsZCB0dXBsZSBkZXNj cmlwdG9yIGZvciBvdXIgcmVzdWx0IHR5cGUgKi8KKwlpZiAoZ2V0X2NhbGxfcmVzdWx0X3R5cGUo ZmNpbmZvLCBOVUxMLCAmdHVwZGVzYykgIT0gVFlQRUZVTkNfQ09NUE9TSVRFKQorCQllcmVwb3J0 KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJ CQkgZXJybXNnKCJmdW5jdGlvbiByZXR1cm5pbmcgcmVjb3JkIGNhbGxlZCBpbiBjb250ZXh0ICIK KwkJCQkJCSJ0aGF0IGNhbm5vdCBhY2NlcHQgYSByZWNvcmQiKSkpOworCisJLyogQnVpbGQgdGhl IHJlc3VsdCB0dXBsZSAqLworCXZhbHVlc1swXSA9IEludDY0R2V0RGF0dW0ocnNzX2Fub25fa2Ig Pj0gMCA/IHJzc19hbm9uX2tiICogMTAyNCA6IDApOworCXZhbHVlc1sxXSA9IEludDY0R2V0RGF0 dW0ocnNzX2ZpbGVfa2IgPj0gMCA/IHJzc19maWxlX2tiICogMTAyNCA6IDApOworCXZhbHVlc1sy XSA9IEludDY0R2V0RGF0dW0ocnNzX3NobWVtX2tiID49IDAgPyByc3Nfc2htZW1fa2IgKiAxMDI0 IDogMCk7CisJdmFsdWVzWzNdID0gSW50NjRHZXREYXR1bSh2bV9zaXplX2tiID49IDAgPyB2bV9z aXplX2tiICogMTAyNCA6IDApOworCisJbnVsbHNbMF0gPSBudWxsc1sxXSA9IG51bGxzWzJdID0g bnVsbHNbM10gPSBmYWxzZTsKKworCXR1cGxlID0gaGVhcF9mb3JtX3R1cGxlKHR1cGRlc2MsIHZh bHVlcywgbnVsbHMpOworCVBHX1JFVFVSTl9EQVRVTShIZWFwVHVwbGVHZXREYXR1bSh0dXBsZSkp OworfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9yZXNpemFibGVfc2htZW0vcmVzaXph YmxlX3NobWVtLmNvbmYgYi9zcmMvdGVzdC9tb2R1bGVzL3Jlc2l6YWJsZV9zaG1lbS9yZXNpemFi bGVfc2htZW0uY29uZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNzY0 YjYzNTdjYmIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Jlc2l6YWJsZV9z aG1lbS9yZXNpemFibGVfc2htZW0uY29uZgpAQCAtMCwwICsxLDQgQEAKK3NoYXJlZF9wcmVsb2Fk X2xpYnJhcmllcyA9ICdyZXNpemFibGVfc2htZW0nCisjIFR1cm4gaHVnZSBwYWdlcyBvZmYgc28g dGhhdCB3ZSBjYW4gdGVzdCBjaGFuZ2VzIGluIHRoZSBzaGFyZWQgbWVtb3J5IHNtYWxsZXIKKyMg dGhhbiBodWdlIHBhZ2Ugc2l6ZSB3aGljaCBtYXkgYmUgaW4gR0JzLgoraHVnZV9wYWdlcyA9IG9m ZgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9yZXNpemFibGVfc2htZW0vcmVzaXphYmxl X3NobWVtLmNvbnRyb2wgYi9zcmMvdGVzdC9tb2R1bGVzL3Jlc2l6YWJsZV9zaG1lbS9yZXNpemFi bGVfc2htZW0uY29udHJvbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u MWNlMmM1ZWEyMWEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Jlc2l6YWJs ZV9zaG1lbS9yZXNpemFibGVfc2htZW0uY29udHJvbApAQCAtMCwwICsxLDUgQEAKKyMgcmVzaXph YmxlX3NobWVtIGV4dGVuc2lvbiB0ZXN0IG1vZHVsZQorY29tbWVudCA9ICd0ZXN0IG1vZHVsZSBm b3IgdGVzdGluZyByZXNpemFibGUgc2hhcmVkIG1lbW9yeSBzdHJ1Y3R1cmUgZnVuY3Rpb25hbGl0 eScKK2RlZmF1bHRfdmVyc2lvbiA9ICcxLjAnCittb2R1bGVfcGF0aG5hbWUgPSAnJGxpYmRpci9y ZXNpemFibGVfc2htZW0nCityZWxvY2F0YWJsZSA9IHRydWUKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L21vZHVsZXMvcmVzaXphYmxlX3NobWVtL3NwZWNzL3Jlc2l6YWJsZV9zaG1lbS5zcGVjIGIvc3Jj L3Rlc3QvbW9kdWxlcy9yZXNpemFibGVfc2htZW0vc3BlY3MvcmVzaXphYmxlX3NobWVtLnNwZWMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjg4YmEwMjJmZTA0Ci0tLSAv ZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9yZXNpemFibGVfc2htZW0vc3BlY3MvcmVz aXphYmxlX3NobWVtLnNwZWMKQEAgLTAsMCArMSw0MiBAQAorIyBUZXN0IHJlc2l6YWJsZSBzaGFy ZWQgbWVtb3J5IHN0cnVjdHVyZQorIworIyBJdCB0ZXN0cyB0aGF0IGEgcmVzaXphYmxlIHNoYXJl ZCBtZW1vcnkgc3RydWN0dXJlIGNhbiBiZSByZXNpemVkIGZyb20gYW55CisjIGJhY2tlbmQgYW5k IHRoYXQgdGhlIG5ldyBzaXplcyBhcmUgdmlzaWJsZSB0byBhbGwgdGhlIGJhY2tlbmRzLiBJdCB1 c2VzCisjIGlzb2xhdGlvbiB0ZXN0IGluZnJhc3RydWN0dXJlIHNvIHRoYXQgcmVzaXppbmcsIHJl YWRpbmcgYW5kIHdyaXRpbmcgY2FuIGJlCisjIGludGVybGVhdmVkLgorCitzZXR1cAoreworICBD UkVBVEUgRVhURU5TSU9OIHJlc2l6YWJsZV9zaG1lbTsKK30KKwordGVhcmRvd24KK3sKKyAgRFJP UCBFWFRFTlNJT04gcmVzaXphYmxlX3NobWVtOworfQorCitzZXNzaW9uICJzZXNzaW9uMSIKK3N0 ZXAgczF3X2luaXRpYWwgeyBTRUxFQ1QgcmVzaXphYmxlX3NobWVtX3dyaXRlKDEwMCk7IH0KK3N0 ZXAgczFyX21heCB7IFNFTEVDVCByZXNpemFibGVfc2htZW1fcmVhZCgxMDAgKiAxMDI0ICogMTAy NCwgNTAwKTsgfQorc3RlcCBzMXJfc2hyaW5rIHsgU0VMRUNUIHJlc2l6YWJsZV9zaG1lbV9yZWFk KDc1ICogMTAyNCAqIDEwMjQsIDUwMCk7IH0KK3N0ZXAgczF3X3NocmluayB7IFNFTEVDVCByZXNp emFibGVfc2htZW1fd3JpdGUoOTk5KTsgfQorc3RlcCBzMXUgeyBTRUxFQ1QgcGdfc2l6ZV9wcmV0 dHkocnNzX2Fub24pIEFTIHJzc19hbm9uLCBwZ19zaXplX3ByZXR0eShyc3NfZmlsZSkgQVMgcnNz X2ZpbGUsIHBnX3NpemVfcHJldHR5KHJzc19zaG1lbSkgQVMgcnNzX3NobWVtLCBwZ19zaXplX3By ZXR0eSh2bV9zaXplKSBBUyB2bV9zaXplIEZST00gcmVzaXphYmxlX3NobWVtX3VzYWdlKCkgQVMg InNlc3Npb24xX3NobWVtX3VzYWdlIjsgfQorCitzZXNzaW9uICJzZXNzaW9uMiIKK3N0ZXAgczJy X2luaXRpYWwgeyBTRUxFQ1QgcmVzaXphYmxlX3NobWVtX3JlYWQoMjUgKiAxMDI0ICogMTAyNCwg MTAwKTsgfQorc3RlcCBzMndfbWF4IHsgU0VMRUNUIHJlc2l6YWJsZV9zaG1lbV93cml0ZSg1MDAp OyB9CitzdGVwIHMycl9zaHJpbmsgeyBTRUxFQ1QgcmVzaXphYmxlX3NobWVtX3JlYWQoNzUgKiAx MDI0ICogMTAyNCwgOTk5KTsgfQorc3RlcCBzMnUgeyBTRUxFQ1QgcGdfc2l6ZV9wcmV0dHkocnNz X2Fub24pIEFTIHJzc19hbm9uLCBwZ19zaXplX3ByZXR0eShyc3NfZmlsZSkgQVMgcnNzX2ZpbGUs IHBnX3NpemVfcHJldHR5KHJzc19zaG1lbSkgQVMgcnNzX3NobWVtLCBwZ19zaXplX3ByZXR0eSh2 bV9zaXplKSBBUyB2bV9zaXplIEZST00gcmVzaXphYmxlX3NobWVtX3VzYWdlKCkgQVMgInNlc3Np b24yX3NobWVtX3VzYWdlIjsgfQorCitzZXNzaW9uICJyZXNpemVyIgorc3RlcCB6c19tYXggeyBT RUxFQ1QgcmVzaXphYmxlX3NobWVtX3Jlc2l6ZSgxMDAgKiAxMDI0ICogMTAyNCk7IH0KK3N0ZXAg enNfc2hyaW5rIHsgU0VMRUNUIHJlc2l6YWJsZV9zaG1lbV9yZXNpemUoNzUgKiAxMDI0ICogMTAy NCk7IH0KK3N0ZXAgenNfZmFpbCB7IFNFTEVDVCByZXNpemFibGVfc2htZW1fcmVzaXplKDEyOCAq IDEwMjQgKiAxMDI0KTsgfSAjIHRoaXMgZmFpbHMgKDUxMk1CID4gNDAwTUIgbWF4KQorc3RlcCB6 aWEgeyBTRUxFQ1QgbmFtZSwgcGdfc2l6ZV9wcmV0dHkoc2l6ZSkgQVMgc2l6ZSwgcGdfc2l6ZV9w cmV0dHkoYWxsb2NhdGVkX3NpemUpIEFTIGFsbG9jYXRlZF9zaXplLCBwZ19zaXplX3ByZXR0eShy ZXNlcnZlZF9zaXplKSBBUyByZXNlcnZlZF9zaXplIEZST00gcGdfc2htZW1fYWxsb2NhdGlvbnMg V0hFUkUgbmFtZSA9ICdyZXNpemFibGVfc2htZW0nOyB9CitzdGVwIHp1IHsgU0VMRUNUIHBnX3Np emVfcHJldHR5KHJzc19hbm9uKSBBUyByc3NfYW5vbiwgcGdfc2l6ZV9wcmV0dHkocnNzX2ZpbGUp IEFTIHJzc19maWxlLCBwZ19zaXplX3ByZXR0eShyc3Nfc2htZW0pIEFTIHJzc19zaG1lbSwgcGdf c2l6ZV9wcmV0dHkodm1fc2l6ZSkgQVMgdm1fc2l6ZSBGUk9NIHJlc2l6YWJsZV9zaG1lbV91c2Fn ZSgpIEFTICJyZXNpemVyX3NobWVtX3VzYWdlIjsgfQorCisjIFRlc3Qgc2hyaW5raW5nIGFuZCBl eHBhbmRpbmcgdGhlIHNoYXJlZCBtZW1vcnksIHdoaWxlIGVuc3VyaW5nIHRoYXQ6CisjIC0gQWxs IGVudHJpZXMgY2FuIGJlIHdyaXR0ZW4gdG8gYW5kIHJlYWQgZnJvbSBhZnRlciBlYWNoIHJlc2l6 ZQorIyAtIFByZXZpb3VzbHkgd3JpdHRlbiBkYXRhIHJlbWFpbnMgdW5jaGFuZ2VkIGluIGVudHJp ZXMgdGhhdCBzdXJ2aXZlIHJlc2l6aW5nCisjIE5vdyB1c2luZyAxMDBNQiBpbml0aWFsICgyNU0g ZW50cmllcyksIDQwME1CIG1heCAoMTAwTSBlbnRyaWVzKSwgMzAwTUIgc2hyaW5rICg3NU0gZW50 cmllcykKK3Blcm11dGF0aW9uIHMxdSBzMnUgenUgemlhIHMxd19pbml0aWFsIHMxdSBzMnJfaW5p dGlhbCBzMnUgenNfbWF4IHp1IHppYSBzMnJfaW5pdGlhbCBzMndfbWF4IHMydSBzMXJfbWF4IHMx dSB6c19zaHJpbmsgenUgemlhIHMxcl9zaHJpbmsgczF3X3NocmluayBzMXUgczJyX3NocmluayBz MnUgenNfZmFpbApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5v dXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAppbmRleCBmNGVlMmJkNzQ1 OS4uYTZlYWViNDlkYmMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVs ZXMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CkBAIC0xNzcw LDggKzE3NzAsOSBAQCBwZ19zaGFkb3d8IFNFTEVDVCBwZ19hdXRoaWQucm9sbmFtZSBBUyB1c2Vu YW1lLAogcGdfc2htZW1fYWxsb2NhdGlvbnN8IFNFTEVDVCBuYW1lLAogICAgIG9mZiwKICAgICBz aXplLAotICAgIGFsbG9jYXRlZF9zaXplCi0gICBGUk9NIHBnX2dldF9zaG1lbV9hbGxvY2F0aW9u cygpIHBnX2dldF9zaG1lbV9hbGxvY2F0aW9ucyhuYW1lLCBvZmYsIHNpemUsIGFsbG9jYXRlZF9z aXplKTsKKyAgICBhbGxvY2F0ZWRfc2l6ZSwKKyAgICByZXNlcnZlZF9zaXplCisgICBGUk9NIHBn X2dldF9zaG1lbV9hbGxvY2F0aW9ucygpIHBnX2dldF9zaG1lbV9hbGxvY2F0aW9ucyhuYW1lLCBv ZmYsIHNpemUsIGFsbG9jYXRlZF9zaXplLCByZXNlcnZlZF9zaXplKTsKIHBnX3NobWVtX2FsbG9j YXRpb25zX251bWF8IFNFTEVDVCBuYW1lLAogICAgIG51bWFfbm9kZSwKICAgICBzaXplCi0tIAoy LjM0LjEKCg== --000000000000b94ae4064af21c1c--