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 1wA7iB-0025Lj-0L for pgsql-hackers@arkaria.postgresql.org; Tue, 07 Apr 2026 14:47:27 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wA7i9-000ukP-1v for pgsql-hackers@arkaria.postgresql.org; Tue, 07 Apr 2026 14:47:26 +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 1wA7i9-000ukE-0L for pgsql-hackers@lists.postgresql.org; Tue, 07 Apr 2026 14:47:25 +0000 Received: from mail-wr1-x435.google.com ([2a00:1450:4864:20::435]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wA7i5-000000017yR-47vL for pgsql-hackers@postgresql.org; Tue, 07 Apr 2026 14:47:24 +0000 Received: by mail-wr1-x435.google.com with SMTP id ffacd0b85a97d-43cfb723793so3332794f8f.2 for ; Tue, 07 Apr 2026 07:47:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775573241; cv=none; d=google.com; s=arc-20240605; b=aHvUgbJuOAysfZOYDwf1qxfpkmZfUvkAdgg5zfCw+lVwyKljCTRGy8bld1mtg6tyyx 6oR6jnQaS29U5CKGvfZvdsVfoVw5MvDIYIhu57gXcaC98eX2JhqQPlJtcgSGI9Zc7dQv BhJ+Y6pPaA+r8poFqT/8m7arQ6GxhOg1ArC/w9J33SNYgUi81S4mPjluptBpoqGXV1Ft jCY/Z8fVjLVI8XKztSvlTgODnW0sVKx1pYjcM/UdeKjsGKrDzmT+IPSctmrD7R32uk/A HzlMwX9f+NKFsTEYFgyb49e9Qd9CalcG3/rAKiLRQ1AHG00Pl+BkwTPuR9vblDDQrqG6 2ejw== 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=t+3b49flIolSYrjfzxSNTiujYAcrvGVpvFt/mlo5zK4=; fh=GAR3RwjyHk5IDV/rqE34vpPIVVLJd2Ypz8Qs1ujLxKo=; b=Cjg3qNX7A5n3je+0BDs146c3dIUmGs2r4Jadg9em4NXkUViEJjuNWuiH7fAC6xqXZN 9U8aSmkbdzZBf8dqArYb3rlZkZ5fNopt/jfn7Yc9pvMRun/tYC6Ir33FFF4PUSL3jD/f OZ/53gWJFss/Jg4UBMVKRytK1NCtmz51e8wz+USIyx+B905gViu9bo+CVoS43Nk7TJck Gshn7wFYXGT3VCB8OeDKt1ROcE8v/L+vYKRVkml/8WKIq2f8+5/TXegUibaOCq2rdGiS BVFdcbqM9Z7VUrDc4E+vsh0h6lelUowIBgtHexdjhHrQiPbf+lr06fkW0JiJmcGRSvSL xCjw==; 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=20251104; t=1775573241; x=1776178041; 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=t+3b49flIolSYrjfzxSNTiujYAcrvGVpvFt/mlo5zK4=; b=LxXFqKGtVust0wZ3Zy3FvRGZ2ZrknCrEiiXb07QiPovrJRtzYVTo5WjsGru0ksIjRB YHTbkTR+QL7CuyjX1leubpOWNl/bGnT26jG9WAXe+NONS/pnKHtai6gIayNLZvFq6PRM /BofMW+UGDaqVm+L+b/ewhfQjlCJNw/+4lbZucDXgXTWlEiB2FQQeuDo5MRZ1qCXdHuB TiqN+OTQ9nZ8AR7TGGALir/81Fi7IYkcpILU7vCbO3EuHX04t6M1J9LUdBfZhNMjhvQC YnKd4jNkjmGpjFNlJQ37vFMRd9eeSxWz5irLp5vbIUr+/QBL26ggvQHcj4qEAT5quRiK Vx0g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775573241; x=1776178041; 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=t+3b49flIolSYrjfzxSNTiujYAcrvGVpvFt/mlo5zK4=; b=PRisVE6b7fEU3pyXdDK/Q919uIr9u4f3VP/HWw3nLSZFxj/ZKwA1ZdgKrZ3X8V9liF RWrNFuClduJIYzrNMlSCVUkn/C+K9GLBm3pNc1avOKKCbixNLVQjS+e16u/xuM31ZWGH l7ap9TPcVEKvulDEKXJorw4OMIrknZqhQxi0i2mozmj/40aH6H/zrRHqKGYQZz4EoYH9 Azqtzvi3nxJ6Gtbf1Ep8mSYFWg4dsjxWfdkeYzponU27KgMaIjzWCdylReqhZ3s/DgqS Ml013stI8R8OARPNUoy+RY6yekcvYDQoyNEpwWrAZq5BJwLPznStbSJPXgiaec0mDWBs b/ug== X-Forwarded-Encrypted: i=1; AJvYcCVN1xhOB6aG/QzOIh9re0ZTwNwfvjpMXShk3GM4mm3k0sVGtIGxXc/P/wcYrjFnKcsm1vyGMC9r70v+qTjF@postgresql.org X-Gm-Message-State: AOJu0Ywf8EkNwjHCpnBuJlMzgNPa9JZGoq2PqkGuR4GDzJP0ywB5E+58 zdithequCQH5MjqCEGRHmTIr2CTGH9+icY2Cbv18tqRkFBrO8UWRvb8KCQZKbgftDTZqbg5/ld7 BoB9/xQqTBsCz1s2NxAf4B0ha/MhHZGU= X-Gm-Gg: AeBDieuYFbziuQI54Jz0F1Chjpp2ne30Br3t2d6xjBzkEDkWNxnZIw6dLctrdtcFk8x tRrEbGkkwdkv6wT3R0M/cu5ukYvA9Qg0Vxc1aiS21Fm//Zem2XejhDrxnaxfrtA98KF2dM43IIB 6vagVUMxeWQzSS/dTubUd/1DaPxI6xPpueCf3JYEFo4tdpdUUFdtJJ9HE/oO11pahp2vRcHUyTI Yit+mveJ/a3V3WCsTL9DIaYU2hdfKgU7dqKQ2tksFqruG/P/Bmkxc9s7W0/f3IRljgpSF77e2+H HLRjU0PheEkN2E0wl8UKq59myiiXVk4+IpW5p6SF/3T3089xPVE= X-Received: by 2002:a05:6000:2681:b0:43b:4703:9de5 with SMTP id ffacd0b85a97d-43d29305df0mr26706834f8f.44.1775573240581; Tue, 07 Apr 2026 07:47:20 -0700 (PDT) MIME-Version: 1.0 References: <791c3f18-f4de-4d84-ac6b-c7ccc074dd38@iki.fi> <9d919bd9-94dd-4bda-8ccf-ebced4178c53@iki.fi> <7d3ba240-9350-4dfc-bbe1-be6584aee236@iki.fi> <1c3a07a7-158d-4800-927c-2641c73277d8@iki.fi> <6d4383eb-4aaa-47ae-bda8-ee40dc60ad84@iki.fi> In-Reply-To: From: Ashutosh Bapat Date: Tue, 7 Apr 2026 20:16:59 +0530 X-Gm-Features: AQROBzAaKMRUJvWJBN2OucIABc8iaG0nfRU_iWWNxzAcZOAMDT0x6TcNLHUdALI Message-ID: Subject: Re: Better shared data structure management and resizable shared data structures To: Heikki Linnakangas Cc: Matthias van de Meent , Robert Haas , Andres Freund , pgsql-hackers , chaturvedipalak1911@gmail.com Content-Type: multipart/mixed; boundary="000000000000475ce6064edfdc4a" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000475ce6064edfdc4a Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Apr 7, 2026 at 3:36=E2=80=AFPM Ashutosh Bapat wrote: > > On Mon, Apr 6, 2026 at 7:23=E2=80=AFPM Ashutosh Bapat > wrote: > > > > I have kept these two patches separate from the main patch so that I > > can remove them if others feel they are not worth including in the > > feature. > > Here are patches rebased on the latest HEAD. No conflicts just rebase. > > Here are differences from the previous patchset. > > o. There are two patches in this patchset now. a. 0001 which supports > resizable shared memory and is equivalent to 0001 + 0002 + 0004 + 0005 > from the previous patchset. b. 0002 which is 0006 from the previous > patchset and adds support for protecting resizable shared memory > structures. 0003, which added diagnostics to investigate CFBot > failure, from the previous patchset is not required anymore since all > tests pass with CFBot. > > o. I have merged 0002 into 0001 from the previous patchset since with > that patch all platforms are green on CFBot. The resizable shared > memory test now uses /proc/self/smaps instead of /proc/self/status to > find the amount of memory allocated in the main shared memory segment > of PostgreSQL. > > o. Merged 0004, which supported minimum_size, into 0001. Minimum_size > would be useful to protect against accidental shrinkage of the > resizable structures. It will help additional support for minimum > sizes of GUCs like shared_buffers. It also makes it easy and intuitive > to distinguish between fixed-size and resizable structures, and will > be useful to find the minimum size of the shared memory segment. > > o. Merged 0005, which allows ABI compatibility between the binaries > which support resizable shared memory and those which don't, into > 0001. Apart from ABI compatibility, the code has lesser #ifdef blocks > and thus easier to read and maintain. > > I didn't find it useful to keep 0004 and 0005 separate since they were > interdependent and made review complicated and have higher chances of > being acceptable. > > o. 0006 is still separate since I am not sure whether the > functionality is absolutely needed at this time. In an offlist > discussion, Andres mentioned that it is not strictly needed. The > subsystem that uses the resizable shared memory can implement their > own protection if required and integrate it in the subsystems specific > synchronization. But Matthias thinks different. The API to add > protection is platform dependent, so it's better to abstract it via > shmem.c. If we decide to accept this patch, we should merge it into > 0001 before committing. > > Also did some more cleanups and changed the name of the GUC > have_resizable_shmem to have_resizable_shared_memory since shmem is an > internal phrase. > > I am looking at merging the resizable_shmem module into test_shmem module= next. Here are patches with the test modules merged. The merged module looks a bit rough to me and so does 0006. For example, I am not sure whether calling ShmemStructProtect() from init_fn is a good idea. See [1] for example. But init_fn is the last chance for the subsystem to touch and setup the resizable structure before it's opened to the wild. So, in the current infrastructure, I don't see any better place to call ShmemStructProtect() either. If you run tests after applying patch 0006, you will need to apply patch attached to [1] as well; otherwise the test will hang. [1] https://www.postgresql.org/message-id/CAExHW5uMQGvQH6GKaBZVtH4S9O13TwN+= _0Vy1gUpAW=3D_T_AmRA@mail.gmail.com --=20 Best Wishes, Ashutosh Bapat --000000000000475ce6064edfdc4a Content-Type: text/x-patch; charset="US-ASCII"; name="v20260407_2-0002-Add-support-to-protect-unused-resizable_sh.patch" Content-Disposition: attachment; filename="v20260407_2-0002-Add-support-to-protect-unused-resizable_sh.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnoqez5s0 RnJvbSBiNGZkMmVhMzFiNjcwYjliZWFjNTFiMjc1Y2FiYzkxZTQ2NWVlYmU3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBc2h1dG9zaCBCYXBhdCA8YXNodXRvc2guYmFwYXQub3NzQGdt YWlsLmNvbT4KRGF0ZTogTW9uLCA2IEFwciAyMDI2IDE5OjAwOjE0ICswNTMwClN1YmplY3Q6IFtQ QVRDSCB2MjAyNjA0MDcgMi8zXSBBZGQgc3VwcG9ydCB0byBwcm90ZWN0IHVudXNlZCByZXNpemFi bGVfc2htZW0KIHN0cnVjdHVyZQoKQWRkIEFQSXMgdG8gbWFrZSB0aGUgcG9ydGlvbiBvZiByZXNp emFibGVfc2htZW0gc3RydWN0dXJlIGJleW9uZCBpdHMgY3VycmVudApzaXplIGluYWNjZXNzaWJs ZS4KCkF1dGhvcjogQXNodXRvc2ggQmFwYXQgPGFzaHV0b3NoLmJhcGF0Lm9zc0BnbWFpbC5jb20+ ClN1Z2dlc3RlZC1ieTogTWF0dGhpYXMgdmFuIGRlIE1lZW50IDxib2VrZXd1cm0rcG9zdGdyZXNA Z21haWwuY29tPgotLS0KIGRvYy9zcmMvc2dtbC94ZnVuYy5zZ21sICAgICAgICAgICAgICAgICAg fCAgNCArLQogc3JjL2JhY2tlbmQvcG9ydC9zeXN2X3NobWVtLmMgICAgICAgICAgICB8IDU1ICsr KysrKysrKysrKysrKysrKysrKysKIHNyYy9iYWNrZW5kL3BvcnQvd2luMzJfc2htZW0uYyAgICAg ICAgICAgfCAgOCArKysrCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jICAgICAgICAg IHwgNjAgKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3BnX3No bWVtLmggICAgICAgICAgIHwgIDEgKwogc3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1lbS5oICAgICAg ICAgICAgICB8ICAxICsKIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS90ZXN0X3NobWVtLmMg fCA0MyArKysrKysrKysrKysrKysrKwogNyBmaWxlcyBjaGFuZ2VkLCAxNzEgaW5zZXJ0aW9ucygr KSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC94ZnVuYy5zZ21sIGIv ZG9jL3NyYy9zZ21sL3hmdW5jLnNnbWwKaW5kZXggMjJmOTUzZGI5ZDcuLjA0YjMxMmZjZjk0IDEw MDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwveGZ1bmMuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwveGZ1 bmMuc2dtbApAQCAtMzc4MCw3ICszNzgwLDkgQEAgbXlfc2htZW1faW5pdCh2b2lkICphcmcpCiAg ICAgYWRkaXRpb25hbCBzeW5jaHJvbml6YXRpb24gYmV0d2VlbiB0aGUgcmVzaXppbmcgcHJvY2Vz cyBhbmQgdGhlIHByb2Nlc3NlcwogICAgIHVzaW5nIHRoZSBzaGFyZWQgc3RydWN0dXJlLiBBbHNv IGl0IG5lZWRzIHRvIGltcGxlbWVudCBhZGRpdGlvbmFsIHByb3RlY3Rpb24KICAgICB0byBwcmV2 ZW50IGFjY2VzcyB0byB0aGUgcGFydCBvZiB0aGUgYWRkcmVzcyBzcGFjZSBiZXlvbmQgdGhlIHNp emUgb2YgdGhlCi0gICAgc3RydWN0dXJlIHdoZW4gcmVzaXppbmcgaXQuCisgICAgc3RydWN0dXJl IHdoZW4gcmVzaXppbmcgaXQuIDxmdW5jdGlvbj5TaG1lbVByb3RlY3RTdHJ1Y3Q8L2Z1bmN0aW9u PiBjYW4gYmUKKyAgICBjYWxsZWQgZnJvbSBldmVyeSBiYWNrZW5kIHRoYXQgbWF5IGFjY2VzcyB0 aGUgcmVzaXphYmxlIHN0cnVjdHVyZSBmb3IgdGhlCisgICAgc2FtZS4KICAgICA8L3BhcmE+CiAK ICAgICA8cGFyYT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BvcnQvc3lzdl9zaG1lbS5jIGIv c3JjL2JhY2tlbmQvcG9ydC9zeXN2X3NobWVtLmMKaW5kZXggYmIyYTgxNDE3YzYuLjE0YjZmYTdm N2U2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3J0L3N5c3Zfc2htZW0uYworKysgYi9zcmMv YmFja2VuZC9wb3J0L3N5c3Zfc2htZW0uYwpAQCAtMTA2NSw4ICsxMDY1LDYzIEBAIFBHU2hhcmVk TWVtb3J5RW5zdXJlQWxsb2NhdGVkKHZvaWQgKmFkZHIsIFNpemUgc2l6ZSkKIAlBc3NlcnQoYWRk ciA9PSAodm9pZCAqKSBUWVBFQUxJR04oR2V0T1NQYWdlU2l6ZSgpLCBhZGRyKSk7CiAJQXNzZXJ0 KHNpemUgPT0gVFlQRUFMSUdOKEdldE9TUGFnZVNpemUoKSwgc2l6ZSkpOwogCisJLyoKKwkgKiBF bnN1cmUgdGhhdCBNQURWX1BPUFVMQVRFX1dSSVRFIGNhbiBpbml0aWFsaXplIHRoZSBuZXdseSBh bGxvY2F0ZWQKKwkgKiBwYWdlcy4KKwkgKi8KKwlpZiAobXByb3RlY3QoYWRkciwgc2l6ZSwgUFJP VF9SRUFEIHwgUFJPVF9XUklURSkgIT0gMCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJybXNn KCJjb3VsZCBub3QgcHJvdGVjdCBzaGFyZWQgbWVtb3J5OiAlbSIpKSk7CisKIAlpZiAobWFkdmlz ZShhZGRyLCBzaXplLCBNQURWX1BPUFVMQVRFX1dSSVRFKSA9PSAtMSkKIAkJZXJlcG9ydChFUlJP UiwKIAkJCQkoZXJybXNnKCJjb3VsZCBub3QgYWxsb2NhdGUgc2hhcmVkIG1lbW9yeTogJW0iKSkp OwogI2VuZGlmCiB9CisKKy8qCisgKiBTZXQgbWVtb3J5IHByb3RlY3Rpb24gb24gdGhlIGdpdmVu IHJlZ2lvbiBvZiBzaGFyZWQgbWVtb3J5LgorICoKKyAqIE1ha2VzIFtyd19zdGFydCwgcndfZW5k KSByZWFkYWJsZSBhbmQgd3JpdGFibGUsIGFuZCBbcndfZW5kLCBwcm90X2VuZCkKKyAqIGluYWNj ZXNzaWJsZS4KKyAqCisgKiBBbGwgYWRkcmVzc2VzIGFyZSBleHBlY3RlZCB0byBiZSBwYWdlIGFs aWduZWQuCisgKgorICogT25seSBzdXBwb3J0ZWQgb24gcGxhdGZvcm1zIHRoYXQgc3VwcG9ydCBy ZXNpemFibGUgc2hhcmVkIG1lbW9yeS4KKyAqLwordm9pZAorUEdTaGFyZWRNZW1vcnlQcm90ZWN0 KHZvaWQgKnJ3X3N0YXJ0LCB2b2lkICpyd19lbmQsIHZvaWQgKnByb3RfZW5kKQoreworI2lmbmRl ZiBIQVZFX1JFU0laQUJMRV9TSE1FTQorCWVyZXBvcnQoRVJST1IsCisJCQkoZXJyY29kZShFUlJD T0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkgZXJybXNnKCJyZXNpemFibGUgc2hhcmVk IG1lbW9yeSBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0iKSkpOworI2Vsc2UKKwor CWlmICghQW5vbnltb3VzU2htZW0pCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJS Q09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCSBlcnJtc2coIm9ubHkgYW5vbnltb3Vz IHNoYXJlZCBtZW1vcnkgY2FuIGJlIHByb3RlY3RlZCBhdCBydW50aW1lIikpKTsKKworCUFzc2Vy dChyd19zdGFydCA9PSAodm9pZCAqKSBUWVBFQUxJR04oR2V0T1NQYWdlU2l6ZSgpLCByd19zdGFy dCkpOworCUFzc2VydChyd19lbmQgPT0gKHZvaWQgKikgVFlQRUFMSUdOKEdldE9TUGFnZVNpemUo KSwgcndfZW5kKSk7CisJQXNzZXJ0KHByb3RfZW5kID09ICh2b2lkICopIFRZUEVBTElHTihHZXRP U1BhZ2VTaXplKCksIHByb3RfZW5kKSk7CisJQXNzZXJ0KHJ3X2VuZCA+PSByd19zdGFydCk7CisK KwlpZiAocndfZW5kID4gcndfc3RhcnQpCisJeworCQlpZiAobXByb3RlY3Qocndfc3RhcnQsIChj aGFyICopIHJ3X2VuZCAtIChjaGFyICopIHJ3X3N0YXJ0LAorCQkJCQkgUFJPVF9SRUFEIHwgUFJP VF9XUklURSkgIT0gMCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJtc2coImNvdWxkIG5v dCBwcm90ZWN0IHNoYXJlZCBtZW1vcnk6ICVtIikpKTsKKwl9CisKKwlpZiAocHJvdF9lbmQgPiBy d19lbmQpCisJeworCQlpZiAobXByb3RlY3QocndfZW5kLCAoY2hhciAqKSBwcm90X2VuZCAtIChj aGFyICopIHJ3X2VuZCwKKwkJCQkJIFBST1RfTk9ORSkgIT0gMCkKKwkJCWVyZXBvcnQoRVJST1Is CisJCQkJCShlcnJtc2coImNvdWxkIG5vdCBwcm90ZWN0IHNoYXJlZCBtZW1vcnk6ICVtIikpKTsK Kwl9CisjZW5kaWYKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BvcnQvd2luMzJfc2htZW0u YyBiL3NyYy9iYWNrZW5kL3BvcnQvd2luMzJfc2htZW0uYwppbmRleCBjMWYzMDY2NWU2Ni4uYjUz OTZlNGE1ZTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BvcnQvd2luMzJfc2htZW0uYworKysg Yi9zcmMvYmFja2VuZC9wb3J0L3dpbjMyX3NobWVtLmMKQEAgLTY5MywzICs2OTMsMTEgQEAgUEdT aGFyZWRNZW1vcnlFbnN1cmVBbGxvY2F0ZWQodm9pZCAqYWRkciwgU2l6ZSBzaXplKQogCQkJKGVy cmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkJIGVycm1zZygicmVzaXph YmxlIHNoYXJlZCBtZW1vcnkgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtIikpKTsK IH0KKwordm9pZAorUEdTaGFyZWRNZW1vcnlQcm90ZWN0KHZvaWQgKnJ3X3N0YXJ0LCB2b2lkICpy d19lbmQsIHZvaWQgKnByb3RfZW5kKQoreworCWVyZXBvcnQoRVJST1IsCisJCQkoZXJyY29kZShF UlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkgZXJybXNnKCJyZXNpemFibGUgc2hh cmVkIG1lbW9yeSBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0iKSkpOworfQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYyBiL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvaXBjL3NobWVtLmMKaW5kZXggOGYwMDY5Njc3OTAuLjYxODA4YzdhOGU1IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvaXBjL3NobWVtLmMKQEAgLTg3NSw2ICs4NzUsNjYgQEAgU2htZW1SZXNpemVTdHJ1Y3Qo Y29uc3QgY2hhciAqbmFtZSwgU2l6ZSBuZXdfc2l6ZSkKICNlbmRpZgogfQogCisvKgorICogU2ht ZW1Qcm90ZWN0U3RydWN0KCkgLS0tIHByb3RlY3QgdGhlIHVudXNlZCBwb3J0aW9uIG9mIGEgcmVz aXphYmxlIHN0cnVjdHVyZS4KKyAqCisgKiBNYWtlcyB0aGUgcmVnaW9uIGJleW9uZCB0aGUgY3Vy cmVudCBzaXplIHVwIHRvIG1heGltdW1fc2l6ZSBpbmFjY2Vzc2libGUsIGFuZAorICogZW5zdXJl cyB0aGUgcmVnaW9uIHVwIHRvIHRoZSBjdXJyZW50IHNpemUgaXMgcmVhZGFibGUgYW5kIHdyaXRh YmxlLiBEZXBlbmRpbmcKKyAqIHVwb24gdGhlIHBsYXRmb3JtLCB0aGUgcHJvdGVjdGlvbiBob25v dXJzIHRoZSBwYWdlIGJvdW5kYXJpZXMuIFNvIGl0IG1heSBiZQorICogbW9yZSBwZXJtaXNzaWJs ZSB0aGFuIHN0cmljdGx5IG5lZWRlZC4KKyAqCisgKiBPbmx5IHdvcmtzIGZvciByZXNpemFibGUg c3RydWN0dXJlcy4gIFNob3VsZCBiZSBjYWxsZWQgaW4gZXZlcnkgYmFja2VuZCB0aGF0CisgKiBt YXkgYWNjZXNzIHRoZSByZXNpemFibGUgc3RydWN0dXJlIHdoaWxlIHJlc2l6aW5nIGl0LgorICov Cit2b2lkCitTaG1lbVByb3RlY3RTdHJ1Y3QoY29uc3QgY2hhciAqbmFtZSkKK3sKKyNpZm5kZWYg SEFWRV9SRVNJWkFCTEVfU0hNRU0KKwllcmVwb3J0KEVSUk9SLAorCQkJKGVycmNvZGUoRVJSQ09E RV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJIGVycm1zZygicmVzaXphYmxlIHNoYXJlZCBt ZW1vcnkgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtIikpKTsKKyNlbHNlCisJU2ht ZW1JbmRleEVudCAqcmVzdWx0OworCWJvb2wJCWZvdW5kOworCVNpemUJCXBhZ2Vfc2l6ZSA9IEdl dE9TUGFnZVNpemUoKTsKKwljaGFyCSAgICpyd19zdGFydDsKKwljaGFyCSAgICpyd19lbmQ7CisJ Y2hhcgkgICAqcHJvdF9lbmQ7CisKKwlMV0xvY2tBY3F1aXJlKFNobWVtSW5kZXhMb2NrLCBMV19T SEFSRUQpOworCXJlc3VsdCA9IChTaG1lbUluZGV4RW50ICopIGhhc2hfc2VhcmNoKFNobWVtSW5k ZXgsIG5hbWUsIEhBU0hfRklORCwgJmZvdW5kKTsKKwlpZiAoIWZvdW5kKQorCQllcmVwb3J0KEVS Uk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RB VEUpLAorCQkJCSBlcnJtc2coInNobWVtIHN0cnVjdCBcIiVzXCIgaXMgbm90IGluaXRpYWxpemVk IiwgbmFtZSkpKTsKKworCWlmIChyZXN1bHQtPm1pbmltdW1fc2l6ZSA9PSByZXN1bHQtPm1heGlt dW1fc2l6ZSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9O T1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJybXNnKCJzaGFyZWQgbWVtb3J5IHN0 cnVjdCBcIiVzXCIgaXMgbm90IHJlc2l6YWJsZSIsIG5hbWUpKSk7CisKKwkvKiBSZXNpemFibGUg c3RydWN0dXJlcyBhcmUgb25seSBzdXBwb3J0ZWQgd2l0aCBtbWFwLWJhc2VkIHNoYXJlZCBtZW1v cnkuICovCisJQXNzZXJ0KHNoYXJlZF9tZW1vcnlfdHlwZSA9PSBTSE1FTV9UWVBFX01NQVApOwor CisJLyogTWFrZSBhdCBsZWFzdCBbbG9jYXRpb24sIGxvY2F0aW9uK3NpemUpIHJlYWRhYmxlIGFu ZCB3cml0YWJsZSAqLworCXJ3X3N0YXJ0ID0gKGNoYXIgKikgVFlQRUFMSUdOX0RPV04ocGFnZV9z aXplLCByZXN1bHQtPmxvY2F0aW9uKTsKKwlyd19lbmQgPSAoY2hhciAqKSBUWVBFQUxJR04ocGFn ZV9zaXplLAorCQkJCQkJCQkoY2hhciAqKSByZXN1bHQtPmxvY2F0aW9uICsgcmVzdWx0LT5zaXpl KTsKKworCS8qCisJICogTWFrZSByZW1haW5pbmcgcG9ydGlvbiBpbmFjY2Vzc2libGUgd2hpbGUg bWFraW5nIHN1cmUgdGhhdCB0aGUgcG9ydGlvbgorCSAqIGFmdGVyIG1heGltdW1fc2l6ZSBpcyBu b3QgYWZmZWN0ZWQgc2luY2UgaXQgbWF5IGJlIHVzZWQgYnkgb3RoZXIKKwkgKiBzdHJ1Y3R1cmVz LgorCSAqLworCXByb3RfZW5kID0gKGNoYXIgKikgVFlQRUFMSUdOX0RPV04ocGFnZV9zaXplLAor CQkJCQkJCQkJICAgKGNoYXIgKikgcmVzdWx0LT5sb2NhdGlvbiArIHJlc3VsdC0+bWF4aW11bV9z aXplKTsKKworCUxXTG9ja1JlbGVhc2UoU2htZW1JbmRleExvY2spOworCisJUEdTaGFyZWRNZW1v cnlQcm90ZWN0KHJ3X3N0YXJ0LCByd19lbmQsIHByb3RfZW5kKTsKKyNlbmRpZgorfQorCiAvKgog ICoJSW5pdFNobWVtQWxsb2NhdG9yKCkgLS0tIHNldCB1cCBiYXNpYyBwb2ludGVycyB0byBzaGFy ZWQgbWVtb3J5LgogICoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcGdfc2htZW0u aCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcGdfc2htZW0uaAppbmRleCBmMGVmYmYyYWVjMS4uNTE2 NWI4MTVjYzEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcGdfc2htZW0uaAorKysg Yi9zcmMvaW5jbHVkZS9zdG9yYWdlL3BnX3NobWVtLmgKQEAgLTkxLDYgKzkxLDcgQEAgZXh0ZXJu IGJvb2wgUEdTaGFyZWRNZW1vcnlJc0luVXNlKHVuc2lnbmVkIGxvbmcgaWQxLCB1bnNpZ25lZCBs b25nIGlkMik7CiBleHRlcm4gdm9pZCBQR1NoYXJlZE1lbW9yeURldGFjaCh2b2lkKTsKIGV4dGVy biB2b2lkIFBHU2hhcmVkTWVtb3J5RW5zdXJlRnJlZWQodm9pZCAqYWRkciwgU2l6ZSBzaXplKTsK IGV4dGVybiB2b2lkIFBHU2hhcmVkTWVtb3J5RW5zdXJlQWxsb2NhdGVkKHZvaWQgKmFkZHIsIFNp emUgc2l6ZSk7CitleHRlcm4gdm9pZCBQR1NoYXJlZE1lbW9yeVByb3RlY3Qodm9pZCAqcndfc3Rh cnQsIHZvaWQgKnJ3X2VuZCwgdm9pZCAqcHJvdF9lbmQpOwogZXh0ZXJuIHZvaWQgR2V0SHVnZVBh Z2VTaXplKFNpemUgKmh1Z2VwYWdlc2l6ZSwgaW50ICptbWFwX2ZsYWdzKTsKIGV4dGVybiBTaXpl IEdldE9TUGFnZVNpemUodm9pZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uv c2htZW0uaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW0uaAppbmRleCAwZTZkNWE2M2YyOC4u ZjhkZGIwZGQ3YzAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW0uaAorKysg Yi9zcmMvaW5jbHVkZS9zdG9yYWdlL3NobWVtLmgKQEAgLTE4NSw2ICsxODUsNyBAQCB0eXBlZGVm IHN0cnVjdCBTaG1lbUNhbGxiYWNrcwogZXh0ZXJuIHZvaWQgUmVnaXN0ZXJTaG1lbUNhbGxiYWNr cyhjb25zdCBTaG1lbUNhbGxiYWNrcyAqY2FsbGJhY2tzKTsKIGV4dGVybiBib29sIFNobWVtQWRk cklzVmFsaWQoY29uc3Qgdm9pZCAqYWRkcik7CiBleHRlcm4gdm9pZCBTaG1lbVJlc2l6ZVN0cnVj dChjb25zdCBjaGFyICpuYW1lLCBTaXplIG5ld19zaXplKTsKK2V4dGVybiB2b2lkIFNobWVtUHJv dGVjdFN0cnVjdChjb25zdCBjaGFyICpuYW1lKTsKIAogLyoKICAqIFRoZXNlIG1hY3JvcyBwcm92 aWRlIHN5bnRhY3RpYyBzdWdhciBmb3IgY2FsbGluZyB0aGUgdW5kZXJseWluZyBmdW5jdGlvbnMK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS90ZXN0X3NobWVtLmMgYi9z cmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htZW0vdGVzdF9zaG1lbS5jCmluZGV4IDcyMDA0ZGY0MDgz Li5lOTUyMjViZjQwYSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobWVtL3Rl c3Rfc2htZW0uYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htZW0vdGVzdF9zaG1lbS5j CkBAIC0xMzMsNiArMTMzLDEyIEBAIHRlc3Rfc2htZW1faW5pdCh2b2lkICphcmcpCiAJLyogUmVz aXphYmxlIHN0cnVjdHVyZSBzaG91bGQgaGF2ZSBiZWVuIGFscmVhZHkgYWxsb2NhdGVkLiBJbml0 aWFsaXplIGl0LiAqLwogCUFzc2VydChSZXNpemFibGVTaG1lbSAhPSBOVUxMKTsKIAorCisjaWZk ZWYgSEFWRV9SRVNJWkFCTEVfU0hNRU0KKwkvKiBQcm90ZWN0IHRoZSBzaGFyZWQgbWVtb3J5IHN0 cnVjdHVyZSBpbiB0aGlzIGJhY2tlbmQuICovCisJU2htZW1Qcm90ZWN0U3RydWN0KCJyZXNpemFi bGVfc2htZW0iKTsKKyNlbmRpZgorCiAJUmVzaXphYmxlU2htZW0tPm51bV9lbnRyaWVzID0gaW5p dGlhbF9lbnRyaWVzOwogCW1lbXNldChSZXNpemFibGVTaG1lbS0+ZGF0YSwgMCwgbXVsX3NpemUo aW5pdGlhbF9lbnRyaWVzLCBURVNUX0VOVFJZX1NJWkUpKTsKIH0KQEAgLTE0OCw2ICsxNTQsMTYg QEAgdGVzdF9zaG1lbV9hdHRhY2godm9pZCAqYXJnKQogCWlmIChhdHRhY2hlZF9vcl9pbml0aWFs aXplZCkKIAkJZWxvZyhFUlJPUiwgImF0dGFjaCBvciBpbml0aWFsaXplIGFscmVhZHkgY2FsbGVk IGluIHRoaXMgcHJvY2VzcyIpOwogCWF0dGFjaGVkX29yX2luaXRpYWxpemVkID0gdHJ1ZTsKKwor CS8qCisJICogU2hhcmVkIG1lbW9yeSBzdHJ1Y3R1cmUgc2hvdWxkIGhhdmUgYmVlbiBhbHJlYWR5 IGFsbG9jYXRlZC4gSW5pdGlhbGl6ZQorCSAqIGl0LgorCSAqLworCUFzc2VydChSZXNpemFibGVT aG1lbSAhPSBOVUxMKTsKKworI2lmZGVmIEhBVkVfUkVTSVpBQkxFX1NITUVNCisJU2htZW1Qcm90 ZWN0U3RydWN0KCJyZXNpemFibGVfc2htZW0iKTsKKyNlbmRpZgogfQogCiB2b2lkCkBAIC0yNTks NiArMjc1LDcgQEAgcmVzaXphYmxlX3NobWVtX3Jlc2l6ZShQR19GVU5DVElPTl9BUkdTKQogCW5l d19zaXplID0gYWRkX3NpemUob2Zmc2V0b2YoVGVzdFJlc2l6YWJsZURhdGEsIGRhdGEpLAogCQkJ CQkJbXVsX3NpemUobmV3X2VudHJpZXMsIFRFU1RfRU5UUllfU0laRSkpOwogCVNobWVtUmVzaXpl U3RydWN0KCJyZXNpemFibGVfc2htZW0iLCBuZXdfc2l6ZSk7CisJU2htZW1Qcm90ZWN0U3RydWN0 KCJyZXNpemFibGVfc2htZW0iKTsKIAlSZXNpemFibGVTaG1lbS0+bnVtX2VudHJpZXMgPSBuZXdf ZW50cmllczsKIAogCVBHX1JFVFVSTl9WT0lEKCk7CkBAIC0yODAsNiArMjk3LDE5IEBAIHJlc2l6 YWJsZV9zaG1lbV93cml0ZShQR19GVU5DVElPTl9BUkdTKQogCQkJCShlcnJjb2RlKEVSUkNPREVf T0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAogCQkJCSBlcnJtc2coInJlc2l6YWJs ZV9zaG1lbSBpcyBub3QgaW5pdGlhbGl6ZWQiKSkpOwogCisjaWZkZWYgSEFWRV9SRVNJWkFCTEVf U0hNRU0KKworCS8qCisJICogSWRlYWxseSB0aGUgc3RydWN0dXJlIHNob3VsZCBiZSBwcm90ZWN0 ZWQgdGhyb3VnaCBhIHN5bmNocm9uaXphdGlvbgorCSAqIGN5Y2xlIGFjcm9zcyBhbGwgdGhlIGJh Y2tlbmRzIHRoYXQgbWF5IGFjY2VzcyB0aGUgc3RydWN0dXJlLiBCdXQgd2UKKwkgKiBkb24ndCBp bXBsZW1lbnQgYW55IHN1Y2ggc3luY2hyb25pemF0aW9uIGluIHRoaXMgdGVzdCBtb2R1bGUgdG8g a2VlcCBpdAorCSAqIHNpbXBsZS4gR2l2ZW4gdGhhdCBQcm9jU2lnbmFsQmFycmllciBtZWNoYW5p c20gaXMgbm90IGV4dGVuc2libGUsIHdlCisJICogbWF5IG5vdCBiZSBhYmxlIHRvIGRvIHRoYXQg YXMgd2VsbCBoZXJlLiBIZW5jZSBhZGQgcHJvdGVjdCBqdXN0IGJlZm9yZQorCSAqIGFjY2Vzc2lu ZyB0aGUgc3RydWN0dXJlLgorCSAqLworCVNobWVtUHJvdGVjdFN0cnVjdCgicmVzaXphYmxlX3No bWVtIik7CisjZW5kaWYKKwogCS8qIFdyaXRlIHRoZSB2YWx1ZSB0byBhbGwgY3VycmVudCBlbnRy aWVzICovCiAJZm9yIChpID0gMDsgaSA8IFJlc2l6YWJsZVNobWVtLT5udW1fZW50cmllczsgaSsr KQogCQlSZXNpemFibGVTaG1lbS0+ZGF0YVtpXSA9IGVudHJ5X3ZhbHVlOwpAQCAtMzA5LDYgKzMz OSwxOSBAQCByZXNpemFibGVfc2htZW1fcmVhZChQR19GVU5DVElPTl9BUkdTKQogCQkJCShlcnJj b2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAogCQkJCSBlcnJtc2coImVudHJ5 X2NvdW50ICVkIGlzIG91dCBvZiByYW5nZSAoMC4uJWQpIiwgZW50cnlfY291bnQsIFJlc2l6YWJs ZVNobWVtLT5udW1fZW50cmllcykpKTsKIAorI2lmZGVmIEhBVkVfUkVTSVpBQkxFX1NITUVNCisK KwkvKgorCSAqIElkZWFsbHkgdGhlIHN0cnVjdHVyZSBzaG91bGQgYmUgcHJvdGVjdGVkIHRocm91 Z2ggYSBzeW5jaHJvbml6YXRpb24KKwkgKiBjeWNsZSBhY3Jvc3MgYWxsIHRoZSBiYWNrZW5kcyB0 aGF0IG1heSBhY2Nlc3MgdGhlIHN0cnVjdHVyZS4gQnV0IHdlCisJICogZG9uJ3QgaW1wbGVtZW50 IGFueSBzdWNoIHN5bmNocm9uaXphdGlvbiBpbiB0aGlzIHRlc3QgbW9kdWxlIHRvIGtlZXAgaXQK KwkgKiBzaW1wbGUuIEdpdmVuIHRoYXQgUHJvY1NpZ25hbEJhcnJpZXIgbWVjaGFuaXNtIGlzIG5v dCBleHRlbnNpYmxlLCB3ZQorCSAqIG1heSBub3QgYmUgYWJsZSB0byBkbyB0aGF0IGFzIHdlbGwg aGVyZS4gSGVuY2UgYWRkIHByb3RlY3QganVzdCBiZWZvcmUKKwkgKiBhY2Nlc3NpbmcgdGhlIHN0 cnVjdHVyZS4KKwkgKi8KKwlTaG1lbVByb3RlY3RTdHJ1Y3QoInJlc2l6YWJsZV9zaG1lbSIpOwor I2VuZGlmCisKIAlmb3IgKGkgPSAwOyBpIDwgZW50cnlfY291bnQ7IGkrKykKIAl7CiAJCWlmIChS ZXNpemFibGVTaG1lbS0+ZGF0YVtpXSAhPSBlbnRyeV92YWx1ZSkKLS0gCjIuMzQuMQoK --000000000000475ce6064edfdc4a Content-Type: text/x-patch; charset="US-ASCII"; name="v20260407_2-0001-resizable-shared-memory-structures.patch" Content-Disposition: attachment; filename="v20260407_2-0001-resizable-shared-memory-structures.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnoqez5x1 RnJvbSA1Y2IxMzVhYmM4ZjkwZGM3NDYzZDdhNDY3NzI5ODQ5ZmUxOWJmMWRkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBc2h1dG9zaCBCYXBhdCA8YXNodXRvc2guYmFwYXQub3NzQGdt YWlsLmNvbT4KRGF0ZTogVHVlLCAxNyBGZWIgMjAyNiAxNjo1MToyMCArMDUzMApTdWJqZWN0OiBb UEFUQ0ggdjIwMjYwNDA3IDEvM10gcmVzaXphYmxlIHNoYXJlZCBtZW1vcnkgc3RydWN0dXJlcwoK UmVzaXphYmxlIHNoYXJlZCBtZW1vcnkgc3RydWN0dXJlcyBjYW4gYmUgYWxsb2NhdGVkIGJ5IHNw ZWNpZnlpbmcgYSBuZXcKbWVtYmVyIFNobWVtU3RydWN0T3B0czo6bWF4aW11bV9zaXplLiBBdCB0 aGUgc3RhcnR1cCBvciB3aGVuIHRoZQpzdHJ1Y3R1cmUgaXMgY3JlYXRlZCwgd2UgcmVzZXJ2ZSBh ZGRyZXNzIHNwYWNlIHdvcnRoIG1heGltdW1fc2l6ZSBpbiB0aGUKc2hhcmVkIG1lbW9yeSBzZWdt ZW50LiBJdCBpcyBleHBlY3RlZCB0aGF0IHRoZSBzdWJzeXN0ZW0gd2hpY2ggY3JlYXRlcwp0aGUg c3RydWN0dXJlIHdvdWxkIGluaXRpYWxpemUgb25seSB0aGUgaW5pdGlhbCBzaXplIHdvcnRoIG9m IG1lbW9yeQp3aGVuIGNyZWF0aW5nIGl0LiBJbiBhbiBtbWFwJ2VkIG1lbW9yeSwgdGhpcyBzaG91 bGQgYWxsb2NhdGUgbWVtb3J5CndvcnRoIHRoZSBpbml0aWFsIHNpemUuIEl0IHNob3VsZCBub3Qg YWxsb2NhdGUgbWF4aW11bV9zaXplIHdvcnRoIG9mCm1lbW9yeSBpbml0aWFsbHkuIEFzIHRoZSBz dHJ1Y3R1cmUgaXMgcmVzaXplZCB1c2luZyBTaG1lbVJlc2l6ZVN0cnVjdCgpCm1lbW9yeSBpcyBm cmVlZCBvciBhbGxvY2F0ZWQgaW4gY2h1bmtzIG9mIG1lbW9yeSBwYWdlcyB3aGVuIHNocmlua2lu ZwphbmQgZXhwYW5kaW5nIHRoZSBzdHJ1Y3R1cmUgcmVzcGVjdGl2ZWx5LgoKUmVzaXphYmxlIHNo YXJlZCBtZW1vcnkgZmVhdHVyZSBkZXBlbmRzIHVwb24gZXhpc3RlbmNlIG9mIGZ1bmN0aW9uCm1h ZHZpc2UoKSBhbmQgY29uc3RhbnRzIE1BRFZfUkVNT1ZFIGFuZCBNQURWX1dSSVRFX1BPUFVMQVRF LgoKT24gdGhlIHBsYXRmb3JtcyB3aGljaCBkbyBub3QgaGF2ZSB0aGVzZSwgd2UgZGlzYWJsZSB0 aGlzIGZlYXR1cmUgYXQKY29tcGlsZSB0aW1lLiBUaGUgY29tbWl0IGludHJvZHVjZXMgYSBjb21w aWxlIHRpbWUgZmxhZwpIQVZFX1JFU0laQUJMRV9TSE1FTSB3aGljaCBpcyBkZWZpbmVkIGlmIE1B RFZfUkVNT1ZFIGFuZApNQURWX1dSSVRFX1BPUFVMQVRFIGV4aXN0LiBXZSBkb24ndCBjaGVjayBl eGlzdGVuY2Ugb2YgbWFkdmlzZQpzZXBhcmF0ZWx5LCBzaW5jZSBleGlzdGVuY2Ugb2YgdGhlIGNv bnN0YW50cyBpbXBsaWVzIGV4aXN0ZW5jZSBvZiB0aGUKZnVuY3Rpb24uCgpIQVZFX1JFU0laQUJM RV9TSE1FTSBpcyBub3QgZGVmaW5lZCBpbiBFWEVDX0JBQ0tFTkQgYnVpbGRzIHNpbmNlIHRoYXQn cwpsYXJnZWx5IHVzZWQgZm9yIFdpbmRvd3Mgd2hlcmUgdGhlIEFQSXMgdG8gZnJlZSBhbmQgYWxs b2NhdGUgbWVtb3J5IGZyb20KYW5kIHRvIGEgZ2l2ZW4gYWRkcmVzcyBzcGFjZSBhcmUgbm90IGtu b3duIHRvIHRoZSBhdXRob3IgcmlnaHQgbm93LgpHaXZlbiB0aGF0IFBvc3RncmVTUUwgaXMgdXNl ZCB3aWRlbHkgb24gTGludXgsIHByb3ZpZGluZyB0aGlzIGZlYXR1cmUgb24KTGludXggY292ZXJz IGJlbmVmaXRzIG1vc3Qgb2YgaXRzIHVzZXJzLiBPbmNlIHdlIGZpZ3VyZSBvdXQgdGhlIHJlcXVp cmVkCldpbmRvd3MgQVBJcywgd2Ugd2lsbCBzdXBwb3J0IHRoaXMgZmVhdHVyZSBvbiBXaW5kb3dz IGFzIHdlbGwuCgpUaGUgZmVhdHVyZSBpcyBhbHNvIG5vdCBhdmFpbGFibGUgd2hlbiBTeXMtViBz aGFyZWQgbWVtb3J5IGlzIHVzZWQgZXZlbgpvbiBMaW51eCBzaW5jZSB3ZSBkbyBub3Qga25vdyB3 aGV0aGVyIHJlcXVpcmVkIFN5cy1WIEFQSXMgZXhpc3Q7IG1vc3RseQp0aGV5IGRvbid0LiBTaW5j ZSB0aGF0IGNvbWJpbmF0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIGZvciBkZXZlbG9wbWVudCBhbmQK dGVzdGluZywgbm90IHN1cHBvcnRpbmcgdGhlIGZlYXR1cmUgdGhlcmUgaXNuJ3QgZ29pbmcgdG8g aW1wYWN0ClBvc3RncmVTUUwgdXNlcnMuCgpVc2luZyBIQVZFX1JFU0laQUJMRV9TSE1FTSB3ZSBk aXNhYmxlIGNvbXBpbGluZyB0aGUgY29kZSByZWxhdGVkIHRvCnJlc2l6YWJsZSBzaGFyZWQgbWVt b3J5IHN0cnVjdHVyZXMgb24gdGhlIHBsYXRmb3JtcyB3aGljaCBkbyBub3Qgc3VwcG9ydAp0aGUg ZmVhdHVyZS4gQnV0IHdlIGFsc28gaGF2ZSBydW4gdGltZSBjaGVja3MgdG8gZGlzYWJsZSB0aGlz IGZlYXR1cmUKd2hlbiBTeXMtViBzaGFyZWQgbWVtb3J5IGlzIHVzZWQuIEluIG9yZGVyIHRvIGtu b3cgd2hldGhlciBhIGdpdmVuCmluc3RhbmNlIG9mIHJ1bm5pbmcgc2VydmVyIHN1cHBvcnRzIHJl c2l6YWJsZSBzdHJ1Y3R1cmVzLCB3ZSBoYXZlCmludHJvZHVjZWQgR1VDIGhhdmVfcmVzaXphYmxl X3NobWVtLgoKQXV0aG9yOiBBc2h1dG9zaCBCYXBhdCA8YXNodXRvc2guYmFwYXQub3NzQGdtYWls LmNvbT4KUmV2aWV3ZWQtYnk6IE1hdHRoaWFzIHZhbiBkZSBNZWVudCA8Ym9la2V3dXJtK3Bvc3Rn cmVzQGdtYWlsLmNvbT4KLS0tCiBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgIDQgKwogZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sICAgICAgICAgICAgICAg ICAgICAgIHwgIDE1ICsKIGRvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbCAgICAgICAgICAg ICAgICB8ICA0MiArKy0KIGRvYy9zcmMvc2dtbC94ZnVuYy5zZ21sICAgICAgICAgICAgICAgICAg ICAgICB8ICA1NCArKysKIG1lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAxNiArCiBzcmMvYmFja2VuZC9wb3J0L3N5c3Zfc2htZW0uYyAgICAgICAgICAgICAg ICAgfCAgNzkgKysrKysKIHNyYy9iYWNrZW5kL3BvcnQvd2luMzJfc2htZW0uYyAgICAgICAgICAg ICAgICB8ICA0NSArKysKIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYyAgICAgICAgICAg ICAgICB8ICAxMSArCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jICAgICAgICAgICAg ICAgfCAzMTggKysrKysrKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19w YXJhbWV0ZXJzLmRhdCAgICAgfCAgIDcgKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFi bGVzLmMgICAgICAgICAgIHwgICA3ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQg ICAgICAgICAgICAgICB8ICAgNCArLQogc3JjL2luY2x1ZGUvcGdfY29uZmlnLmguaW4gICAgICAg ICAgICAgICAgICAgIHwgICA4ICsKIHNyYy9pbmNsdWRlL3BnX2NvbmZpZ19tYW51YWwuaCAgICAg ICAgICAgICAgICB8ICAgOSArCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3BnX3NobWVtLmggICAgICAg ICAgICAgICAgfCAgIDMgKwogc3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1lbS5oICAgICAgICAgICAg ICAgICAgIHwgIDE3ICsKIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS9tZXNvbi5idWlsZCAg ICAgICB8ICAgMSArCiAuLi4vdGVzdF9zaG1lbS90LzAwMV9sYXRlX3NobWVtX2FsbG9jLnBsICAg ICAgfCAgMzEgKysKIC4uLi90ZXN0X3NobWVtL3QvMDAyX3Jlc2l6YWJsZV9zaG1lbS5wbCAgICAg ICB8IDI0MCArKysrKysrKysrKysrCiAuLi4vbW9kdWxlcy90ZXN0X3NobWVtL3Rlc3Rfc2htZW0t LTEuMC5zcWwgICAgfCAgMzQgKysKIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS90ZXN0X3No bWVtLmMgICAgICB8IDMxMCArKysrKysrKysrKysrKysrLQogc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9ydWxlcy5vdXQgICAgICAgICAgIHwgICA3ICstCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlw ZWRlZnMubGlzdCAgICAgICAgICAgICAgfCAgIDMgKy0KIDIzIGZpbGVzIGNoYW5nZWQsIDEyMTMg aW5zZXJ0aW9ucygrKSwgNTIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X3NobWVtL3QvMDAyX3Jlc2l6YWJsZV9zaG1lbS5wbAoKZGlmZiAtLWdp dCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCA4ZDE3NmJkMzQ2OC4uOTlmY2Rh YjA0ZTAgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAgLTE5 MTMsNiArMTkxMywxMCBAQCBBQ19DSEVDS19ERUNMUyhbbWVtc2V0X3NdLCBbXSwgW10sIFsjZGVm aW5lIF9fU1REQ19XQU5UX0xJQl9FWFQxX18gMQogIyBUaGlzIGlzIHByb2JhYmx5IG9ubHkgcHJl c2VudCBvbiBtYWNPUywgYnV0IG1heSBhcyB3ZWxsIGNoZWNrIGFsd2F5cwogQUNfQ0hFQ0tfREVD TFMoRl9GVUxMRlNZTkMsIFtdLCBbXSwgWyNpbmNsdWRlIDxmY250bC5oPl0pCiAKKyMgTGludXgt c3BlY2lmaWMgbWFkdmlzZSBjb25zdGFudHMgbmVlZGVkIGZvciByZXNpemFibGUgc2hhcmVkIG1l bW9yeS4gU2VlIHNpbWlsYXIgY2hlY2tzIGluIG1lc29uLmJ1aWxkIGZvciBleHBsYW5hdGlvbiBv ZiB3aHkgdGhlc2UgY2hlY2tzIGFyZSBoZXJlLgorQUNfQ0hFQ0tfREVDTFMoW01BRFZfUE9QVUxB VEVfV1JJVEVdLCBbXSwgW10sIFsjaW5jbHVkZSA8c3lzL21tYW4uaD5dKQorQUNfQ0hFQ0tfREVD TFMoW01BRFZfUkVNT1ZFXSwgW10sIFtdLCBbI2luY2x1ZGUgPHN5cy9tbWFuLmg+XSkKKwogQUNf UkVQTEFDRV9GVU5DUyhtNF9ub3JtYWxpemUoWwogCWV4cGxpY2l0X2J6ZXJvCiAJZ2V0b3B0CmRp ZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29uZmln LnNnbWwKaW5kZXggMzMyNGQyZDNjNDkuLjlmNjMwYjFhMDc0IDEwMDY0NAotLS0gYS9kb2Mvc3Jj L3NnbWwvY29uZmlnLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBAIC0xMjEz OCw2ICsxMjEzOCwyMSBAQCBkeW5hbWljX2xpYnJhcnlfcGF0aCA9ICcvdXNyL2xvY2FsL2xpYi9w b3N0Z3Jlc3FsOiRsaWJkaXInCiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRy eT4KIAorICAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMtaGF2ZS1yZXNpemFibGUtc2hhcmVkLW1l bW9yeSIgeHJlZmxhYmVsPSJoYXZlX3Jlc2l6YWJsZV9zaGFyZWRfbWVtb3J5Ij4KKyAgICAgIDx0 ZXJtPjx2YXJuYW1lPmhhdmVfcmVzaXphYmxlX3NoYXJlZF9tZW1vcnk8L3Zhcm5hbWU+ICg8dHlw ZT5ib29sZWFuPC90eXBlPikKKyAgICAgIDxpbmRleHRlcm0+CisgICAgICAgPHByaW1hcnk+PHZh cm5hbWU+aGF2ZV9yZXNpemFibGVfc2hhcmVkX21lbW9yeTwvdmFybmFtZT4gY29uZmlndXJhdGlv biBwYXJhbWV0ZXI8L3ByaW1hcnk+CisgICAgICA8L2luZGV4dGVybT4KKyAgICAgIDwvdGVybT4K KyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgUmVwb3J0cyB3aGV0aGVy IDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gaGFzIGJlZW4gYnVpbHQKKyAg ICAgICAgd2l0aCA8bGl0ZXJhbD5IQVZFX1JFU0laQUJMRV9TSE1FTTwvbGl0ZXJhbD4gZW5hYmxl ZCBhbmQgc3VwcG9ydHMKKyAgICAgICAgPGxpbmsgbGlua2VuZD0ieGZ1bmMtc2hhcmVkLWFkZGlu LXJlc2l6YWJsZSI+UmVzaXphYmxlIHNoYXJlZCBtZW1vcnkgc3RydWN0dXJlczwvbGluaz4uCisg ICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisK ICAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLWh1Z2UtcGFnZXMtc3RhdHVzIiB4cmVmbGFiZWw9 Imh1Z2VfcGFnZXNfc3RhdHVzIj4KICAgICAgIDx0ZXJtPjx2YXJuYW1lPmh1Z2VfcGFnZXNfc3Rh dHVzPC92YXJuYW1lPiAoPHR5cGU+ZW51bTwvdHlwZT4pCiAgICAgICA8aW5kZXh0ZXJtPgpkaWZm IC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sIGIvZG9jL3NyYy9zZ21sL3N5 c3RlbS12aWV3cy5zZ21sCmluZGV4IDJlYmVjNjkyOGQ1Li45YmJiZmRiMzdjNSAxMDA2NDQKLS0t IGEvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9zeXN0 ZW0tdmlld3Muc2dtbApAQCAtNDI0Myw4ICs0MjQzLDQ2IEBAIFNFTEVDVCAqIEZST00gcGdfbG9j a3MgcGwgTEVGVCBKT0lOIHBnX3ByZXBhcmVkX3hhY3RzIHBweAogICAgICAgIFNpemUgb2YgdGhl IGFsbG9jYXRpb24gaW4gYnl0ZXMgaW5jbHVkaW5nIHBhZGRpbmcuIEZvciBhbm9ueW1vdXMKICAg ICAgICBhbGxvY2F0aW9ucywgbm8gaW5mb3JtYXRpb24gYWJvdXQgcGFkZGluZyBpcyBhdmFpbGFi bGUsIHNvIHRoZQogICAgICAgIDxsaXRlcmFsPnNpemU8L2xpdGVyYWw+IGFuZCA8bGl0ZXJhbD5h bGxvY2F0ZWRfc2l6ZTwvbGl0ZXJhbD4gY29sdW1ucwotICAgICAgIHdpbGwgYWx3YXlzIGJlIGVx dWFsLiBQYWRkaW5nIGlzIG5vdCBtZWFuaW5nZnVsIGZvciBmcmVlIG1lbW9yeSwgc28KLSAgICAg ICB0aGUgY29sdW1ucyB3aWxsIGJlIGVxdWFsIGluIHRoYXQgY2FzZSBhbHNvLgorICAgICAgIHdp bGwgYWx3YXlzIGJlIGVxdWFsLiBQYWRkaW5nIGlzIG5vdCBtZWFuaW5nZnVsIGZvciBmcmVlIG1l bW9yeSwgc28gdGhlCisgICAgICAgY29sdW1ucyB3aWxsIGJlIGVxdWFsIGluIHRoYXQgY2FzZSBh bHNvLiBGb3IgcmVzaXphYmxlIGFsbG9jYXRpb25zIHdoaWNoCisgICAgICAgbWF5IHNwYW4gbXVs dGlwbGUgbWVtb3J5IHBhZ2VzLCB0aGUgcGFkZGluZyBpbmNsdWRlcyB0aGUgcGFkZGluZyBkdWUg dG8KKyAgICAgICBwYWdlIGFsaWdubWVudC4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8 L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50 cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+ bWluaW11bV9zaXplPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50ODwvdHlwZT4KKyAgICAgIDwvcGFy YT4KKyAgICAgIDxwYXJhPgorICAgICAgIE1pbmltdW0gc2l6ZSBpbiBieXRlcyB0aGF0IHRoZSBy ZXNpemFibGUgYWxsb2NhdGlvbiBjYW4gc2hyaW5rIHRvLiBFcXVhbHMKKyAgICAgICA8c3RydWN0 ZmllbGQ+c2l6ZTwvc3RydWN0ZmllbGQ+Rm9yIGZpeGVkLXNpemUgYWxsb2NhdGlvbnMsIGFub255 bW91cworICAgICAgIGFsbG9jYXRpb25zLCBhbmQgZnJlZSBtZW1vcnkuCisgICAgICA8L3BhcmE+ PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJj YXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAg ICAgPHN0cnVjdGZpZWxkPm1heGltdW1fc2l6ZTwvc3RydWN0ZmllbGQ+IDx0eXBlPmludDg8L3R5 cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBNYXhpbXVtIHNpemUgaW4g Ynl0ZXMgdGhhdCB0aGUgcmVzaXphYmxlIGFsbG9jYXRpb24gY2FuIGdyb3cgdG8uIEVxdWFscwor ICAgICAgIDxzdHJ1Y3RmaWVsZD5zaXplPC9zdHJ1Y3RmaWVsZD4gRm9yIGZpeGVkLXNpemUgYWxs b2NhdGlvbnMsIGFub255bW91cworICAgICAgIGFsbG9jYXRpb25zLCBhbmQgZnJlZSBtZW1vcnku CisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAg IDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVm aW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnJlc2VydmVkX3NwYWNlPC9zdHJ1Y3RmaWVs ZD4gPHR5cGU+aW50ODwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAg IEFkZHJlc3Mgc3BhY2UgcmVzZXJ2ZWQgZm9yIHRoZSBhbGxvY2F0aW9uIGluIGJ5dGVzLiBGb3Ig cmVzaXphYmxlCisgICAgICAgc3RydWN0dXJlcywgdGhpcyBpcyB0aGUgdG90YWwgYWRkcmVzcyBz cGFjZSByZXNlcnZlZCB0byBhY2NvbW1vZGF0ZQorICAgICAgIGdyb3d0aCB1cCB0byA8c3RydWN0 ZmllbGQ+bWF4aW11bV9zaXplPC9zdHJ1Y3RmaWVsZD4sIGFuZCBpcyBncmVhdGVyCisgICAgICAg dGhhbiBvciBlcXVhbCB0byA8c3RydWN0ZmllbGQ+YWxsb2NhdGVkX3NpemU8L3N0cnVjdGZpZWxk Pi4gRm9yCisgICAgICAgZml4ZWQtc2l6ZSBhbGxvY2F0aW9ucywgYW5vbnltb3VzIGFsbG9jYXRp b25zLCBhbmQgZnJlZSBtZW1vcnkgdGhpcworICAgICAgIGlzIHNhbWUgYXMgPHN0cnVjdGZpZWxk PmFsbG9jYXRlZF9zaXplPC9zdHJ1Y3RmaWVsZD4uCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAg ICAgPC9yb3c+CiAgICAgPC90Ym9keT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC94ZnVuYy5z Z21sIGIvZG9jL3NyYy9zZ21sL3hmdW5jLnNnbWwKaW5kZXggNzg5Y2FjOWZjYWIuLjIyZjk1M2Ri OWQ3IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwveGZ1bmMuc2dtbAorKysgYi9kb2Mvc3JjL3Nn bWwveGZ1bmMuc2dtbApAQCAtMzc0NCw2ICszNzQ0LDYwIEBAIG15X3NobWVtX2luaXQodm9pZCAq YXJnKQogICAgICA8L3BhcmE+CiAgICAgPC9zZWN0Mz4KIAorICAgIDxzZWN0MyBpZD0ieGZ1bmMt c2hhcmVkLWFkZGluLXJlc2l6YWJsZSI+CisgICAgIDx0aXRsZT5SZXNpemFibGUgc2hhcmVkIG1l bW9yeSBzdHJ1Y3R1cmVzPC90aXRsZT4KKworICAgICA8cGFyYT4KKyAgICAgQSByZXNpemFibGUg bWVtb3J5IHN0cnVjdHVyZSBjYW4gYmUgcmVxdWVzdGVkIHVzaW5nCisgICAgIDxmdW5jdGlvbj5T aG1lbVJlcXVlc3RTdHJ1Y3QoKTwvZnVuY3Rpb24+IGJ5IHBhc3NpbmcKKyAgICAgPHBhcmFtZXRl cj5tYXhpbXVtX3NpemU8L3BhcmFtZXRlcj4gYWxvbmcgd2l0aAorICAgICA8cGFyYW1ldGVyPnNp emU8L3BhcmFtZXRlcj4uIDxwYXJhbWV0ZXI+bWF4aW11bV9zaXplPC9wYXJhbWV0ZXI+IGlzCisg ICAgIG1heGltdW0gc2l6ZSB1cHRvIHdoaWNoIHRoZSBzdHJ1Y3R1cmUgY2FuIGdyb3cgd2hlcmUg YXMKKyAgICAgPHBhcmFtZXRlcj5zaXplPC9wYXJhbWV0ZXI+IGlzIHRoZSBpbml0aWFsIHNpemUg b2YgdGhlIHN0cnVjdHVyZS4KKyAgICAgT3B0aW9uYWxseSwgPHBhcmFtZXRlcj5taW5pbXVtX3Np emU8L3BhcmFtZXRlcj4gY2FuIGJlIHNldCB0byB0aGUgbWluaW11bQorICAgICBzaXplIHRoYXQg dGhlIHN0cnVjdHVyZSBjYW4gc2hyaW5rIHRvLiAgV2hpbGUKKyAgICAgY29udGlndW91cyBhZGRy ZXNzIHNwYWNlIHdvcnRoIDxwYXJhbWV0ZXI+bWF4aW11bV9zaXplPC9wYXJhbWV0ZXI+IGlzCisg ICAgIGFsbG9jYXRlZCB0byB0aGUgc3RydWN0dXJlLCBvbmx5IG1lbW9yeSB3b3J0aCA8cGFyYW1l dGVyPnNpemU8L3BhcmFtZXRlcj4KKyAgICAgYnl0ZXMgaXMgYWxsb2NhdGVkIGluaXRpYWxseS4g VGhlIDxmdW5jdGlvbj5pbml0X2ZuPC9mdW5jdGlvbj4gc2hvdWxkIG9ubHkKKyAgICAgaW5pdGlh bGl6ZSB0aGUgPHBhcmFtZXRlcj5zaXplPC9wYXJhbWV0ZXI+IGFtb3VudCBvZiBtZW1vcnkuIFRo ZSBhY3R1YWwKKyAgICAgbWVtb3J5IGFsbG9jYXRlZCB0byB0aGlzIHN0cnVjdHVyZSBhdCBhbnkg cG9pbnQgaW4gdGltZSBpcyBnaXZlbiBieSA8bGluaworICAgICBsaW5rZW5kPSJ2aWV3LXBnLXNo bWVtLWFsbG9jYXRpb25zIj48c3RydWN0bmFtZT5wZ19zaG1lbV9hbGxvY2F0aW9uczwvc3RydWN0 bmFtZT4uPHN0cnVjdGZpZWxkPmFsbG9jYXRlZF9zaXplPC9zdHJ1Y3RmaWVsZD48L2xpbms+Cisg ICAgIGFuZCB0aGUgYWRkcmVzcyBzcGFjZSByZXNlcnZlZCBmb3IgdGhpcyBzdHJ1Y3R1cmUgaXMg Z2l2ZW4gYnkgPGxpbmsKKyAgICAgbGlua2VuZD0idmlldy1wZy1zaG1lbS1hbGxvY2F0aW9ucyI+ PHN0cnVjdG5hbWU+cGdfc2htZW1fYWxsb2NhdGlvbnM8L3N0cnVjdG5hbWU+LjxzdHJ1Y3RmaWVs ZD5yZXNlcnZlZF9zcGFjZTwvc3RydWN0ZmllbGQ+PC9saW5rPi4KKyAgICAgPC9wYXJhPgorCisg ICAgPHBhcmE+CisgICAgVGhlIHN0cnVjdHVyZSBjYW4gYmUgcmVzaXplZCB1c2luZyA8ZnVuY3Rp b24+U2htZW1SZXNpemVTdHJ1Y3QoKTwvZnVuY3Rpb24+CisgICAgYnkgcGFzc2luZyBpdCB0aGUg c3RydWN0dXJlJ3MgPHBhcmFtZXRlcj5uYW1lPC9wYXJhbWV0ZXI+IGFuZCB0aGUgbmV3IHNpemUK KyAgICB3aGljaCBjYW4gYmUgYW55d2hlcmUgYmV0d2VlbiA8cGFyYW1ldGVyPm1pbmltdW1fc2l6 ZTwvcGFyYW1ldGVyPiBhbmQKKyAgICA8cGFyYW1ldGVyPm1heGltdW1fc2l6ZTwvcGFyYW1ldGVy Pi4gSWYgdGhlIG5ldyBzaXplIGlzIHNtYWxsZXIgdGhhbiB0aGUKKyAgICBjdXJyZW50IHNpemUg b2YgdGhlIHN0cnVjdHVyZSwgdGhlIG1lbW9yeSBiZXR3ZWVuIHRoZSBuZXcgc2l6ZSBhbmQgY3Vy cmVudAorICAgIHNpemUgaXMgZnJlZWQgd2hpbGUga2VlcGluZyB0aGUgY29udGVudHMgb2YgdGhl IG1lbW9yeSB1cHRvIG5ldyBzaXplIGludGFjdC4KKyAgICBJZiB0aGUgbmV3IHNpemUgaXMgZ3Jl YXRlciB0aGFuIHRoZSBjdXJyZW50IHNpemUsIG1lbW9yeSBpcyBhbGxvY2F0ZWQgdXB0bworICAg IG5ldyBzaXplIHdoaWxlIGtlZXBpbmcgdGhlIGN1cnJlbnQgY29udGVudHMgb2YgdGhlIHN0cnVj dHVyZSBpbnRhY3QuIFRoZQorICAgIHN0YXJ0aW5nIGFkZHJlc3Mgb2YgdGhlIHN0cnVjdHVyZSBk b2VzIG5vdCBjaGFuZ2UgYmVjYXVzZSBvZiByZXNpemluZworICAgIG9wZXJhdGlvbi4gVGhlIHN5 YnN5c3RlbSB1c2luZyB0aGlzIGZlYXR1cmUgbmVlZHMgdG8gdGFrZSBjYXJlIG9mIHRoZQorICAg IGFkZGl0aW9uYWwgc3luY2hyb25pemF0aW9uIGJldHdlZW4gdGhlIHJlc2l6aW5nIHByb2Nlc3Mg YW5kIHRoZSBwcm9jZXNzZXMKKyAgICB1c2luZyB0aGUgc2hhcmVkIHN0cnVjdHVyZS4gQWxzbyBp dCBuZWVkcyB0byBpbXBsZW1lbnQgYWRkaXRpb25hbCBwcm90ZWN0aW9uCisgICAgdG8gcHJldmVu dCBhY2Nlc3MgdG8gdGhlIHBhcnQgb2YgdGhlIGFkZHJlc3Mgc3BhY2UgYmV5b25kIHRoZSBzaXpl IG9mIHRoZQorICAgIHN0cnVjdHVyZSB3aGVuIHJlc2l6aW5nIGl0LgorICAgIDwvcGFyYT4KKwor ICAgIDxwYXJhPgorICAgIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyBhdmFpbGFibGUgb25seSBvbiB0 aGUgcGxhdGZvcm1zIHdoaWNoIHByb3ZpZGUgdGhlIEFQSXMKKyAgICBuZWNlc3NhcnkgdG8gcmVz ZXJ2ZSBjb250aWd1b3VzIGFkZHJlc3Mgc3BhY2UgYW5kIHRvIGFsbG9jYXRlIG9yIGZyZWUgbWVt b3J5CisgICAgaW4gdGhhdCBhZGRyZXNzIHNwYWNlIG9uIGRlbWFuZC4gTWFjcm8gPHN5bWJvbD5I QVZFX1JFU0laQUJMRV9TSE1FTTwvc3ltYm9sPgorICAgIGlzIGRlZmluZWQgb24gc3VjaCBwbGF0 Zm9ybXMuIEl0IGNhbiBiZSB1c2VkIHRvIGd1YXJkIGNvZGUgcmVsYXRlZCB0bworICAgIHJlc2l6 aW5nIGEgc2hhcmVkIG1lbW9yeSBzdHJ1Y3R1cmUuIFRoZSBmdW5jdGlvbmFsaXR5IGlzIGF2YWls YWJsZSBvbiB3aXRoCisgICAgbW1hcCdlZCBtZW1vcnksIHNvIHN1YnN5c3RlbXMgd2hpY2ggdXNl IHJlc2l6YWJsZSBzdHJ1Y3R1cmVzIG1heSBoYXZlIHRvCisgICAgYWRkdGlvbmFsbHkgZGlzYWJs ZSByZXNpemFibGUgbWVtb3J5IHVzYWdlIHdoZW4KKyAgICA8c3ltYm9sPnNoYXJlZF9tZW1vcnlf dHlwZTwvc3ltYm9sPiBpcyBub3QgPHN5bWJvbD5TSE1FTV9UWVBFX01NQVA8L3N5bWJvbD4uCisg ICAgQSBHVUMgPHhyZWYgbGlua2VuZD0iZ3VjLWhhdmUtcmVzaXphYmxlLXNoYXJlZC1tZW1vcnki Lz4gaXMgc2V0IHRvCisgICAgPGxpdGVyYWw+b248L2xpdGVyYWw+IHdoZW4gdGhpcyBmdW5jdGlv bmFsaXR5IGlzIGF2YWlsYWJsZSBpbiBhIHJ1bm5pbmcKKyAgICBzZXJ2ZXIsIDxsaXRlcmFsPm9m ZjwvbGl0ZXJhbD4gb3RoZXJ3aXNlLgorICAgIDwvcGFyYT4KKyAgICA8L3NlY3QzPgorCiAgICAg PHNlY3QzIGlkPSJ4ZnVuYy1zaGFyZWQtYWRkaW4tZHluYW1pYyI+CiAgICAgIDx0aXRsZT5BbGxv Y2F0aW5nIER5bmFtaWMgU2hhcmVkIE1lbW9yeSBBZnRlciBTdGFydHVwPC90aXRsZT4KIApkaWZm IC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAppbmRleCBiZTk3ZTk4NmU1ZC4uYzJi ODZmOTEwNGUgMTAwNjQ0Ci0tLSBhL21lc29uLmJ1aWxkCisrKyBiL21lc29uLmJ1aWxkCkBAIC0y OTA0LDYgKzI5MDQsMjIgQEAgZGVjbF9jaGVja3MgPSBbCiAgIFsndGltaW5nc2FmZV9iY21wJywg ICdzdHJpbmcuaCddLAogXQogCisjIExpbnV4LXNwZWNpZmljIG1hZHZpc2UgY29uc3RhbnRzIG5l ZWRlZCBmb3IgcmVzaXphYmxlIHNoYXJlZCBtZW1vcnkuCisjIFVzdWFsbHkgd2UgdXNlIEFDX0NI RUNLX0RFQ0xTIHRvIGNoZWNrIGZvciBmdW5jdGlvbiBkZWNsYXJhdGlvbnMsIGJ1dCBpbiB0aGlz CisjIGNhc2Ugd2UgYXJlIHVzaW5nIGl0IHRvIGRldGVjdCBleGlzdGVuY2Ugb2YgY29uc3RhbnRz LiBUaGVzZSBjb25zdGFudHMgYXJlCisjIHVzZWQgdG8gZGVmaW5lIEhBVkVfUkVTSVpBQkxFX1NI TUVNIHdoaWNoIGlzIHVzZWQgaW4gc3RvcmFnZS9wZ19zaG1lbS5oIGFzCisjIHdlbGwgYXMgc3Rv cmFnZS9zaG1lbS5oLiBUaGUgZmlyc3QgYWJzdHJhY3RzIHRoZSBBUElzIHRvIGFsbG9jYXRlIHNo YXJlZAorIyBtZW1vcnkgc2VnbWVudHMgZnJvbSB0aGUgb3BlcmF0aW5nIHN5c3RlbSB3aGVyZWFz IHRoZSBzZWNvbmQgYWJzdHJhY3RzIEFQSXMgdG8KKyMgYWxsb2NhdGUgc2hhcmVkIG1lbW9yeSB0 byB2YXJpb3VzIHN1YnN5c3RlbXMuIFNpbmNlIHRoZXkgYXJlIHJlbGF0ZWQgYnV0CisjIG9ydGhv Z29uYWwgdG8gZWFjaCBvdGhlciwgaW5jbHVkaW5nIGFueSBvbmUgb2YgdGhlbSBpbiB0aGUgb3Ro ZXIgZmlsZSBkb2Vzbid0CisjIG1ha2Ugc2Vuc2UuIHBnX2NvbmZpZ19tYW51YWwuaCBpcyB0aGUg b25seSBwbGFjZSB3aGVyZSBIQVZFX1JFU0laQUJMRV9TSE1FTQorIyBjYW4gYmUgZGVmaW5lZCBh bmQgbWFkZSBhdmFpbGFibGUgdG8gYm90aCB3aXRob3V0IGluY2x1ZGluZyBzeXMvbW1hbi5oLiBC dXQKKyMgZm9yIHRoYXQgd2UgbmVlZCBjb25zdGFudHMgdGhhdCBpbmRpY2F0ZSB0aGUgZXhpc3Rl bmNlIG9mIGZvbGxvd2luZyBkZWZpbmVzLgorZGVjbF9jaGVja3MgKz0gWworICBbJ01BRFZfUE9Q VUxBVEVfV1JJVEUnLCAnc3lzL21tYW4uaCddLAorICBbJ01BRFZfUkVNT1ZFJywgJ3N5cy9tbWFu LmgnXSwKK10KKwogIyBOZWVkIHRvIGNoZWNrIGZvciBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgZm9y IHRoZXNlIGZ1bmN0aW9ucywgYmVjYXVzZQogIyBjaGVja2luZyBmb3IgbGlicmFyeSBzeW1ib2xz IHdvdWxkbid0IGhhbmRsZSBkZXBsb3ltZW50IHRhcmdldAogIyByZXN0cmljdGlvbnMgb24gbWFj T1MKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BvcnQvc3lzdl9zaG1lbS5jIGIvc3JjL2JhY2tl bmQvcG9ydC9zeXN2X3NobWVtLmMKaW5kZXggMmUzODg2Y2Y5ZmUuLmJiMmE4MTQxN2M2IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9wb3J0L3N5c3Zfc2htZW0uYworKysgYi9zcmMvYmFja2VuZC9w b3J0L3N5c3Zfc2htZW0uYwpAQCAtNTg5LDYgKzU4OSwyNyBAQCBjaGVja19odWdlX3BhZ2Vfc2l6 ZShpbnQgKm5ld3ZhbCwgdm9pZCAqKmV4dHJhLCBHdWNTb3VyY2Ugc291cmNlKQogCXJldHVybiB0 cnVlOwogfQogCisvKgorICogR2V0IHRoZSBwYWdlIHNpemUgYmVpbmcgdXNlZCBieSB0aGUgc2hh cmVkIG1lbW9yeS4KKyAqCisgKiBUaGUgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBvbmx5IGFm dGVyIHRoZSBzaGFyZWQgbWVtb3J5IGhhcyBiZWVuIHNldHVwLgorICovCitTaXplCitHZXRPU1Bh Z2VTaXplKHZvaWQpCit7CisJU2l6ZQkJb3NfcGFnZV9zaXplOworCisJQXNzZXJ0KGh1Z2VfcGFn ZXNfc3RhdHVzICE9IEhVR0VfUEFHRVNfVU5LTk9XTik7CisKKwlvc19wYWdlX3NpemUgPSBzeXNj b25mKF9TQ19QQUdFU0laRSk7CisKKwkvKiBJZiBodWdlIHBhZ2VzIGFyZSBhY3R1YWxseSBpbiB1 c2UsIHVzZSBodWdlIHBhZ2Ugc2l6ZSAqLworCWlmIChodWdlX3BhZ2VzX3N0YXR1cyA9PSBIVUdF X1BBR0VTX09OKQorCQlHZXRIdWdlUGFnZVNpemUoJm9zX3BhZ2Vfc2l6ZSwgTlVMTCk7CisKKwly ZXR1cm4gb3NfcGFnZV9zaXplOworfQorCiAvKgogICogQ3JlYXRlcyBhbiBhbm9ueW1vdXMgbW1h cCgpZWQgc2hhcmVkIG1lbW9yeSBzZWdtZW50LgogICoKQEAgLTk5MSwzICsxMDEyLDYxIEBAIFBH U2hhcmVkTWVtb3J5RGV0YWNoKHZvaWQpCiAJCUFub255bW91c1NobWVtID0gTlVMTDsKIAl9CiB9 CisKKy8qCisgKiBNYWtlIHN1cmUgdGhhdCB0aGUgbWVtb3J5IG9mIGdpdmVuIHNpemUgZnJvbSB0 aGUgZ2l2ZW4gYWRkcmVzcyBpcyByZWxlYXNlZC4KKyAqCisgKiBUaGUgYWRkcmVzcyBhbmQgc2l6 ZSBhcmUgZXhwZWN0ZWQgdG8gYmUgcGFnZSBhbGlnbmVkLgorICoKKyAqIE9ubHkgc3VwcG9ydGVk IG9uIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnQgYW5vbnltb3VzIHNoYXJlZCBtZW1vcnkuCisgKi8K K3ZvaWQKK1BHU2hhcmVkTWVtb3J5RW5zdXJlRnJlZWQodm9pZCAqYWRkciwgU2l6ZSBzaXplKQor eworI2lmbmRlZiBIQVZFX1JFU0laQUJMRV9TSE1FTQorCWVyZXBvcnQoRVJST1IsCisJCQkoZXJy Y29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkgZXJybXNnKCJyZXNpemFi bGUgc2hhcmVkIG1lbW9yeSBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0iKSkpOwor I2Vsc2UKKwlpZiAoIUFub255bW91c1NobWVtKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJj b2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkgZXJybXNnKCJvbmx5IGFu b255bW91cyBzaGFyZWQgbWVtb3J5IGNhbiBiZSBmcmVlZCIpKSk7CisKKwlBc3NlcnQoYWRkciA9 PSAodm9pZCAqKSBUWVBFQUxJR04oR2V0T1NQYWdlU2l6ZSgpLCBhZGRyKSk7CisJQXNzZXJ0KHNp emUgPT0gVFlQRUFMSUdOKEdldE9TUGFnZVNpemUoKSwgc2l6ZSkpOworCisJaWYgKG1hZHZpc2Uo YWRkciwgc2l6ZSwgTUFEVl9SRU1PVkUpID09IC0xKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShl cnJtc2coImNvdWxkIG5vdCBmcmVlIHNoYXJlZCBtZW1vcnk6ICVtIikpKTsKKyNlbmRpZgorfQor CisvKgorICogTWFrZSBzdXJlIHRoYXQgdGhlIG1lbW9yeSBvZiBnaXZlbiBzaXplIGZyb20gdGhl IGdpdmVuIGFkZHJlc3MgaXMgYWxsb2NhdGVkLgorICoKKyAqIFRoZSBhZGRyZXNzIGFuZCBzaXpl IGFyZSBleHBlY3RlZCB0byBiZSBwYWdlIGFsaWduZWQuCisgKgorICogT25seSBzdXBwb3J0ZWQg b24gcGxhdGZvcm1zIHRoYXQgc3VwcG9ydCBhbm9ueW1vdXMgc2hhcmVkIG1lbW9yeS4KKyAqLwor dm9pZAorUEdTaGFyZWRNZW1vcnlFbnN1cmVBbGxvY2F0ZWQodm9pZCAqYWRkciwgU2l6ZSBzaXpl KQoreworI2lmbmRlZiBIQVZFX1JFU0laQUJMRV9TSE1FTQorCWVyZXBvcnQoRVJST1IsCisJCQko ZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkgZXJybXNnKCJyZXNp emFibGUgc2hhcmVkIG1lbW9yeSBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0iKSkp OworI2Vsc2UKKwlpZiAoIUFub255bW91c1NobWVtKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShl cnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkgZXJybXNnKCJvbmx5 IGFub255bW91cyBzaGFyZWQgbWVtb3J5IGNhbiBiZSBhbGxvY2F0ZWQgYXQgcnVudGltZSIpKSk7 CisKKwlBc3NlcnQoYWRkciA9PSAodm9pZCAqKSBUWVBFQUxJR04oR2V0T1NQYWdlU2l6ZSgpLCBh ZGRyKSk7CisJQXNzZXJ0KHNpemUgPT0gVFlQRUFMSUdOKEdldE9TUGFnZVNpemUoKSwgc2l6ZSkp OworCisJaWYgKG1hZHZpc2UoYWRkciwgc2l6ZSwgTUFEVl9QT1BVTEFURV9XUklURSkgPT0gLTEp CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycm1zZygiY291bGQgbm90IGFsbG9jYXRlIHNoYXJl ZCBtZW1vcnk6ICVtIikpKTsKKyNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9y dC93aW4zMl9zaG1lbS5jIGIvc3JjL2JhY2tlbmQvcG9ydC93aW4zMl9zaG1lbS5jCmluZGV4IDc5 NGU0ZmNiMmFkLi5jMWYzMDY2NWU2NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9ydC93aW4z Ml9zaG1lbS5jCisrKyBiL3NyYy9iYWNrZW5kL3BvcnQvd2luMzJfc2htZW0uYwpAQCAtNjQ4LDMg KzY0OCw0OCBAQCBjaGVja19odWdlX3BhZ2Vfc2l6ZShpbnQgKm5ld3ZhbCwgdm9pZCAqKmV4dHJh LCBHdWNTb3VyY2Ugc291cmNlKQogCX0KIAlyZXR1cm4gdHJ1ZTsKIH0KKworLyoKKyAqIEdldCB0 aGUgcGFnZSBzaXplIHVzZWQgYnkgdGhlIHNoYXJlZCBtZW1vcnkuCisgKgorICogVGhlIGZ1bmN0 aW9uIHNob3VsZCBiZSBjYWxsZWQgb25seSBhZnRlciB0aGUgc2hhcmVkIG1lbW9yeSBoYXMgYmVl biBzZXR1cC4KKyAqLworU2l6ZQorR2V0T1NQYWdlU2l6ZSh2b2lkKQoreworCVNZU1RFTV9JTkZP IHN5c2luZm87CisJU2l6ZQkJb3NfcGFnZV9zaXplOworCisJQXNzZXJ0KGh1Z2VfcGFnZXNfc3Rh dHVzICE9IEhVR0VfUEFHRVNfVU5LTk9XTik7CisKKwlHZXRTeXN0ZW1JbmZvKCZzeXNpbmZvKTsK Kwlvc19wYWdlX3NpemUgPSBzeXNpbmZvLmR3UGFnZVNpemU7CisKKwkvKiBJZiBodWdlIHBhZ2Vz IGFyZSBhY3R1YWxseSBpbiB1c2UsIHVzZSBodWdlIHBhZ2Ugc2l6ZSAqLworCWlmIChodWdlX3Bh Z2VzX3N0YXR1cyA9PSBIVUdFX1BBR0VTX09OKQorCQlHZXRIdWdlUGFnZVNpemUoJm9zX3BhZ2Vf c2l6ZSwgTlVMTCk7CisKKwlyZXR1cm4gb3NfcGFnZV9zaXplOworfQorCisvKgorICogUEdTaGFy ZWRNZW1vcnlFbnN1cmVGcmVlZCAvIFBHU2hhcmVkTWVtb3J5RW5zdXJlQWxsb2NhdGVkCisgKgor ICogTm90IHN1cHBvcnRlZCBvbiBXaW5kb3dzLiAgVGhlc2UgYXJlIG9ubHkgbWVhbmluZ2Z1bCBv biBwbGF0Zm9ybXMgd2l0aAorICogcmVzaXphYmxlIHNoYXJlZCBtZW1vcnkgKG1tYXAgKyBtYWR2 aXNlKS4KKyAqLwordm9pZAorUEdTaGFyZWRNZW1vcnlFbnN1cmVGcmVlZCh2b2lkICphZGRyLCBT aXplIHNpemUpCit7CisJZXJlcG9ydChFUlJPUiwKKwkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVS RV9OT1RfU1VQUE9SVEVEKSwKKwkJCSBlcnJtc2coInJlc2l6YWJsZSBzaGFyZWQgbWVtb3J5IGlz IG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybSIpKSk7Cit9CisKK3ZvaWQKK1BHU2hhcmVk TWVtb3J5RW5zdXJlQWxsb2NhdGVkKHZvaWQgKmFkZHIsIFNpemUgc2l6ZSkKK3sKKwllcmVwb3J0 KEVSUk9SLAorCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJ IGVycm1zZygicmVzaXphYmxlIHNoYXJlZCBtZW1vcnkgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlz IHBsYXRmb3JtIikpKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lw Y2kuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYwppbmRleCBiZjZiODFlNjIxYi4u NGM2ZWNlNTk4YjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYwor KysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMKQEAgLTE5Miw2ICsxOTIsMTcgQEAg SW5pdGlhbGl6ZVNobWVtR1VDcyh2b2lkKQogCVNpemUJCXNpemVfYjsKIAlTaXplCQlzaXplX21i OwogCVNpemUJCWhwX3NpemU7CisJYm9vbAkJaGF2ZV9yZXNpemFibGVfc2htZW07CisKKwkvKiBE b2VzIHRoaXMgc2VydmVyIHN1cHBvcnQgcmVzaXphYmxlIHNoYXJlZCBtZW1vcnk/ICovCisjaWZk ZWYgSEFWRV9SRVNJWkFCTEVfU0hNRU0KKwloYXZlX3Jlc2l6YWJsZV9zaG1lbSA9IChzaGFyZWRf bWVtb3J5X3R5cGUgPT0gU0hNRU1fVFlQRV9NTUFQKTsKKyNlbHNlCisJaGF2ZV9yZXNpemFibGVf c2htZW0gPSBmYWxzZTsKKyNlbmRpZgorCVNldENvbmZpZ09wdGlvbigiaGF2ZV9yZXNpemFibGVf c2hhcmVkX21lbW9yeSIsCisJCQkJCWhhdmVfcmVzaXphYmxlX3NobWVtID8gIm9uIiA6ICJvZmYi LAorCQkJCQlQR0NfSU5URVJOQUwsIFBHQ19TX0RZTkFNSUNfREVGQVVMVCk7CiAKIAkvKgogCSAq IENhbGN1bGF0ZSB0aGUgc2hhcmVkIG1lbW9yeSBzaXplIGFuZCByb3VuZCB1cCB0byB0aGUgbmVh cmVzdCBtZWdhYnl0ZS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVt LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jCmluZGV4IDFlYmZmZTVhMzJhLi44 ZjAwNjk2Nzc5MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYwor KysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jCkBAIC0xOSwxMSArMTksMTEgQEAK ICAqIG1ldGhvZHMpLiAgVGhlIHJvdXRpbmVzIGluIHRoaXMgZmlsZSBhcmUgdXNlZCBmb3IgYWxs b2NhdGluZyBhbmQKICAqIGJpbmRpbmcgdG8gc2hhcmVkIG1lbW9yeSBkYXRhIHN0cnVjdHVyZXMu CiAgKgotICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgZmFjaWxpdGllcyB0byBhbGxvY2F0ZSBmaXhl ZC1zaXplIHN0cnVjdHVyZXMgaW4gc2hhcmVkCi0gKiBtZW1vcnksIGZvciB0aGluZ3MgbGlrZSB2 YXJpYWJsZXMgc2hhcmVkIGJldHdlZW4gYWxsIGJhY2tlbmQgcHJvY2Vzc2VzLgotICogRWFjaCBz dWNoIHN0cnVjdHVyZSBoYXMgYSBzdHJpbmcgbmFtZSB0byBpZGVudGlmeSBpdCwgc3BlY2lmaWVk IHdoZW4gaXQgaXMKLSAqIHJlcXVlc3RlZC4gIHNobWVtX2hhc2guYyBwcm92aWRlcyBhIHNoYXJl ZCBoYXNoIHRhYmxlIGltcGxlbWVudGF0aW9uIG9uIHRvcAotICogb2YgdGhhdC4KKyAqIFRoaXMg bW9kdWxlIHByb3ZpZGVzIGZhY2lsaXRpZXMgdG8gYWxsb2NhdGUgZml4ZWQtc2l6ZSBhcyB3ZWxs IGFzIHJlc2l6YWJsZQorICogc3RydWN0dXJlcyBpbiBzaGFyZWQgbWVtb3J5LCBmb3IgdGhpbmdz IGxpa2UgdmFyaWFibGVzIHNoYXJlZCBiZXR3ZWVuIGFsbAorICogYmFja2VuZCBwcm9jZXNzZXMu IEVhY2ggc3VjaCBzdHJ1Y3R1cmUgaGFzIGEgc3RyaW5nIG5hbWUgdG8gaWRlbnRpZnkgaXQsCisg KiBzcGVjaWZpZWQgd2hlbiBpdCBpcyByZXF1ZXN0ZWQuICBzaG1lbV9oYXNoLmMgcHJvdmlkZXMg YSBzaGFyZWQgaGFzaCB0YWJsZQorICogaW1wbGVtZW50YXRpb24gb24gdG9wIG9mIGZpeGVkLXNp emUgc3RydWN0dXJlcy4KICAqCiAgKiBTaGFyZWQgbWVtb3J5IGFyZWFzIHNob3VsZCB1c3VhbGx5 IG5vdCBiZSBhbGxvY2F0ZWQgYWZ0ZXIgcG9zdG1hc3RlcgogICogc3RhcnR1cCwgYWx0aG91Z2gg d2UgZG8gYWxsb3cgc21hbGwgYWxsb2NhdGlvbnMgbGF0ZXIgZm9yIHRoZSBiZW5lZml0IG9mCkBA IC0xMDIsNiArMTAyLDI0IEBACiAgKiAoKm9wdGlvbnMtPnB0ciksIGFuZCBjYWxscyB0aGUgYXR0 YWNoX2ZuIGNhbGxiYWNrLCBpZiBhbnksIGZvciBhZGRpdGlvbmFsCiAgKiBwZXItYmFja2VuZCBz ZXR1cC4KICAqCisgKiBSZXNpemFibGUgc2hhcmVkIG1lbW9yeSBzdHJ1Y3R1cmVzCisgKiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogSW4gb3JkZXIgdG8gYWxsb2Nh dGUgcmVzaXphYmxlIHNoYXJlZCBtZW1vcnkgc3RydWN0dXJlcywgc2V0CisgKiBTaG1lbVJlcXVl c3RTdHJ1Y3RPcHRzOjptYXhpbXVtX3NpemUgdG8gdGhlIG1heGltdW0gc2l6ZSB0aGF0IHRoZSBz dHJ1Y3R1cmUKKyAqIGNhbiBncm93IHRvLiAgVGhlIGFkZHJlc3Mgc3BhY2UgZm9yIHRoZSBtYXhp bXVtIHNpemUgd2lsbCBiZSByZXNlcnZlZCBhdAorICogc3RhcnR1cCwgYnV0IG1lbW9yeSBpcyBh bGxvY2F0ZWQgb3IgZnJlZWQgYXMgdGhlIHN0cnVjdHVyZSBncm93cyBvciBzaHJpbmtzCisgKiBy ZXNwZWN0aXZlbHkuIFNobWVtUmVxdWVzdFN0cnVjdE9wdHM6OnNpemUgc2hvdWxkIGJlIHNldCB0 byB0aGUgaW5pdGlhbCBzaXplCisgKiBvZiB0aGUgc3RydWN0dXJlLCB3aGljaCBpcyB0aGUgYW1v dW50IG9mIG1lbW9yeSBhbGxvY2F0ZWQgYXQgdGhlIHN0YXJ0dXAuCisgKiBPcHRpb25hbGx5LCBT aG1lbVJlcXVlc3RTdHJ1Y3RPcHRzOjptaW5pbXVtX3NpemUgY2FuIGJlIHNldCB0byB0aGUgbWlu aW11bQorICogc2l6ZSB0aGF0IHRoZSBzdHJ1Y3R1cmUgY2FuIHNocmluayB0by4gQWZ0ZXIgc3Rh cnR1cCwgdGhlIHN0cnVjdHVyZSBjYW4gYmUKKyAqIHJlc2l6ZWQgYnkgY2FsbGluZyBTaG1lbVJl c2l6ZVN0cnVjdCgpIGJ5IHBhc3NpbmcgaXQgdGhlIFNobWVtU3RydWN0RGVzYyBmb3IKKyAqIHRo ZSBzdHJ1Y3R1cmUgYW5kIHRoZSBuZXcgc2l6ZS4gU2htZW1SZXNpemVTdHJ1Y3QoKSBlbmZvcmNl cyB0aGF0IHRoZSBuZXcKKyAqIHNpemUgaXMgd2l0aGluIFttaW5pbXVtX3NpemUsIG1heGltdW1f c2l6ZV0uCisgKgorICogV2hpbGUgcmVzaXphYmxlIHN0cnVjdHVyZXMgY2FuIGJlIGNyZWF0ZWQg YWZ0ZXIgdGhlIHN0YXJ0dXAsIHRoZSBtZW1vcnkKKyAqIGF2YWlsYWJsZSBmb3IgdGhlbSBpcyBx dWl0ZSBsaW1pdGVkLgorICoKICAqIExlZ2FjeSBTaG1lbUluaXRTdHJ1Y3QoKS9TaG1lbUluaXRI YXNoKCkgZnVuY3Rpb25zCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogICoKQEAgLTE2Nyw2ICsxODUsMTYgQEAgdHlwZWRlZiBzdHJ1Y3QKIAlT aG1lbVJlcXVlc3RLaW5kIGtpbmQ7CiB9IFNobWVtUmVxdWVzdDsKIAorLyoKKyAqIEEgY29udmVu aWVudCBtYWNybyB0byBnZXQgdGhlIHNwYWNlIHJlcXVpcmVkIGZvciBhIHNobWVtIHJlcXVlc3Qg Y29uc2lzdGVudGx5LgorICogQSByZXNpemFibGUgc3RydWN0dXJlLCByZXF1ZXN0ZWQgYnkgbm9u LXplcm8gbWF4aW11bV9zaXplLCByZXF1aXJlcyBzcGFjZSBmb3IKKyAqIGl0cyBtYXhpbXVtIHNp emUuIFBsZWFzZSBub3RlIHRoYXQgb24gdGhlIHBsYXRmb3JtcyB0aGF0IGRvIG5vdCBzdXBwb3J0 CisgKiByZXNpemFibGUgc2htZW0sIHRoZSBtYXhpbXVtX3NpemUgaXMgZW5zdXJlZCB0byBiZSAw IGkuZS4gYWxsIHRoZSBzdHJ1Y3R1cmVzCisgKiBhcmUgdHJlYXRlZCBhcyBmaXhlZC1zaXplIHN0 cnVjdHVyZXMuCisgKi8KKyNkZWZpbmUgU0hNRU1fUkVRVUVTVF9TUEFDRV9TSVpFKHJlcXVlc3Qp IFwKKwkoKHJlcXVlc3QpLT5vcHRpb25zLT5tYXhpbXVtX3NpemUgPiAwID8gKHJlcXVlc3QpLT5v cHRpb25zLT5tYXhpbXVtX3NpemUgOiAocmVxdWVzdCktPm9wdGlvbnMtPnNpemUpCisKIHN0YXRp YyBMaXN0ICpwZW5kaW5nX3NobWVtX3JlcXVlc3RzOwogCiAvKgpAQCAtMjY5LDYgKzI5NywxMCBA QCB0eXBlZGVmIHN0cnVjdAogCXZvaWQJICAgKmxvY2F0aW9uOwkJLyogbG9jYXRpb24gaW4gc2hh cmVkIG1lbSAqLwogCVNpemUJCXNpemU7CQkJLyogIyBieXRlcyByZXF1ZXN0ZWQgZm9yIHRoZSBz dHJ1Y3R1cmUgKi8KIAlTaXplCQlhbGxvY2F0ZWRfc2l6ZTsgLyogIyBieXRlcyBhY3R1YWxseSBh bGxvY2F0ZWQgKi8KKwlTaXplCQltaW5pbXVtX3NpemU7CS8qIHRoZSBtaW5pbXVtIHNpemUgdGhl IHN0cnVjdHVyZSBjYW4gc2hyaW5rCisJCQkJCQkJCSAqIHRvICovCisJU2l6ZQkJbWF4aW11bV9z aXplOwkvKiB0aGUgbWF4aW11bSBzaXplIHRoZSBzdHJ1Y3R1cmUgY2FuIGdyb3cgdG8gKi8KKwlT aXplCQlyZXNlcnZlZF9zcGFjZTsgLyogdGhlIHRvdGFsIGFkZHJlc3Mgc3BhY2UgcmVzZXJ2ZWQg Ki8KIH0gU2htZW1JbmRleEVudDsKIAogLyogVG8gZ2V0IHJlbGlhYmxlIHJlc3VsdHMgZm9yIE5V TUEgaW5xdWlyeSB3ZSBuZWVkIHRvICJ0b3VjaCBwYWdlcyIgb25jZSAqLwpAQCAtMjc3LDYgKzMw OSw3IEBAIHN0YXRpYyBib29sIGZpcnN0TnVtYVRvdWNoID0gdHJ1ZTsKIHN0YXRpYyB2b2lkIENh bGxTaG1lbUNhbGxiYWNrc0FmdGVyU3RhcnR1cChjb25zdCBTaG1lbUNhbGxiYWNrcyAqY2FsbGJh Y2tzKTsKIHN0YXRpYyB2b2lkIEluaXRTaG1lbUluZGV4RW50cnkoU2htZW1SZXF1ZXN0ICpyZXF1 ZXN0KTsKIHN0YXRpYyBib29sIEF0dGFjaFNobWVtSW5kZXhFbnRyeShTaG1lbVJlcXVlc3QgKnJl cXVlc3QsIGJvb2wgbWlzc2luZ19vayk7CitzdGF0aWMgU2l6ZSBFc3RpbWF0ZUFsbG9jYXRlZFNp emUoU2htZW1JbmRleEVudCAqZW50cnkpOwogCiBEYXR1bQkJcGdfbnVtYV9hdmFpbGFibGUoUEdf RlVOQ1RJT05fQVJHUyk7CiAKQEAgLTM0MiwxMSArMzc1LDI1IEBAIFNobWVtUmVxdWVzdEludGVy bmFsKFNobWVtU3RydWN0T3B0cyAqb3B0aW9ucywgU2htZW1SZXF1ZXN0S2luZCBraW5kKQogCWlm IChvcHRpb25zLT5uYW1lID09IE5VTEwpCiAJCWVsb2coRVJST1IsICJzaGFyZWQgbWVtb3J5IHJl cXVlc3QgaXMgbWlzc2luZyAnbmFtZScgb3B0aW9uIik7CiAKKyNpZm5kZWYgSEFWRV9SRVNJWkFC TEVfU0hNRU0KKwlpZiAob3B0aW9ucy0+bWF4aW11bV9zaXplID4gMCkKKwkJZWxvZyhFUlJPUiwg InJlc2l6YWJsZSBzaGFyZWQgbWVtb3J5IGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9y bSIpOworI2Vsc2UKKwlpZiAob3B0aW9ucy0+bWF4aW11bV9zaXplID4gMCAmJiBzaGFyZWRfbWVt b3J5X3R5cGUgIT0gU0hNRU1fVFlQRV9NTUFQKQorCQllbG9nKEVSUk9SLCAicmVzaXphYmxlIHNo YXJlZCBtZW1vcnkgcmVxdWlyZXMgc2hhcmVkX21lbW9yeV90eXBlID0gbW1hcCIpOworI2VuZGlm CisKIAlpZiAoSXNVbmRlclBvc3RtYXN0ZXIpCiAJewogCQlpZiAob3B0aW9ucy0+c2l6ZSA8PSAw ICYmIG9wdGlvbnMtPnNpemUgIT0gU0hNRU1fQVRUQUNIX1VOS05PV05fU0laRSkKIAkJCWVsb2co RVJST1IsICJpbnZhbGlkIHNpemUgJXpkIGZvciBzaGFyZWQgbWVtb3J5IHJlcXVlc3QgZm9yIFwi JXNcIiIsCiAJCQkJIG9wdGlvbnMtPnNpemUsIG9wdGlvbnMtPm5hbWUpOworCQlpZiAob3B0aW9u cy0+bWluaW11bV9zaXplIDwgMCAmJiBvcHRpb25zLT5taW5pbXVtX3NpemUgIT0gU0hNRU1fQVRU QUNIX1VOS05PV05fU0laRSkKKwkJCWVsb2coRVJST1IsICJpbnZhbGlkIG1pbmltdW1fc2l6ZSAl emQgZm9yIHNoYXJlZCBtZW1vcnkgcmVxdWVzdCBmb3IgXCIlc1wiIiwKKwkJCQkgb3B0aW9ucy0+ bWluaW11bV9zaXplLCBvcHRpb25zLT5uYW1lKTsKKwkJaWYgKG9wdGlvbnMtPm1heGltdW1fc2l6 ZSA8IDAgJiYgb3B0aW9ucy0+bWF4aW11bV9zaXplICE9IFNITUVNX0FUVEFDSF9VTktOT1dOX1NJ WkUpCisJCQllbG9nKEVSUk9SLCAiaW52YWxpZCBtYXhpbXVtX3NpemUgJXpkIGZvciBzaGFyZWQg bWVtb3J5IHJlcXVlc3QgZm9yIFwiJXNcIiIsCisJCQkJIG9wdGlvbnMtPm1heGltdW1fc2l6ZSwg b3B0aW9ucy0+bmFtZSk7CiAJfQogCWVsc2UKIAl7CkBAIC0zNTUsMTIgKzQwMiwzNiBAQCBTaG1l bVJlcXVlc3RJbnRlcm5hbChTaG1lbVN0cnVjdE9wdHMgKm9wdGlvbnMsIFNobWVtUmVxdWVzdEtp bmQga2luZCkKIAkJaWYgKG9wdGlvbnMtPnNpemUgPD0gMCkKIAkJCWVsb2coRVJST1IsICJpbnZh bGlkIHNpemUgJXpkIGZvciBzaGFyZWQgbWVtb3J5IHJlcXVlc3QgZm9yIFwiJXNcIiIsCiAJCQkJ IG9wdGlvbnMtPnNpemUsIG9wdGlvbnMtPm5hbWUpOworCQlpZiAob3B0aW9ucy0+bWluaW11bV9z aXplID09IFNITUVNX0FUVEFDSF9VTktOT1dOX1NJWkUpCisJCQllbG9nKEVSUk9SLCAiU0hNRU1f QVRUQUNIX1VOS05PV05fU0laRSBjYW5ub3QgYmUgdXNlZCBkdXJpbmcgc3RhcnR1cCIpOworCQlp ZiAob3B0aW9ucy0+bWluaW11bV9zaXplIDwgMCkKKwkJCWVsb2coRVJST1IsICJpbnZhbGlkIG1p bmltdW1fc2l6ZSAlemQgZm9yIHNoYXJlZCBtZW1vcnkgcmVxdWVzdCBmb3IgXCIlc1wiIiwKKwkJ CQkgb3B0aW9ucy0+bWluaW11bV9zaXplLCBvcHRpb25zLT5uYW1lKTsKKwkJaWYgKG9wdGlvbnMt Pm1heGltdW1fc2l6ZSA9PSBTSE1FTV9BVFRBQ0hfVU5LTk9XTl9TSVpFKQorCQkJZWxvZyhFUlJP UiwgIlNITUVNX0FUVEFDSF9VTktOT1dOX1NJWkUgY2Fubm90IGJlIHVzZWQgZHVyaW5nIHN0YXJ0 dXAiKTsKKwkJaWYgKG9wdGlvbnMtPm1heGltdW1fc2l6ZSA8IDApCisJCQllbG9nKEVSUk9SLCAi aW52YWxpZCBtYXhpbXVtX3NpemUgJXpkIGZvciBzaGFyZWQgbWVtb3J5IHJlcXVlc3QgZm9yIFwi JXNcIiIsCisJCQkJIG9wdGlvbnMtPm1heGltdW1fc2l6ZSwgb3B0aW9ucy0+bmFtZSk7CiAJfQog CiAJaWYgKG9wdGlvbnMtPmFsaWdubWVudCAhPSAwICYmIHBnX25leHRwb3dlcjJfc2l6ZV90KG9w dGlvbnMtPmFsaWdubWVudCkgIT0gb3B0aW9ucy0+YWxpZ25tZW50KQogCQllbG9nKEVSUk9SLCAi aW52YWxpZCBhbGlnbm1lbnQgJXp1IGZvciBzaGFyZWQgbWVtb3J5IHJlcXVlc3QgZm9yIFwiJXNc IiIsCiAJCQkgb3B0aW9ucy0+YWxpZ25tZW50LCBvcHRpb25zLT5uYW1lKTsKIAorCWlmIChvcHRp b25zLT5taW5pbXVtX3NpemUgPiAwICYmIG9wdGlvbnMtPnNpemUgIT0gU0hNRU1fQVRUQUNIX1VO S05PV05fU0laRSAmJgorCQlvcHRpb25zLT5taW5pbXVtX3NpemUgPiBvcHRpb25zLT5zaXplKQor CQllbG9nKEVSUk9SLCAicmVzaXphYmxlIHNoYXJlZCBtZW1vcnkgc3RydWN0dXJlIFwiJXNcIiBz aG91bGQgaGF2ZSBtaW5pbXVtIHNpemUgKCV6ZCkgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHNpemUg KCV6ZCkiLAorCQkJIG9wdGlvbnMtPm5hbWUsIG9wdGlvbnMtPm1pbmltdW1fc2l6ZSwgb3B0aW9u cy0+c2l6ZSk7CisKKwlpZiAob3B0aW9ucy0+bWF4aW11bV9zaXplID4gMCAmJiBvcHRpb25zLT5z aXplID4gb3B0aW9ucy0+bWF4aW11bV9zaXplKQorCQllbG9nKEVSUk9SLCAicmVzaXphYmxlIHNo YXJlZCBtZW1vcnkgc3RydWN0dXJlIFwiJXNcIiBzaG91bGQgaGF2ZSBtYXhpbXVtIHNpemUgKCV6 ZCkgZ3JlYXRlciB0aGFuIHNpemUgKCV6ZCkiLAorCQkJIG9wdGlvbnMtPm5hbWUsIG9wdGlvbnMt Pm1heGltdW1fc2l6ZSwgb3B0aW9ucy0+c2l6ZSk7CisKKwlpZiAob3B0aW9ucy0+bWluaW11bV9z aXplID4gMCAmJiBvcHRpb25zLT5tYXhpbXVtX3NpemUgPiAwICYmCisJCW9wdGlvbnMtPm1pbmlt dW1fc2l6ZSA+IG9wdGlvbnMtPm1heGltdW1fc2l6ZSkKKwkJZWxvZyhFUlJPUiwgInJlc2l6YWJs ZSBzaGFyZWQgbWVtb3J5IHN0cnVjdHVyZSBcIiVzXCIgc2hvdWxkIGhhdmUgbWluaW11bSBzaXpl ICglemQpIGxlc3MgdGhhbiBvciBlcXVhbCB0byBtYXhpbXVtIHNpemUgKCV6ZCkiLAorCQkJIG9w dGlvbnMtPm5hbWUsIG9wdGlvbnMtPm1pbmltdW1fc2l6ZSwgb3B0aW9ucy0+bWF4aW11bV9zaXpl KTsKKwogCS8qIENoZWNrIHRoYXQgd2UncmUgaW4gdGhlIHJpZ2h0IHN0YXRlICovCiAJaWYgKHNo bWVtX3JlcXVlc3Rfc3RhdGUgIT0gU1JTX1JFUVVFU1RJTkcpCiAJCWVsb2coRVJST1IsICJTaG1l bVJlcXVlc3RTdHJ1Y3QgY2FuIG9ubHkgYmUgY2FsbGVkIGZyb20gYSBzaG1lbV9yZXF1ZXN0IGNh bGxiYWNrIik7CkBAIC0zODIsOCArNDUzLDggQEAgU2htZW1SZXF1ZXN0SW50ZXJuYWwoU2htZW1T dHJ1Y3RPcHRzICpvcHRpb25zLCBTaG1lbVJlcXVlc3RLaW5kIGtpbmQpCiB9CiAKIC8qCi0gKglT aG1lbUdldFJlcXVlc3RlZFNpemUoKSAtLS0gZXN0aW1hdGUgdGhlIHRvdGFsIHNpemUgb2YgYWxs IHJlZ2lzdGVyZWQgc2hhcmVkCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9y eSBzdHJ1Y3R1cmVzLgorICogU2htZW1HZXRSZXF1ZXN0ZWRTaXplKCkgLS0tIGVzdGltYXRlIHRo ZSB0b3RhbCBzaXplIG9mIGFsbCByZWdpc3RlcmVkIHNoYXJlZAorICogbWVtb3J5IHN0cnVjdHVy ZXMuCiAgKgogICogVGhpcyBpcyBjYWxsZWQgYXQgcG9zdG1hc3RlciBzdGFydHVwLCBiZWZvcmUg dGhlIHNoYXJlZCBtZW1vcnkgc2VnbWVudCBoYXMKICAqIGJlZW4gY3JlYXRlZC4KQEAgLTQwOCw3 ICs0NzksNyBAQCBTaG1lbUdldFJlcXVlc3RlZFNpemUodm9pZCkKIAkJCWFsaWdubWVudCA9IFBH X0NBQ0hFX0xJTkVfU0laRTsKIAkJc2l6ZSA9IFRZUEVBTElHTihhbGlnbm1lbnQsIHNpemUpOwog Ci0JCXNpemUgPSBhZGRfc2l6ZShzaXplLCByZXF1ZXN0LT5vcHRpb25zLT5zaXplKTsKKwkJc2l6 ZSA9IGFkZF9zaXplKHNpemUsIFNITUVNX1JFUVVFU1RfU1BBQ0VfU0laRShyZXF1ZXN0KSk7CiAJ fQogCiAJcmV0dXJuIHNpemU7CkBAIC01MTUsNiArNTg2LDcgQEAgSW5pdFNobWVtSW5kZXhFbnRy eShTaG1lbVJlcXVlc3QgKnJlcXVlc3QpCiAJU2htZW1JbmRleEVudCAqaW5kZXhfZW50cnk7CiAJ Ym9vbAkJZm91bmQ7CiAJc2l6ZV90CQlhbGxvY2F0ZWRfc2l6ZTsKKwlzaXplX3QJCXJlcXVlc3Rl ZF9zaXplOwogCXZvaWQJICAgKnN0cnVjdFB0cjsKIAogCS8qIGxvb2sgaXQgdXAgaW4gdGhlIHNo bWVtIGluZGV4ICovCkBAIC01MzIsMTAgKzYwNCwxOCBAQCBJbml0U2htZW1JbmRleEVudHJ5KFNo bWVtUmVxdWVzdCAqcmVxdWVzdCkKIAl9CiAKIAkvKgotCSAqIFdlIGluc2VydGVkIHRoZSBlbnRy eSB0byB0aGUgc2hhcmVkIG1lbW9yeSBpbmRleC4gIEFsbG9jYXRlIHJlcXVlc3RlZAotCSAqIGFt b3VudCBvZiBzaGFyZWQgbWVtb3J5IGZvciBpdCwgYW5kIGluaXRpYWxpemUgdGhlIGluZGV4IGVu dHJ5LgorCSAqIFdlIGluc2VydGVkIHRoZSBlbnRyeSB0byB0aGUgc2hhcmVkIG1lbW9yeSBpbmRl eC4gQWxsb2NhdGUgcmVxdWVzdGVkCisJICogYW1vdW50IG9mIGFkZHJlc3Mgc3BhY2UgaW4gdGhl IHNoYXJlZCBtZW1vcnkgc2VnbWVudCBmb3IgaXQsIGFuZCBkbworCSAqIGJhc2ljIGluaXRpYWxp emlvbi4gVGhlIG1lbW9yeSBnZXRzIGFsbG9jYXRlZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYXMK KwkgKiB0aGUgY29ycmVzcG9uZGluZyBtZW1vcnkgcGFnZXMgYXJlIHdyaXR0ZW4gdG8uICBBbGxv Y2F0ZSBlbm91Z2ggc3BhY2UKKwkgKiBmb3IgYSByZXNpemFibGUgc3RydWN0dXJlIHRvIGdyb3cg dG8gaXRzIG1heGltdW0gc2l6ZS4gSXQgaXMgZXhwZWN0ZWQKKwkgKiB0aGF0IHRoZSBpbml0aWFs aXphdGlvbiBjYWxsYmFjayB3aWxsIHVzZSBvbmx5IGFzIG11Y2ggbWVtb3J5IGFzIHRoZQorCSAq IGluaXRpYWwgc2l6ZSBvZiB0aGUgcmVzaXphYmxlIHN0cnVjdHVyZS4gKFdlbGwsIGlmIGl0IGRv ZXNuJ3QsIG1vcmUKKwkgKiBtZW1vcnkgd2lsbCBiZSBhbGxvY2F0ZWQgaW5pdGlhbGx5IHRoYW4g ZXhwZWN0ZWQsIG5vIGZ1cnRoZXIgaGFybSBpcworCSAqIGRvbmUuKQogCSAqLwotCXN0cnVjdFB0 ciA9IFNobWVtQWxsb2NSYXcocmVxdWVzdC0+b3B0aW9ucy0+c2l6ZSwKKwlyZXF1ZXN0ZWRfc2l6 ZSA9IFNITUVNX1JFUVVFU1RfU1BBQ0VfU0laRShyZXF1ZXN0KTsKKwlzdHJ1Y3RQdHIgPSBTaG1l bUFsbG9jUmF3KHJlcXVlc3RlZF9zaXplLAogCQkJCQkJCSAgcmVxdWVzdC0+b3B0aW9ucy0+YWxp Z25tZW50LAogCQkJCQkJCSAgJmFsbG9jYXRlZF9zaXplKTsKIAlpZiAoc3RydWN0UHRyID09IE5V TEwpCkBAIC01NDQsMTMgKzYyNCwyNyBAQCBJbml0U2htZW1JbmRleEVudHJ5KFNobWVtUmVxdWVz dCAqcmVxdWVzdCkKIAkJaGFzaF9zZWFyY2goU2htZW1JbmRleCwgbmFtZSwgSEFTSF9SRU1PVkUs IE5VTEwpOwogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfT1VUX09GX01F TU9SWSksCi0JCQkJIGVycm1zZygibm90IGVub3VnaCBzaGFyZWQgbWVtb3J5IGZvciBkYXRhIHN0 cnVjdHVyZSIKKwkJCQkgZXJybXNnKCJub3QgZW5vdWdoIHNoYXJlZCBtZW1vcnkgc3BhY2UgZm9y IGRhdGEgc3RydWN0dXJlIgogCQkJCQkJIiBcIiVzXCIgKCV6dSBieXRlcyByZXF1ZXN0ZWQpIiwK LQkJCQkJCW5hbWUsIHJlcXVlc3QtPm9wdGlvbnMtPnNpemUpKSk7CisJCQkJCQluYW1lLCByZXF1 ZXN0ZWRfc2l6ZSkpKTsKIAl9CiAJaW5kZXhfZW50cnktPnNpemUgPSByZXF1ZXN0LT5vcHRpb25z LT5zaXplOwogCWluZGV4X2VudHJ5LT5hbGxvY2F0ZWRfc2l6ZSA9IGFsbG9jYXRlZF9zaXplOwog CWluZGV4X2VudHJ5LT5sb2NhdGlvbiA9IHN0cnVjdFB0cjsKKwlpbmRleF9lbnRyeS0+cmVzZXJ2 ZWRfc3BhY2UgPSBhbGxvY2F0ZWRfc2l6ZTsKKwlpZiAocmVxdWVzdC0+b3B0aW9ucy0+bWF4aW11 bV9zaXplID4gMCkKKwl7CisJCWluZGV4X2VudHJ5LT5taW5pbXVtX3NpemUgPSByZXF1ZXN0LT5v cHRpb25zLT5taW5pbXVtX3NpemU7CisJCWluZGV4X2VudHJ5LT5tYXhpbXVtX3NpemUgPSByZXF1 ZXN0LT5vcHRpb25zLT5tYXhpbXVtX3NpemU7CisKKwkJLyogQWRqdXN0IGFsbG9jYXRlZCBzaXpl IG9mIGEgcmVzaXphYmxlIHN0cnVjdHVyZS4gKi8KKwkJaW5kZXhfZW50cnktPmFsbG9jYXRlZF9z aXplID0gRXN0aW1hdGVBbGxvY2F0ZWRTaXplKGluZGV4X2VudHJ5KTsKKwl9CisJZWxzZQorCXsK KwkJaW5kZXhfZW50cnktPm1pbmltdW1fc2l6ZSA9IHJlcXVlc3QtPm9wdGlvbnMtPnNpemU7CisJ CWluZGV4X2VudHJ5LT5tYXhpbXVtX3NpemUgPSByZXF1ZXN0LT5vcHRpb25zLT5zaXplOworCX0K IAogCS8qIEluaXRpYWxpemUgZGVwZW5kaW5nIG9uIHRoZSBraW5kIG9mIHNobWVtIGFyZWEgaXQg aXMgKi8KIAlzd2l0Y2ggKHJlcXVlc3QtPmtpbmQpCkBAIC01OTUsNyArNjg5LDcgQEAgQXR0YWNo U2htZW1JbmRleEVudHJ5KFNobWVtUmVxdWVzdCAqcmVxdWVzdCwgYm9vbCBtaXNzaW5nX29rKQog CQlyZXR1cm4gZmFsc2U7CiAJfQogCi0JLyogQ2hlY2sgdGhhdCB0aGUgc2l6ZSBpbiB0aGUgaW5k ZXggbWF0Y2hlcyB0aGUgcmVxdWVzdCAqLworCS8qIENoZWNrIHRoYXQgdGhlIHNpemVzIGluIHRo ZSBpbmRleCBtYXRjaCB0aGUgcmVxdWVzdC4gKi8KIAlpZiAoaW5kZXhfZW50cnktPnNpemUgIT0g cmVxdWVzdC0+b3B0aW9ucy0+c2l6ZSAmJgogCQlyZXF1ZXN0LT5vcHRpb25zLT5zaXplICE9IFNI TUVNX0FUVEFDSF9VTktOT1dOX1NJWkUpCiAJewpAQCAtNjA1LDYgKzY5OSw0MCBAQCBBdHRhY2hT aG1lbUluZGV4RW50cnkoU2htZW1SZXF1ZXN0ICpyZXF1ZXN0LCBib29sIG1pc3Npbmdfb2spCiAJ CQkJCQluYW1lLCBpbmRleF9lbnRyeS0+c2l6ZSwgcmVxdWVzdC0+b3B0aW9ucy0+c2l6ZSkpKTsK IAl9CiAKKwkvKgorCSAqIEZvciByZXNpemFibGUgc3RydWN0dXJlcywgYWxzbyBjaGVjayB0aGF0 IG1pbmltdW1fc2l6ZSBhbmQgbWF4aW11bV9zaXplCisJICogbWF0Y2guIEZvciBmaXhlZC1zaXpl IHN0cnVjdHVyZXMsIHRoZXNlIGFyZSBkZXJpdmVkIChzZXQgdG8gc2l6ZSkgaW4KKwkgKiB0aGUg aW5kZXggZW50cnkgYW5kIG5vdCBtZWFuaW5nZnVsIGluIHRoZSByZXF1ZXN0LgorCSAqLworCWlm IChyZXF1ZXN0LT5vcHRpb25zLT5tYXhpbXVtX3NpemUgIT0gMCkKKwl7CisJCWlmIChpbmRleF9l bnRyeS0+bWluaW11bV9zaXplICE9IHJlcXVlc3QtPm9wdGlvbnMtPm1pbmltdW1fc2l6ZSAmJgor CQkJcmVxdWVzdC0+b3B0aW9ucy0+bWluaW11bV9zaXplICE9IFNITUVNX0FUVEFDSF9VTktOT1dO X1NJWkUpCisJCXsKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJtc2coInNoYXJlZCBtZW1v cnkgc3RydWN0IFwiJXNcIiB3YXMgY3JlYXRlZCB3aXRoIgorCQkJCQkJCSIgZGlmZmVyZW50IG1p bmltdW1fc2l6ZTogZXhpc3RpbmcgJXp1LCByZXF1ZXN0ZWQgJXp1IiwKKwkJCQkJCQluYW1lLCBp bmRleF9lbnRyeS0+bWluaW11bV9zaXplLAorCQkJCQkJCXJlcXVlc3QtPm9wdGlvbnMtPm1pbmlt dW1fc2l6ZSkpKTsKKwkJfQorCisJCWlmIChpbmRleF9lbnRyeS0+bWF4aW11bV9zaXplICE9IHJl cXVlc3QtPm9wdGlvbnMtPm1heGltdW1fc2l6ZSAmJgorCQkJcmVxdWVzdC0+b3B0aW9ucy0+bWF4 aW11bV9zaXplICE9IFNITUVNX0FUVEFDSF9VTktOT1dOX1NJWkUpCisJCXsKKwkJCWVyZXBvcnQo RVJST1IsCisJCQkJCShlcnJtc2coInNoYXJlZCBtZW1vcnkgc3RydWN0IFwiJXNcIiB3YXMgY3Jl YXRlZCB3aXRoIgorCQkJCQkJCSIgZGlmZmVyZW50IG1heGltdW1fc2l6ZTogZXhpc3RpbmcgJXp1 LCByZXF1ZXN0ZWQgJXp1IiwKKwkJCQkJCQluYW1lLCBpbmRleF9lbnRyeS0+bWF4aW11bV9zaXpl LAorCQkJCQkJCXJlcXVlc3QtPm9wdGlvbnMtPm1heGltdW1fc2l6ZSkpKTsKKwkJfQorCX0KKwll bHNlCisJeworCQlpZiAoaW5kZXhfZW50cnktPm1pbmltdW1fc2l6ZSAhPSBpbmRleF9lbnRyeS0+ bWF4aW11bV9zaXplKQorCQkJZWxvZyhFUlJPUiwgInNoYXJlZCBtZW1vcnkgc3RydWN0IFwiJXNc IiB3YXMgY3JlYXRlZCBhcyByZXNpemFibGUsIGJ1dCByZXF1ZXN0ZWQgYXMgZml4ZWQtc2l6ZSIs CisJCQkJIG5hbWUpOworCX0KKwogCS8qCiAJICogUmUtZXN0YWJsaXNoIHRoZSBjYWxsZXIncyBw b2ludGVyIHZhcmlhYmxlLCBvciBkbyBvdGhlciBhY3Rpb25zIHRvCiAJICogYXR0YWNoIGRlcGVu ZGluZyBvbiB0aGUga2luZCBvZiBzaG1lbSBhcmVhIGl0IGlzLgpAQCAtNjI2LDYgKzc1NCwxMjcg QEAgQXR0YWNoU2htZW1JbmRleEVudHJ5KFNobWVtUmVxdWVzdCAqcmVxdWVzdCwgYm9vbCBtaXNz aW5nX29rKQogCXJldHVybiB0cnVlOwogfQogCisvKgorICogRXN0aW1hdGUgdGhlIGFjdHVhbCBt ZW1vcnkgYWxsb2NhdGVkIGZvciBhIHJlc2l6YWJsZSBzdHJ1Y3R1cmUuCisgKgorICogLi4uIGJh c2VkIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgdGhlIG1lbW9yeSBpcyBhbGxvY2F0ZWQgaW4gcGFn ZXMuCisgKgorICogVGhlIG1lbW9yeSBwYWdlcyBjb3ZlcmVkIGJ5IHRoZSBjdXJyZW50IHNpemUg b2YgYSByZXNpemFibGUgc3RydWN0dXJlIGFyZQorICogZnVsbHkgYWxsb2NhdGVkIHdoZW4gdGhl IGN1cnJlbnRseSBhbGxvY2F0ZWQgcGFydCBvZiB0aGUgc3RydWN0dXJlIGlzIHdyaXR0ZW4KKyAq IHRvLiBUaGUgbWVtb3J5IHBhZ2Ugd2hlcmUgdGhlIG1heGltYWwgc3RydWN0dXJlIGVuZHMgYWxz byBob3N0cyB0aGUgbmV4dAorICogc3RydWN0dXJlLCB1bmxlc3MgdGhlIG1heGltYWwgc3RydWN0 dXJlIGVuZHMgb24gYSBwYWdlIGJvdW5kYXJ5LiBIZW5jZSB0aGF0CisgKiBwYWdlIGlzIGFsbG9j YXRlZCB3aGVuIHRoZSBuZXh0IHN0cnVjdHVyZSBpcyB3cml0dGVuIHRvLiBUaGUgbWVtb3J5IHBh Z2VzCisgKiBiZXR3ZWVuIHRoZSBwYWdlIHdoZXJlIHRoZSBjdXJyZW50IHN0cnVjdHVyZSBlbmRz IGFuZCB0aGUgcGFnZSB3aGVyZSB0aGUgbmV4dAorICogc3RydWN0dXJlIHN0YXJ0cyByZW1haW4g dW5hbGxvY2F0ZWQuIFRodXMgdGhlIG1lbW9yeSBhbGxvY2F0ZWQgZm9yIGEKKyAqIHJlc2l6YWJs ZSBzdHJ1Y3R1cmUgY2FuIGJlIGVzdGltYXRlZCBhcyB0aGUgdG90YWwgYWRkcmVzcyBzcGFjZSBy ZXNlcnZlZCBmb3IKKyAqIHRoZSBzdHJ1Y3R1cmUgbWludXMgdGhlIHVuYWxsb2NhdGVkIG1lbW9y eSBwYWdlcyBiZXR3ZWVuIHRoZSBjdXJyZW50IGVuZCBhbmQKKyAqIHRoZSBuZXh0IHN0cnVjdHVy ZS4KKyAqLworc3RhdGljIFNpemUKK0VzdGltYXRlQWxsb2NhdGVkU2l6ZShTaG1lbUluZGV4RW50 ICplbnRyeSkKK3sKKwlTaXplCQlwYWdlX3NpemUgPSBHZXRPU1BhZ2VTaXplKCk7CisJY2hhcgkg ICAqYWxpZ25fZW5kID0gKGNoYXIgKikgVFlQRUFMSUdOKHBhZ2Vfc2l6ZSwgKGNoYXIgKikgZW50 cnktPmxvY2F0aW9uICsgZW50cnktPnNpemUpOworCWNoYXIJICAgKmZsb29yX21heF9lbmQgPSAo Y2hhciAqKSBUWVBFQUxJR05fRE9XTihwYWdlX3NpemUsIChjaGFyICopIGVudHJ5LT5sb2NhdGlv biArIGVudHJ5LT5tYXhpbXVtX3NpemUpOworCisJQXNzZXJ0KGVudHJ5LT5tYXhpbXVtX3NpemUg Pj0gZW50cnktPnNpemUpOworCUFzc2VydChlbnRyeS0+cmVzZXJ2ZWRfc3BhY2UgPj0gZW50cnkt Pm1heGltdW1fc2l6ZSk7CisKKwlpZiAoYWxpZ25fZW5kIDwgZmxvb3JfbWF4X2VuZCkKKwkJcmV0 dXJuIGVudHJ5LT5yZXNlcnZlZF9zcGFjZSAtIChmbG9vcl9tYXhfZW5kIC0gYWxpZ25fZW5kKTsK KworCXJldHVybiBlbnRyeS0+cmVzZXJ2ZWRfc3BhY2U7Cit9CisKKy8qCisgKiBTaG1lbVJlc2l6 ZVN0cnVjdCgpIC0tLSByZXNpemUgYSByZXNpemFibGUgc2hhcmVkIG1lbW9yeSBzdHJ1Y3R1cmUu CisgKgorICogVGhlIG5ldyBzaXplIG11c3QgYmUgd2l0aGluIFttaW5pbXVtX3NpemUsIG1heGlt dW1fc2l6ZV0uICBJZiB0aGUgc3RydWN0dXJlCisgKiBpcyBiZWluZyBzaHJ1bmssIHRoZSBtZW1v cnkgcGFnZXMgdGhhdCBhcmUgbm8gbG9uZ2VyIG5lZWRlZCBhcmUgZnJlZWQuIElmCisgKiB0aGUg c3RydWN0dXJlIGlzIGJlaW5nIGV4cGFuZGVkLCB0aGUgbWVtb3J5IHBhZ2VzIHRoYXQgYXJlIG5l ZWRlZCBmb3IgdGhlCisgKiBuZXcgc2l6ZSBhcmUgYWxsb2NhdGVkLiBTZWUgRXN0aW1hdGVBbGxv Y2F0ZWRTaXplKCkgZm9yIGV4cGxhbmF0aW9uIG9mIHdoaWNoCisgKiBwYWdlcyBhcmUgYWxsb2Nh dGVkIGZvciBhIHJlc2l6YWJsZSBzdHJ1Y3R1cmUuCisgKi8KK3ZvaWQKK1NobWVtUmVzaXplU3Ry dWN0KGNvbnN0IGNoYXIgKm5hbWUsIFNpemUgbmV3X3NpemUpCit7CisjaWZuZGVmIEhBVkVfUkVT SVpBQkxFX1NITUVNCisJZXJlcG9ydChFUlJPUiwKKwkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVS RV9OT1RfU1VQUE9SVEVEKSwKKwkJCSBlcnJtc2coInJlc2l6YWJsZSBzaGFyZWQgbWVtb3J5IGlz IG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybSIpKSk7CisjZWxzZQorCVNobWVtSW5kZXhF bnQgKnJlc3VsdDsKKwlib29sCQlmb3VuZDsKKwlTaXplCQlwYWdlX3NpemUgPSBHZXRPU1BhZ2VT aXplKCk7CisJY2hhcgkgICAqbmV3X2VuZDsKKworCUFzc2VydChuZXdfc2l6ZSA+IDApOworCisJ LyoKKwkgKiBSZXNpemFibGUgc2hhcmVkIG1lbW9yeSBzdHJ1Y3R1cmVzIGFyZSBvbmx5IHN1cHBv cnRlZCB3aXRoIG1tYXAnZWQKKwkgKiBtZW1vcnkuCisJICovCisJQXNzZXJ0KHNoYXJlZF9tZW1v cnlfdHlwZSA9PSBTSE1FTV9UWVBFX01NQVApOworCisJLyogbG9vayBpdCB1cCBpbiB0aGUgc2ht ZW0gaW5kZXggKi8KKwlMV0xvY2tBY3F1aXJlKFNobWVtSW5kZXhMb2NrLCBMV19FWENMVVNJVkUp OworCXJlc3VsdCA9IChTaG1lbUluZGV4RW50ICopIGhhc2hfc2VhcmNoKFNobWVtSW5kZXgsIG5h bWUsIEhBU0hfRklORCwgJmZvdW5kKTsKKwlpZiAoIWZvdW5kKQorCQllcmVwb3J0KEVSUk9SLAor CQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAor CQkJCSBlcnJtc2coInNobWVtIHN0cnVjdCBcIiVzXCIgaXMgbm90IGluaXRpYWxpemVkIiwgbmFt ZSkpKTsKKworCUFzc2VydChyZXN1bHQpOworCisJaWYgKHJlc3VsdC0+bWluaW11bV9zaXplID09 IHJlc3VsdC0+bWF4aW11bV9zaXplKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVS UkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCSBlcnJtc2coInNo YXJlZCBtZW1vcnkgc3RydWN0IFwiJXNcIiBpcyBub3QgcmVzaXphYmxlIiwgbmFtZSkpKTsKKwor CWlmIChuZXdfc2l6ZSA8IHJlc3VsdC0+bWluaW11bV9zaXplKQorCQllcmVwb3J0KEVSUk9SLAor CQkJCShlcnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJRU5UX1JFU09VUkNFUyksCisJCQkJIGVycm1z ZygiY2Fubm90IHNocmluayBzaGFyZWQgbWVtb3J5IHN0cnVjdHVyZSBcIiVzXCIgYmVsb3cgbWlu aW11bSBzaXplIgorCQkJCQkJIiAocmVxdWVzdGVkICV6dSBieXRlcywgbWluaW11bSAlenUgYnl0 ZXMpIiwKKwkJCQkJCW5hbWUsIG5ld19zaXplLCByZXN1bHQtPm1pbmltdW1fc2l6ZSkpKTsKKwor CWlmIChyZXN1bHQtPm1heGltdW1fc2l6ZSA8IG5ld19zaXplKQorCQllcmVwb3J0KEVSUk9SLAor CQkJCShlcnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJRU5UX1JFU09VUkNFUyksCisJCQkJIGVycm1z Zygibm90IGVub3VnaCBhZGRyZXNzIHNwYWNlIGlzIHJlc2VydmVkIGZvciByZXNpemluZyBzdHJ1 Y3R1cmUgXCIlc1wiIgorCQkJCQkJIihyZXF1aXJlZCAlenUgYnl0ZXMsIHJlc2VydmVkICV6dSBi eXRlcykiLAorCQkJCQkJbmFtZSwgbmV3X3NpemUsIHJlc3VsdC0+bWF4aW11bV9zaXplKSkpOwor CisJLyoKKwkgKiBXaGVuIHNocmlua2luZyB0aGUgbWVtb3J5IGZyb20gdGhlIHBhZ2UgYWxpZ25l ZCBuZXcgZW5kIHRvIHRoZSBzdGFydCBvZgorCSAqIHRoZSBwYWdlIGNvbnRhaW5pbmcgZW5kIG9m IHRoZSByZXNlcnZlZCBzcGFjZSBpcyBub3QgcmVxdWlyZWQuIFdoZXJlYXMKKwkgKiB3aGVuIGV4 cGFuZGluZyB0aGUgbWVtb3J5IGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBwYWdlIGNvbnRhaW5pbmcg dGhlCisJICogc3RhcnQgb2YgdGhlIHN0cnVjdHVyZSB0byB0aGUgcGFnZSBhbGlnbmVkIG5ldyBl bmQgaXMgcmVxdWlyZWQuCisJICovCisJbmV3X2VuZCA9IChjaGFyICopIFRZUEVBTElHTihwYWdl X3NpemUsIChjaGFyICopIHJlc3VsdC0+bG9jYXRpb24gKyBuZXdfc2l6ZSk7CisJaWYgKG5ld19z aXplIDwgcmVzdWx0LT5zaXplKQorCXsKKwkJY2hhcgkgICAqbWF4X2VuZCA9IChjaGFyICopIFRZ UEVBTElHTl9ET1dOKHBhZ2Vfc2l6ZSwgKGNoYXIgKikgcmVzdWx0LT5sb2NhdGlvbiArIHJlc3Vs dC0+bWF4aW11bV9zaXplKTsKKworCQlpZiAobWF4X2VuZCA+IG5ld19lbmQpCisJCQlQR1NoYXJl ZE1lbW9yeUVuc3VyZUZyZWVkKG5ld19lbmQsIG1heF9lbmQgLSBuZXdfZW5kKTsKKwl9CisJZWxz ZSBpZiAobmV3X3NpemUgPiByZXN1bHQtPnNpemUpCisJeworCQljaGFyCSAgICpzdHJ1Y3Rfc3Rh cnQgPSAoY2hhciAqKSBUWVBFQUxJR05fRE9XTihwYWdlX3NpemUsIChjaGFyICopIHJlc3VsdC0+ bG9jYXRpb24pOworCisJCWlmIChuZXdfZW5kID4gc3RydWN0X3N0YXJ0KQorCQkJUEdTaGFyZWRN ZW1vcnlFbnN1cmVBbGxvY2F0ZWQoc3RydWN0X3N0YXJ0LCBuZXdfZW5kIC0gc3RydWN0X3N0YXJ0 KTsKKwl9CisKKwkvKiBVcGRhdGUgc2htZW0gaW5kZXggZW50cnkuICovCisJcmVzdWx0LT5zaXpl ID0gbmV3X3NpemU7CisJcmVzdWx0LT5hbGxvY2F0ZWRfc2l6ZSA9IEVzdGltYXRlQWxsb2NhdGVk U2l6ZShyZXN1bHQpOworCisJTFdMb2NrUmVsZWFzZShTaG1lbUluZGV4TG9jayk7CisjZW5kaWYK K30KKwogLyoKICAqCUluaXRTaG1lbUFsbG9jYXRvcigpIC0tLSBzZXQgdXAgYmFzaWMgcG9pbnRl cnMgdG8gc2hhcmVkIG1lbW9yeS4KICAqCkBAIC03MzIsNiArOTgxLDExIEBAIEluaXRTaG1lbUFs bG9jYXRvcihQR1NobWVtSGVhZGVyICpzZWdoZHIpCiAJCUFzc2VydCghZm91bmQpOwogCQlyZXN1 bHQtPnNpemUgPSBTaG1lbUFsbG9jYXRvci0+aW5kZXhfc2l6ZTsKIAkJcmVzdWx0LT5hbGxvY2F0 ZWRfc2l6ZSA9IFNobWVtQWxsb2NhdG9yLT5pbmRleF9zaXplOworI2lmZGVmIEhBVkVfUkVTSVpB QkxFX1NITUVNCisJCXJlc3VsdC0+bWluaW11bV9zaXplID0gcmVzdWx0LT5zaXplOworCQlyZXN1 bHQtPm1heGltdW1fc2l6ZSA9IHJlc3VsdC0+c2l6ZTsKKwkJcmVzdWx0LT5yZXNlcnZlZF9zcGFj ZSA9IHJlc3VsdC0+YWxsb2NhdGVkX3NpemU7CisjZW5kaWYKIAkJcmVzdWx0LT5sb2NhdGlvbiA9 IFNobWVtQWxsb2NhdG9yLT5pbmRleDsKIAl9CiB9CkBAIC0xMDc1LDcgKzEzMjksNyBAQCBtdWxf c2l6ZShTaXplIHMxLCBTaXplIHMyKQogRGF0dW0KIHBnX2dldF9zaG1lbV9hbGxvY2F0aW9ucyhQ R19GVU5DVElPTl9BUkdTKQogewotI2RlZmluZSBQR19HRVRfU0hNRU1fU0laRVNfQ09MUyA0Cisj ZGVmaW5lIFBHX0dFVF9TSE1FTV9TSVpFU19DT0xTIDcKIAlSZXR1cm5TZXRJbmZvICpyc2luZm8g PSAoUmV0dXJuU2V0SW5mbyAqKSBmY2luZm8tPnJlc3VsdGluZm87CiAJSEFTSF9TRVFfU1RBVFVT IGhzdGF0OwogCVNobWVtSW5kZXhFbnQgKmVudDsKQEAgLTEwOTcsNyArMTM1MSwxNyBAQCBwZ19n ZXRfc2htZW1fYWxsb2NhdGlvbnMoUEdfRlVOQ1RJT05fQVJHUykKIAkJdmFsdWVzWzFdID0gSW50 NjRHZXREYXR1bSgoY2hhciAqKSBlbnQtPmxvY2F0aW9uIC0gKGNoYXIgKikgU2htZW1TZWdIZHIp OwogCQl2YWx1ZXNbMl0gPSBJbnQ2NEdldERhdHVtKGVudC0+c2l6ZSk7CiAJCXZhbHVlc1szXSA9 IEludDY0R2V0RGF0dW0oZW50LT5hbGxvY2F0ZWRfc2l6ZSk7Ci0JCW5hbWVkX2FsbG9jYXRlZCAr PSBlbnQtPmFsbG9jYXRlZF9zaXplOworCQl2YWx1ZXNbNF0gPSBJbnQ2NEdldERhdHVtKGVudC0+ bWluaW11bV9zaXplKTsKKwkJdmFsdWVzWzVdID0gSW50NjRHZXREYXR1bShlbnQtPm1heGltdW1f c2l6ZSk7CisJCXZhbHVlc1s2XSA9IEludDY0R2V0RGF0dW0oZW50LT5yZXNlcnZlZF9zcGFjZSk7 CisKKwkJLyoKKwkJICogS2VlcCB0cmFjayBvZiB0aGUgdG90YWwgcmVzZXJ2ZWQgc3BhY2UgZm9y IG5hbWVkIHNobWVtIGFyZWFzLCB0byBiZQorCQkgKiBhYmxlIHRvIGNhbGN1bGF0ZSB0aGUgYW1v dW50IG9mIHNoYXJlZCBtZW1vcnkgYWxsb2NhdGVkIGZvcgorCQkgKiBhbm9ueW1vdXMgYXJlYXMg YW5kIHRoZSBhbW91bnQgb2YgZnJlZSBzaGFyZWQgbWVtb3J5IGF0IHRoZSBlbmQgb2YKKwkJICog dGhlIHNlZ21lbnQuCisJCSAqLworCQluYW1lZF9hbGxvY2F0ZWQgKz0gZW50LT5yZXNlcnZlZF9z cGFjZTsKIAogCQl0dXBsZXN0b3JlX3B1dHZhbHVlcyhyc2luZm8tPnNldFJlc3VsdCwgcnNpbmZv LT5zZXREZXNjLAogCQkJCQkJCSB2YWx1ZXMsIG51bGxzKTsKQEAgLTExMDgsNiArMTM3Miw5IEBA IHBnX2dldF9zaG1lbV9hbGxvY2F0aW9ucyhQR19GVU5DVElPTl9BUkdTKQogCW51bGxzWzFdID0g dHJ1ZTsKIAl2YWx1ZXNbMl0gPSBJbnQ2NEdldERhdHVtKFNobWVtQWxsb2NhdG9yLT5mcmVlX29m ZnNldCAtIG5hbWVkX2FsbG9jYXRlZCk7CiAJdmFsdWVzWzNdID0gdmFsdWVzWzJdOworCXZhbHVl c1s0XSA9IHZhbHVlc1syXTsKKwl2YWx1ZXNbNV0gPSB2YWx1ZXNbMl07CisJdmFsdWVzWzZdID0g dmFsdWVzWzJdOwogCXR1cGxlc3RvcmVfcHV0dmFsdWVzKHJzaW5mby0+c2V0UmVzdWx0LCByc2lu Zm8tPnNldERlc2MsIHZhbHVlcywgbnVsbHMpOwogCiAJLyogb3V0cHV0IGFzLW9mLXlldCB1bnVz ZWQgc2hhcmVkIG1lbW9yeSAqLwpAQCAtMTExNiw2ICsxMzgzLDkgQEAgcGdfZ2V0X3NobWVtX2Fs bG9jYXRpb25zKFBHX0ZVTkNUSU9OX0FSR1MpCiAJbnVsbHNbMV0gPSBmYWxzZTsKIAl2YWx1ZXNb Ml0gPSBJbnQ2NEdldERhdHVtKFNobWVtU2VnSGRyLT50b3RhbHNpemUgLSBTaG1lbUFsbG9jYXRv ci0+ZnJlZV9vZmZzZXQpOwogCXZhbHVlc1szXSA9IHZhbHVlc1syXTsKKwl2YWx1ZXNbNF0gPSB2 YWx1ZXNbMl07CisJdmFsdWVzWzVdID0gdmFsdWVzWzJdOworCXZhbHVlc1s2XSA9IHZhbHVlc1sy XTsKIAl0dXBsZXN0b3JlX3B1dHZhbHVlcyhyc2luZm8tPnNldFJlc3VsdCwgcnNpbmZvLT5zZXRE ZXNjLCB2YWx1ZXMsIG51bGxzKTsKIAogCUxXTG9ja1JlbGVhc2UoU2htZW1JbmRleExvY2spOwpA QCAtMTMwMywyMyArMTU3Myw5IEBAIHBnX2dldF9zaG1lbV9hbGxvY2F0aW9uc19udW1hKFBHX0ZV TkNUSU9OX0FSR1MpCiBTaXplCiBwZ19nZXRfc2htZW1fcGFnZXNpemUodm9pZCkKIHsKLQlTaXpl CQlvc19wYWdlX3NpemU7Ci0jaWZkZWYgV0lOMzIKLQlTWVNURU1fSU5GTyBzeXNpbmZvOwotCi0J R2V0U3lzdGVtSW5mbygmc3lzaW5mbyk7Ci0Jb3NfcGFnZV9zaXplID0gc3lzaW5mby5kd1BhZ2VT aXplOwotI2Vsc2UKLQlvc19wYWdlX3NpemUgPSBzeXNjb25mKF9TQ19QQUdFU0laRSk7Ci0jZW5k aWYKLQogCUFzc2VydChJc1VuZGVyUG9zdG1hc3Rlcik7Ci0JQXNzZXJ0KGh1Z2VfcGFnZXNfc3Rh dHVzICE9IEhVR0VfUEFHRVNfVU5LTk9XTik7Ci0KLQlpZiAoaHVnZV9wYWdlc19zdGF0dXMgPT0g SFVHRV9QQUdFU19PTikKLQkJR2V0SHVnZVBhZ2VTaXplKCZvc19wYWdlX3NpemUsIE5VTEwpOwog Ci0JcmV0dXJuIG9zX3BhZ2Vfc2l6ZTsKKwlyZXR1cm4gR2V0T1NQYWdlU2l6ZSgpOwogfQogCiBE YXR1bQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5k YXQgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdAppbmRleCBmY2I2 YWI4MDU4My4uMjJiN2U0NjFkM2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv Z3VjX3BhcmFtZXRlcnMuZGF0CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFt ZXRlcnMuZGF0CkBAIC0xMjE5LDYgKzEyMTksMTMgQEAKICAgbWF4ID0+ICcxMDAwLjAnLAogfSwK IAoreyBuYW1lID0+ICdoYXZlX3Jlc2l6YWJsZV9zaGFyZWRfbWVtb3J5JywgdHlwZSA9PiAnYm9v bCcsIGNvbnRleHQgPT4gJ1BHQ19JTlRFUk5BTCcsIGdyb3VwID0+ICdQUkVTRVRfT1BUSU9OUycs CisgIHNob3J0X2Rlc2MgPT4gJ1Nob3dzIHdoZXRoZXIgdGhlIHJ1bm5pbmcgc2VydmVyIHN1cHBv cnRzIHJlc2l6YWJsZSBzaGFyZWQgbWVtb3J5LicsCisgIGZsYWdzID0+ICdHVUNfTk9UX0lOX1NB TVBMRSB8IEdVQ19ESVNBTExPV19JTl9GSUxFJywKKyAgdmFyaWFibGUgPT4gJ2hhdmVfcmVzaXph YmxlX3NoYXJlZF9tZW1vcnlfZW5hYmxlZCcsCisgIGJvb3RfdmFsID0+ICdIQVZFX1JFU0laQUJM RV9TSEFSRURfTUVNT1JZX0VOQUJMRUQnLAorfSwKKwogeyBuYW1lID0+ICdoYmFfZmlsZScsIHR5 cGUgPT4gJ3N0cmluZycsIGNvbnRleHQgPT4gJ1BHQ19QT1NUTUFTVEVSJywgZ3JvdXAgPT4gJ0ZJ TEVfTE9DQVRJT05TJywKICAgc2hvcnRfZGVzYyA9PiAnU2V0cyB0aGUgc2VydmVyXCdzICJoYmEi IGNvbmZpZ3VyYXRpb24gZmlsZS4nLAogICBmbGFncyA9PiAnR1VDX1NVUEVSVVNFUl9PTkxZJywK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKaW5kZXggZDljYTEzYmFmZjkuLjkyNGY5NWE0 YTcwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwpAQCAtNjUzLDYgKzY1MywxMyBA QCBzdGF0aWMgYm9vbCBhc3NlcnRfZW5hYmxlZCA9IERFRkFVTFRfQVNTRVJUX0VOQUJMRUQ7CiAj ZW5kaWYKIHN0YXRpYyBib29sIGV4ZWNfYmFja2VuZF9lbmFibGVkID0gRVhFQ19CQUNLRU5EX0VO QUJMRUQ7CiAKKyNpZmRlZiBIQVZFX1JFU0laQUJMRV9TSE1FTQorI2RlZmluZSBIQVZFX1JFU0la QUJMRV9TSEFSRURfTUVNT1JZX0VOQUJMRUQgdHJ1ZQorI2Vsc2UKKyNkZWZpbmUgSEFWRV9SRVNJ WkFCTEVfU0hBUkVEX01FTU9SWV9FTkFCTEVEIGZhbHNlCisjZW5kaWYKK3N0YXRpYyBib29sIGhh dmVfcmVzaXphYmxlX3NoYXJlZF9tZW1vcnlfZW5hYmxlZCA9IEhBVkVfUkVTSVpBQkxFX1NIQVJF RF9NRU1PUllfRU5BQkxFRDsKKwogc3RhdGljIGNoYXIgKnJlY292ZXJ5X3RhcmdldF90aW1lbGlu ZV9zdHJpbmc7CiBzdGF0aWMgY2hhciAqcmVjb3ZlcnlfdGFyZ2V0X3N0cmluZzsKIHN0YXRpYyBj aGFyICpyZWNvdmVyeV90YXJnZXRfeGlkX3N0cmluZzsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0Cmlu ZGV4IDk5ZmE5YTZlZGUyLi4zYTYyMjUyNWRmYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBA IC04NzA5LDggKzg3MDksOCBAQAogeyBvaWQgPT4gJzUwNTInLCBkZXNjciA9PiAnYWxsb2NhdGlv bnMgZnJvbSB0aGUgbWFpbiBzaGFyZWQgbWVtb3J5IHNlZ21lbnQnLAogICBwcm9uYW1lID0+ICdw Z19nZXRfc2htZW1fYWxsb2NhdGlvbnMnLCBwcm9yb3dzID0+ICc1MCcsIHByb3JldHNldCA9PiAn dCcsCiAgIHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcmV0dHlwZSA9PiAncmVjb3JkJywgcHJvYXJn dHlwZXMgPT4gJycsCi0gIHByb2FsbGFyZ3R5cGVzID0+ICd7dGV4dCxpbnQ4LGludDgsaW50OH0n LCBwcm9hcmdtb2RlcyA9PiAne28sbyxvLG99JywKLSAgcHJvYXJnbmFtZXMgPT4gJ3tuYW1lLG9m ZixzaXplLGFsbG9jYXRlZF9zaXplfScsCisgIHByb2FsbGFyZ3R5cGVzID0+ICd7dGV4dCxpbnQ4 LGludDgsaW50OCxpbnQ4LGludDgsaW50OH0nLCBwcm9hcmdtb2RlcyA9PiAne28sbyxvLG8sbyxv LG99JywKKyAgcHJvYXJnbmFtZXMgPT4gJ3tuYW1lLG9mZixzaXplLGFsbG9jYXRlZF9zaXplLG1p bmltdW1fc2l6ZSxtYXhpbXVtX3NpemUscmVzZXJ2ZWRfc3BhY2V9JywKICAgcHJvc3JjID0+ICdw Z19nZXRfc2htZW1fYWxsb2NhdGlvbnMnLAogICBwcm9hY2wgPT4gJ3tQT1NUR1JFUz1YLHBnX3Jl YWRfYWxsX3N0YXRzPVh9JyB9LAogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wZ19jb25maWcu aC5pbiBiL3NyYy9pbmNsdWRlL3BnX2NvbmZpZy5oLmluCmluZGV4IDRmODExM2MxNDRiLi44OWM0 ODcxNTMyZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGdfY29uZmlnLmguaW4KKysrIGIvc3Jj L2luY2x1ZGUvcGdfY29uZmlnLmguaW4KQEAgLTg1LDYgKzg1LDE0IEBACiAgICBkb24ndC4gKi8K ICN1bmRlZiBIQVZFX0RFQ0xfRl9GVUxMRlNZTkMKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhh dmUgdGhlIGRlY2xhcmF0aW9uIG9mIGBNQURWX1BPUFVMQVRFX1dSSVRFJywgYW5kIHRvIDAKKyAg IGlmIHlvdSBkb24ndC4gKi8KKyN1bmRlZiBIQVZFX0RFQ0xfTUFEVl9QT1BVTEFURV9XUklURQor CisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZGVjbGFyYXRpb24gb2YgYE1BRFZfUkVN T1ZFJywgYW5kIHRvIDAgaWYgeW91CisgICBkb24ndC4gKi8KKyN1bmRlZiBIQVZFX0RFQ0xfTUFE Vl9SRU1PVkUKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGRlY2xhcmF0aW9uIG9m IGBtZW1zZXRfcycsIGFuZCB0byAwIGlmIHlvdQogICAgZG9uJ3QuICovCiAjdW5kZWYgSEFWRV9E RUNMX01FTVNFVF9TCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wZ19jb25maWdfbWFudWFsLmgg Yi9zcmMvaW5jbHVkZS9wZ19jb25maWdfbWFudWFsLmgKaW5kZXggNTIxYjQ5Yjg4ODguLmIwOWQ2 YzkxMzI0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wZ19jb25maWdfbWFudWFsLmgKKysrIGIv c3JjL2luY2x1ZGUvcGdfY29uZmlnX21hbnVhbC5oCkBAIC0xMzEsNiArMTMxLDE1IEBACiAjZGVm aW5lIEVYRUNfQkFDS0VORAogI2VuZGlmCiAKKy8qCisgKiBIQVZFX1JFU0laQUJMRV9TSE1FTSBp bmRpY2F0ZXMgd2hldGhlciByZXNpemFibGUgc2hhcmVkIG1lbW9yeSBzdHJ1Y3R1cmVzIGFyZQor ICogc3VwcG9ydGVkLiBUaGUgaW1wbGVtZW50YXRpb24gcmVxdWlyZXMgTGludXgtc3BlY2lmaWMg bWFkdmlzZSBjb25zdGFudHMKKyAqIChNQURWX1JFTU9WRSBhbmQgTUFEVl9QT1BVTEFURV9XUklU RSkuCisgKi8KKyNpZiBIQVZFX0RFQ0xfTUFEVl9SRU1PVkUgJiYgSEFWRV9ERUNMX01BRFZfUE9Q VUxBVEVfV1JJVEUgJiYgIWRlZmluZWQoRVhFQ19CQUNLRU5EKQorI2RlZmluZSBIQVZFX1JFU0la QUJMRV9TSE1FTQorI2VuZGlmCisKIC8qCiAgKiBVU0VfUE9TSVhfRkFEVklTRSBjb250cm9scyB3 aGV0aGVyIFBvc3RncmVzIHdpbGwgYXR0ZW1wdCB0byB1c2UgdGhlCiAgKiBwb3NpeF9mYWR2aXNl KCkga2VybmVsIGNhbGwuICBVc3VhbGx5IHRoZSBhdXRvbWF0aWMgY29uZmlndXJlIHRlc3RzIGFy ZQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wZ19zaG1lbS5oIGIvc3JjL2luY2x1 ZGUvc3RvcmFnZS9wZ19zaG1lbS5oCmluZGV4IDEwYzdiMDY1ODYxLi5mMGVmYmYyYWVjMSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wZ19zaG1lbS5oCisrKyBiL3NyYy9pbmNsdWRl L3N0b3JhZ2UvcGdfc2htZW0uaApAQCAtODksNiArODksOSBAQCBleHRlcm4gUEdTaG1lbUhlYWRl ciAqUEdTaGFyZWRNZW1vcnlDcmVhdGUoU2l6ZSBzaXplLAogCQkJCQkJCQkJCSAgIFBHU2htZW1I ZWFkZXIgKipzaGltKTsKIGV4dGVybiBib29sIFBHU2hhcmVkTWVtb3J5SXNJblVzZSh1bnNpZ25l ZCBsb25nIGlkMSwgdW5zaWduZWQgbG9uZyBpZDIpOwogZXh0ZXJuIHZvaWQgUEdTaGFyZWRNZW1v cnlEZXRhY2godm9pZCk7CitleHRlcm4gdm9pZCBQR1NoYXJlZE1lbW9yeUVuc3VyZUZyZWVkKHZv aWQgKmFkZHIsIFNpemUgc2l6ZSk7CitleHRlcm4gdm9pZCBQR1NoYXJlZE1lbW9yeUVuc3VyZUFs bG9jYXRlZCh2b2lkICphZGRyLCBTaXplIHNpemUpOwogZXh0ZXJuIHZvaWQgR2V0SHVnZVBhZ2VT aXplKFNpemUgKmh1Z2VwYWdlc2l6ZSwgaW50ICptbWFwX2ZsYWdzKTsKK2V4dGVybiBTaXplIEdl dE9TUGFnZVNpemUodm9pZCk7CiAKICNlbmRpZgkJCQkJCQkvKiBQR19TSE1FTV9IICovCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3NobWVtLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdl L3NobWVtLmgKaW5kZXggYWY3ZmU4OTNiYzQuLjBlNmQ1YTYzZjI4IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9zdG9yYWdlL3NobWVtLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1lbS5o CkBAIC01Nyw2ICs1NywyMiBAQCB0eXBlZGVmIHN0cnVjdCBTaG1lbVN0cnVjdE9wdHMKIAkgKi8K IAlzaXplX3QJCWFsaWdubWVudDsKIAorCS8qCisJICogTWluaW11bSBzaXplIHRoaXMgc3RydWN0 dXJlIGNhbiBzaHJpbmsgdG8uIFNob3VsZCBiZSBzZXQgdG8gMCBmb3IKKwkgKiBmaXhlZC1zaXpl IHN0cnVjdHVyZXMuCisJICovCisJc3NpemVfdAkJbWluaW11bV9zaXplOworCisJLyoKKwkgKiBN YXhpbXVtIHNpemUgdGhpcyBzdHJ1Y3R1cmUgY2FuIGdyb3cgdXB0byBpbiBmdXR1cmUuIFRoZSBt ZW1vcnkgaXMgbm90CisJICogYWxsb2NhdGVkIHJpZ2h0IGF3YXkgYnV0IHRoZSBjb3JyZXNwb25k aW5nIGFkZHJlc3Mgc3BhY2UgaXMgcmVzZXJ2ZWQgc28KKwkgKiB0aGF0IG1lbW9yeSBjYW4gYmUg bWFwcGVkIHRvIGl0IHdoZW4gdGhlIHN0cnVjdHVyZSBncm93cy4gVHlwaWNhbGx5CisJICogc2hv dWxkIGJlIHVzZWQgZm9yIGxhcmdlIHJlc2l6YWJsZSBzdHJ1Y3R1cmVzIHdoaWNoIG5lZWQgc2V2 ZXJhbCBwYWdlcworCSAqIHdvcnRoIG9mIGNvbnRpZ3VvdXMgbWVtb3J5LiBTaG91bGQgYmUgc2V0 IHRvIDAgZm9yIGZpeGVkLXNpemUKKwkgKiBzdHJ1Y3R1cmVzLgorCSAqLworCXNzaXplX3QJCW1h eGltdW1fc2l6ZTsKKwogCS8qCiAJICogV2hlbiB0aGUgc2htZW0gYXJlYSBpcyBpbml0aWFsaXpl ZCBvciBhdHRhY2hlZCB0bywgcG9pbnRlciB0byBpdCBpcwogCSAqIHN0b3JlZCBpbiAqcHRyLiAg SXQgdXN1YWxseSBwb2ludHMgdG8gYSBnbG9iYWwgdmFyaWFibGUsIHVzZWQgdG8gYWNjZXNzCkBA IC0xNjgsNiArMTg0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgU2htZW1DYWxsYmFja3MKIAogZXh0ZXJu IHZvaWQgUmVnaXN0ZXJTaG1lbUNhbGxiYWNrcyhjb25zdCBTaG1lbUNhbGxiYWNrcyAqY2FsbGJh Y2tzKTsKIGV4dGVybiBib29sIFNobWVtQWRkcklzVmFsaWQoY29uc3Qgdm9pZCAqYWRkcik7Citl eHRlcm4gdm9pZCBTaG1lbVJlc2l6ZVN0cnVjdChjb25zdCBjaGFyICpuYW1lLCBTaXplIG5ld19z aXplKTsKIAogLyoKICAqIFRoZXNlIG1hY3JvcyBwcm92aWRlIHN5bnRhY3RpYyBzdWdhciBmb3Ig Y2FsbGluZyB0aGUgdW5kZXJseWluZyBmdW5jdGlvbnMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21v ZHVsZXMvdGVzdF9zaG1lbS9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1l bS9tZXNvbi5idWlsZAppbmRleCBmYjRiZjMyOGI4Zi4uYmY3MGIzMmFhMWIgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS9tZXNvbi5idWlsZAorKysgYi9zcmMvdGVzdC9t b2R1bGVzL3Rlc3Rfc2htZW0vbWVzb24uYnVpbGQKQEAgLTI4LDYgKzI4LDcgQEAgdGVzdHMgKz0g ewogICAndGFwJzogewogICAgICd0ZXN0cyc6IFsKICAgICAgICd0LzAwMV9sYXRlX3NobWVtX2Fs bG9jLnBsJywKKyAgICAgICd0LzAwMl9yZXNpemFibGVfc2htZW0ucGwnLAogICAgIF0sCiAgIH0s CiB9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htZW0vdC8wMDFfbGF0ZV9z aG1lbV9hbGxvYy5wbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS90LzAwMV9sYXRlX3No bWVtX2FsbG9jLnBsCmluZGV4IGMxNTRmNTc2ODJhLi45MmE4ZjNiNDg3MyAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobWVtL3QvMDAxX2xhdGVfc2htZW1fYWxsb2MucGwKKysr IGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobWVtL3QvMDAxX2xhdGVfc2htZW1fYWxsb2MucGwK QEAgLTQ1LDUgKzQ1LDM2IEBAIGVsc2UKICAgIG9rKCRhdHRhY2hfY291bnQxID09IDAgJiYgJGF0 dGFjaF9jb3VudDIgPT0gMCwgImF0dGFjaCBjYWxsYmFjayBpcyBub3QgY2FsbGVkIHdoZW4gbG9h ZGVkIHZpYSBzaGFyZWRfcHJlbG9hZF9saWJyYXJpZXMiKTsKIH0KIAorIyMjCisjIFRlc3QgdGhh dCBhIGZpeGVkLXNpemUgc2hhcmVkIG1lbW9yeSBzdHJ1Y3R1cmUgY2Fubm90IGJlIHJlc2l6ZWQu CisjIE9ubHkgcmVsZXZhbnQgb24gcGxhdGZvcm1zIHRoYXQgc3VwcG9ydCByZXNpemFibGUgc2ht ZW0uCisjIyMKK215ICRoYXZlX3Jlc2l6YWJsZV9zaG1lbSA9CisgICRub2RlLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgJ1NIT1cgaGF2ZV9yZXNpemFibGVfc2hhcmVkX21lbW9yeTsnKSBlcSAnb24n OworCitpZiAoJGhhdmVfcmVzaXphYmxlX3NobWVtKQoreworICAgIyBUcnkgZXhwYW5kaW5nIHRo ZSBmaXhlZC1zaXplIHN0cnVjdHVyZQorICAgbXkgKCRyZXQsICRzdGRvdXQsICRzdGRlcnIpID0K KyAgICAgJG5vZGUtPnBzcWwoInBvc3RncmVzIiwgIlNFTEVDVCB0ZXN0X3NobWVtX3Jlc2l6ZV9m aXhlZCgxMDAwKTsiKTsKKyAgIGlzbnQoJHJldCwgMCwgImV4cGFuZGluZyBhIGZpeGVkLXNpemUg c3RydWN0dXJlIGZhaWxzIik7CisgICBsaWtlKCRzdGRlcnIsIHFyL2lzIG5vdCByZXNpemFibGUv LCAiZXhwYW5kIGVycm9yIG1lc3NhZ2UgbWVudGlvbnMgbm90IHJlc2l6YWJsZSIpOworCisgICAj IFRyeSBzaHJpbmtpbmcgdGhlIGZpeGVkLXNpemUgc3RydWN0dXJlCisgICAoJHJldCwgJHN0ZG91 dCwgJHN0ZGVycikgPQorICAgICAkbm9kZS0+cHNxbCgicG9zdGdyZXMiLCAiU0VMRUNUIHRlc3Rf c2htZW1fcmVzaXplX2ZpeGVkKDEpOyIpOworICAgaXNudCgkcmV0LCAwLCAic2hyaW5raW5nIGEg Zml4ZWQtc2l6ZSBzdHJ1Y3R1cmUgZmFpbHMiKTsKKyAgIGxpa2UoJHN0ZGVyciwgcXIvaXMgbm90 IHJlc2l6YWJsZS8sICJzaHJpbmsgZXJyb3IgbWVzc2FnZSBtZW50aW9ucyBub3QgcmVzaXphYmxl Iik7Cit9CisKKyMjIworIyBUZXN0IHRoYXQgbWluaW11bV9zaXplIGFuZCBtYXhpbXVtX3NpemUg ZXF1YWwgc2l6ZSBmb3IgYSBmaXhlZC1zaXplIHN0cnVjdHVyZQorIyBpbiBwZ19zaG1lbV9hbGxv Y2F0aW9ucy4KKyMjIworaXMoJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorICAgIlNFTEVD VCBtaW5pbXVtX3NpemUgPSBzaXplIEFORCBtYXhpbXVtX3NpemUgPSBzaXplIEZST00gcGdfc2ht ZW1fYWxsb2NhdGlvbnMgV0hFUkUgbmFtZSA9ICd0ZXN0X3NobWVtIGFyZWEnOyIpLAorICAgJ3Qn LCAiZml4ZWQtc2l6ZSBzdHJ1Y3R1cmUgaGFzIG1pbmltdW1fc2l6ZSA9IG1heGltdW1fc2l6ZSA9 IHNpemUiKTsKKwogJG5vZGUtPnN0b3A7CisKIGRvbmVfdGVzdGluZygpOwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobWVtL3QvMDAyX3Jlc2l6YWJsZV9zaG1lbS5wbCBiL3Ny Yy90ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS90LzAwMl9yZXNpemFibGVfc2htZW0ucGwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjFjN2E2MDQwN2Q4Ci0tLSAvZGV2L251 bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobWVtL3QvMDAyX3Jlc2l6YWJsZV9zaG1l bS5wbApAQCAtMCwwICsxLDI0MCBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjUtMjAyNiwgUG9zdGdy ZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5n cyBGQVRBTCA9PiAnYWxsJzsKKwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2Ug UG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKKworIyBUZXN0IHJlc2l6 YWJsZSBzaGFyZWQgbWVtb3J5IGZ1bmN0aW9uYWxpdHksIGJvdGggd2hlbiBsb2FkZWQgYXQgc3Rh cnR1cCB2aWEKKyMgc2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzIGFuZCB3aGVuIGxvYWRlZCBhZnRl ciBzdGFydHVwIChsYXRlIGFsbG9jYXRpb24pLgorCisjIFZlcmlmeSB0aGF0IFJzc1NobWVtIGRv ZXMgbm90IGV4Y2VlZCB0aGUgdG90YWwgYWxsb2NhdGVkIHNoYXJlZCBtZW1vcnkuCisjIEFsbG9j YXRlZCBzaGFyZWQgbWVtb3J5IHNob3VsZCBiZSBtb3N0bHkgdGhlIG1lbW9yeSBhbGxvY2F0ZWQg dG8gdGhlIHJlc2l6YWJsZQorIyBzdHJ1Y3R1cmUuIEFueSBsYXJnZSBpbmNyZWFzZSBpbiBleHBl Y3RlZCBSc3NTaG1lbSBzaG91bGQgcmVmbGVjdCB0aGUKKyMgdW5leHBlY3RlZCBpbmNyZWFzZSBp biBtZW1vcnkgYWxsb2NhdGVkIHRvIHRoZSByZXNpemFibGUgc3RydWN0dXJlLgorc3ViIGNoZWNr X3NobWVtX3VzYWdlCit7CisJbXkgKCRzZXNzaW9uLCAkbGFiZWwsICRub2RlKSA9IEBfOworCisJ bXkgJHJzc19zaG1lbSA9ICRzZXNzaW9uLT5xdWVyeV9zYWZlKCdTRUxFQ1QgcmVzaXphYmxlX3No bWVtX3VzYWdlKCk7JywKKwkJCQkJCQkJCQkgdmVyYm9zZSA9PiAwKTsKKwlteSAkdG90YWxfYWxs b2MgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCQkJCQkJCQkgICAiU0VMRUNUIHN1 bShhbGxvY2F0ZWRfc2l6ZSkgRlJPTSBwZ19zaG1lbV9hbGxvY2F0aW9uczsiKTsKKworCW5vdGUg IiRsYWJlbDogUnNzU2htZW09JHJzc19zaG1lbSwgc3VtKGFsbG9jYXRlZF9zaXplKT0kdG90YWxf YWxsb2MiOworCW9rKCRyc3Nfc2htZW0gPD0gJHRvdGFsX2FsbG9jLCAiJGxhYmVsOiBSc3NTaG1l bSBkb2VzIG5vdCBleGNlZWQgdG90YWwgYWxsb2NhdGVkIHNpemUiKTsKK30KKworIyBUZXN0IGEg cmVzaXplIG9wZXJhdGlvbjogcmVzaXplLCB2ZXJpZnkgb2xkIGRhdGEsIHdyaXRlIG5ldyBkYXRh LCB2ZXJpZnkKKyMgbmV3IGRhdGEsIGFuZCBjaGVjayBzaG1lbSB1c2FnZS4gIFJldHVybnMgdXBk YXRlZCAoJG51bV9lbnRyaWVzLCAkdmFsdWUpLgorc3ViIHRlc3RfcmVzaXplCit7CisJbXkgKCRu b2RlLCAkcHJlZml4LCAkb2xkX251bV9lbnRyaWVzLCAkb2xkX3ZhbHVlLCAkbmV3X251bV9lbnRy aWVzLCAkbmV3X3ZhbHVlLCAkbGFiZWwpID0gQF87CisKKwkkbGFiZWwgPSAiJHByZWZpeDogJGxh YmVsIjsKKworCW15ICRzZXNzaW9uMSA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVz Jyk7CisJbXkgJHNlc3Npb24yID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnKTsK KworCSRzZXNzaW9uMS0+cXVlcnlfc2FmZSgiU0VMRUNUIHJlc2l6YWJsZV9zaG1lbV9yZXNpemUo JG5ld19udW1fZW50cmllcyk7IiwKKwkJCQkJCSAgdmVyYm9zZSA9PiAwKTsKKworCSMgT2xkIGRh dGEgc2hvdWxkIHN0aWxsIGJlIGludGFjdCBpbiB0aGUgKHBvc3NpYmx5IHNtYWxsZXIpIGFyZWEK KwlteSAkcmVhZGFibGVfZW50cmllcyA9ICgkbmV3X251bV9lbnRyaWVzIDwgJG9sZF9udW1fZW50 cmllcykgPyAkbmV3X251bV9lbnRyaWVzIDogJG9sZF9udW1fZW50cmllczsKKwlpcygkc2Vzc2lv bjEtPnF1ZXJ5X3NhZmUoIlNFTEVDVCByZXNpemFibGVfc2htZW1fcmVhZCgkcmVhZGFibGVfZW50 cmllcywgJG9sZF92YWx1ZSk7IiwKKwkJCQkJCQkgdmVyYm9zZSA9PiAwKSwKKwkgICAndCcsICJv bGQgZGF0YSByZWFkYWJsZSBhZnRlciAkbGFiZWwiKTsKKworCSRzZXNzaW9uMi0+cXVlcnlfc2Fm ZSgiU0VMRUNUIHJlc2l6YWJsZV9zaG1lbV93cml0ZSgkbmV3X3ZhbHVlKTsiLAorCQkJCQkJICB2 ZXJib3NlID0+IDApOworCWlzKCRzZXNzaW9uMS0+cXVlcnlfc2FmZSgiU0VMRUNUIHJlc2l6YWJs ZV9zaG1lbV9yZWFkKCRuZXdfbnVtX2VudHJpZXMsICRuZXdfdmFsdWUpOyIsCisJCQkJCQkJIHZl cmJvc2UgPT4gMCksCisJICAgJ3QnLCAibmV3IGRhdGEgcmVhZGFibGUgYWZ0ZXIgJGxhYmVsIik7 CisKKwljaGVja19zaG1lbV91c2FnZSgkc2Vzc2lvbjEsICIkbGFiZWwgKHNlc3Npb24gMSkiLCAk bm9kZSk7CisJY2hlY2tfc2htZW1fdXNhZ2UoJHNlc3Npb24yLCAiJGxhYmVsIChzZXNzaW9uIDIp IiwgJG5vZGUpOworCisJJHNlc3Npb24xLT5xdWl0OworCSRzZXNzaW9uMi0+cXVpdDsKKworCXJl dHVybiAoJG5ld19udW1fZW50cmllcywgJG5ld192YWx1ZSk7Cit9CisKKyMgUnVuIHRoZSBmdWxs IHN1aXRlIG9mIHJlc2l6YWJsZSBzaGFyZWQgbWVtb3J5IHRlc3RzIG9uIHRoZSBnaXZlbiBub2Rl Lgorc3ViIHJ1bl9yZXNpemFibGVfdGVzdHMKK3sKKwlteSAoJG5vZGUsICRpbml0aWFsX2VudHJp ZXMsICRtYXhfZW50cmllcywgJHByZWZpeCkgPSBAXzsKKworCW15ICRoYXZlX3Jlc2l6YWJsZV9z aG1lbSA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1NIT1cgaGF2ZV9yZXNpemFibGVf c2hhcmVkX21lbW9yeTsnKSBlcSAnb24nOworCisJbXkgJG51bV9lbnRyaWVzID0gJGluaXRpYWxf ZW50cmllczsKKworCSMgQmFzaWMgcmVhZC93cml0ZSBzaG91bGQgd29yayBvbiBhbGwgcGxhdGZv cm1zCisJbXkgJHZhbHVlID0gMTAwOworCSRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNF TEVDVCByZXNpemFibGVfc2htZW1fd3JpdGUoJHZhbHVlKTsiKTsKKwlpcygkbm9kZS0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcmVzaXphYmxlX3NobWVtX3JlYWQoJG51bV9lbnRyaWVz LCAkdmFsdWUpOyIpLAorCSAgICd0JywgIiRwcmVmaXg6IGRhdGEgcmVhZCBhZnRlciB3cml0ZSBz dWNjZXNzZnVsIik7CisKKwlpZiAoJGhhdmVfcmVzaXphYmxlX3NobWVtKQorCXsKKwkJIyBJbml0 aWFsIHN0cnVjdHVyZSBzdGF0ZQorCQlteSAkc2Vzc2lvbjEgPSAkbm9kZS0+YmFja2dyb3VuZF9w c3FsKCdwb3N0Z3JlcycpOworCQlteSAkc2Vzc2lvbjIgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3Fs KCdwb3N0Z3JlcycpOworCisJCSR2YWx1ZSA9IDEwMDsKKwkJIyBXcml0ZSBhbmQgcmVhZCB0aGUg aW5pdGlhbCBzZXQgb2YgZW50cmllcy4KKwkJJHNlc3Npb24xLT5xdWVyeV9zYWZlKCJTRUxFQ1Qg cmVzaXphYmxlX3NobWVtX3dyaXRlKCR2YWx1ZSk7IiwgdmVyYm9zZSA9PiAwKTsKKwkJaXMoJHNl c3Npb24yLT5xdWVyeV9zYWZlKCJTRUxFQ1QgcmVzaXphYmxlX3NobWVtX3JlYWQoJG51bV9lbnRy aWVzLCAkdmFsdWUpOyIsCisJCQkJCQkJCSB2ZXJib3NlID0+IDApLAorCQkgICAndCcsICIkcHJl Zml4OiBkYXRhIHJlYWQgYWZ0ZXIgd3JpdGUgc3VjY2Vzc2Z1bCIpOworCQljaGVja19zaG1lbV91 c2FnZSgkc2Vzc2lvbjEsICIkcHJlZml4OiBpbml0aWFsIHdyaXRlIChzZXNzaW9uIDEpIiwgJG5v ZGUpOworCQljaGVja19zaG1lbV91c2FnZSgkc2Vzc2lvbjIsICIkcHJlZml4OiBpbml0aWFsIHdy aXRlIChzZXNzaW9uIDIpIiwgJG5vZGUpOworCQkkc2Vzc2lvbjEtPnF1aXQ7CisJCSRzZXNzaW9u Mi0+cXVpdDsKKworCQkjIFZlcmlmeSBubyBvdGhlciBzdHJ1Y3R1cmUgaXMgcmVzaXphYmxlCisJ CWlzKCRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBn X3NobWVtX2FsbG9jYXRpb25zIFdIRVJFIG5hbWUgPD4gJ3Jlc2l6YWJsZV9zaG1lbScgQU5EIG1h eGltdW1fc2l6ZSA8PiBtaW5pbXVtX3NpemU7IiksCisJCQkJCQkJJzAnLCAiJHByZWZpeDogbm8g b3RoZXIgcmVzaXphYmxlIHN0cnVjdHVyZXMiKTsKKworCQkjIFJlc2l6ZSB0byBtYXhpbXVtCisJ CSgkbnVtX2VudHJpZXMsICR2YWx1ZSkgPSB0ZXN0X3Jlc2l6ZSgkbm9kZSwgJHByZWZpeCwgJG51 bV9lbnRyaWVzLCAkdmFsdWUsCisJCQkJCQkJCQkJCSAkbWF4X2VudHJpZXMsIDUwMCwgJ3Jlc2l6 ZSB0byBtYXhpbXVtJyk7CisKKwkJIyBTaHJpbmsgdG8gNzUlIG9mIG1heAorCQlteSAkc2hyaW5r X2VudHJpZXMgPSBpbnQoJG1heF9lbnRyaWVzICogMyAvIDQpOworCQkoJG51bV9lbnRyaWVzLCAk dmFsdWUpID0gdGVzdF9yZXNpemUoJG5vZGUsICRwcmVmaXgsICRudW1fZW50cmllcywgJHZhbHVl LAorCQkJCQkJCQkJCQkgJHNocmlua19lbnRyaWVzLCA5OTksICdzaHJpbmtpbmcnKTsKKworCQkj IFJlc2l6ZSB0byB0aGUgc2FtZSBzaXplIChuby1vcCkKKwkJKCRudW1fZW50cmllcywgJHZhbHVl KSA9IHRlc3RfcmVzaXplKCRub2RlLCAkcHJlZml4LCAkbnVtX2VudHJpZXMsICR2YWx1ZSwKKwkJ CQkJCQkJCQkJICRudW1fZW50cmllcywgMTk5OSwgJ25vLW9wIHJlc2l6ZScpOworCisJCSMgVGVz dCByZXNpemUgZmFpbHVyZSAoYXR0ZW1wdCB0byByZXNpemUgYmV5b25kIG1heCAtIHNob3VsZCBm YWlsKQorCQlteSAoJHJldCwgJHN0ZG91dCwgJHN0ZGVycikgPQorCQkJJG5vZGUtPnBzcWwoJ3Bv c3RncmVzJywgIlNFTEVDVCByZXNpemFibGVfc2htZW1fcmVzaXplKCIgLiAoJG1heF9lbnRyaWVz ICogMikgLiAiKTsiKTsKKwkJb2soJHJldCAhPSAwIHx8ICRzdGRlcnIgPX4gL0VSUk9SLywgIiRw cmVmaXg6IFJlc2l6ZSBiZXlvbmQgbWF4aW11bSBmYWlscyIpOworCX0KKwllbHNlCisJeworCQkj IE9uIHVuc3VwcG9ydGVkIHBsYXRmb3JtcywgcmVzaXppbmcgc2hvdWxkIGZhaWwgd2l0aCBhIGNs ZWFyIGVycm9yCisJCW15ICgkcmV0LCAkc3Rkb3V0LCAkc3RkZXJyKSA9CisJCQkkbm9kZS0+cHNx bCgncG9zdGdyZXMnLCAiU0VMRUNUIHJlc2l6YWJsZV9zaG1lbV9yZXNpemUoJG51bV9lbnRyaWVz KTsiKTsKKwkJb2soJHJldCAhPSAwLCAiJHByZWZpeDogcmVzaXplIGZhaWxzIG9uIHVuc3VwcG9y dGVkIHBsYXRmb3JtIik7CisJCWxpa2UoJHN0ZGVyciwgcXIvbm90IHN1cHBvcnRlZC8sICIkcHJl Zml4OiByZXNpemUgZXJyb3IgbWVudGlvbnMgbm90IHN1cHBvcnRlZCIpOworCX0KK30KKworIyMj IFNldCB1cCBhIHRlc3Qgbm9kZS4KKyMKKyNDb25maWd1cmUgbWluaW1hbCBzaGFyZWQgbWVtb3J5 IHNvIHRoYXQgdGhlIHJlc2l6YWJsZV9zaG1lbSBzdHJ1Y3R1cmUgZG9taW5hdGVzCisjYW5kIGFu eSB1bmV4cGVjdGVkIGluY3JlYXNlIGlzIGVhc3kgdG8gZGV0ZWN0LgorIworIyBBbHNvIGRpc2Fi bGUgaHVnZSBwYWdlcyBzbyB0aGF0IFJzc1NobWVtIGFuZCBhbGxvY2F0ZWRfc2l6ZSBhcmUgY29t cGFyYWJsZS4KKyMgVGhlIGxhdHRlciBpcyBhbHJlYWR5IGFsaWduZWQgdG8gdGhlIGRlZmF1bHQg cGFnZSBzaXplLgorIyMjCitteSAkbm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5l dygncmVzaXphYmxlX3NobWVtJyk7Ciskbm9kZS0+aW5pdDsKKworJG5vZGUtPmFwcGVuZF9jb25m KCdwb3N0Z3Jlc3FsLmNvbmYnLCAnaHVnZV9wYWdlcyA9IG9mZicpOworJG5vZGUtPmFwcGVuZF9j b25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAnc2hhcmVkX2J1ZmZlcnMgPSAxMjhrQicpOworJG5vZGUt PmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAnbWF4X2Nvbm5lY3Rpb25zID0gNScpOwor JG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAnbWF4X3dvcmtlcl9wcm9jZXNz ZXMgPSAwJyk7Ciskbm9kZS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICdtYXhfd2Fs X3NlbmRlcnMgPSAwJyk7Ciskbm9kZS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICdt YXhfcHJlcGFyZWRfdHJhbnNhY3Rpb25zID0gMCcpOworJG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0 Z3Jlc3FsLmNvbmYnLCAnbWF4X2xvY2tzX3Blcl90cmFuc2FjdGlvbiA9IDEwJyk7Ciskbm9kZS0+ YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICdtYXhfcHJlZF9sb2Nrc19wZXJfdHJhbnNh Y3Rpb24gPSAxMCcpOworJG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAnd2Fs X2J1ZmZlcnMgPSAzMmtCJyk7CisKKyMjIworIyBUZXN0IDE6IFN0YXJ0dXAgYWxsb2NhdGlvbiB2 aWEgc2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzCisjIyMKK215ICRzdGFydHVwX2luaXRpYWwgPSAy NSAqIDEwMjQgKiAxMDI0OworbXkgJHN0YXJ0dXBfbWF4ID0gMTAwICogMTAyNCAqIDEwMjQ7CisK KyRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgJ3NoYXJlZF9wcmVsb2FkX2xp YnJhcmllcyA9IHRlc3Rfc2htZW0nKTsKKyRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5j b25mJywgInRlc3Rfc2htZW0uaW5pdGlhbF9lbnRyaWVzID0gJHN0YXJ0dXBfaW5pdGlhbCIpOwor JG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAidGVzdF9zaG1lbS5tYXhfZW50 cmllcyA9ICRzdGFydHVwX21heCIpOworJG5vZGUtPnN0YXJ0OworJG5vZGUtPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAnQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X3NobWVtOycpOworcnVuX3Jlc2l6YWJs ZV90ZXN0cygkbm9kZSwgJHN0YXJ0dXBfaW5pdGlhbCwgJHN0YXJ0dXBfbWF4LCAnc3RhcnR1cCcp OworCisjIyMKKyMgVGVzdCAyOiBMYXRlIGFsbG9jYXRpb24gKGxvYWRlZCBhZnRlciBzdGFydHVw LCBub3QgaW4gc2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzKS4KKyMgVXNlIG11Y2ggc21hbGxlciBz aXplcyBzaW5jZSBvbmx5IH4xMDBLQiBvZiBzaGFyZWQgbWVtb3J5IGlzIGF2YWlsYWJsZSBmb3IK KyMgc3RydWN0dXJlcyBhbGxvY2F0ZWQgYWZ0ZXIgc3RhcnR1cC4KKyMjIworbXkgJGxhdGVfaW5p dGlhbCA9IDUgKiAxMDI0OworbXkgJGxhdGVfbWF4ID0gMTIgKiAxMDI0OworCiskbm9kZS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsIHFxeworCUFMVEVSIFNZU1RFTSBSRVNFVCBzaGFyZWRfcHJlbG9h ZF9saWJyYXJpZXM7CisJQUxURVIgU1lTVEVNIFNFVCB0ZXN0X3NobWVtLmluaXRpYWxfZW50cmll cyA9ICRsYXRlX2luaXRpYWw7CisJQUxURVIgU1lTVEVNIFNFVCB0ZXN0X3NobWVtLm1heF9lbnRy aWVzID0gJGxhdGVfbWF4OworfSk7Ciskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9Q IEVYVEVOU0lPTiB0ZXN0X3NobWVtOycpOworJG5vZGUtPnJlc3RhcnQ7CisKKyRub2RlLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgJ0NSRUFURSBFWFRFTlNJT04gdGVzdF9zaG1lbTsnKTsKK3J1bl9y ZXNpemFibGVfdGVzdHMoJG5vZGUsICRsYXRlX2luaXRpYWwsICRsYXRlX21heCwgJ2xhdGUnKTsK KworIyMjCisjIFRlc3Qgc3lzdiBzaGFyZWQgbWVtb3J5IGRvZXMgbm90IHN1cHBvcnQgcmVzaXph YmxlIHNobWVtLiAgT25seSByZWxldmFudCBvbgorIyBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0IHJl c2l6YWJsZSBzaG1lbSAoSEFWRV9SRVNJWkFCTEVfU0hNRU0pLCBzaW5jZSB0aGUKKyMgbW9kdWxl IG9ubHkgc2V0cyBtYXhpbXVtX3NpemUgaW4gdGhhdCBjYXNlLgorIyMjCitteSAkcmVzaXphYmxl X3NobWVtX2JpbmFyeSA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1NIT1cgaGF2ZV9y ZXNpemFibGVfc2hhcmVkX21lbW9yeTsnKSBlcSAnb24nOworaWYgKCRyZXNpemFibGVfc2htZW1f YmluYXJ5KQoreworCSMjIworCSMgVGVzdCAzOiBWZXJpZnkgdGhhdCBDUkVBVEUgRVhURU5TSU9O IGZhaWxzIHdpdGggc3lzdiBzaGFyZWQgbWVtb3J5CisJIyB3aGVuIGxvYWRlZCBhZnRlciBzdGFy dHVwIChub3QgaW4gc2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzKS4KKwkjIyMKKwkkbm9kZS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIEVYVEVOU0lPTiB0ZXN0X3NobWVtOycpOworCisJIyBS ZW1vdmUgc2V0dGluZ3MgdGhhdCB3b3VsZCBjYXVzZSB0aGUgbGlicmFyeSB0byBhdXRvLWxvYWQg YXQgc3RhcnR1cDoKKwkjIHNoYXJlZF9wcmVsb2FkX2xpYnJhcmllcyBhbmQgbW9kdWxlLXByZWZp eGVkIEdVQ3MuICBBTFRFUiBTWVNURU0gUkVTRVQKKwkjIG9ubHkgYWZmZWN0cyBwb3N0Z3Jlc3Fs LmF1dG8uY29uZiwgc28gd2UgbXVzdCB1c2UgYWRqdXN0X2NvbmYgdG8gcmVtb3ZlCisJIyBmcm9t IHBvc3RncmVzcWwuY29uZi4KKwkkbm9kZS0+YWRqdXN0X2NvbmYoJ3Bvc3RncmVzcWwuY29uZics ICdzaGFyZWRfcHJlbG9hZF9saWJyYXJpZXMnLCB1bmRlZik7CisJJG5vZGUtPmFkanVzdF9jb25m KCdwb3N0Z3Jlc3FsLmNvbmYnLCAndGVzdF9zaG1lbS5pbml0aWFsX2VudHJpZXMnLCB1bmRlZik7 CisJJG5vZGUtPmFkanVzdF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAndGVzdF9zaG1lbS5tYXhf ZW50cmllcycsIHVuZGVmKTsKKwkkbm9kZS0+YWRqdXN0X2NvbmYoJ3Bvc3RncmVzcWwuYXV0by5j b25mJywgJ3NoYXJlZF9wcmVsb2FkX2xpYnJhcmllcycsIHVuZGVmKTsKKwkkbm9kZS0+YWRqdXN0 X2NvbmYoJ3Bvc3RncmVzcWwuYXV0by5jb25mJywgJ3Rlc3Rfc2htZW0uaW5pdGlhbF9lbnRyaWVz JywgdW5kZWYpOworCSRub2RlLT5hZGp1c3RfY29uZigncG9zdGdyZXNxbC5hdXRvLmNvbmYnLCAn dGVzdF9zaG1lbS5tYXhfZW50cmllcycsIHVuZGVmKTsKKwkkbm9kZS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsIHFxeworCQlBTFRFUiBTWVNURU0gU0VUIHNoYXJlZF9tZW1vcnlfdHlwZSA9ICdzeXN2 JzsKKwl9KTsKKworCSRub2RlLT5yZXN0YXJ0OworCisJaXMoJG5vZGUtPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAnU0hPVyBoYXZlX3Jlc2l6YWJsZV9zaGFyZWRfbWVtb3J5JyksICdvZmYnLAorCQkJ CQkJJ2hhdmVfcmVzaXphYmxlX3NoYXJlZF9tZW1vcnkgaXMgb2ZmIHdpdGggc3lzdicpOworCisJ bXkgKCRyZXQsICRzdGRvdXQsICRzdGRlcnIpID0KKwkJJG5vZGUtPnBzcWwoJ3Bvc3RncmVzJywg J0NSRUFURSBFWFRFTlNJT04gdGVzdF9zaG1lbTsnKTsKKwlvaygkcmV0ICE9IDAsICdDUkVBVEUg RVhURU5TSU9OIGZhaWxzIHdpdGggcmVzaXphYmxlIHNobWVtIG9uIHN5c3YnKTsKKwlsaWtlKCRz dGRlcnIsIHFyL3Jlc2l6YWJsZSBzaGFyZWQgbWVtb3J5IHJlcXVpcmVzIHNoYXJlZF9tZW1vcnlf dHlwZSA9IG1tYXAvLAorCQknQ1JFQVRFIEVYVEVOU0lPTiBlcnJvciBtZW50aW9ucyBzaGFyZWRf bWVtb3J5X3R5cGUgPSBtbWFwIHJlcXVpcmVtZW50Jyk7CisKKwkjIyMKKwkjIFRlc3QgNDogVmVy aWZ5IHRoYXQgcmVzaXphYmxlIHN0cnVjdHVyZXMgYXJlIGFsc28gcmVqZWN0ZWQgd2l0aCBzeXN2 CisJIyBzaGFyZWQgbWVtb3J5IHdoZW4gbG9hZGVkIGF0IHN0YXJ0dXAgdmlhIHNoYXJlZF9wcmVs b2FkX2xpYnJhcmllcy4KKwkjIyMKKwkkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxewor CQlBTFRFUiBTWVNURU0gU0VUIHNoYXJlZF9wcmVsb2FkX2xpYnJhcmllcyA9ICd0ZXN0X3NobWVt JzsKKwkJQUxURVIgU1lTVEVNIFNFVCB0ZXN0X3NobWVtLmluaXRpYWxfZW50cmllcyA9ICRzdGFy dHVwX2luaXRpYWw7CisJCUFMVEVSIFNZU1RFTSBTRVQgdGVzdF9zaG1lbS5tYXhfZW50cmllcyA9 ICRzdGFydHVwX21heDsKKwl9KTsKKwkkbm9kZS0+c3RvcDsKKworCW9rKCEkbm9kZS0+c3RhcnQo ZmFpbF9vayA9PiAxKSwKKwkJJ3NlcnZlciBmYWlscyB0byBzdGFydCB3aXRoIHJlc2l6YWJsZSBz aG1lbSBvbiBzeXN2Jyk7CisKKwlteSAkbG9nID0gc2x1cnBfZmlsZSgkbm9kZS0+bG9nZmlsZSk7 CisJbGlrZSgkbG9nLCBxci9yZXNpemFibGUgc2hhcmVkIG1lbW9yeSByZXF1aXJlcyBzaGFyZWRf bWVtb3J5X3R5cGUgPSBtbWFwLywKKwkJJ2xvZyBtZW50aW9ucyBzaGFyZWRfbWVtb3J5X3R5cGUg PSBtbWFwIHJlcXVpcmVtZW50Jyk7Cit9CisKK2RvbmVfdGVzdGluZygpOwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobWVtL3Rlc3Rfc2htZW0tLTEuMC5zcWwgYi9zcmMvdGVz dC9tb2R1bGVzL3Rlc3Rfc2htZW0vdGVzdF9zaG1lbS0tMS4wLnNxbAppbmRleCAyZDAxZmQ5MjU2 Yy4uYTAzYzkwZTAyNWIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS90 ZXN0X3NobWVtLS0xLjAuc3FsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS90ZXN0 X3NobWVtLS0xLjAuc3FsCkBAIC03LDMgKzcsMzcgQEAKIENSRUFURSBGVU5DVElPTiBnZXRfdGVz dF9zaG1lbV9hdHRhY2hfY291bnQoKQogUkVUVVJOUyBwZ19jYXRhbG9nLmludDQgU1RSSUNUCiBB UyAnTU9EVUxFX1BBVEhOQU1FJyBMQU5HVUFHRSBDOworCitDUkVBVEUgRlVOQ1RJT04gdGVzdF9z aG1lbV9yZXNpemVfZml4ZWQocGdfY2F0YWxvZy5pbnQ0KQorUkVUVVJOUyBwZ19jYXRhbG9nLnZv aWQgU1RSSUNUCitBUyAnTU9EVUxFX1BBVEhOQU1FJyBMQU5HVUFHRSBDOworCistLSBGdW5jdGlv biB0byByZXNpemUgdGhlIHJlc2l6YWJsZSB0ZXN0IHN0cnVjdHVyZSBpbiB0aGUgc2hhcmVkIG1l bW9yeQorQ1JFQVRFIEZVTkNUSU9OIHJlc2l6YWJsZV9zaG1lbV9yZXNpemUobmV3X2VudHJpZXMg cGdfY2F0YWxvZy5pbnQ0KQorUkVUVVJOUyBwZ19jYXRhbG9nLnZvaWQgU1RSSUNUCitBUyAnTU9E VUxFX1BBVEhOQU1FJyBMQU5HVUFHRSBDOworCistLSBGdW5jdGlvbiB0byB3cml0ZSBkYXRhIHRv IGFsbCBlbnRyaWVzIGluIHRoZSB0ZXN0IHN0cnVjdHVyZSBpbiBzaGFyZWQgbWVtb3J5CistLSBX cml0aW5nIGFsbCB0aGUgZW50cmllcyBtYWtlcyBzdXJlIHRoYXQgdGhlIG1lbW9yeSBpcyBhY3R1 YWxseSBhbGxvY2F0ZWQgYW5kCistLSBtYXBwZWQgdG8gdGhlIHByb2Nlc3MsIHNvIHRoYXQgd2Ug Y2FuIGxhdGVyIG1lYXN1cmUgdGhlIG1lbW9yeSB1c2FnZS4KK0NSRUFURSBGVU5DVElPTiByZXNp emFibGVfc2htZW1fd3JpdGUoZW50cnlfdmFsdWUgcGdfY2F0YWxvZy5pbnQ0KQorUkVUVVJOUyBw Z19jYXRhbG9nLnZvaWQgU1RSSUNUCitBUyAnTU9EVUxFX1BBVEhOQU1FJyBMQU5HVUFHRSBDOwor CistLSBGdW5jdGlvbiB0byB2ZXJpZnkgdGhhdCBzcGVjaWZpZWQgbnVtYmVyIG9mIGluaXRpYWwg ZW50cmllcyBoYXZlIGV4cGVjdGVkIHZhbHVlLgorLS0gUmVhZGluZyBhbGwgdGhlIGVudHJpZXMg bWFrZXMgc3VyZSB0aGF0IHRoZSBtZW1vcnkgaXMgYWN0dWFsbHkgbWFwcGVkIHRvIHRoZQorLS0g cHJvY2Vzcywgc28gdGhhdCB3ZSBjYW4gbGF0ZXIgbWVhc3VyZSB0aGUgbWVtb3J5IHVzYWdlLgor Q1JFQVRFIEZVTkNUSU9OIHJlc2l6YWJsZV9zaG1lbV9yZWFkKGVudHJ5X2NvdW50IHBnX2NhdGFs b2cuaW50NCwgZW50cnlfdmFsdWUgcGdfY2F0YWxvZy5pbnQ0KQorUkVUVVJOUyBwZ19jYXRhbG9n LmJvb2wgU1RSSUNUCitBUyAnTU9EVUxFX1BBVEhOQU1FJyBMQU5HVUFHRSBDOworCistLSBGdW5j dGlvbiB0byByZXBvcnQgbWVtb3J5IG1hcHBlZCBhZ2FpbnN0IHRoZSBtYWluIHNoYXJlZCBtZW1v cnkgc2VnbWVudCBpbgorLS0gdGhlIGJhY2tlbmQgd2hlcmUgdGhpcyBmdW5jdGlvbiBydW5zLgor Q1JFQVRFIEZVTkNUSU9OIHJlc2l6YWJsZV9zaG1lbV91c2FnZSgpCitSRVRVUk5TIHBnX2NhdGFs b2cuaW50OCBTVFJJQ1QKK0FTICdNT0RVTEVfUEFUSE5BTUUnIExBTkdVQUdFIEM7CisKKy0tIEZ1 bmN0aW9uIHRvIGdldCB0aGUgc2hhcmVkIG1lbW9yeSBwYWdlIHNpemUKK0NSRUFURSBGVU5DVElP TiByZXNpemFibGVfc2htZW1fcGFnZXNpemUoKQorUkVUVVJOUyBwZ19jYXRhbG9nLmludDQgU1RS SUNUCitBUyAnTU9EVUxFX1BBVEhOQU1FJyBMQU5HVUFHRSBDOwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X3NobWVtL3Rlc3Rfc2htZW0uYyBiL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9zaG1lbS90ZXN0X3NobWVtLmMKaW5kZXggOWJkNDAxMmI0MzUuLjcyMDA0ZGY0MDgzIDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htZW0vdGVzdF9zaG1lbS5jCisrKyBiL3Ny Yy90ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS90ZXN0X3NobWVtLmMKQEAgLTMsOSArMywxMCBAQAog ICogdGVzdF9zaG1lbS5jCiAgKgkJSGVscGVycyB0byB0ZXN0IHNobWVtIGFsbG9jYXRpb24gcm91 dGluZXMKICAqCi0gKiBUZXN0IGJhc2ljIG1lbW9yeSBhbGxvY2F0aW9uIGluIGFuIGV4dGVuc2lv biBtb2R1bGUuIE9uZSBub3RhYmxlIGZlYXR1cmUKLSAqIHRoYXQgaXMgbm90IGV4ZXJjaXNlZCBi eSBhbnkgb3RoZXIgbW9kdWxlIGluIHRoZSByZXBvc2l0b3J5IGlzIHRoZQotICogYWxsb2NhdGlu ZyAobm9uLURTTSkgc2hhcmVkIG1lbW9yeSBhZnRlciBwb3N0bWFzdGVyIHN0YXJ0dXAuCisgKiBU ZXN0IHNoYXJlZCBtZW1vcnkgYWxsb2NhdGlvbiBpbiBhbiBleHRlbnNpb24gbW9kdWxlLiBOb3Rh Ymx5IHRoZSBtb2R1bGUKKyAqIHRlc3RzIGFsbG9jYXRpbmcgKG5vbi1EU00pIHNoYXJlZCBtZW1v cnkgYWZ0ZXIgcG9zdG1hc3RlciBzdGFydHVwIGFuZAorICogcmVzaXphYmxlIHNoYXJlZCBtZW1v cnkuIFRoZXNlIHR3byBhc3BlY3RzIG9mIHNoYXJlZCBtZW1vcnkgYXJlIG5vdCB0ZXN0ZWQKKyAq IGFueXdoZXJlIGVsc2UuCiAgKgogICogQ29weXJpZ2h0IChjKSAyMDIwLTIwMjYsIFBvc3RncmVT UUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCiAgKgpAQCAtMTcsMjQgKzE4LDU4IEBACiAKICNp bmNsdWRlICJwb3N0Z3Jlcy5oIgogCisjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8c3Rk aW8uaD4KKworI2luY2x1ZGUgImNvbW1hbmRzL2V4dGVuc2lvbi5oIgogI2luY2x1ZGUgImZtZ3Iu aCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJzdG9yYWdlL3NobWVtLmgiCisj aW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9ndWMuaCIKKyNpbmNs dWRlICJ1dGlscy9tZW11dGlscy5oIgogCiAKIFBHX01PRFVMRV9NQUdJQzsKIAotdHlwZWRlZiBz dHJ1Y3QgVGVzdFNobWVtRGF0YQorI2RlZmluZSBURVNUX0VOVFJZX1NJWkUJCQlzaXplb2YoaW50 MzIpCS8qIFNpemUgb2YgZWFjaCBlbnRyeSAqLworCit0eXBlZGVmIHN0cnVjdCBUZXN0Rml4ZWRE YXRhCisKIHsKIAlpbnQJCQl2YWx1ZTsKIAlib29sCQlpbml0aWFsaXplZDsKIAlpbnQJCQlhdHRh Y2hfY291bnQ7Ci19IFRlc3RTaG1lbURhdGE7Cit9IFRlc3RGaXhlZERhdGE7CisKK3N0YXRpYyBU ZXN0Rml4ZWREYXRhICpGaXhlZFNobWVtOworCisvKgorICogUmVzaXphYmxlIHNoYXJlZCBzdHJ1 Y3R1cmUKKyAqCisgKiBUaGUgdGVzdCBwZXJmb3JtcyByZXNpemluZywgcmVhZHMgb3Igd3JpdGVz LCBvbmx5IG9uZSBhdCBhIHRpbWUgYW5kIG5ldmVyCisgKiBjb25jdXJyZW50bHkuIEhlbmNlLCB0 aGVyZSBpcyBubyBuZWVkIGZvciBsb2NrcyBpbiB0aGUgdGVzdCBzdHJ1Y3R1cmUuCisgKi8KK3R5 cGVkZWYgc3RydWN0IFRlc3RSZXNpemFibGVEYXRhCit7CisJLyogTWV0YWRhdGEgKi8KKwlpbnQz MgkJbnVtX2VudHJpZXM7CS8qIE51bWJlciBvZiBlbnRyaWVzIHRoYXQgY2FuIGZpdCAqLwogCi1z dGF0aWMgVGVzdFNobWVtRGF0YSAqVGVzdFNobWVtOworCS8qIERhdGEgYXJlYSAtIHZhcmlhYmxl IHNpemUgKi8KKwlpbnQzMgkJZGF0YVtGTEVYSUJMRV9BUlJBWV9NRU1CRVJdOworfSBUZXN0UmVz aXphYmxlRGF0YTsKKworc3RhdGljIFRlc3RSZXNpemFibGVEYXRhICpSZXNpemFibGVTaG1lbSA9 IE5VTEw7CiAKIHN0YXRpYyBib29sIGF0dGFjaGVkX29yX2luaXRpYWxpemVkID0gZmFsc2U7CiAK Ky8qIEdVQyB2YXJpYWJsZXMgY29udHJvbGxpbmcgdGhlIHNpemUgb2YgdGhlIHJlc2l6YWJsZSBz dHJ1Y3R1cmUgKi8KK3N0YXRpYyBpbnQJaW5pdGlhbF9lbnRyaWVzOworc3RhdGljIGludAltYXhf ZW50cmllczsKKworLyogV2hldGhlciB0byB1c2UgU0hNRU1fQVRUQUNIX1VOS05PV05fU0laRSB3 aGVuIGF0dGFjaGluZyByZXNpemFibGUgc3RydWN0dXJlLiAqLworc3RhdGljIGJvb2wgdXNlX3Vu a25vd25fc2l6ZSA9IGZhbHNlOworCiBzdGF0aWMgdm9pZCB0ZXN0X3NobWVtX3JlcXVlc3Qodm9p ZCAqYXJnKTsKIHN0YXRpYyB2b2lkIHRlc3Rfc2htZW1faW5pdCh2b2lkICphcmcpOwogc3RhdGlj IHZvaWQgdGVzdF9zaG1lbV9hdHRhY2godm9pZCAqYXJnKTsKQEAgLTQ5LDMzICs4NCw2NiBAQCBz dGF0aWMgY29uc3QgU2htZW1DYWxsYmFja3MgVGVzdFNobWVtQ2FsbGJhY2tzID0gewogc3RhdGlj IHZvaWQKIHRlc3Rfc2htZW1fcmVxdWVzdCh2b2lkICphcmcpCiB7CisJU2l6ZQkJaW5pdGlhbF9z aXplID0gYWRkX3NpemUob2Zmc2V0b2YoVGVzdFJlc2l6YWJsZURhdGEsIGRhdGEpLAorCQkJCQkJ CQkJCW11bF9zaXplKGluaXRpYWxfZW50cmllcywgVEVTVF9FTlRSWV9TSVpFKSk7CisKKy8qCisg KiBDcmVhdGUgcmVzaXphYmxlIHN0cnVjdHVyZSBvbiB0aGUgcGxhdGZvcm1zIHdoaWNoIHN1cHBv cnQgaXQuIE90aGVyd2lzZSBjcmVhdGUKKyAqIGFzIGEgZml4ZWQtc2l6ZSBzdHJ1Y3R1cmUuIE90 aGVyIHdheSB3b3VsZCBiZSB0byBjb25kaXRpb25hbGx5IGluY2x1ZGUKKyAqIC5tYXhpbXVtX3Np emUgaW4gdGhlIGNhbGwgdG8gU2htZW1SZXF1ZXN0U3RydWN0KCkuCisgKi8KKyNpZmRlZiBIQVZF X1JFU0laQUJMRV9TSE1FTQorCVNpemUJCW1heF9zaXplID0gYWRkX3NpemUob2Zmc2V0b2YoVGVz dFJlc2l6YWJsZURhdGEsIGRhdGEpLAorCQkJCQkJCQkJbXVsX3NpemUobWF4X2VudHJpZXMsIFRF U1RfRU5UUllfU0laRSkpOworCVNpemUJCW1pbl9zaXplID0gb2Zmc2V0b2YoVGVzdFJlc2l6YWJs ZURhdGEsIGRhdGEpOworCisjZWxzZQorCVNpemUJCW1heF9zaXplID0gMDsKKwlTaXplCQltaW5f c2l6ZSA9IDA7CisjZW5kaWYKKwogCWVsb2coTE9HLCAidGVzdF9zaG1lbV9yZXF1ZXN0IGNhbGxi YWNrIGNhbGxlZCIpOwogCisJLyogRml4ZWQtc2l6ZSBzdHJ1Y3R1cmUgKi8KIAlTaG1lbVJlcXVl c3RTdHJ1Y3QoLm5hbWUgPSAidGVzdF9zaG1lbSBhcmVhIiwKLQkJCQkJICAgLnNpemUgPSBzaXpl b2YoVGVzdFNobWVtRGF0YSksCi0JCQkJCSAgIC5wdHIgPSAodm9pZCAqKikgJlRlc3RTaG1lbSk7 CisJCQkJCSAgIC5zaXplID0gc2l6ZW9mKFRlc3RGaXhlZERhdGEpLAorCQkJCQkgICAucHRyID0g KHZvaWQgKiopICZGaXhlZFNobWVtKTsKKworCS8qIFJlc2l6YWJsZSBzdHJ1Y3R1cmUgKi8KKwlT aG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAicmVzaXphYmxlX3NobWVtIiwKKwkJCQkJICAgLnNp emUgPSB1c2VfdW5rbm93bl9zaXplID8gU0hNRU1fQVRUQUNIX1VOS05PV05fU0laRSA6IGluaXRp YWxfc2l6ZSwKKwkJCQkJICAgLm1pbmltdW1fc2l6ZSA9IG1pbl9zaXplLAorCQkJCQkgICAubWF4 aW11bV9zaXplID0gbWF4X3NpemUsCisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikgJlJlc2l6YWJs ZVNobWVtKTsKIH0KIAogc3RhdGljIHZvaWQKIHRlc3Rfc2htZW1faW5pdCh2b2lkICphcmcpCiB7 CiAJZWxvZyhMT0csICJpbml0IGNhbGxiYWNrIGNhbGxlZCIpOwotCWlmIChUZXN0U2htZW0tPmlu aXRpYWxpemVkKQorCisJaWYgKEZpeGVkU2htZW0tPmluaXRpYWxpemVkKQogCQllbG9nKEVSUk9S LCAic2htZW0gYXJlYSBhbHJlYWR5IGluaXRpYWxpemVkIik7Ci0JVGVzdFNobWVtLT5pbml0aWFs aXplZCA9IHRydWU7CisJRml4ZWRTaG1lbS0+aW5pdGlhbGl6ZWQgPSB0cnVlOwogCiAJaWYgKGF0 dGFjaGVkX29yX2luaXRpYWxpemVkKQogCQllbG9nKEVSUk9SLCAiYXR0YWNoIG9yIGluaXRpYWxp emUgYWxyZWFkeSBjYWxsZWQgaW4gdGhpcyBwcm9jZXNzIik7CiAJYXR0YWNoZWRfb3JfaW5pdGlh bGl6ZWQgPSB0cnVlOworCisJLyogUmVzaXphYmxlIHN0cnVjdHVyZSBzaG91bGQgaGF2ZSBiZWVu IGFscmVhZHkgYWxsb2NhdGVkLiBJbml0aWFsaXplIGl0LiAqLworCUFzc2VydChSZXNpemFibGVT aG1lbSAhPSBOVUxMKTsKKworCVJlc2l6YWJsZVNobWVtLT5udW1fZW50cmllcyA9IGluaXRpYWxf ZW50cmllczsKKwltZW1zZXQoUmVzaXphYmxlU2htZW0tPmRhdGEsIDAsIG11bF9zaXplKGluaXRp YWxfZW50cmllcywgVEVTVF9FTlRSWV9TSVpFKSk7CiB9CiAKIHN0YXRpYyB2b2lkCiB0ZXN0X3No bWVtX2F0dGFjaCh2b2lkICphcmcpCiB7CiAJZWxvZyhMT0csICJ0ZXN0X3NobWVtX2F0dGFjaCBj YWxsYmFjayBjYWxsZWQiKTsKLQlpZiAoIVRlc3RTaG1lbS0+aW5pdGlhbGl6ZWQpCisJaWYgKCFG aXhlZFNobWVtLT5pbml0aWFsaXplZCkKIAkJZWxvZyhFUlJPUiwgInNobWVtIGFyZWEgbm90IHll dCBpbml0aWFsaXplZCIpOwotCVRlc3RTaG1lbS0+YXR0YWNoX2NvdW50Kys7CisJRml4ZWRTaG1l bS0+YXR0YWNoX2NvdW50Kys7CiAKIAlpZiAoYXR0YWNoZWRfb3JfaW5pdGlhbGl6ZWQpCiAJCWVs b2coRVJST1IsICJhdHRhY2ggb3IgaW5pdGlhbGl6ZSBhbHJlYWR5IGNhbGxlZCBpbiB0aGlzIHBy b2Nlc3MiKTsKQEAgLTg1LDE3ICsxNTMsMjMxIEBAIHRlc3Rfc2htZW1fYXR0YWNoKHZvaWQgKmFy ZykKIHZvaWQKIF9QR19pbml0KHZvaWQpCiB7CisJaW50CQkJZ3VjX2NvbnRleHQ7CisKIAllbG9n KExPRywgInRlc3Rfc2htZW0gbW9kdWxlJ3MgX1BHX2luaXQgY2FsbGVkIik7CisKKwkvKgorCSAq IFVzZSBQR0NfUE9TVE1BU1RFUiB3aGVuIGxvYWRlZCBhdCBzdGFydHVwIHNvIHRoZSB2YWx1ZXMg YXJlIGZpeGVkIG9uY2UKKwkgKiB0aGUgc2hhcmVkIG1lbW9yeSBzZWdtZW50IGlzIGNyZWF0ZWQu ICBXaGVuIGxvYWRlZCBhZnRlciBzdGFydHVwCisJICogUEdDX1BPU1RNQVNURVIgaXMgbm90IGFs bG93ZWQsIHNvIHdlIHVzZSBQR0NfU0lHSFVQIGluc3RlYWQuICBBbHRob3VnaAorCSAqIHdlIGRv IG5vdCBpbnRlbmQgdG8gY2hhbmdlIHRoZXNlIHZhbHVlcyBhdCBjb25maWcgcmVsb2FkLCBQR0Nf U0lHSFVQIGlzCisJICogdGhlIGxlYXN0IHBlcm1pc3NpdmUgY29udGV4dCB0aGF0IGFsbG93cyBk ZWZpbmluZyB0aGUgR1VDIGFmdGVyIHN0YXJ0dXAKKwkgKiBhbmQgc3RpbGwgcHJldmVudHMgaXQg ZnJvbSBiZWluZyBjaGFuZ2VkIHZpYSBTRVQuCisJICovCisJaWYgKHByb2Nlc3Nfc2hhcmVkX3By ZWxvYWRfbGlicmFyaWVzX2luX3Byb2dyZXNzKQorCQlndWNfY29udGV4dCA9IFBHQ19QT1NUTUFT VEVSOworCWVsc2UKKwkJZ3VjX2NvbnRleHQgPSBQR0NfU0lHSFVQOworCisJLyoKKwkgKiBTZXQg ZGVmYXVsdHMgdmVyeSBsb3cgc28gdGhhdCB0aGUgc3RydWN0dXJlIGNhbiBiZSBsb2FkZWQgYWZ0 ZXIgc3RhcnR1cAorCSAqIGFzIHdlbGwgd2hlbiB0aGVyZSdzIG9ubHkgYSAxMDBLQiBleHRyYSBt ZW1vcnkgYXZhaWxhYmxlLgorCSAqLworCURlZmluZUN1c3RvbUludFZhcmlhYmxlKCJ0ZXN0X3No bWVtLmluaXRpYWxfZW50cmllcyIsCisJCQkJCQkJIkluaXRpYWwgbnVtYmVyIG9mIGVudHJpZXMg aW4gdGhlIHRlc3Qgc3RydWN0dXJlLiIsCisJCQkJCQkJTlVMTCwKKwkJCQkJCQkmaW5pdGlhbF9l bnRyaWVzLAorCQkJCQkJCTEwMCwJLyogfiA0MDAgYnl0ZXMgKi8KKwkJCQkJCQkxLAorCQkJCQkJ CUlOVF9NQVgsCisJCQkJCQkJZ3VjX2NvbnRleHQsCisJCQkJCQkJMCwKKwkJCQkJCQlOVUxMLCBO VUxMLCBOVUxMKTsKKworCURlZmluZUN1c3RvbUludFZhcmlhYmxlKCJ0ZXN0X3NobWVtLm1heF9l bnRyaWVzIiwKKwkJCQkJCQkiTWF4aW11bSBudW1iZXIgb2YgZW50cmllcyBpbiB0aGUgdGVzdCBz dHJ1Y3R1cmUuIiwKKwkJCQkJCQlOVUxMLAorCQkJCQkJCSZtYXhfZW50cmllcywKKwkJCQkJCQky MDAsCS8qIH4gODAwIGJ5dGVzICovCisJCQkJCQkJMSwKKwkJCQkJCQlJTlRfTUFYLAorCQkJCQkJ CWd1Y19jb250ZXh0LAorCQkJCQkJCTAsCisJCQkJCQkJTlVMTCwgTlVMTCwgTlVMTCk7CisKKwkv KgorCSAqIFdoZW4gbG9hZGVkIGFmdGVyIHN0YXJ0dXAgYnkgYSBiYWNrZW5kIHRoYXQgaXMgbm90 IGNyZWF0aW5nIHRoZQorCSAqIGV4dGVuc2lvbiwgdGhlIHNoYXJlZCBtZW1vcnkgbWlnaHQgaGF2 ZSBiZWVuIHJlc2l6ZWQgdG8gYSBzaXplIG90aGVyCisJICogdGhhbiB0aGUgaW5pdGlhbCBzaXpl LiBVc2UgU0hNRU1fQVRUQUNIX1VOS05PV05fU0laRSB0byBhdHRhY2ggd2l0aG91dAorCSAqIGtu b3dpbmcgdGhlIGV4YWN0IHNpemUuCisJICovCisJaWYgKCFwcm9jZXNzX3NoYXJlZF9wcmVsb2Fk X2xpYnJhcmllc19pbl9wcm9ncmVzcyAmJiAhY3JlYXRpbmdfZXh0ZW5zaW9uKQorCQl1c2VfdW5r bm93bl9zaXplID0gdHJ1ZTsKKwogCVJlZ2lzdGVyU2htZW1DYWxsYmFja3MoJlRlc3RTaG1lbUNh bGxiYWNrcyk7CiB9CiAKKy8qIEZpeGVkLXNpemUgc3RydWN0dXJlIEFQSXMgKi8KIFBHX0ZVTkNU SU9OX0lORk9fVjEoZ2V0X3Rlc3Rfc2htZW1fYXR0YWNoX2NvdW50KTsKIERhdHVtCiBnZXRfdGVz dF9zaG1lbV9hdHRhY2hfY291bnQoUEdfRlVOQ1RJT05fQVJHUykKIHsKIAlpZiAoIWF0dGFjaGVk X29yX2luaXRpYWxpemVkKQogCQllbG9nKEVSUk9SLCAic2htZW0gYXJlYSBub3QgYXR0YWNoZWQg b3IgaW5pdGlhbGl6ZWQgaW4gdGhpcyBwcm9jZXNzIik7Ci0JaWYgKCFUZXN0U2htZW0tPmluaXRp YWxpemVkKQorCWlmICghRml4ZWRTaG1lbS0+aW5pdGlhbGl6ZWQpCiAJCWVsb2coRVJST1IsICJz aG1lbSBhcmVhIG5vdCB5ZXQgaW5pdGlhbGl6ZWQiKTsKLQlQR19SRVRVUk5fSU5UMzIoVGVzdFNo bWVtLT5hdHRhY2hfY291bnQpOworCVBHX1JFVFVSTl9JTlQzMihGaXhlZFNobWVtLT5hdHRhY2hf Y291bnQpOworfQorCisvKgorICogQXR0ZW1wdCB0byByZXNpemUgdGhlIGZpeGVkLXNpemUgc2hh cmVkIG1lbW9yeSBzdHJ1Y3R1cmUuICBUaGlzIHNob3VsZAorICogZmFpbCBiZWNhdXNlIHRoZSBz dHJ1Y3R1cmUgd2FzIG5vdCBhbGxvY2F0ZWQgd2l0aCBhIG1heGltdW1fc2l6ZS4KKyAqLworUEdf RlVOQ1RJT05fSU5GT19WMSh0ZXN0X3NobWVtX3Jlc2l6ZV9maXhlZCk7CitEYXR1bQordGVzdF9z aG1lbV9yZXNpemVfZml4ZWQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlpbnQzMgkJbmV3X3NpemUg PSBQR19HRVRBUkdfSU5UMzIoMCk7CisKKwlTaG1lbVJlc2l6ZVN0cnVjdCgidGVzdF9zaG1lbSBh cmVhIiwgbmV3X3NpemUpOworCVBHX1JFVFVSTl9WT0lEKCk7Cit9CisKKy8qIFJlc2l6YWJsZSBz dHJ1Y3R1cmUgQVBJcyAqLworCisvKgorICogUmVzaXplIHRoZSBzaGFyZWQgbWVtb3J5IHN0cnVj dHVyZSB0byBhY2NvbW1vZGF0ZSB0aGUgc3BlY2lmaWVkIG51bWJlciBvZgorICogZW50cmllcy4K KyAqCisgKiBPbiB0aGUgcGxhZm9ybXMgd2hpY2ggZG8gbm90IHN1cHBvcnQgcmVzaXphYmxlIHNo YXJlZCBtZW1vcnksCisgKiBTaG1lbVJlc2l6ZVN0cnVjdCgpIHdpbGwgcmFpc2UgYW4gZXJyb3Is IHNvIHRoaXMgZnVuY3Rpb24gd2lsbCBmYWlsIGlmIHRoZQorICogY2FsbGVyIHRyaWVzIHRvIHJl c2l6ZSB0aGUgc3RydWN0dXJlLgorICovCitQR19GVU5DVElPTl9JTkZPX1YxKHJlc2l6YWJsZV9z aG1lbV9yZXNpemUpOworRGF0dW0KK3Jlc2l6YWJsZV9zaG1lbV9yZXNpemUoUEdfRlVOQ1RJT05f QVJHUykKK3sKKwlpbnQzMgkJbmV3X2VudHJpZXMgPSBQR19HRVRBUkdfSU5UMzIoMCk7CisJU2l6 ZQkJbmV3X3NpemU7CisKKwlpZiAoIVJlc2l6YWJsZVNobWVtKQorCQllcmVwb3J0KEVSUk9SLAor CQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAor CQkJCSBlcnJtc2coInJlc2l6YWJsZV9zaG1lbSBpcyBub3QgaW5pdGlhbGl6ZWQiKSkpOworCisJ bmV3X3NpemUgPSBhZGRfc2l6ZShvZmZzZXRvZihUZXN0UmVzaXphYmxlRGF0YSwgZGF0YSksCisJ CQkJCQltdWxfc2l6ZShuZXdfZW50cmllcywgVEVTVF9FTlRSWV9TSVpFKSk7CisJU2htZW1SZXNp emVTdHJ1Y3QoInJlc2l6YWJsZV9zaG1lbSIsIG5ld19zaXplKTsKKwlSZXNpemFibGVTaG1lbS0+ bnVtX2VudHJpZXMgPSBuZXdfZW50cmllczsKKworCVBHX1JFVFVSTl9WT0lEKCk7Cit9CisKKwor LyoKKyAqIFdyaXRlIHRoZSBnaXZlbiBpbnRlZ2VyIHZhbHVlIHRvIGFsbCBlbnRyaWVzIGluIHRo ZSBkYXRhIGFycmF5LgorICovCitQR19GVU5DVElPTl9JTkZPX1YxKHJlc2l6YWJsZV9zaG1lbV93 cml0ZSk7CitEYXR1bQorcmVzaXphYmxlX3NobWVtX3dyaXRlKFBHX0ZVTkNUSU9OX0FSR1MpCit7 CisJaW50MzIJCWVudHJ5X3ZhbHVlID0gUEdfR0VUQVJHX0lOVDMyKDApOworCWludDMyCQlpOwor CisJaWYgKCFSZXNpemFibGVTaG1lbSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShF UlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJybXNnKCJy ZXNpemFibGVfc2htZW0gaXMgbm90IGluaXRpYWxpemVkIikpKTsKKworCS8qIFdyaXRlIHRoZSB2 YWx1ZSB0byBhbGwgY3VycmVudCBlbnRyaWVzICovCisJZm9yIChpID0gMDsgaSA8IFJlc2l6YWJs ZVNobWVtLT5udW1fZW50cmllczsgaSsrKQorCQlSZXNpemFibGVTaG1lbS0+ZGF0YVtpXSA9IGVu dHJ5X3ZhbHVlOworCisJUEdfUkVUVVJOX1ZPSUQoKTsKK30KKworLyoKKyAqIENoZWNrIHdoZXRo ZXIgdGhlIGZpcnN0ICdlbnRyeV9jb3VudCcgZW50cmllcyBhbGwgaGF2ZSB0aGUgZXhwZWN0ZWQg J2VudHJ5X3ZhbHVlJy4KKyAqIFJldHVybnMgdHJ1ZSBpZiBhbGwgbWF0Y2gsIGZhbHNlIG90aGVy d2lzZS4KKyAqLworUEdfRlVOQ1RJT05fSU5GT19WMShyZXNpemFibGVfc2htZW1fcmVhZCk7CitE YXR1bQorcmVzaXphYmxlX3NobWVtX3JlYWQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlpbnQzMgkJ ZW50cnlfY291bnQgPSBQR19HRVRBUkdfSU5UMzIoMCk7CisJaW50MzIJCWVudHJ5X3ZhbHVlID0g UEdfR0VUQVJHX0lOVDMyKDEpOworCWludDMyCQlpOworCisJaWYgKFJlc2l6YWJsZVNobWVtID09 IE5VTEwpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9U X0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygicmVzaXphYmxlX3NobWVtIGlz IG5vdCBpbml0aWFsaXplZCIpKSk7CisKKwlpZiAoZW50cnlfY291bnQgPCAwIHx8IGVudHJ5X2Nv dW50ID4gUmVzaXphYmxlU2htZW0tPm51bV9lbnRyaWVzKQorCQllcmVwb3J0KEVSUk9SLAorCQkJ CShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCSBlcnJtc2co ImVudHJ5X2NvdW50ICVkIGlzIG91dCBvZiByYW5nZSAoMC4uJWQpIiwgZW50cnlfY291bnQsIFJl c2l6YWJsZVNobWVtLT5udW1fZW50cmllcykpKTsKKworCWZvciAoaSA9IDA7IGkgPCBlbnRyeV9j b3VudDsgaSsrKQorCXsKKwkJaWYgKFJlc2l6YWJsZVNobWVtLT5kYXRhW2ldICE9IGVudHJ5X3Zh bHVlKQorCQkJUEdfUkVUVVJOX0JPT0woZmFsc2UpOworCX0KKworCVBHX1JFVFVSTl9CT09MKHRy dWUpOworfQorCisvKgorICogUmV0dXJuIHRoZSBtZW1vcnkgbWFwcGVkIGFnYWluc3QgdGhlIG1h aW4gc2hhcmVkIG1lbW9yeSBzZWdtZW50IGluIHRoaXMKKyAqIGJhY2tlbmQuCisgKgorICogVGhl IFZNQSBjb250YWluaW5nIG91ciByZXNpemFibGVfc2htZW0gcG9pbnRlciBpcyB1c2VkIHRvIGRl dGVybWluZSB0aGUgbWFpbgorICogbWVtb3J5IHNlZ21lbnQuICBSU1MgKyBTd2FwIChpbiBieXRl cykgZm9yIHRoYXQgVk1TIGZyb20gIC9wcm9jL3NlbGYvc21hcHMgaXMKKyAqIHJldHVybmVkLgor ICovCitQR19GVU5DVElPTl9JTkZPX1YxKHJlc2l6YWJsZV9zaG1lbV91c2FnZSk7CitEYXR1bQor cmVzaXphYmxlX3NobWVtX3VzYWdlKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJRklMRQkgICAqZjsK KwljaGFyCQlsaW5lWzI1Nl07CisJaW50NjQJCXJzc19rYiA9IC0xOworCWludDY0CQlzd2FwX2ti ID0gLTE7CisJdWludHB0cl90CXRhcmdldCA9ICh1aW50cHRyX3QpIFJlc2l6YWJsZVNobWVtOwor CWJvb2wJCWluX3RhcmdldF92bWEgPSBmYWxzZTsKKwlzaXplX3QJCXJlc3VsdDsKKworCWYgPSBm b3BlbigiL3Byb2Mvc2VsZi9zbWFwcyIsICJyIik7CisJaWYgKGYgPT0gTlVMTCkKKwkJZXJlcG9y dChFUlJPUiwKKwkJCQkoZXJyY29kZV9mb3JfZmlsZV9hY2Nlc3MoKSwKKwkJCQkgZXJybXNnKCJj b3VsZCBub3Qgb3BlbiAvcHJvYy9zZWxmL3NtYXBzOiAlbSIpKSk7CisKKwl3aGlsZSAoZmdldHMo bGluZSwgc2l6ZW9mKGxpbmUpLCBmKSAhPSBOVUxMKQorCXsKKwkJdW5zaWduZWQgbG9uZyBzdGFy dDsKKwkJdW5zaWduZWQgbG9uZyBlbmQ7CisKKwkJaWYgKHNzY2FuZihsaW5lLCAiJWx4LSVseCIs ICZzdGFydCwgJmVuZCkgPT0gMikKKwkJeworCQkJaW5fdGFyZ2V0X3ZtYSA9ICh0YXJnZXQgPj0g c3RhcnQgJiYgdGFyZ2V0IDwgZW5kKTsKKwkJfQorCQllbHNlIGlmIChpbl90YXJnZXRfdm1hKQor CQl7CisJCQlpZiAocnNzX2tiID09IC0xKQorCQkJCXNzY2FuZihsaW5lLCAiUnNzOiAlbGQga0Ii LCAmcnNzX2tiKTsKKwkJCWlmIChzd2FwX2tiID09IC0xKQorCQkJCXNzY2FuZihsaW5lLCAiU3dh cDogJWxkIGtCIiwgJnN3YXBfa2IpOworCQkJaWYgKHJzc19rYiA+PSAwICYmIHN3YXBfa2IgPj0g MCkKKwkJCQlicmVhazsKKwkJfQorCX0KKworCWZjbG9zZShmKTsKKworCXJlc3VsdCA9IHJzc19r YiA+PSAwID8gbXVsX3NpemUocnNzX2tiLCAxMDI0KSA6IDA7CisJcmVzdWx0ID0gYWRkX3NpemUo cmVzdWx0LCBzd2FwX2tiID49IDAgPyBtdWxfc2l6ZShzd2FwX2tiLCAxMDI0KSA6IDApOworCisJ UEdfUkVUVVJOX0lOVDY0KHJlc3VsdCk7Cit9CisKKy8qCisgKiByZXNpemFibGVfc2htZW1fcGFn ZXNpemUoKSAtIEdldCB0aGUgc2hhcmVkIG1lbW9yeSBwYWdlIHNpemUKKyAqLworUEdfRlVOQ1RJ T05fSU5GT19WMShyZXNpemFibGVfc2htZW1fcGFnZXNpemUpOworRGF0dW0KK3Jlc2l6YWJsZV9z aG1lbV9wYWdlc2l6ZShQR19GVU5DVElPTl9BUkdTKQoreworCVBHX1JFVFVSTl9JTlQzMihwZ19n ZXRfc2htZW1fcGFnZXNpemUoKSk7CiB9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3J1bGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0Cmlu ZGV4IGE2NWE1YmYwYzRmLi5hODgyZDc5OTEzMyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9ydWxlcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxl cy5vdXQKQEAgLTE3NzAsOCArMTc3MCwxMSBAQCBwZ19zaGFkb3d8IFNFTEVDVCBwZ19hdXRoaWQu cm9sbmFtZSBBUyB1c2VuYW1lLAogcGdfc2htZW1fYWxsb2NhdGlvbnN8IFNFTEVDVCBuYW1lLAog ICAgIG9mZiwKICAgICBzaXplLAotICAgIGFsbG9jYXRlZF9zaXplCi0gICBGUk9NIHBnX2dldF9z aG1lbV9hbGxvY2F0aW9ucygpIHBnX2dldF9zaG1lbV9hbGxvY2F0aW9ucyhuYW1lLCBvZmYsIHNp emUsIGFsbG9jYXRlZF9zaXplKTsKKyAgICBhbGxvY2F0ZWRfc2l6ZSwKKyAgICBtaW5pbXVtX3Np emUsCisgICAgbWF4aW11bV9zaXplLAorICAgIHJlc2VydmVkX3NwYWNlCisgICBGUk9NIHBnX2dl dF9zaG1lbV9hbGxvY2F0aW9ucygpIHBnX2dldF9zaG1lbV9hbGxvY2F0aW9ucyhuYW1lLCBvZmYs IHNpemUsIGFsbG9jYXRlZF9zaXplLCBtaW5pbXVtX3NpemUsIG1heGltdW1fc2l6ZSwgcmVzZXJ2 ZWRfc3BhY2UpOwogcGdfc2htZW1fYWxsb2NhdGlvbnNfbnVtYXwgU0VMRUNUIG5hbWUsCiAgICAg bnVtYV9ub2RlLAogICAgIHNpemUKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBl ZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggNjM3YzY2 OWExNDYuLmM3MGJlZThkODM3IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRl ZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMzE1Myw3 ICszMTUzLDggQEAgVGVzdERTTVJlZ2lzdHJ5SGFzaEVudHJ5CiBUZXN0RFNNUmVnaXN0cnlTdHJ1 Y3QKIFRlc3REZWNvZGluZ0RhdGEKIFRlc3REZWNvZGluZ1R4bkRhdGEKLVRlc3RTaG1lbURhdGEK K1Rlc3RGaXhlZERhdGEKK1Rlc3RSZXNpemFibGVEYXRhCiBUZXN0U3BlYwogVGVzdFZhbHVlVHlw ZQogVGV4dEZyZXEKCmJhc2UtY29tbWl0OiA1NTg5MGE5MTk0NTRhMjE2NTAzMWEwNGIxNzVjYTky ZTNlZDcwZTY5Ci0tIAoyLjM0LjEKCg== --000000000000475ce6064edfdc4a--