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 1w7TFk-005Lia-0f for pgsql-hackers@arkaria.postgresql.org; Tue, 31 Mar 2026 07:11:08 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w7TEh-008IrS-2Q for pgsql-hackers@arkaria.postgresql.org; Tue, 31 Mar 2026 07:10:04 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w7TEh-008IrJ-0D for pgsql-hackers@lists.postgresql.org; Tue, 31 Mar 2026 07:10:03 +0000 Received: from mail-lj1-x234.google.com ([2a00:1450:4864:20::234]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w7TEd-00000001vj3-1Jih for pgsql-hackers@lists.postgresql.org; Tue, 31 Mar 2026 07:10:02 +0000 Received: by mail-lj1-x234.google.com with SMTP id 38308e7fff4ca-38be5d7c27cso51122721fa.0 for ; Tue, 31 Mar 2026 00:09:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774940998; cv=none; d=google.com; s=arc-20240605; b=AQKcMs5zws9845rrNs98L+iN0YV3g/97ZBPVPFMWH9hRdnv+r/qhv41GUWuE+K+Psi AkTk2rmBKWi99KBBkegitYEbLMMCTLxoCUuRvDGEsq1Ob2NG2jFtV+GbT9x4QZni+4sK tJPWatO0/F/t0tlO5OSpVrjAjcl61OzACl4/cAYWli1HHxFsr8JAqz9ohF15eLH99MA9 lyx6bYXeaeJRJeFUKewVvPD4n27spPJ+NQgY5PlfaMYi9TZteNax2Ckjr14FC/S4kL9G yvT3crVUg3iZ2pJwLs+EQuyEpoztRaTCFyMTsNxeDgsp3BsUPvGq8rPqkrxFhjjS61IO nw7A== 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=AK807kEvviyOyCUgPsGS3hinvzVKqo7vXpb7Lbi/igA=; fh=s/qm84aPQhdoJG7LqzGmveVHRYv383S9V2siQxHruSQ=; b=A/R6foLH/stt35yNmrZX+dbmcnwGaz3N7FLcvVnTBCqFOKRpt25J6tzpXwlJ6zgFjn cpM+XRZJVFrUYE5kuOz7Tu/Ulbpr8+ZdWSlrZj7emqFSyGbEP9+wFtyOPz/QLl2ZTXru mhVSQhgsunBNewuJUKEmP77Foy3oZqW0KHg4BFiGpHZkdb6Qp8JPwfvFF4iapCHJAEcD xkbFsaKN0Nn/ye5RaeM98tITIZqrd/LJq6IEnqBU9++OXAeNkNTBvt3sNuze6jvwL2wb +rew1lKFiAuFdpwA2EIcOPL9/8v916y22UaJwtlATee28RNqyFPKXLK8mq5uOghVtVEl SttA==; darn=lists.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=1774940998; x=1775545798; darn=lists.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=AK807kEvviyOyCUgPsGS3hinvzVKqo7vXpb7Lbi/igA=; b=ZxVmuRo9S6LAvec09kMzLPXWHgWR2sR/7QjXqh3MBrdt4mJWs3QH40x1i84yXfqzJQ fjJFxPQ3GzjIgP3+HI+KReItJqjGJLnx0nAnWllqJ0lynYHcrZiUklMsJg9eojUWOAoa atHQdtUTXMajhFDhzDkEghj01+dKr9hfb4pKhLm8cvIcpttZE0hQQR4C4orTTMZjAfkb N1RClbqgGChdhAzsAhQAxRcZJ9gHHGi3aUGKRIXksOpFNo8tiRrYd7Zd1Axixf90IAX3 OxrpspafZKHwJML4Lqq+oxnOrV03bfWSas94zq/n9XEu9zTRytOJDVMScHl5HaXhv2YA oUpQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774940998; x=1775545798; 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=AK807kEvviyOyCUgPsGS3hinvzVKqo7vXpb7Lbi/igA=; b=EFO6LGpC6nN7v8jJwUKJT7R/gHW008IleGwcSy9mjwj9U/xJAOsvequyCYXMSycI4c w0PdJr3PQ/8dnLc8jwvSY0qHgC4zawkfbEffVHE10UnvyowqVfXQV7RmP7TzvTePZUvA whVrMgdHMNfbRi3QJ0FBQdr/2EPZBcF88y6LKUH7Ds0f5OiLb4IE3mo5THnDdy/qPc0P XNrRiYz2lj1ajWwpZ/uydjQN26dqVMCHrGZQ7EzQWC3jiulrtwJVsR6UtJjs06YbXoz+ 1HfqtH2XNVjSdWQpNh1e+k6B7604yWIMCcCLJO9B7JiAvrLaN1rNfbiENxlVixBXyBt0 wc5Q== X-Forwarded-Encrypted: i=1; AJvYcCUFG4emQOtnOxCKZMA7qZh4pTmBEp74K8ueDBXvr/RAcQAPAcWdyx2JFdwTDohcsCYwDlZMha5OZ/px5yXj@lists.postgresql.org X-Gm-Message-State: AOJu0Yw1upGYMEwmTF8hak8YZQ9iYncUWB6tgu2mlGas+KFut192oVcT egzHkGt0zF9bX81q5iQL20xOw1ceQzh5Kz071FsL0q87vtqCkctVDbQYISWtCPpi8HbaFWGqElp yFD5yutL0aTj1rXvI9eo/KXpHbPHkomo= X-Gm-Gg: ATEYQzxXTYfQ1cRinjEpFjNITlEl8PH+/CbbGfAYwOfSA0EJZfW3v44CB7khEAp6S3U 3Mbdf1UVYyZKsaW1aoKQThDTey75bp2qBHA0ACL+Ctrg09yQVpHgp/wbeGKEmONGRMQDwgyxGJv lIjuzIMckuSkar643tqQuYnQkUYUMYXWP4TsU70FhwztUF11Q/swD6+8omSFvQHPnoOk5Ey/Nks mLjSvRJ4d9kHVwHnb/jY314dMcVqMSfRjXEdDXGGE+nCOYBkXN2IGNaaqyaaYisi9VcX6uxDGYe c7+ZOKyK X-Received: by 2002:ac2:53b2:0:b0:5a2:b01e:5b44 with SMTP id 2adb3069b0e04-5a2b01e5cecmr2482509e87.21.1774940997357; Tue, 31 Mar 2026 00:09:57 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Masahiko Sawada Date: Tue, 31 Mar 2026 00:09:19 -0700 X-Gm-Features: AQROBzDD9sF0Ub51UJ0zlnaBk1B7WmDr_8bxA-4c3hpkcVBabUGxRmQZZhI5jR4 Message-ID: Subject: Re: POC: Parallel processing of indexes in autovacuum To: Daniil Davydov <3danissimo@gmail.com> Cc: SATYANARAYANA NARLAPURAM , Bharath Rupireddy , Sami Imseih , Alexander Korotkov , Matheus Alcantara , Maxim Orlov , Postgres hackers Content-Type: multipart/mixed; boundary="000000000000a52f4a064e4ca7f8" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000a52f4a064e4ca7f8 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Mar 30, 2026 at 3:40=E2=80=AFAM Daniil Davydov <3danissimo@gmail.co= m> wrote: > > Hi, > > On Mon, Mar 30, 2026 at 3:44=E2=80=AFPM Daniil Davydov <3danissimo@gmail.= com> wrote: > > > > BTW, describing the cost limit propagation to the parallel a/v workers = is > > worth mentioning in the documentation. I'll add it in the next patch ve= rsion. > > > > You can find these changes in the v33 patch. > > I mentioned cost delay parameters propagation only in "The Autovacuum Dae= mon" > chapter. I am not sure that we also should write about parallel workers i= n the > "Vacuuming" chapter (within cost based parameters description) since VACU= UM > PARALLEL doesn't do so. > > The only change in the 0001 patch is removing redundant empty line > inside autovacuum.c . Thank you for updating the patch! I've made some changes to the documentation part, merged two patches into one, and updated the commit message. Please review the attached patch. Regards, -- Masahiko Sawada Amazon Web Services: https://aws.amazon.com --000000000000a52f4a064e4ca7f8 Content-Type: text/x-patch; charset="US-ASCII"; name="v34-0001-Allow-autovacuum-to-use-parallel-vacuum-workers.patch" Content-Disposition: attachment; filename="v34-0001-Allow-autovacuum-to-use-parallel-vacuum-workers.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnea0buw0 RnJvbSBhMzg5YTExZDdmNDdhMDFmOGY2MmQzMmIzYWE1NmMxOWMyMTg3MWVlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBUdWUsIDE3IE1hciAyMDI2IDAyOjE4OjA5ICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MzRdIEFsbG93IGF1dG92YWN1dW0gdG8gdXNlIHBhcmFsbGVsIHZhY3V1bSB3b3JrZXJzLgoK UHJldmlvdXNseSwgYXV0b3ZhY3V1bSBhbHdheXMgZGlzYWJsZWQgcGFyYWxsZWwgdmFjdXVtIHJl Z2FyZGxlc3Mgb2YKdGhlIHRhYmxlJ3MgaW5kZXggY291bnQgb3IgY29uZmlndXJhdGlvbi4gVGhp cyBjb21taXQgZW5hYmxlcwphdXRvdmFjdXVtIHdvcmtlcnMgdG8gdXNlIHBhcmFsbGVsIGluZGV4 IHZhY3V1bWluZyBhbmQgaW5kZXggY2xlYW51cCwKdXNpbmcgdGhlIHNhbWUgcGFyYWxsZWwgdmFj dXVtIGluZnJhc3RydWN0dXJlIGFzIG1hbnVhbCBWQUNVVU0uCgpUd28gbmV3IGNvbmZpZ3VyYXRp b24gb3B0aW9ucyBjb250cm9sIHRoZSBmZWF0dXJlLiBUaGUgR1VDCmF1dG92YWN1dW1fbWF4X3Bh cmFsbGVsX3dvcmtlcnMgc2V0cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgcGFyYWxsZWwKd29ya2Vy cyBhIHNpbmdsZSBhdXRvdmFjdXVtIHdvcmtlciBtYXkgbGF1bmNoOyBpdCBkZWZhdWx0cyB0byAw LApwcmVzZXJ2aW5nIGV4aXN0aW5nIGJlaGF2aW9yIHVubGVzcyBleHBsaWNpdGx5IGVuYWJsZWQu IFRoZSBwZXItdGFibGUKc3RvcmFnZSBwYXJhbWV0ZXIgYXV0b3ZhY3V1bV9wYXJhbGxlbF93b3Jr ZXJzIHByb3ZpZGVzIHBlci10YWJsZSBsaW1pdHMuCkEgdmFsdWUgb2YgMCBkaXNhYmxlcyBwYXJh bGxlbCB2YWN1dW0gZm9yIHRoZSB0YWJsZSwgYSBwb3NpdGl2ZSB2YWx1ZQpjYXBzIHRoZSB3b3Jr ZXIgY291bnQgKHN0aWxsIGJvdW5kZWQgYnkgdGhlIEdVQyksIGFuZCAtMSAodGhlIGRlZmF1bHQp CmRlZmVycyB0byB0aGUgR1VDLgoKVG8gaGFuZGxlIGNhc2VzIHdoZXJlIGF1dG92YWN1dW0gd29y a2VycyByZWNlaXZlIGEgU0lHSFVQIGFuZCB1cGRhdGUKdGhlaXIgY29zdC1iYXNlZCB2YWN1dW0g ZGVsYXkgcGFyYW1ldGVycyBtaWQtb3BlcmF0aW9uLCBhIG5ldwpwcm9wYWdhdGlvbiBtZWNoYW5p c20gaXMgYWRkZWQgdG8gdmFjdXVtcGFyYWxsZWwuYy4gVGhlIGxlYWRlciBzdG9yZXMKaXRzIGVm ZmVjdGl2ZSBjb3N0IHBhcmFtZXRlcnMgaW4gYSBEU00gc2VnbWVudC4gUGFyYWxsZWwgdmFjdXVt CndvcmtlcnMgcG9sbCBmb3IgY2hhbmdlcyBpbiB2YWN1dW1fZGVsYXlfcG9pbnQoKTsgaWYgYW4g dXBkYXRlIGlzCmRldGVjdGVkLCB0aGV5IGFwcGx5IHRoZSBuZXcgdmFsdWVzIGxvY2FsbHkgdmlh IFZhY3V1bVVwZGF0ZUNvc3RzKCkuCgpBIG5ldyB0ZXN0IG1vZHVsZSwgc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X2F1dG92YWN1dW0sIGlzIGFkZGVkIHRvCnZlcmlmeSB0aGF0IHBhcmFsbGVsIGF1dG92 YWN1dW0gd29ya2VycyBhcmUgY29ycmVuY3RseSBsYXVuY2hlZCBhbmQKdGhhdCBjb3N0LXBhcmFt ZXRlciB1cGRhdGVzIGFyZSBwcm9wYWdhdGVkIGFzIGV4cGVjdGVkLgoKQXV0aG9yOiBEYW5paWwg RGF2eWRvdiA8M2Rhbmlzc2ltb0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBNYXNhaGlrbyBTYXdh ZGEgPHNhd2FkYS5tc2hrQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IFNhbWkgSW1zZWloIDxzYW1p bXNlaWhAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogTWF0aGV1cyBBbGNhbnRhcmEgPG1hdGhldXNz c2lsdjk3QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEJoYXJhdGggUnVwaXJlZGR5IDxiaGFyYXRo LnJ1cGlyZWRkeWZvcnBvc3RncmVzQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEFsZXhhbmRlciBL b3JvdGtvdiA8YWVrb3JvdGtvdkBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiB6ZW5nbWFuIDx6ZW5n bWFuQGhhbG9kYnRlY2guY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBQ0c9 ZXpaT3JOc3VMb0VUTEQxZ0Fzd1pNdUgybkdHcTdPZ2NjMFFPRTVoaFdhdz1jd0BtYWlsLmdtYWls LmNvbQotLS0KIGRvYy9zcmMvc2dtbC9jb25maWcuc2dtbCAgICAgICAgICAgICAgICAgICAgICB8 ICAyMyArKwogZG9jL3NyYy9zZ21sL21haW50ZW5hbmNlLnNnbWwgICAgICAgICAgICAgICAgIHwg IDMyICsrKwogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbCAgICAgICAgICAgIHwg IDE2ICsrCiBkb2Mvc3JjL3NnbWwvcmVmL3ZhY3V1bS5zZ21sICAgICAgICAgICAgICAgICAgfCAg MjMgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vcmVsb3B0aW9ucy5jICAgICAgICB8ICAx MSArCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgICAgICAgICAgfCAgMTIg Kwogc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMgICAgICAgICAgICAgICAgIHwgIDIxICst CiBzcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jICAgICAgICAgfCAyMjMgKysr KysrKysrKysrKysrKystCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyAgICAg ICAgICAgfCAgMjUgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jICAgICAgICAg ICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jICAgICAgICAgICAgICAg ICAgfCAgIDkgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0ICAg ICB8ICAgOCArCiBzcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUg fCAgIDEgKwogc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jICAgICAgICAgICAgICAgIHwg ICAxICsKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL3ZhY3V1bS5oICAgICAgICAgICAgICAgICB8ICAg MiArCiBzcmMvaW5jbHVkZS9taXNjYWRtaW4uaCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEg Kwogc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmggICAgICAgICAgICAgICAgICAgICAgIHwgICAyICsK IHNyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBz cmMvdGVzdC9tb2R1bGVzL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vLmdpdGlnbm9yZSAgIHwgICAyICsKIHNyYy90 ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL01ha2VmaWxlICAgICB8ICAyMCArKwogc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vbWVzb24uYnVpbGQgIHwgIDE1ICsrCiAuLi4vdC8w MDFfcGFyYWxsZWxfYXV0b3ZhY3V1bS5wbCAgICAgICAgICAgICAgfCAxOTcgKysrKysrKysrKysr KysrKwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgICAgIHwgICAx ICsKIDI0IGZpbGVzIGNoYW5nZWQsIDYxNSBpbnNlcnRpb25zKCspLCAzMyBkZWxldGlvbnMoLSkK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS8uZ2l0 aWdub3JlCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1 dW0vTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0 b3ZhY3V1bS9tZXNvbi5idWlsZAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMv dGVzdF9hdXRvdmFjdXVtL3QvMDAxX3BhcmFsbGVsX2F1dG92YWN1dW0ucGwKCmRpZmYgLS1naXQg YS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5k ZXggMjI5ZjQxMzUzZWIuLjcwZDg3NzFmMGFmIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY29u ZmlnLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBAIC0yOTE4LDYgKzI5MTgs NyBAQCBpbmNsdWRlX2RpciAnY29uZi5kJwogICAgICAgICA8cGFyYT4KICAgICAgICAgIFdoZW4g Y2hhbmdpbmcgdGhpcyB2YWx1ZSwgY29uc2lkZXIgYWxzbyBhZGp1c3RpbmcKICAgICAgICAgIDx4 cmVmIGxpbmtlbmQ9Imd1Yy1tYXgtcGFyYWxsZWwtd29ya2VycyIvPiwKKyAgICAgICAgIDx4cmVm IGxpbmtlbmQ9Imd1Yy1hdXRvdmFjdXVtLW1heC1wYXJhbGxlbC13b3JrZXJzIi8+LAogICAgICAg ICAgPHhyZWYgbGlua2VuZD0iZ3VjLW1heC1wYXJhbGxlbC1tYWludGVuYW5jZS13b3JrZXJzIi8+ LCBhbmQKICAgICAgICAgIDx4cmVmIGxpbmtlbmQ9Imd1Yy1tYXgtcGFyYWxsZWwtd29ya2Vycy1w ZXItZ2F0aGVyIi8+LgogICAgICAgICA8L3BhcmE+CkBAIC05NDg1LDYgKzk0ODYsMjggQEAgQ09Q WSBwb3N0Z3Jlc19sb2cgRlJPTSAnL2Z1bGwvcGF0aC90by9sb2dmaWxlLmNzdicgV0lUSCBjc3Y7 CiAgICAgICAgPC9saXN0aXRlbT4KICAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgICA8dmFy bGlzdGVudHJ5IGlkPSJndWMtYXV0b3ZhY3V1bS1tYXgtcGFyYWxsZWwtd29ya2VycyIgeHJlZmxh YmVsPSJhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzIj4KKyAgICAgICAgPHRlcm0+PHZh cm5hbWU+YXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VyczwvdmFybmFtZT4gKDx0eXBlPmlu dGVnZXI8L3R5cGU+KQorICAgICAgICA8aW5kZXh0ZXJtPgorICAgICAgICAgPHByaW1hcnk+PHZh cm5hbWU+YXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VyczwvdmFybmFtZT48L3ByaW1hcnk+ CisgICAgICAgICA8c2Vjb25kYXJ5PmNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9zZWNvbmRhcnk+ CisgICAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgICA8L3Rlcm0+CisgICAgICAgIDxsaXN0aXRl bT4KKyAgICAgICAgIDxwYXJhPgorICAgICAgICAgIFNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9m IHBhcmFsbGVsIHdvcmtlcnMgdGhhdCBjYW4gYmUgdXNlZCBieSBhCisgICAgICAgICAgc2luZ2xl IGF1dG92YWN1dW0gd29ya2VyIHRvIHByb2Nlc3MgaW5kZXhlcy4gVGhpcyBsaW1pdCBhcHBsaWVz CisgICAgICAgICAgc3BlY2lmaWNhbGx5IHRvIHRoZSBpbmRleCB2YWN1dW1pbmcgYW5kIGluZGV4 IGNsZWFudXAgcGhhc2VzIG9mCisgICAgICAgICAgYXV0b3ZhY3V1bS4gVGhlIGFjdHVhbCBudW1i ZXIgb2YgcGFyYWxsZWwgd29ya2VycyBpcyBmdXJ0aGVyIGxpbWl0ZWQKKyAgICAgICAgICBieSA8 eHJlZiBsaW5rZW5kPSJndWMtbWF4LXBhcmFsbGVsLXdvcmtlcnMiLz4uIFRoaXMgaXMgdGhlCisg ICAgICAgICAgcGVyLWF1dG92YWN1dW0gd29ya2VyIGVxdWl2YWxlbnQgb2YgdGhlIDxsaXRlcmFs PlBBUkFMTEVMPC9saXRlcmFsPgorICAgICAgICAgIG9wdGlvbiBvZiB0aGUgPGxpbmsgbGlua2Vu ZD0ic3FsLXZhY3V1bSI+PGNvbW1hbmQ+VkFDVVVNPC9jb21tYW5kPjwvbGluaz4KKyAgICAgICAg ICBjb21tYW5kLiBTZXR0aW5nIHRoaXMgdmFsdWUgdG8gMCBkaXNhYmxlcyBwYXJhbGxlbCB2YWN1 dW0gZHVyaW5nIGF1dG92YWN1dW0uCisgICAgICAgICAgVGhlIGRlZmF1bHQgaXMgMC4KKyAgICAg ICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisK ICAgICAgPC92YXJpYWJsZWxpc3Q+CiAgICAgPC9zZWN0Mj4KIApkaWZmIC0tZ2l0IGEvZG9jL3Ny Yy9zZ21sL21haW50ZW5hbmNlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbWFpbnRlbmFuY2Uuc2dtbApp bmRleCAwZDJhMjgyMDdlZC4uZWI2YTA3ZTA4NmQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9t YWludGVuYW5jZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9tYWludGVuYW5jZS5zZ21sCkBAIC0x MDM4LDYgKzEwMzgsMTAgQEAgYW5hbHl6ZSB0aHJlc2hvbGQgPSBhbmFseXplIGJhc2UgdGhyZXNo b2xkICsgYW5hbHl6ZSBzY2FsZSBmYWN0b3IgKiBudW1iZXIgb2YgdHUKICAgICBwZXItdGFibGUg PGxpdGVyYWw+YXV0b3ZhY3V1bV92YWN1dW1fY29zdF9kZWxheTwvbGl0ZXJhbD4gb3IKICAgICA8 bGl0ZXJhbD5hdXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2xpbWl0PC9saXRlcmFsPiBzdG9yYWdlIHBh cmFtZXRlcnMgaGF2ZSBiZWVuIHNldAogICAgIGFyZSBub3QgY29uc2lkZXJlZCBpbiB0aGUgYmFs YW5jaW5nIGFsZ29yaXRobS4KKyAgICBQYXJhbGxlbCB3b3JrZXJzIGxhdW5jaGVkIGZvciA8eHJl ZiBsaW5rZW5kPSJwYXJhbGxlbC12YWN1dW0iLz4gYXJlIHVzaW5nCisgICAgdGhlIHNhbWUgY29z dCBkZWxheSBwYXJhbWV0ZXJzIGFzIHRoZSBsZWFkZXIgd29ya2VyLiBJZiBhbnkgb2YgdGhlc2UK KyAgICBwYXJhbWV0ZXJzIGFyZSBjaGFuZ2VkIGluIHRoZSBsZWFkZXIgd29ya2VyLCBpdCB3aWxs IHByb3BhZ2F0ZSB0aGUgbmV3CisgICAgcGFyYW1ldGVyIHZhbHVlcyB0byBhbGwgb2YgaXRzIHBh cmFsbGVsIHdvcmtlcnMuCiAgICA8L3BhcmE+CiAKICAgIDxwYXJhPgpAQCAtMTE2Niw2ICsxMTcw LDM0IEBAIGFuYWx5emUgdGhyZXNob2xkID0gYW5hbHl6ZSBiYXNlIHRocmVzaG9sZCArIGFuYWx5 emUgc2NhbGUgZmFjdG9yICogbnVtYmVyIG9mIHR1CiAgICAgPC9wYXJhPgogICAgPC9zZWN0Mz4K ICAgPC9zZWN0Mj4KKworICA8c2VjdDIgaWQ9InBhcmFsbGVsLXZhY3V1bSIgeHJlZmxhYmVsPSJQ YXJhbGxlbCBWYWN1dW0iPgorICAgPHRpdGxlPlBhcmFsbGVsIFZhY3V1bTwvdGl0bGU+CisKKyAg IDxwYXJhPgorICAgIDxjb21tYW5kPlZBQ1VVTTwvY29tbWFuZD4gY2FuIHBlcmZvcm0gaW5kZXgg dmFjdXVtaW5nIGFuZCBpbmRleCBjbGVhbnVwCisgICAgcGhhc2VzIGluIHBhcmFsbGVsIHVzaW5n IGJhY2tncm91bmQgd29ya2VycyAoZm9yIHRoZSBkZXRhaWxzIG9mIGVhY2gKKyAgICB2YWN1dW0g cGhhc2UsIHBsZWFzZSByZWZlciB0byA8eHJlZiBsaW5rZW5kPSJ2YWN1dW0tcGhhc2VzIi8+KS4g VGhlCisgICAgZGVncmVlIG9mIHBhcmFsbGVsaXNtIGlzIGRldGVybWluZWQgYnkgdGhlIG51bWJl ciBvZiBpbmRleGVzIG9uIHRoZQorICAgIHJlbGF0aW9uIHRoYXQgc3VwcG9ydCBwYXJhbGxlbCB2 YWN1dW0sIGxpbWl0ZWQgYnkgdGhlIDxsaXRlcmFsPlBBUkFMTEVMPC9saXRlcmFsPgorICAgIChm b3IgbWFudWFsIDxjb21tYW5kPlZBQ1VVTTwvY29tbWFuZD4pIG9yIHRoZQorICAgIDx4cmVmIGxp bmtlbmQ9Imd1Yy1hdXRvdmFjdXVtLW1heC1wYXJhbGxlbC13b3JrZXJzIi8+IHBhcmFtZXRlcnMg KGZvcgorICAgIGF1dG92YWN1dW0pLgorICAgPC9wYXJhPgorCisgICA8cGFyYT4KKyAgICBBbiBp bmRleCBjYW4gcGFydGljaXBhdGUgaW4gcGFyYWxsZWwgdmFjdXVtIGlmIGFuZCBvbmx5IGlmIHRo ZSBzaXplIG9mIHRoZQorICAgIGluZGV4IGlzIG1vcmUgdGhhbiA8eHJlZiBsaW5rZW5kPSJndWMt bWluLXBhcmFsbGVsLWluZGV4LXNjYW4tc2l6ZSIvPi4KKyAgICBQbGVhc2Ugbm90ZSB0aGF0IGl0 IGlzIG5vdCBndWFyYW50ZWVkIHRoYXQgdGhlIG51bWJlciBvZiBwYXJhbGxlbCB3b3JrZXJzCisg ICAgc3BlY2lmaWVkIGluIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5pbnRlZ2VyPC9y ZXBsYWNlYWJsZT4gd2lsbCBiZQorICAgIHVzZWQgZHVyaW5nIGV4ZWN1dGlvbi4gIEl0IGlzIHBv c3NpYmxlIGZvciBhIHZhY3V1bSB0byBydW4gd2l0aCBmZXdlcgorICAgIHdvcmtlcnMgdGhhbiBz cGVjaWZpZWQsIG9yIGV2ZW4gd2l0aCBubyB3b3JrZXJzIGF0IGFsbC4gIE9ubHkgb25lIHdvcmtl cgorICAgIGNhbiBiZSB1c2VkIHBlciBpbmRleC4gIFNvIHBhcmFsbGVsIHdvcmtlcnMgYXJlIGxh dW5jaGVkIG9ubHkgd2hlbiB0aGVyZQorICAgIGFyZSBhdCBsZWFzdCA8bGl0ZXJhbD4yPC9saXRl cmFsPiBpbmRleGVzIGluIHRoZSB0YWJsZS4gIFdvcmtlcnMgZm9yCisgICAgdmFjdXVtIGFyZSBs YXVuY2hlZCBiZWZvcmUgdGhlIHN0YXJ0IG9mIGVhY2ggcGhhc2UgYW5kIGV4aXQgYXQgdGhlIGVu ZCBvZgorICAgIHRoZSBwaGFzZS4gIFRoZXNlIGJlaGF2aW9ycyBtaWdodCBjaGFuZ2UgaW4gYSBm dXR1cmUgcmVsZWFzZS4KKyAgIDwvcGFyYT4KKyAgPC9zZWN0Mj4KICA8L3NlY3QxPgogCiAKZGlm ZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwgYi9kb2Mvc3JjL3Nn bWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sCmluZGV4IDgwODI5YjIzOTQ1Li5lMzQyNTg1YzdmMCAx MDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sCkBAIC0xNzM4LDYgKzE3MzgsMjIgQEAgV0lU SCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJh bDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+ CiAKKyAgPHZhcmxpc3RlbnRyeSBpZD0icmVsb3B0aW9uLWF1dG92YWN1dW0tcGFyYWxsZWwtd29y a2VycyIgeHJlZmxhYmVsPSJhdXRvdmFjdXVtX3BhcmFsbGVsX3dvcmtlcnMiPgorICAgIDx0ZXJt PjxsaXRlcmFsPmF1dG92YWN1dW1fcGFyYWxsZWxfd29ya2VyczwvbGl0ZXJhbD4gKDx0eXBlPmlu dGVnZXI8L3R5cGU+KQorICAgIDxpbmRleHRlcm0+CisgICAgIDxwcmltYXJ5Pjx2YXJuYW1lPmF1 dG92YWN1dW1fcGFyYWxsZWxfd29ya2VyczwvdmFybmFtZT4gc3RvcmFnZSBwYXJhbWV0ZXI8L3By aW1hcnk+CisgICAgPC9pbmRleHRlcm0+CisgICAgPC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAg ICAgIDxwYXJhPgorICAgICAgIFBlci10YWJsZSB2YWx1ZSBmb3IgPHhyZWYgbGlua2VuZD0iZ3Vj LWF1dG92YWN1dW0tbWF4LXBhcmFsbGVsLXdvcmtlcnMiLz4KKyAgICAgICBwYXJhbWV0ZXIuIElm IC0xIGlzIHNwZWNpZmllZCwgPHZhcm5hbWU+YXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2Vy czwvdmFybmFtZT4KKyAgICAgICB2YWx1ZSB3aWxsIGJlIHVzZWQuIElmIHNldCB0byAwLCBwYXJh bGxlbCB2YWN1dW0gaXMgZGlzYWJsZWQgZm9yCisgICAgICAgdGhpcyB0YWJsZS4gVGhlIGRlZmF1 bHQgdmFsdWUgaXMgLTEuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJs aXN0ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnkgaWQ9InJlbG9wdGlvbi1hdXRvdmFjdXVtLXZh Y3V1bS10aHJlc2hvbGQiIHhyZWZsYWJlbD0iYXV0b3ZhY3V1bV92YWN1dW1fdGhyZXNob2xkIj4K ICAgICA8dGVybT48bGl0ZXJhbD5hdXRvdmFjdXVtX3ZhY3V1bV90aHJlc2hvbGQ8L2xpdGVyYWw+ LCA8bGl0ZXJhbD50b2FzdC5hdXRvdmFjdXVtX3ZhY3V1bV90aHJlc2hvbGQ8L2xpdGVyYWw+ICg8 dHlwZT5pbnRlZ2VyPC90eXBlPikKICAgICA8aW5kZXh0ZXJtPgpkaWZmIC0tZ2l0IGEvZG9jL3Ny Yy9zZ21sL3JlZi92YWN1dW0uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvdmFjdXVtLnNnbWwKaW5k ZXggYWM1ZDA4M2Q0NjguLjM4ZWU5NzNlYTA1IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVm L3ZhY3V1bS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvdmFjdXVtLnNnbWwKQEAgLTgxLDcg KzgxLDcgQEAgVkFDVVVNIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3B0aW9u PC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIF0gWyA8cmUKICAgIGlzIG5vdCBvYnRhaW5lZC4gIEhv d2V2ZXIsIGV4dHJhIHNwYWNlIGlzIG5vdCByZXR1cm5lZCB0byB0aGUgb3BlcmF0aW5nCiAgICBz eXN0ZW0gKGluIG1vc3QgY2FzZXMpOyBpdCdzIGp1c3Qga2VwdCBhdmFpbGFibGUgZm9yIHJlLXVz ZSB3aXRoaW4gdGhlCiAgICBzYW1lIHRhYmxlLiAgSXQgYWxzbyBhbGxvd3MgdXMgdG8gbGV2ZXJh Z2UgbXVsdGlwbGUgQ1BVcyBpbiBvcmRlciB0byBwcm9jZXNzCi0gICBpbmRleGVzLiAgVGhpcyBm ZWF0dXJlIGlzIGtub3duIGFzIDxmaXJzdHRlcm0+cGFyYWxsZWwgdmFjdXVtPC9maXJzdHRlcm0+ LgorICAgaW5kZXhlcy4gIFRoaXMgZmVhdHVyZSBpcyBrbm93biBhcyA8Zmlyc3R0ZXJtPjx4cmVm IGxpbmtlbmQ9InBhcmFsbGVsLXZhY3V1bSIvPjwvZmlyc3R0ZXJtPi4KICAgIFRvIGRpc2FibGUg dGhpcyBmZWF0dXJlLCBvbmUgY2FuIHVzZSA8bGl0ZXJhbD5QQVJBTExFTDwvbGl0ZXJhbD4gb3B0 aW9uIGFuZAogICAgc3BlY2lmeSBwYXJhbGxlbCB3b3JrZXJzIGFzIHplcm8uICA8Y29tbWFuZD5W QUNVVU0gRlVMTDwvY29tbWFuZD4gcmV3cml0ZXMKICAgIHRoZSBlbnRpcmUgY29udGVudHMgb2Yg dGhlIHRhYmxlIGludG8gYSBuZXcgZGlzayBmaWxlIHdpdGggbm8gZXh0cmEgc3BhY2UsCkBAIC0y NjYsMjQgKzI2Niw5IEBAIFZBQ1VVTSBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi Pm9wdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSBdIFsgPHJlCiAgICAgPHRlcm0+PGxpdGVy YWw+UEFSQUxMRUw8L2xpdGVyYWw+PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KICAgICAgPHBhcmE+ Ci0gICAgICBQZXJmb3JtIGluZGV4IHZhY3V1bSBhbmQgaW5kZXggY2xlYW51cCBwaGFzZXMgb2Yg PGNvbW1hbmQ+VkFDVVVNPC9jb21tYW5kPgotICAgICAgaW4gcGFyYWxsZWwgdXNpbmcgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmludGVnZXI8L3JlcGxhY2VhYmxlPgotICAgICAgYmFj a2dyb3VuZCB3b3JrZXJzIChmb3IgdGhlIGRldGFpbHMgb2YgZWFjaCB2YWN1dW0gcGhhc2UsIHBs ZWFzZQotICAgICAgcmVmZXIgdG8gPHhyZWYgbGlua2VuZD0idmFjdXVtLXBoYXNlcyIvPikuICBU aGUgbnVtYmVyIG9mIHdvcmtlcnMgdXNlZAotICAgICAgdG8gcGVyZm9ybSB0aGUgb3BlcmF0aW9u IGlzIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgaW5kZXhlcyBvbiB0aGUKLSAgICAgIHJlbGF0aW9u IHRoYXQgc3VwcG9ydCBwYXJhbGxlbCB2YWN1dW0gd2hpY2ggaXMgbGltaXRlZCBieSB0aGUgbnVt YmVyIG9mCi0gICAgICB3b3JrZXJzIHNwZWNpZmllZCB3aXRoIDxsaXRlcmFsPlBBUkFMTEVMPC9s aXRlcmFsPiBvcHRpb24gaWYgYW55IHdoaWNoIGlzCi0gICAgICBmdXJ0aGVyIGxpbWl0ZWQgYnkg PHhyZWYgbGlua2VuZD0iZ3VjLW1heC1wYXJhbGxlbC1tYWludGVuYW5jZS13b3JrZXJzIi8+Lgot ICAgICAgQW4gaW5kZXggY2FuIHBhcnRpY2lwYXRlIGluIHBhcmFsbGVsIHZhY3V1bSBpZiBhbmQg b25seSBpZiB0aGUgc2l6ZSBvZiB0aGUKLSAgICAgIGluZGV4IGlzIG1vcmUgdGhhbiA8eHJlZiBs aW5rZW5kPSJndWMtbWluLXBhcmFsbGVsLWluZGV4LXNjYW4tc2l6ZSIvPi4KLSAgICAgIFBsZWFz ZSBub3RlIHRoYXQgaXQgaXMgbm90IGd1YXJhbnRlZWQgdGhhdCB0aGUgbnVtYmVyIG9mIHBhcmFs bGVsIHdvcmtlcnMKLSAgICAgIHNwZWNpZmllZCBpbiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+aW50ZWdlcjwvcmVwbGFjZWFibGU+IHdpbGwgYmUKLSAgICAgIHVzZWQgZHVyaW5nIGV4 ZWN1dGlvbi4gIEl0IGlzIHBvc3NpYmxlIGZvciBhIHZhY3V1bSB0byBydW4gd2l0aCBmZXdlcgot ICAgICAgd29ya2VycyB0aGFuIHNwZWNpZmllZCwgb3IgZXZlbiB3aXRoIG5vIHdvcmtlcnMgYXQg YWxsLiAgT25seSBvbmUgd29ya2VyCi0gICAgICBjYW4gYmUgdXNlZCBwZXIgaW5kZXguICBTbyBw YXJhbGxlbCB3b3JrZXJzIGFyZSBsYXVuY2hlZCBvbmx5IHdoZW4gdGhlcmUKLSAgICAgIGFyZSBh dCBsZWFzdCA8bGl0ZXJhbD4yPC9saXRlcmFsPiBpbmRleGVzIGluIHRoZSB0YWJsZS4gIFdvcmtl cnMgZm9yCi0gICAgICB2YWN1dW0gYXJlIGxhdW5jaGVkIGJlZm9yZSB0aGUgc3RhcnQgb2YgZWFj aCBwaGFzZSBhbmQgZXhpdCBhdCB0aGUgZW5kIG9mCi0gICAgICB0aGUgcGhhc2UuICBUaGVzZSBi ZWhhdmlvcnMgbWlnaHQgY2hhbmdlIGluIGEgZnV0dXJlIHJlbGVhc2UuICBUaGlzCisgICAgICBT cGVjaWZpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHBhcmFsbGVsIHdvcmtlcnMgdGhhdCBjYW4g YmUgdXNlZAorICAgICAgZm9yIDx4cmVmIGxpbmtlbmQ9InBhcmFsbGVsLXZhY3V1bSIvPiwgd2hp Y2ggaXMgZnVydGhlciBsaW1pdGVkCisgICAgICBieSA8eHJlZiBsaW5rZW5kPSJndWMtbWF4LXBh cmFsbGVsLW1haW50ZW5hbmNlLXdvcmtlcnMiLz4uIFRoaXMKICAgICAgIG9wdGlvbiBjYW4ndCBi ZSB1c2VkIHdpdGggdGhlIDxsaXRlcmFsPkZVTEw8L2xpdGVyYWw+IG9wdGlvbi4KICAgICAgPC9w YXJhPgogICAgIDwvbGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvY29t bW9uL3JlbG9wdGlvbnMuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vcmVsb3B0aW9ucy5j CmluZGV4IGI0MWVhZmQ3NjkxLi4zZTgzMmMzNzk3ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2NvbW1vbi9yZWxvcHRpb25zLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1v bi9yZWxvcHRpb25zLmMKQEAgLTIzNiw2ICsyMzYsMTUgQEAgc3RhdGljIHJlbG9wdF9pbnQgaW50 UmVsT3B0c1tdID0KIAkJfSwKIAkJU1BHSVNUX0RFRkFVTFRfRklMTEZBQ1RPUiwgU1BHSVNUX01J Tl9GSUxMRkFDVE9SLCAxMDAKIAl9LAorCXsKKwkJeworCQkJImF1dG92YWN1dW1fcGFyYWxsZWxf d29ya2VycyIsCisJCQkiTWF4aW11bSBudW1iZXIgb2YgcGFyYWxsZWwgYXV0b3ZhY3V1bSB3b3Jr ZXJzIHRoYXQgY2FuIGJlIHVzZWQgZm9yIHByb2Nlc3NpbmcgdGhpcyB0YWJsZS4iLAorCQkJUkVM T1BUX0tJTkRfSEVBUCwKKwkJCVNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jaworCQl9LAorCQktMSwg LTEsIDEwMjQKKwl9LAogCXsKIAkJewogCQkJImF1dG92YWN1dW1fdmFjdXVtX3RocmVzaG9sZCIs CkBAIC0xOTY5LDYgKzE5NzgsOCBAQCBkZWZhdWx0X3JlbG9wdGlvbnMoRGF0dW0gcmVsb3B0aW9u cywgYm9vbCB2YWxpZGF0ZSwgcmVsb3B0X2tpbmQga2luZCkKIAkJeyJmaWxsZmFjdG9yIiwgUkVM T1BUX1RZUEVfSU5ULCBvZmZzZXRvZihTdGRSZE9wdGlvbnMsIGZpbGxmYWN0b3IpfSwKIAkJeyJh dXRvdmFjdXVtX2VuYWJsZWQiLCBSRUxPUFRfVFlQRV9CT09MLAogCQlvZmZzZXRvZihTdGRSZE9w dGlvbnMsIGF1dG92YWN1dW0pICsgb2Zmc2V0b2YoQXV0b1ZhY09wdHMsIGVuYWJsZWQpfSwKKwkJ eyJhdXRvdmFjdXVtX3BhcmFsbGVsX3dvcmtlcnMiLCBSRUxPUFRfVFlQRV9JTlQsCisJCW9mZnNl dG9mKFN0ZFJkT3B0aW9ucywgYXV0b3ZhY3V1bSkgKyBvZmZzZXRvZihBdXRvVmFjT3B0cywgYXV0 b3ZhY3V1bV9wYXJhbGxlbF93b3JrZXJzKX0sCiAJCXsiYXV0b3ZhY3V1bV92YWN1dW1fdGhyZXNo b2xkIiwgUkVMT1BUX1RZUEVfSU5ULAogCQlvZmZzZXRvZihTdGRSZE9wdGlvbnMsIGF1dG92YWN1 dW0pICsgb2Zmc2V0b2YoQXV0b1ZhY09wdHMsIHZhY3V1bV90aHJlc2hvbGQpfSwKIAkJeyJhdXRv dmFjdXVtX3ZhY3V1bV9tYXhfdGhyZXNob2xkIiwgUkVMT1BUX1RZUEVfSU5ULApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IDI0MDAxYjI3Mzg3Li43MWY3NDkzZmYyOSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtMTUyLDYgKzE1Miw3IEBACiAjaW5j bHVkZSAic3RvcmFnZS9sYXRjaC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvcmVhZF9zdHJlYW0uaCIKKyNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9p bnQuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9wZ19y dXNhZ2UuaCIKICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKQEAgLTg2Miw2ICs4NjMsMTcg QEAgaGVhcF92YWN1dW1fcmVsKFJlbGF0aW9uIHJlbCwgY29uc3QgVmFjdXVtUGFyYW1zIHBhcmFt cywKIAlsYXp5X2NoZWNrX3dyYXBhcm91bmRfZmFpbHNhZmUodmFjcmVsKTsKIAlkZWFkX2l0ZW1z X2FsbG9jKHZhY3JlbCwgcGFyYW1zLm53b3JrZXJzKTsKIAorI2lmZGVmIFVTRV9JTkpFQ1RJT05f UE9JTlRTCisKKwkvKgorCSAqIFVzZWQgYnkgdGVzdHMgdG8gcGF1c2UgYmVmb3JlIHBhcmFsbGVs IHZhY3V1bSBpcyBsYXVuY2hlZCwgYWxsb3dpbmcKKwkgKiB0ZXN0IGNvZGUgdG8gbW9kaWZ5IGNv bmZpZ3VyYXRpb24gdGhhdCB0aGUgbGVhZGVyIHRoZW4gcHJvcGFnYXRlcyB0bworCSAqIHdvcmtl cnMuCisJICovCisJaWYgKEFtQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSAmJiBQYXJhbGxlbFZh Y3V1bUlzQWN0aXZlKHZhY3JlbCkpCisJCUlOSkVDVElPTl9QT0lOVCgiYXV0b3ZhY3V1bS1zdGFy dC1wYXJhbGxlbC12YWN1dW0iLCBOVUxMKTsKKyNlbmRpZgorCiAJLyoKIAkgKiBDYWxsIGxhenlf c2Nhbl9oZWFwIHRvIHBlcmZvcm0gYWxsIHJlcXVpcmVkIGhlYXAgcHJ1bmluZywgaW5kZXgKIAkg KiB2YWN1dW1pbmcsIGFuZCBoZWFwIHZhY3V1bWluZyAocGx1cyByZWxhdGVkIHByb2Nlc3Npbmcp CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3ZhY3V1bS5jCmluZGV4IDc2NmE1MThjN2ExLi5mMGQ3NDg3MGY5MyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvdmFjdXVtLmMKQEAgLTI0MzUsOCArMjQzNSwxOSBAQCB2YWN1dW1fZGVsYXlfcG9pbnQo Ym9vbCBpc19hbmFseXplKQogCS8qIEFsd2F5cyBjaGVjayBmb3IgaW50ZXJydXB0cyAqLwogCUNI RUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKLQlpZiAoSW50ZXJydXB0UGVuZGluZyB8fAotCQkoIVZh Y3V1bUNvc3RBY3RpdmUgJiYgIUNvbmZpZ1JlbG9hZFBlbmRpbmcpKQorCWlmIChJbnRlcnJ1cHRQ ZW5kaW5nKQorCQlyZXR1cm47CisKKwlpZiAoSXNQYXJhbGxlbFdvcmtlcigpKQorCXsKKwkJLyoK KwkJICogVXBkYXRlIGNvc3QtYmFzZWQgdmFjdXVtIGRlbGF5IHBhcmFtZXRlcnMgZm9yIGEgcGFy YWxsZWwgYXV0b3ZhY3V1bQorCQkgKiB3b3JrZXIgaWYgYW55IGNoYW5nZXMgYXJlIGRldGVjdGVk LgorCQkgKi8KKwkJcGFyYWxsZWxfdmFjdXVtX3VwZGF0ZV9zaGFyZWRfZGVsYXlfcGFyYW1zKCk7 CisJfQorCisJaWYgKCFWYWN1dW1Db3N0QWN0aXZlICYmICFDb25maWdSZWxvYWRQZW5kaW5nKQog CQlyZXR1cm47CiAKIAkvKgpAQCAtMjQ1MCw2ICsyNDYxLDEyIEBAIHZhY3V1bV9kZWxheV9wb2lu dChib29sIGlzX2FuYWx5emUpCiAJCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSBmYWxzZTsKIAkJUHJv Y2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7CiAJCVZhY3V1bVVwZGF0ZUNvc3RzKCk7CisKKwkJ LyoKKwkJICogUHJvcGFnYXRlIGNvc3QtYmFzZWQgdmFjdXVtIGRlbGF5IHBhcmFtZXRlcnMgdG8g c2hhcmVkIG1lbW9yeSBpZgorCQkgKiBhbnkgb2YgdGhlbSBoYXZlIGNoYW5nZWQgZHVyaW5nIHRo ZSBjb25maWcgcmVsb2FkLgorCQkgKi8KKwkJcGFyYWxsZWxfdmFjdXVtX3Byb3BhZ2F0ZV9zaGFy ZWRfZGVsYXlfcGFyYW1zKCk7CiAJfQogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJh bGxlbC5jCmluZGV4IDc3ODM0Yjk2YTIxLi42ODNhMGYzNGUyNCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5k cy92YWN1dW1wYXJhbGxlbC5jCkBAIC0xLDcgKzEsOSBAQAogLyotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAg KgogICogdmFjdXVtcGFyYWxsZWwuYwotICoJICBTdXBwb3J0IHJvdXRpbmVzIGZvciBwYXJhbGxl bCB2YWN1dW0gZXhlY3V0aW9uLgorICoJICBTdXBwb3J0IHJvdXRpbmVzIGZvciBwYXJhbGxlbCB2 YWN1dW0gYW5kIGF1dG92YWN1dW0gZXhlY3V0aW9uLiBJbiB0aGUKKyAqCSAgY29tbWVudHMgYmVs b3csIHRoZSB3b3JkICJ2YWN1dW0iIHdpbGwgcmVmZXIgdG8gYm90aCB2YWN1dW0gYW5kCisgKgkg IGF1dG92YWN1dW0uCiAgKgogICogVGhpcyBmaWxlIGNvbnRhaW5zIHJvdXRpbmVzIHRoYXQgYXJl IGludGVuZGVkIHRvIHN1cHBvcnQgc2V0dGluZyB1cCwgdXNpbmcsCiAgKiBhbmQgdGVhcmluZyBk b3duIGEgUGFyYWxsZWxWYWN1dW1TdGF0ZS4KQEAgLTE2LDYgKzE4LDEzIEBACiAgKiB0aGUgcGFy YWxsZWwgY29udGV4dCBpcyByZS1pbml0aWFsaXplZCBzbyB0aGF0IHRoZSBzYW1lIERTTSBjYW4g YmUgdXNlZCBmb3IKICAqIG11bHRpcGxlIHBhc3NlcyBvZiBpbmRleCBidWxrLWRlbGV0aW9uIGFu ZCBpbmRleCBjbGVhbnVwLgogICoKKyAqIEZvciBwYXJhbGxlbCBhdXRvdmFjdXVtLCB3ZSBuZWVk IHRvIHByb3BhZ2F0ZSBjb3N0LWJhc2VkIHZhY3V1bSBkZWxheQorICogcGFyYW1ldGVycyBmcm9t IHRoZSBsZWFkZXIgdG8gaXRzIHdvcmtlcnMsIGFzIHRoZSBsZWFkZXIncyBwYXJhbWV0ZXJzIGNh bgorICogY2hhbmdlIGV2ZW4gd2hpbGUgcHJvY2Vzc2luZyBhIHRhYmxlIChlLmcuLCBkdWUgdG8g YSBjb25maWcgcmVsb2FkKS4KKyAqIFRoZSBQVlNoYXJlZENvc3RQYXJhbXMgc3RydWN0IG1hbmFn ZXMgdGhlc2UgcGFyYW1ldGVycyB1c2luZyBhCisgKiBnZW5lcmF0aW9uIGNvdW50ZXIuIEVhY2gg cGFyYWxsZWwgd29ya2VyIHBvbGxzIHRoaXMgc2hhcmVkIHN0YXRlIGFuZAorICogcmVmcmVzaGVz IGl0cyBsb2NhbCBkZWxheSBwYXJhbWV0ZXJzIHdoZW5ldmVyIGEgY2hhbmdlIGlzIGRldGVjdGVk LgorICoKICAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDI2LCBQb3N0Z3JlU1FMIEds b2JhbCBEZXZlbG9wbWVudCBHcm91cAogICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBS ZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKICAqCkBAIC0zNyw2ICs0Niw3 IEBACiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2Mu aCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCisjaW5jbHVkZSAidXRpbHMvaW5qZWN0aW9u X3BvaW50LmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMv cmVsLmgiCiAKQEAgLTUxLDYgKzYxLDMzIEBACiAjZGVmaW5lIFBBUkFMTEVMX1ZBQ1VVTV9LRVlf V0FMX1VTQUdFCQk0CiAjZGVmaW5lIFBBUkFMTEVMX1ZBQ1VVTV9LRVlfSU5ERVhfU1RBVFMJCTUK IAorLyoKKyAqIFN0cnVjdCBmb3IgY29zdC1iYXNlZCB2YWN1dW0gZGVsYXkgcmVsYXRlZCBwYXJh bWV0ZXJzIHRvIHNoYXJlIGFtb25nIGFuCisgKiBhdXRvdmFjdXVtIHdvcmtlciBhbmQgaXRzIHBh cmFsbGVsIHZhY3V1bSB3b3JrZXJzLgorICovCit0eXBlZGVmIHN0cnVjdCBQVlNoYXJlZENvc3RQ YXJhbXMKK3sKKwkvKgorCSAqIFRoZSBnZW5lcmF0aW9uIGNvdW50ZXIgaXMgaW5jcmVtZW50ZWQg YnkgdGhlIGxlYWRlciBwcm9jZXNzIGVhY2ggdGltZQorCSAqIGl0IHVwZGF0ZXMgdGhlIHNoYXJl ZCBjb3N0LWJhc2VkIHZhY3V1bSBkZWxheSBwYXJhbWV0ZXJzLiBQYXJhbGxlbAorCSAqIHZhY3V1 bSB3b3JrZXJzIGNvbXBhcmVzIGl0IHdpdGggdGhlaXIgbG9jYWwgZ2VuZXJhdGlvbiwKKwkgKiBz aGFyZWRfcGFyYW1zX2dlbmVyYXRpb25fbG9jYWwsIHRvIGRldGVjdCB3aGV0aGVyIHRoZXkgbmVl ZCB0byByZWZyZXNoCisJICogdGhlaXIgbG9jYWwgcGFyYW1ldGVycy4gVGhlIGdlbmVyYXRpb24g c3RhcnRzIGZyb20gMSBzbyB0aGF0IGEgZnJlc2hseQorCSAqIHN0YXJ0ZWQgd29ya2VyICh3aG9z ZSBsb2NhbCBjb3B5IGlzIDApIHdpbGwgYWx3YXlzIGxvYWQgdGhlIGluaXRpYWwKKwkgKiBwYXJh bWV0ZXJzIG9uIGl0cyBmaXJzdCBjaGVjay4KKwkgKi8KKwlwZ19hdG9taWNfdWludDMyIGdlbmVy YXRpb247CisKKwlzbG9ja190CQltdXRleDsJCQkvKiBwcm90ZWN0cyBhbGwgZmllbGRzIGJlbG93 ICovCisKKwkvKiBQYXJhbWV0ZXJzIHRvIHNoYXJlIHdpdGggcGFyYWxsZWwgd29ya2VycyAqLwor CWRvdWJsZQkJY29zdF9kZWxheTsKKwlpbnQJCQljb3N0X2xpbWl0OworCWludAkJCWNvc3RfcGFn ZV9kaXJ0eTsKKwlpbnQJCQljb3N0X3BhZ2VfaGl0OworCWludAkJCWNvc3RfcGFnZV9taXNzOwor fSBQVlNoYXJlZENvc3RQYXJhbXM7CisKIC8qCiAgKiBTaGFyZWQgaW5mb3JtYXRpb24gYW1vbmcg cGFyYWxsZWwgd29ya2Vycy4gIFNvIHRoaXMgaXMgYWxsb2NhdGVkIGluIHRoZSBEU00KICAqIHNl Z21lbnQuCkBAIC0xMjAsNiArMTU3LDE4IEBAIHR5cGVkZWYgc3RydWN0IFBWU2hhcmVkCiAKIAkv KiBTdGF0aXN0aWNzIG9mIHNoYXJlZCBkZWFkIGl0ZW1zICovCiAJVmFjRGVhZEl0ZW1zSW5mbyBk ZWFkX2l0ZW1zX2luZm87CisKKwkvKgorCSAqIElmICd0cnVlJyB0aGVuIHdlIGFyZSBydW5uaW5n IHBhcmFsbGVsIGF1dG92YWN1dW0uIE90aGVyd2lzZSwgd2UgYXJlCisJICogcnVubmluZyBwYXJh bGxlbCBtYWludGVuYW5jZSBWQUNVVU0uCisJICovCisJYm9vbAkJaXNfYXV0b3ZhY3V1bTsKKwor CS8qCisJICogQ29zdC1iYXNlZCB2YWN1dW0gZGVsYXkgcGFyYW1ldGVycyBzaGFyZWQgYmV0d2Vl biB0aGUgYXV0b3ZhY3V1bSBsZWFkZXIKKwkgKiBhbmQgaXRzIHBhcmFsbGVsIHdvcmtlcnMuCisJ ICovCisJUFZTaGFyZWRDb3N0UGFyYW1zIGNvc3RfcGFyYW1zOwogfSBQVlNoYXJlZDsKIAogLyog U3RhdHVzIHVzZWQgZHVyaW5nIHBhcmFsbGVsIGluZGV4IHZhY3V1bSBvciBjbGVhbnVwICovCkBA IC0yMjIsNiArMjcxLDE3IEBAIHN0cnVjdCBQYXJhbGxlbFZhY3V1bVN0YXRlCiAJUFZJbmRWYWNT dGF0dXMgc3RhdHVzOwogfTsKIAorc3RhdGljIFBWU2hhcmVkQ29zdFBhcmFtcyAqcHZfc2hhcmVk X2Nvc3RfcGFyYW1zID0gTlVMTDsKKworLyoKKyAqIFdvcmtlci1sb2NhbCBjb3B5IG9mIHRoZSBs YXN0IGNvc3QtcGFyYW1ldGVyIGdlbmVyYXRpb24gdGhpcyB3b3JrZXIgaGFzCisgKiBhcHBsaWVk LiAgSW5pdGlhbGl6ZWQgdG8gMDsgc2luY2UgdGhlIGxlYWRlciBpbml0aWFsaXplcyB0aGUgc2hh cmVkCisgKiBnZW5lcmF0aW9uIGNvdW50ZXIgdG8gMSwgdGhlIGZpcnN0IGNhbGwgdG8KKyAqIHBh cmFsbGVsX3ZhY3V1bV91cGRhdGVfc2hhcmVkX2RlbGF5X3BhcmFtcygpIHdpbGwgYWx3YXlzIGRl dGVjdCBhCisgKiBtaXNtYXRjaCBhbmQgcmVhZCB0aGUgaW5pdGlhbCBwYXJhbWV0ZXJzIGZyb20g c2hhcmVkIG1lbW9yeS4KKyAqLworc3RhdGljIHVpbnQzMiBzaGFyZWRfcGFyYW1zX2dlbmVyYXRp b25fbG9jYWwgPSAwOworCiBzdGF0aWMgaW50CXBhcmFsbGVsX3ZhY3V1bV9jb21wdXRlX3dvcmtl cnMoUmVsYXRpb24gKmluZHJlbHMsIGludCBuaW5kZXhlcywgaW50IG5yZXF1ZXN0ZWQsCiAJCQkJ CQkJCQkJCWJvb2wgKndpbGxfcGFyYWxsZWxfdmFjdXVtKTsKIHN0YXRpYyB2b2lkIHBhcmFsbGVs X3ZhY3V1bV9wcm9jZXNzX2FsbF9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywgaW50 IG51bV9pbmRleF9zY2FucywKQEAgLTIzMyw2ICsyOTMsNyBAQCBzdGF0aWMgdm9pZCBwYXJhbGxl bF92YWN1dW1fcHJvY2Vzc19vbmVfaW5kZXgoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBSZWxh dGlvbgogc3RhdGljIGJvb2wgcGFyYWxsZWxfdmFjdXVtX2luZGV4X2lzX3BhcmFsbGVsX3NhZmUo UmVsYXRpb24gaW5kcmVsLCBpbnQgbnVtX2luZGV4X3NjYW5zLAogCQkJCQkJCQkJCQkJICAgYm9v bCB2YWN1dW0pOwogc3RhdGljIHZvaWQgcGFyYWxsZWxfdmFjdXVtX2Vycm9yX2NhbGxiYWNrKHZv aWQgKmFyZyk7CitzdGF0aWMgaW5saW5lIHZvaWQgcGFyYWxsZWxfdmFjdXVtX3NldF9jb3N0X3Bh cmFtZXRlcnMoUFZTaGFyZWRDb3N0UGFyYW1zICpwYXJhbXMpOwogCiAvKgogICogVHJ5IHRvIGVu dGVyIHBhcmFsbGVsIG1vZGUgYW5kIGNyZWF0ZSBhIHBhcmFsbGVsIGNvbnRleHQuICBUaGVuIGlu aXRpYWxpemUKQEAgLTM3NCw4ICs0MzUsOSBAQCBwYXJhbGxlbF92YWN1dW1faW5pdChSZWxhdGlv biByZWwsIFJlbGF0aW9uICppbmRyZWxzLCBpbnQgbmluZGV4ZXMsCiAJc2hhcmVkLT5xdWVyeWlk ID0gcGdzdGF0X2dldF9teV9xdWVyeV9pZCgpOwogCXNoYXJlZC0+bWFpbnRlbmFuY2Vfd29ya19t ZW1fd29ya2VyID0KIAkJKG5pbmRleGVzX213bSA+IDApID8KLQkJbWFpbnRlbmFuY2Vfd29ya19t ZW0gLyBNaW4ocGFyYWxsZWxfd29ya2VycywgbmluZGV4ZXNfbXdtKSA6Ci0JCW1haW50ZW5hbmNl X3dvcmtfbWVtOworCQl2YWNfd29ya19tZW0gLyBNaW4ocGFyYWxsZWxfd29ya2VycywgbmluZGV4 ZXNfbXdtKSA6CisJCXZhY193b3JrX21lbTsKKwogCXNoYXJlZC0+ZGVhZF9pdGVtc19pbmZvLm1h eF9ieXRlcyA9IHZhY193b3JrX21lbSAqIChzaXplX3QpIDEwMjQ7CiAKIAkvKiBQcmVwYXJlIERT QSBzcGFjZSBmb3IgZGVhZCBpdGVtcyAqLwpAQCAtMzkyLDYgKzQ1NCwyMSBAQCBwYXJhbGxlbF92 YWN1dW1faW5pdChSZWxhdGlvbiByZWwsIFJlbGF0aW9uICppbmRyZWxzLCBpbnQgbmluZGV4ZXMs CiAJcGdfYXRvbWljX2luaXRfdTMyKCYoc2hhcmVkLT5hY3RpdmVfbndvcmtlcnMpLCAwKTsKIAlw Z19hdG9taWNfaW5pdF91MzIoJihzaGFyZWQtPmlkeCksIDApOwogCisJc2hhcmVkLT5pc19hdXRv dmFjdXVtID0gQW1BdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpOworCisJLyoKKwkgKiBJbml0aWFs aXplIHNoYXJlZCBjb3N0LWJhc2VkIHZhY3V1bSBkZWxheSBwYXJhbWV0ZXJzIGlmIGl0J3MgZm9y CisJICogYXV0b3ZhY3V1bS4KKwkgKi8KKwlpZiAoc2hhcmVkLT5pc19hdXRvdmFjdXVtKQorCXsK KwkJcGFyYWxsZWxfdmFjdXVtX3NldF9jb3N0X3BhcmFtZXRlcnMoJnNoYXJlZC0+Y29zdF9wYXJh bXMpOworCQlwZ19hdG9taWNfaW5pdF91MzIoJnNoYXJlZC0+Y29zdF9wYXJhbXMuZ2VuZXJhdGlv biwgMSk7CisJCVNwaW5Mb2NrSW5pdCgmc2hhcmVkLT5jb3N0X3BhcmFtcy5tdXRleCk7CisKKwkJ cHZfc2hhcmVkX2Nvc3RfcGFyYW1zID0gJihzaGFyZWQtPmNvc3RfcGFyYW1zKTsKKwl9CisKIAlz aG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVMX1ZBQ1VVTV9LRVlfU0hBUkVELCBzaGFy ZWQpOwogCXB2cy0+c2hhcmVkID0gc2hhcmVkOwogCkBAIC00NTcsNiArNTM0LDkgQEAgcGFyYWxs ZWxfdmFjdXVtX2VuZChQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsIEluZGV4QnVsa0RlbGV0ZVJl c3VsdCAqKmlzdGF0cykKIAlEZXN0cm95UGFyYWxsZWxDb250ZXh0KHB2cy0+cGN4dCk7CiAJRXhp dFBhcmFsbGVsTW9kZSgpOwogCisJaWYgKEFtQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSkKKwkJ cHZfc2hhcmVkX2Nvc3RfcGFyYW1zID0gTlVMTDsKKwogCXBmcmVlKHB2cy0+d2lsbF9wYXJhbGxl bF92YWN1dW0pOwogCXBmcmVlKHB2cyk7CiB9CkBAIC01MzQsNiArNjE0LDEwMyBAQCBwYXJhbGxl bF92YWN1dW1fY2xlYW51cF9hbGxfaW5kZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsIGxv bmcgbnVtX3RhYmxlX3R1cAogCXBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX2FsbF9pbmRleGVzKHB2 cywgbnVtX2luZGV4X3NjYW5zLCBmYWxzZSwgd3N0YXRzKTsKIH0KIAorLyoKKyAqIEZpbGwgaW4g dGhlIGdpdmVuIHN0cnVjdHVyZSB3aXRoIGNvc3QtYmFzZWQgdmFjdXVtIGRlbGF5IHBhcmFtZXRl ciB2YWx1ZXMuCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorcGFyYWxsZWxfdmFjdXVtX3NldF9j b3N0X3BhcmFtZXRlcnMoUFZTaGFyZWRDb3N0UGFyYW1zICpwYXJhbXMpCit7CisJcGFyYW1zLT5j b3N0X2RlbGF5ID0gdmFjdXVtX2Nvc3RfZGVsYXk7CisJcGFyYW1zLT5jb3N0X2xpbWl0ID0gdmFj dXVtX2Nvc3RfbGltaXQ7CisJcGFyYW1zLT5jb3N0X3BhZ2VfZGlydHkgPSBWYWN1dW1Db3N0UGFn ZURpcnR5OworCXBhcmFtcy0+Y29zdF9wYWdlX2hpdCA9IFZhY3V1bUNvc3RQYWdlSGl0OworCXBh cmFtcy0+Y29zdF9wYWdlX21pc3MgPSBWYWN1dW1Db3N0UGFnZU1pc3M7Cit9CisKKy8qCisgKiBV cGRhdGVzIHRoZSBjb3N0LWJhc2VkIHZhY3V1bSBkZWxheSBwYXJhbWV0ZXJzIGZvciBwYXJhbGxl bCBhdXRvdmFjdXVtCisgKiB3b3JrZXJzLgorICoKKyAqIEZvciBub24tYXV0b3ZhY3V1bSBwYXJh bGxlbCB3b3JrZXJzLCB0aGlzIGZ1bmN0aW9uIHdpbGwgaGF2ZSBubyBlZmZlY3QuCisgKi8KK3Zv aWQKK3BhcmFsbGVsX3ZhY3V1bV91cGRhdGVfc2hhcmVkX2RlbGF5X3BhcmFtcyh2b2lkKQorewor CXVpbnQzMgkJcGFyYW1zX2dlbmVyYXRpb247CisKKwlBc3NlcnQoSXNQYXJhbGxlbFdvcmtlcigp KTsKKworCS8qIFF1aWNrIHJldHVybiBpZiB0aGUgd29ya2VyIGlzIG5vdCBydW5uaW5nIGZvciB0 aGUgYXV0b3ZhY3V1bSAqLworCWlmIChwdl9zaGFyZWRfY29zdF9wYXJhbXMgPT0gTlVMTCkKKwkJ cmV0dXJuOworCisJcGFyYW1zX2dlbmVyYXRpb24gPSBwZ19hdG9taWNfcmVhZF91MzIoJnB2X3No YXJlZF9jb3N0X3BhcmFtcy0+Z2VuZXJhdGlvbik7CisJQXNzZXJ0KHNoYXJlZF9wYXJhbXNfZ2Vu ZXJhdGlvbl9sb2NhbCA8PSBwYXJhbXNfZ2VuZXJhdGlvbik7CisKKwkvKiBSZXR1cm4gaWYgcGFy YW1ldGVycyBoYWQgbm90IGNoYW5nZWQgaW4gdGhlIGxlYWRlciAqLworCWlmIChwYXJhbXNfZ2Vu ZXJhdGlvbiA9PSBzaGFyZWRfcGFyYW1zX2dlbmVyYXRpb25fbG9jYWwpCisJCXJldHVybjsKKwor CVNwaW5Mb2NrQWNxdWlyZSgmcHZfc2hhcmVkX2Nvc3RfcGFyYW1zLT5tdXRleCk7CisJVmFjdXVt Q29zdERlbGF5ID0gcHZfc2hhcmVkX2Nvc3RfcGFyYW1zLT5jb3N0X2RlbGF5OworCVZhY3V1bUNv c3RMaW1pdCA9IHB2X3NoYXJlZF9jb3N0X3BhcmFtcy0+Y29zdF9saW1pdDsKKwlWYWN1dW1Db3N0 UGFnZURpcnR5ID0gcHZfc2hhcmVkX2Nvc3RfcGFyYW1zLT5jb3N0X3BhZ2VfZGlydHk7CisJVmFj dXVtQ29zdFBhZ2VIaXQgPSBwdl9zaGFyZWRfY29zdF9wYXJhbXMtPmNvc3RfcGFnZV9oaXQ7CisJ VmFjdXVtQ29zdFBhZ2VNaXNzID0gcHZfc2hhcmVkX2Nvc3RfcGFyYW1zLT5jb3N0X3BhZ2VfbWlz czsKKwlTcGluTG9ja1JlbGVhc2UoJnB2X3NoYXJlZF9jb3N0X3BhcmFtcy0+bXV0ZXgpOworCisJ VmFjdXVtVXBkYXRlQ29zdHMoKTsKKworCXNoYXJlZF9wYXJhbXNfZ2VuZXJhdGlvbl9sb2NhbCA9 IHBhcmFtc19nZW5lcmF0aW9uOworCisJZWxvZyhERUJVRzIsCisJCSAicGFyYWxsZWwgYXV0b3Zh Y3V1bSB3b3JrZXIgdXBkYXRlZCBjb3N0IHBhcmFtczogY29zdF9saW1pdD0lZCwgY29zdF9kZWxh eT0lZywgY29zdF9wYWdlX21pc3M9JWQsIGNvc3RfcGFnZV9kaXJ0eT0lZCwgY29zdF9wYWdlX2hp dD0lZCIsCisJCSB2YWN1dW1fY29zdF9saW1pdCwKKwkJIHZhY3V1bV9jb3N0X2RlbGF5LAorCQkg VmFjdXVtQ29zdFBhZ2VNaXNzLAorCQkgVmFjdXVtQ29zdFBhZ2VEaXJ0eSwKKwkJIFZhY3V1bUNv c3RQYWdlSGl0KTsKK30KKworLyoKKyAqIFN0b3JlIHRoZSBjb3N0LWJhc2VkIHZhY3V1bSBkZWxh eSBwYXJhbWV0ZXJzIGluIHRoZSBzaGFyZWQgbWVtb3J5IHNvIHRoYXQKKyAqIHBhcmFsbGVsIHZh Y3V1bSB3b3JrZXJzIGNhbiBjb25zdW1lIHRoZW0gKHNlZQorICogcGFyYWxsZWxfdmFjdXVtX3Vw ZGF0ZV9zaGFyZWRfZGVsYXlfcGFyYW1zKCkpLgorICovCit2b2lkCitwYXJhbGxlbF92YWN1dW1f cHJvcGFnYXRlX3NoYXJlZF9kZWxheV9wYXJhbXModm9pZCkKK3sKKwlBc3NlcnQoQW1BdXRvVmFj dXVtV29ya2VyUHJvY2VzcygpKTsKKworCS8qCisJICogUXVpY2sgcmV0dXJuIGlmIHRoZSBsZWFk ZXIgcHJvY2VzcyBpcyBub3Qgc2hhcmluZyB0aGUgZGVsYXkgcGFyYW1ldGVycy4KKwkgKi8KKwlp ZiAocHZfc2hhcmVkX2Nvc3RfcGFyYW1zID09IE5VTEwpCisJCXJldHVybjsKKworCS8qCisJICog Q2hlY2sgaWYgYW55IGRlbGF5IHBhcmFtZXRlcnMgaGF2ZSBjaGFuZ2VkLiBXZSBjYW4gcmVhZCB0 aGVtIHdpdGhvdXQKKwkgKiBsb2NrcyBhcyBvbmx5IHRoZSBsZWFkZXIgY2FuIG1vZGlmeSB0aGVt LgorCSAqLworCWlmICh2YWN1dW1fY29zdF9kZWxheSA9PSBwdl9zaGFyZWRfY29zdF9wYXJhbXMt PmNvc3RfZGVsYXkgJiYKKwkJdmFjdXVtX2Nvc3RfbGltaXQgPT0gcHZfc2hhcmVkX2Nvc3RfcGFy YW1zLT5jb3N0X2xpbWl0ICYmCisJCVZhY3V1bUNvc3RQYWdlRGlydHkgPT0gcHZfc2hhcmVkX2Nv c3RfcGFyYW1zLT5jb3N0X3BhZ2VfZGlydHkgJiYKKwkJVmFjdXVtQ29zdFBhZ2VIaXQgPT0gcHZf c2hhcmVkX2Nvc3RfcGFyYW1zLT5jb3N0X3BhZ2VfaGl0ICYmCisJCVZhY3V1bUNvc3RQYWdlTWlz cyA9PSBwdl9zaGFyZWRfY29zdF9wYXJhbXMtPmNvc3RfcGFnZV9taXNzKQorCQlyZXR1cm47CisK KwkvKiBVcGRhdGUgdGhlIHNoYXJlZCBkZWxheSBwYXJhbWV0ZXJzICovCisJU3BpbkxvY2tBY3F1 aXJlKCZwdl9zaGFyZWRfY29zdF9wYXJhbXMtPm11dGV4KTsKKwlwYXJhbGxlbF92YWN1dW1fc2V0 X2Nvc3RfcGFyYW1ldGVycyhwdl9zaGFyZWRfY29zdF9wYXJhbXMpOworCVNwaW5Mb2NrUmVsZWFz ZSgmcHZfc2hhcmVkX2Nvc3RfcGFyYW1zLT5tdXRleCk7CisKKwkvKgorCSAqIEluY3JlbWVudCB0 aGUgZ2VuZXJhdGlvbiBvZiB0aGUgcGFyYW1ldGVycywgaS5lLiBsZXQgcGFyYWxsZWwgd29ya2Vy cworCSAqIGtub3cgdGhhdCB0aGV5IHNob3VsZCByZS1yZWFkIHNoYXJlZCBjb3N0IHBhcmFtcy4K KwkgKi8KKwlwZ19hdG9taWNfZmV0Y2hfYWRkX3UzMigmcHZfc2hhcmVkX2Nvc3RfcGFyYW1zLT5n ZW5lcmF0aW9uLCAxKTsKK30KKwogLyoKICAqIENvbXB1dGUgdGhlIG51bWJlciBvZiBwYXJhbGxl bCB3b3JrZXIgcHJvY2Vzc2VzIHRvIHJlcXVlc3QuICBCb3RoIGluZGV4CiAgKiB2YWN1dW0gYW5k IGluZGV4IGNsZWFudXAgY2FuIGJlIGV4ZWN1dGVkIHdpdGggcGFyYWxsZWwgd29ya2Vycy4KQEAg LTU1NSwxMiArNzMyLDE3IEBAIHBhcmFsbGVsX3ZhY3V1bV9jb21wdXRlX3dvcmtlcnMoUmVsYXRp b24gKmluZHJlbHMsIGludCBuaW5kZXhlcywgaW50IG5yZXF1ZXN0ZWQsCiAJaW50CQkJbmluZGV4 ZXNfcGFyYWxsZWxfYnVsa2RlbCA9IDA7CiAJaW50CQkJbmluZGV4ZXNfcGFyYWxsZWxfY2xlYW51 cCA9IDA7CiAJaW50CQkJcGFyYWxsZWxfd29ya2VyczsKKwlpbnQJCQltYXhfd29ya2VyczsKKwor CW1heF93b3JrZXJzID0gQW1BdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpID8KKwkJYXV0b3ZhY3V1 bV9tYXhfcGFyYWxsZWxfd29ya2VycyA6CisJCW1heF9wYXJhbGxlbF9tYWludGVuYW5jZV93b3Jr ZXJzOwogCiAJLyoKIAkgKiBXZSBkb24ndCBhbGxvdyBwZXJmb3JtaW5nIHBhcmFsbGVsIG9wZXJh dGlvbiBpbiBzdGFuZGFsb25lIGJhY2tlbmQgb3IKIAkgKiB3aGVuIHBhcmFsbGVsaXNtIGlzIGRp c2FibGVkLgogCSAqLwotCWlmICghSXNVbmRlclBvc3RtYXN0ZXIgfHwgbWF4X3BhcmFsbGVsX21h aW50ZW5hbmNlX3dvcmtlcnMgPT0gMCkKKwlpZiAoIUlzVW5kZXJQb3N0bWFzdGVyIHx8IG1heF93 b3JrZXJzID09IDApCiAJCXJldHVybiAwOwogCiAJLyoKQEAgLTU5OSw4ICs3ODEsOCBAQCBwYXJh bGxlbF92YWN1dW1fY29tcHV0ZV93b3JrZXJzKFJlbGF0aW9uICppbmRyZWxzLCBpbnQgbmluZGV4 ZXMsIGludCBucmVxdWVzdGVkLAogCXBhcmFsbGVsX3dvcmtlcnMgPSAobnJlcXVlc3RlZCA+IDAp ID8KIAkJTWluKG5yZXF1ZXN0ZWQsIG5pbmRleGVzX3BhcmFsbGVsKSA6IG5pbmRleGVzX3BhcmFs bGVsOwogCi0JLyogQ2FwIGJ5IG1heF9wYXJhbGxlbF9tYWludGVuYW5jZV93b3JrZXJzICovCi0J cGFyYWxsZWxfd29ya2VycyA9IE1pbihwYXJhbGxlbF93b3JrZXJzLCBtYXhfcGFyYWxsZWxfbWFp bnRlbmFuY2Vfd29ya2Vycyk7CisJLyogQ2FwIGJ5IEdVQyB2YXJpYWJsZSAqLworCXBhcmFsbGVs X3dvcmtlcnMgPSBNaW4ocGFyYWxsZWxfd29ya2VycywgbWF4X3dvcmtlcnMpOwogCiAJcmV0dXJu IHBhcmFsbGVsX3dvcmtlcnM7CiB9CkBAIC03MzAsNiArOTEyLDE2IEBAIHBhcmFsbGVsX3ZhY3V1 bV9wcm9jZXNzX2FsbF9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywgaW50IG51bV9p bmRleF9zY2FuCiAJCQkJCQkJcHZzLT5wY3h0LT5ud29ya2Vyc19sYXVuY2hlZCwgbndvcmtlcnMp KSk7CiAJfQogCisjaWZkZWYgVVNFX0lOSkVDVElPTl9QT0lOVFMKKworCS8qCisJICogVXNlZCBi eSB0ZXN0cyB0byBwYXVzZSBhZnRlciB3b3JrZXJzIGFyZSBsYXVuY2hlZCBidXQgYmVmb3JlIGlu ZGV4CisJICogdmFjdXVtaW5nIGJlZ2lucy4KKwkgKi8KKwlpZiAoQW1BdXRvVmFjdXVtV29ya2Vy UHJvY2VzcygpICYmIG53b3JrZXJzID4gMCkKKwkJSU5KRUNUSU9OX1BPSU5UKCJhdXRvdmFjdXVt LWxlYWRlci1iZWZvcmUtaW5kZXhlcy1wcm9jZXNzaW5nIiwgTlVMTCk7CisjZW5kaWYKKwogCS8q IFZhY3V1bSB0aGUgaW5kZXhlcyB0aGF0IGNhbiBiZSBwcm9jZXNzZWQgYnkgb25seSBsZWFkZXIg cHJvY2VzcyAqLwogCXBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX3Vuc2FmZV9pbmRleGVzKHB2cyk7 CiAKQEAgLTEwNjQsNyArMTI1NiwyMSBAQCBwYXJhbGxlbF92YWN1dW1fbWFpbihkc21fc2VnbWVu dCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJCQkJCQkJCXNoYXJlZC0+ZGVhZF9pdGVtc19oYW5kbGUp OwogCiAJLyogU2V0IGNvc3QtYmFzZWQgdmFjdXVtIGRlbGF5ICovCi0JVmFjdXVtVXBkYXRlQ29z dHMoKTsKKwlpZiAoc2hhcmVkLT5pc19hdXRvdmFjdXVtKQorCXsKKwkJLyoKKwkJICogUGFyYWxs ZWwgYXV0b3ZhY3V1bSB3b3JrZXJzIGluaXRpYWxpemUgY29zdC1iYXNlZCBkZWxheSBwYXJhbWV0 ZXJzCisJCSAqIGZyb20gdGhlIGxlYWRlcidzIHNoYXJlZCBzdGF0ZSByYXRoZXIgdGhhbiBHVUMg ZGVmYXVsdHMsIGJlY2F1c2UKKwkJICogdGhlIGxlYWRlciBtYXkgaGF2ZSBhcHBsaWVkIHBlci10 YWJsZSBvciBhdXRvdmFjdXVtLXNwZWNpZmljCisJCSAqIG92ZXJyaWRlcy4gIHB2X3NoYXJlZF9j b3N0X3BhcmFtcyBtdXN0IGJlIHNldCBiZWZvcmUgY2FsbGluZworCQkgKiBwYXJhbGxlbF92YWN1 dW1fdXBkYXRlX3NoYXJlZF9kZWxheV9wYXJhbXMoKS4KKwkJICovCisJCXB2X3NoYXJlZF9jb3N0 X3BhcmFtcyA9ICYoc2hhcmVkLT5jb3N0X3BhcmFtcyk7CisJCXBhcmFsbGVsX3ZhY3V1bV91cGRh dGVfc2hhcmVkX2RlbGF5X3BhcmFtcygpOworCX0KKwllbHNlCisJCVZhY3V1bVVwZGF0ZUNvc3Rz KCk7CisKIAlWYWN1dW1Db3N0QmFsYW5jZSA9IDA7CiAJVmFjdXVtQ29zdEJhbGFuY2VMb2NhbCA9 IDA7CiAJVmFjdXVtU2hhcmVkQ29zdEJhbGFuY2UgPSAmKHNoYXJlZC0+Y29zdF9iYWxhbmNlKTsK QEAgLTExMTksNiArMTMyNSw5IEBAIHBhcmFsbGVsX3ZhY3V1bV9tYWluKGRzbV9zZWdtZW50ICpz ZWcsIHNobV90b2MgKnRvYykKIAl2YWNfY2xvc2VfaW5kZXhlcyhuaW5kZXhlcywgaW5kcmVscywg Um93RXhjbHVzaXZlTG9jayk7CiAJdGFibGVfY2xvc2UocmVsLCBTaGFyZVVwZGF0ZUV4Y2x1c2l2 ZUxvY2spOwogCUZyZWVBY2Nlc3NTdHJhdGVneShwdnMuYnN0cmF0ZWd5KTsKKworCWlmIChzaGFy ZWQtPmlzX2F1dG92YWN1dW0pCisJCXB2X3NoYXJlZF9jb3N0X3BhcmFtcyA9IE5VTEw7CiB9CiAK IC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyBiL3Ny Yy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCmluZGV4IGQ2OTVmMWRlNGJkLi5jNmM0 ZjBkYmI1NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMK KysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKQEAgLTE2ODgsNyArMTY4 OCw3IEBAIFZhY3V1bVVwZGF0ZUNvc3RzKHZvaWQpCiAJfQogCWVsc2UKIAl7Ci0JCS8qIE11c3Qg YmUgZXhwbGljaXQgVkFDVVVNIG9yIEFOQUxZWkUgKi8KKwkJLyogTXVzdCBiZSBleHBsaWNpdCBW QUNVVU0gb3IgQU5BTFlaRSBvciBwYXJhbGxlbCBhdXRvdmFjdXVtIHdvcmtlciAqLwogCQl2YWN1 dW1fY29zdF9kZWxheSA9IFZhY3V1bUNvc3REZWxheTsKIAkJdmFjdXVtX2Nvc3RfbGltaXQgPSBW YWN1dW1Db3N0TGltaXQ7CiAJfQpAQCAtMjkyOCw4ICsyOTI4LDYgQEAgdGFibGVfcmVjaGVja19h dXRvdmFjKE9pZCByZWxpZCwgSFRBQiAqdGFibGVfdG9hc3RfbWFwLAogCQkgKi8KIAkJdGFiLT5h dF9wYXJhbXMuaW5kZXhfY2xlYW51cCA9IFZBQ09QVFZBTFVFX1VOU1BFQ0lGSUVEOwogCQl0YWIt PmF0X3BhcmFtcy50cnVuY2F0ZSA9IFZBQ09QVFZBTFVFX1VOU1BFQ0lGSUVEOwotCQkvKiBBcyBv ZiBub3csIHdlIGRvbid0IHN1cHBvcnQgcGFyYWxsZWwgdmFjdXVtIGZvciBhdXRvdmFjdXVtICov Ci0JCXRhYi0+YXRfcGFyYW1zLm53b3JrZXJzID0gLTE7CiAJCXRhYi0+YXRfcGFyYW1zLmZyZWV6 ZV9taW5fYWdlID0gZnJlZXplX21pbl9hZ2U7CiAJCXRhYi0+YXRfcGFyYW1zLmZyZWV6ZV90YWJs ZV9hZ2UgPSBmcmVlemVfdGFibGVfYWdlOwogCQl0YWItPmF0X3BhcmFtcy5tdWx0aXhhY3RfZnJl ZXplX21pbl9hZ2UgPSBtdWx0aXhhY3RfZnJlZXplX21pbl9hZ2U7CkBAIC0yOTM5LDYgKzI5Mzcs MjcgQEAgdGFibGVfcmVjaGVja19hdXRvdmFjKE9pZCByZWxpZCwgSFRBQiAqdGFibGVfdG9hc3Rf bWFwLAogCQl0YWItPmF0X3BhcmFtcy5sb2dfYW5hbHl6ZV9taW5fZHVyYXRpb24gPSBsb2dfYW5h bHl6ZV9taW5fZHVyYXRpb247CiAJCXRhYi0+YXRfcGFyYW1zLnRvYXN0X3BhcmVudCA9IEludmFs aWRPaWQ7CiAKKwkJLyogRGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgcGFyYWxsZWwgdmFjdXVtIHdv cmtlcnMgdG8gdXNlICovCisJCXRhYi0+YXRfcGFyYW1zLm53b3JrZXJzID0gMDsKKwkJaWYgKGF2 b3B0cykKKwkJeworCQkJaWYgKGF2b3B0cy0+YXV0b3ZhY3V1bV9wYXJhbGxlbF93b3JrZXJzID09 IDApCisJCQl7CisJCQkJLyoKKwkJCQkgKiBEaXNhYmxlIHBhcmFsbGVsIHZhY3V1bSwgaWYgdGhl IHJlbG9wdGlvbiBzZXRzIHRoZSBwYXJhbGxlbAorCQkJCSAqIGRlZ3JlZSBhcyB6ZXJvLgorCQkJ CSAqLworCQkJCXRhYi0+YXRfcGFyYW1zLm53b3JrZXJzID0gLTE7CisJCQl9CisJCQllbHNlIGlm IChhdm9wdHMtPmF1dG92YWN1dW1fcGFyYWxsZWxfd29ya2VycyA+IDApCisJCQkJdGFiLT5hdF9w YXJhbXMubndvcmtlcnMgPSBhdm9wdHMtPmF1dG92YWN1dW1fcGFyYWxsZWxfd29ya2VyczsKKwor CQkJLyoKKwkJCSAqIGF1dG92YWN1dW1fcGFyYWxsZWxfd29ya2VycyA9PSAtMSBmYWxscyB0aHJv dWdoLCBrZWVwCisJCQkgKiBud29ya2Vycz0wCisJCQkgKi8KKwkJfQorCiAJCS8qCiAJCSAqIExh dGVyLCBpbiB2YWN1dW1fcmVsKCksIHdlIGNoZWNrIHJlbG9wdGlvbnMgZm9yIGFueQogCQkgKiB2 YWN1dW1fbWF4X2VhZ2VyX2ZyZWV6ZV9mYWlsdXJlX3JhdGUgb3ZlcnJpZGUuCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2lu aXQvZ2xvYmFscy5jCmluZGV4IDM2YWQ3MDhiMzYwLi4yNGRkYjI3NmYwYyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv aW5pdC9nbG9iYWxzLmMKQEAgLTE0Myw2ICsxNDMsNyBAQCBpbnQJCQlOQnVmZmVycyA9IDE2Mzg0 OwogaW50CQkJTWF4Q29ubmVjdGlvbnMgPSAxMDA7CiBpbnQJCQltYXhfd29ya2VyX3Byb2Nlc3Nl cyA9IDg7CiBpbnQJCQltYXhfcGFyYWxsZWxfd29ya2VycyA9IDg7CitpbnQJCQlhdXRvdmFjdXVt X21heF9wYXJhbGxlbF93b3JrZXJzID0gMDsKIGludAkJCU1heEJhY2tlbmRzID0gMDsKIAogLyog R1VDIHBhcmFtZXRlcnMgZm9yIHZhY3V1bSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvbWlzYy9ndWMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKaW5kZXggZTE1NDZk OWM5N2EuLjE1MDQ4YWE5ZTU2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1 Yy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKQEAgLTMzNTgsOSArMzM1OCwx NCBAQCBzZXRfY29uZmlnX3dpdGhfaGFuZGxlKGNvbnN0IGNoYXIgKm5hbWUsIGNvbmZpZ19oYW5k bGUgKmhhbmRsZSwKIAkgKgogCSAqIEFsc28gYWxsb3cgbm9ybWFsIHNldHRpbmcgaWYgdGhlIEdV QyBpcyBtYXJrZWQgR1VDX0FMTE9XX0lOX1BBUkFMTEVMLgogCSAqCi0JICogT3RoZXIgY2hhbmdl cyBtaWdodCBuZWVkIHRvIGFmZmVjdCBvdGhlciB3b3JrZXJzLCBzbyBmb3JiaWQgdGhlbS4KKwkg KiBPdGhlciBjaGFuZ2VzIG1pZ2h0IG5lZWQgdG8gYWZmZWN0IG90aGVyIHdvcmtlcnMsIHNvIGZv cmJpZCB0aGVtLiBOb3RlLAorCSAqIHRoYXQgcGFyYWxsZWwgYXV0b3ZhY3V1bSBsZWFkZXIgaXMg YW4gZXhjZXB0aW9uIGJlY2F1c2Ugb25seSBjb3N0LWJhc2VkCisJICogZGVsYXlzIG5lZWQgdG8g YmUgYWZmZWN0ZWQgdG8gcGFyYWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXJzLiBUaGVzZQorCSAqIHBh cmFtZXRlcnMgYXJlIHByb3BhZ2F0ZWQgdG8gaXRzIHdvcmtlcnMgZHVyaW5nIHBhcmFsbGVsIHZh Y3V1bSAoc2VlCisJICogdmFjdXVtcGFyYWxsZWwuYyBmb3IgZGV0YWlscykuCiAJICovCi0JaWYg KElzSW5QYXJhbGxlbE1vZGUoKSAmJiBjaGFuZ2VWYWwgJiYgYWN0aW9uICE9IEdVQ19BQ1RJT05f U0FWRSAmJgorCWlmIChJc0luUGFyYWxsZWxNb2RlKCkgJiYgIUFtQXV0b1ZhY3V1bVdvcmtlclBy b2Nlc3MoKSAmJiBjaGFuZ2VWYWwgJiYKKwkJYWN0aW9uICE9IEdVQ19BQ1RJT05fU0FWRSAmJgog CQkocmVjb3JkLT5mbGFncyAmIEdVQ19BTExPV19JTl9QQVJBTExFTCkgPT0gMCkKIAl7CiAJCWVy ZXBvcnQoZWxldmVsLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFy YW1ldGVycy5kYXQgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdApp bmRleCAwYTg2MjY5M2ZjZC4uNmVmNDZkODgxNTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv Z3VjX3BhcmFtZXRlcnMuZGF0CkBAIC0xNzAsNiArMTcwLDE0IEBACiAgIG1heCA9PiAnMTAuMCcs CiB9LAogCit7IG5hbWUgPT4gJ2F1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnMnLCB0eXBl ID0+ICdpbnQnLCBjb250ZXh0ID0+ICdQR0NfU0lHSFVQJywgZ3JvdXAgPT4gJ1ZBQ1VVTV9BVVRP VkFDVVVNJywKKyAgc2hvcnRfZGVzYyA9PiAnTWF4aW11bSBudW1iZXIgb2YgcGFyYWxsZWwgd29y a2VycyB0aGF0IGNhbiBiZSB1c2VkIGJ5IGEgc2luZ2xlIGF1dG92YWN1dW0gd29ya2VyLicsCisg IHZhcmlhYmxlID0+ICdhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzJywKKyAgYm9vdF92 YWwgPT4gJzAnLAorICBtaW4gPT4gJzAnLAorICBtYXggPT4gJ01BWF9QQVJBTExFTF9XT1JLRVJf TElNSVQnLAorfSwKKwogeyBuYW1lID0+ICdhdXRvdmFjdXVtX21heF93b3JrZXJzJywgdHlwZSA9 PiAnaW50JywgY29udGV4dCA9PiAnUEdDX1NJR0hVUCcsIGdyb3VwID0+ICdWQUNVVU1fQVVUT1ZB Q1VVTScsCiAgIHNob3J0X2Rlc2MgPT4gJ1NldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHNpbXVs dGFuZW91c2x5IHJ1bm5pbmcgYXV0b3ZhY3V1bSB3b3JrZXIgcHJvY2Vzc2VzLicsCiAgIHZhcmlh YmxlID0+ICdhdXRvdmFjdXVtX21heF93b3JrZXJzJywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSBiL3NyYy9iYWNrZW5kL3V0aWxzL21p c2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQppbmRleCBjZjE1NTk3Mzg1Yi4uNzNjNDlmMDlhZWYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBs ZQorKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKQEAg LTcxMyw2ICs3MTMsNyBAQAogI2F1dG92YWN1dW1fd29ya2VyX3Nsb3RzID0gMTYgICAgICAgICAg ICMgYXV0b3ZhY3V1bSB3b3JrZXIgc2xvdHMgdG8gYWxsb2NhdGUKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjIChjaGFuZ2UgcmVxdWlyZXMgcmVzdGFydCkKICNhdXRv dmFjdXVtX21heF93b3JrZXJzID0gMyAgICAgICAgICAgICAjIG1heCBudW1iZXIgb2YgYXV0b3Zh Y3V1bSBzdWJwcm9jZXNzZXMKKyNhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzID0gMCAg ICAjIGxpbWl0ZWQgYnkgbWF4X3BhcmFsbGVsX3dvcmtlcnMKICNhdXRvdmFjdXVtX25hcHRpbWUg PSAxbWluICAgICAgICAgICAgICAjIHRpbWUgYmV0d2VlbiBhdXRvdmFjdXVtIHJ1bnMKICNhdXRv dmFjdXVtX3ZhY3V1bV90aHJlc2hvbGQgPSA1MCAgICAgICAjIG1pbiBudW1iZXIgb2Ygcm93IHVw ZGF0ZXMgYmVmb3JlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB2 YWN1dW0KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyBiL3NyYy9i aW4vcHNxbC90YWItY29tcGxldGUuaW4uYwppbmRleCBhZGNmZjFmNmZmYi4uNzcwOThhNmRkNmYg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYworKysgYi9zcmMvYmlu L3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKQEAgLTE0MzIsNiArMTQzMiw3IEBAIHN0YXRpYyBjb25z dCBjaGFyICpjb25zdCB0YWJsZV9zdG9yYWdlX3BhcmFtZXRlcnNbXSA9IHsKIAkiYXV0b3ZhY3V1 bV9tdWx0aXhhY3RfZnJlZXplX21heF9hZ2UiLAogCSJhdXRvdmFjdXVtX211bHRpeGFjdF9mcmVl emVfbWluX2FnZSIsCiAJImF1dG92YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV90YWJsZV9hZ2UiLAor CSJhdXRvdmFjdXVtX3BhcmFsbGVsX3dvcmtlcnMiLAogCSJhdXRvdmFjdXVtX3ZhY3V1bV9jb3N0 X2RlbGF5IiwKIAkiYXV0b3ZhY3V1bV92YWN1dW1fY29zdF9saW1pdCIsCiAJImF1dG92YWN1dW1f dmFjdXVtX2luc2VydF9zY2FsZV9mYWN0b3IiLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29t bWFuZHMvdmFjdXVtLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaAppbmRleCA1ZDM1 MWYwZGYzMy4uM2U4YmVlMDI0ZGYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3Zh Y3V1bS5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3ZhY3V1bS5oCkBAIC00MjIsNiArNDIy LDggQEAgZXh0ZXJuIHZvaWQgcGFyYWxsZWxfdmFjdXVtX2NsZWFudXBfYWxsX2luZGV4ZXMoUGFy YWxsZWxWYWN1dW1TdGF0ZSAqcHZzLAogCQkJCQkJCQkJCQkJaW50IG51bV9pbmRleF9zY2FucywK IAkJCQkJCQkJCQkJCWJvb2wgZXN0aW1hdGVkX2NvdW50LAogCQkJCQkJCQkJCQkJUFZXb3JrZXJT dGF0cyAqd3N0YXRzKTsKK2V4dGVybiB2b2lkIHBhcmFsbGVsX3ZhY3V1bV91cGRhdGVfc2hhcmVk X2RlbGF5X3BhcmFtcyh2b2lkKTsKK2V4dGVybiB2b2lkIHBhcmFsbGVsX3ZhY3V1bV9wcm9wYWdh dGVfc2hhcmVkX2RlbGF5X3BhcmFtcyh2b2lkKTsKIGV4dGVybiB2b2lkIHBhcmFsbGVsX3ZhY3V1 bV9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYyk7CiAKIC8qIGluIGNvbW1hbmRz L2FuYWx5emUuYyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmggYi9zcmMv aW5jbHVkZS9taXNjYWRtaW4uaAppbmRleCAwNGYyOTc0OGJlNy4uM2VhYTQ2NTVjODggMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCisrKyBiL3NyYy9pbmNsdWRlL21pc2NhZG1p bi5oCkBAIC0xNzgsNiArMTc4LDcgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIGludCBNYXhCYWNrZW5k czsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgTWF4Q29ubmVjdGlvbnM7CiBleHRlcm4gUEdETExJ TVBPUlQgaW50IG1heF93b3JrZXJfcHJvY2Vzc2VzOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBt YXhfcGFyYWxsZWxfd29ya2VyczsKK2V4dGVybiBQR0RMTElNUE9SVCBpbnQgYXV0b3ZhY3V1bV9t YXhfcGFyYWxsZWxfd29ya2VyczsKIAogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBjb21taXRfdGlt ZXN0YW1wX2J1ZmZlcnM7CiBleHRlcm4gUEdETExJTVBPUlQgaW50IG11bHRpeGFjdF9tZW1iZXJf YnVmZmVyczsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oIGIvc3JjL2luY2x1 ZGUvdXRpbHMvcmVsLmgKaW5kZXggMjM2ODMwZjZiOTMuLmNkMWU5MmYyMzAyIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS91dGlscy9yZWwuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9yZWwuaApA QCAtMzExLDYgKzMxMSw4IEBAIHR5cGVkZWYgc3RydWN0IEZvcmVpZ25LZXlDYWNoZUluZm8KIHR5 cGVkZWYgc3RydWN0IEF1dG9WYWNPcHRzCiB7CiAJYm9vbAkJZW5hYmxlZDsKKworCWludAkJCWF1 dG92YWN1dW1fcGFyYWxsZWxfd29ya2VyczsKIAlpbnQJCQl2YWN1dW1fdGhyZXNob2xkOwogCWlu dAkJCXZhY3V1bV9tYXhfdGhyZXNob2xkOwogCWludAkJCXZhY3V1bV9pbnNfdGhyZXNob2xkOwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9NYWtlZmlsZSBiL3NyYy90ZXN0L21vZHVsZXMv TWFrZWZpbGUKaW5kZXggMjhjZTNiMzVlZGEuLjMzNmEyMTJmYWY0IDEwMDY0NAotLS0gYS9zcmMv dGVzdC9tb2R1bGVzL01ha2VmaWxlCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUKQEAg LTE2LDYgKzE2LDcgQEAgU1VCRElSUyA9IFwKIAkJICBwbHNhbXBsZSBcCiAJCSAgc3BnaXN0X25h bWVfb3BzIFwKIAkJICB0ZXN0X2FpbyBcCisJCSAgdGVzdF9hdXRvdmFjdXVtIFwKIAkJICB0ZXN0 X2JpbmFyeWhlYXAgXAogCQkgIHRlc3RfYml0bWFwc2V0IFwKIAkJICB0ZXN0X2Jsb29tZmlsdGVy IFwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9t b2R1bGVzL21lc29uLmJ1aWxkCmluZGV4IDNhYzI5MTY1NmMxLi45Mjk2NTk5NTZjYiAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZAorKysgYi9zcmMvdGVzdC9tb2R1bGVz L21lc29uLmJ1aWxkCkBAIC0xNiw2ICsxNiw3IEBAIHN1YmRpcigncGxzYW1wbGUnKQogc3ViZGly KCdzcGdpc3RfbmFtZV9vcHMnKQogc3ViZGlyKCdzc2xfcGFzc3BocmFzZV9jYWxsYmFjaycpCiBz dWJkaXIoJ3Rlc3RfYWlvJykKK3N1YmRpcigndGVzdF9hdXRvdmFjdXVtJykKIHN1YmRpcigndGVz dF9iaW5hcnloZWFwJykKIHN1YmRpcigndGVzdF9iaXRtYXBzZXQnKQogc3ViZGlyKCd0ZXN0X2Js b29tZmlsdGVyJykKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVt Ly5naXRpZ25vcmUgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS8uZ2l0aWdub3Jl Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43MTZlMTdmNWEyYQotLS0g L2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtLy5naXRpZ25v cmUKQEAgLTAsMCArMSwyIEBACisjIEdlbmVyYXRlZCBzdWJkaXJlY3RvcmllcworL3RtcF9jaGVj ay8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL01ha2VmaWxl IGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vTWFrZWZpbGUKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjE4OGVjOWY5NmEyCi0tLSAvZGV2L251bGwKKysr IGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vTWFrZWZpbGUKQEAgLTAsMCArMSwy MCBAQAorIyBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS9NYWtlZmlsZQorCitQR0ZJ TEVERVNDID0gInRlc3RfYXV0b3ZhY3V1bSAtIHRlc3QgY29kZSBmb3IgcGFyYWxsZWwgYXV0b3Zh Y3V1bSIKKworVEFQX1RFU1RTID0gMQorCitFWFRSQV9JTlNUQUxMID0gc3JjL3Rlc3QvbW9kdWxl cy9pbmplY3Rpb25fcG9pbnRzCisKK2V4cG9ydCBlbmFibGVfaW5qZWN0aW9uX3BvaW50cworCitp ZmRlZiBVU0VfUEdYUworUEdfQ09ORklHID0gcGdfY29uZmlnCitQR1hTIDo9ICQoc2hlbGwgJChQ R19DT05GSUcpIC0tcGd4cykKK2luY2x1ZGUgJChQR1hTKQorZWxzZQorc3ViZGlyID0gc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0KK3RvcF9idWlsZGRpciA9IC4uLy4uLy4uLy4uCitp bmNsdWRlICQodG9wX2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUuZ2xvYmFsCitpbmNsdWRlICQodG9w X3NyY2RpcikvY29udHJpYi9jb250cmliLWdsb2JhbC5taworZW5kaWYKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL21lc29uLmJ1aWxkIGIvc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X2F1dG92YWN1dW0vbWVzb24uYnVpbGQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLjg2ZTM5MmJjMGRlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vbWVzb24uYnVpbGQKQEAgLTAsMCArMSwxNSBAQAorIyBD b3B5cmlnaHQgKGMpIDIwMjQtMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3Jv dXAKKwordGVzdHMgKz0geworICAnbmFtZSc6ICd0ZXN0X2F1dG92YWN1dW0nLAorICAnc2QnOiBt ZXNvbi5jdXJyZW50X3NvdXJjZV9kaXIoKSwKKyAgJ2JkJzogbWVzb24uY3VycmVudF9idWlsZF9k aXIoKSwKKyAgJ3RhcCc6IHsKKyAgICAnZW52JzogeworICAgICAgICdlbmFibGVfaW5qZWN0aW9u X3BvaW50cyc6IGdldF9vcHRpb24oJ2luamVjdGlvbl9wb2ludHMnKSA/ICd5ZXMnIDogJ25vJywK KyAgICB9LAorICAgICd0ZXN0cyc6IFsKKyAgICAgICd0LzAwMV9wYXJhbGxlbF9hdXRvdmFjdXVt LnBsJywKKyAgICBdLAorICB9LAorfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X2F1dG92YWN1dW0vdC8wMDFfcGFyYWxsZWxfYXV0b3ZhY3V1bS5wbCBiL3NyYy90ZXN0L21vZHVs ZXMvdGVzdF9hdXRvdmFjdXVtL3QvMDAxX3BhcmFsbGVsX2F1dG92YWN1dW0ucGwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjllNjVlYWZiNTQ5Ci0tLSAvZGV2L251bGwK KysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vdC8wMDFfcGFyYWxsZWxfYXV0 b3ZhY3V1bS5wbApAQCAtMCwwICsxLDE5NyBAQAorCisjIENvcHlyaWdodCAoYykgMjAyNiwgUG9z dGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBUZXN0IHBhcmFsbGVsIGF1dG92 YWN1dW0gYmVoYXZpb3IKKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxs JzsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6 OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKK2lmICgkRU5We2VuYWJsZV9pbmplY3Rpb25fcG9p bnRzfSBuZSAneWVzJykKK3sKKwlwbGFuIHNraXBfYWxsID0+ICdJbmplY3Rpb24gcG9pbnRzIG5v dCBzdXBwb3J0ZWQgYnkgdGhpcyBidWlsZCc7Cit9CisKKyMgQmVmb3JlIGVhY2ggdGVzdCB3ZSBz aG91bGQgZGlzYWJsZSBhdXRvdmFjdXVtIGZvciAndGVzdF9hdXRvdmFjJyB0YWJsZSBhbmQKKyMg Z2VuZXJhdGUgc29tZSBkZWFkIHR1cGxlcyBpbiBpdC4gUmV0dXJucyB0aGUgY3VycmVudCBhdXRv dmFjdXVtX2NvdW50IG9mCisjIHRoZSB0YWJsZSB0ZXN0X2F1dG92YWMuCitzdWIgcHJlcGFyZV9m b3JfbmV4dF90ZXN0Cit7CisJbXkgKCRub2RlLCAkdGVzdF9udW1iZXIpID0gQF87CisKKwkkbm9k ZS0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxcXsKKwkJQUxURVIgVEFCTEUgdGVzdF9hdXRv dmFjIFNFVCAoYXV0b3ZhY3V1bV9lbmFibGVkID0gZmFsc2UpOworCQlVUERBVEUgdGVzdF9hdXRv dmFjIFNFVCBjb2xfMSA9ICR0ZXN0X251bWJlcjsKKwl9KTsKKworCW15ICRjb3VudCA9ICRub2Rl LT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHFxeworCQlTRUxFQ1QgYXV0b3ZhY3V1bV9jb3Vu dCBGUk9NIHBnX3N0YXRfdXNlcl90YWJsZXMgV0hFUkUgcmVsbmFtZSA9ICd0ZXN0X2F1dG92YWMn CisJfSk7CisKKwlyZXR1cm4gJGNvdW50OworfQorCisjIFdhaXQgZm9yIHRoZSB0YWJsZSB0byBi ZSB2YWN1dW1lZCBieSBhbiBhdXRvdmFjdXVtIHdvcmtlci4KK3N1YiB3YWl0X2Zvcl9hdXRvdmFj dXVtX2NvbXBsZXRlCit7CisJbXkgKCRub2RlLCAkb2xkX2NvdW50KSA9IEBfOworCisJJG5vZGUt PnBvbGxfcXVlcnlfdW50aWwoCisJCSdwb3N0Z3JlcycsIHFxeworCQlTRUxFQ1QgYXV0b3ZhY3V1 bV9jb3VudCA+ICRvbGRfY291bnQgRlJPTSBwZ19zdGF0X3VzZXJfdGFibGVzIFdIRVJFIHJlbG5h bWUgPSAndGVzdF9hdXRvdmFjJworCX0pOworfQorCitteSAkbm9kZSA9IFBvc3RncmVTUUw6OlRl c3Q6OkNsdXN0ZXItPm5ldygnbWFpbicpOworJG5vZGUtPmluaXQ7CisKKyMgTGltaXQgdG8gb25l IGF1dG92YWN1dW0gd29ya2VyIGFuZCBkaXNhYmxlIGF1dG92YWN1dW0gbG9nZ2luZyBnbG9iYWxs eQorIyAoZW5hYmxlZCBvbmx5IG9uIHRoZSB0ZXN0IHRhYmxlKSBzbyB0aGF0IGxvZyBjaGVja3Mg YmVsb3cgbWF0Y2ggb25seQorIyBhY3Rpdml0eSBvbiB0aGUgZXhwZWN0ZWQgdGFibGUuCiskbm9k ZS0+YXBwZW5kX2NvbmYoCisJJ3Bvc3RncmVzcWwuY29uZicsIHFxeworYXV0b3ZhY3V1bV9tYXhf d29ya2VycyA9IDEKK2F1dG92YWN1dW1fd29ya2VyX3Nsb3RzID0gMQorYXV0b3ZhY3V1bV9tYXhf cGFyYWxsZWxfd29ya2VycyA9IDIKK21heF93b3JrZXJfcHJvY2Vzc2VzID0gMTAKK21heF9wYXJh bGxlbF93b3JrZXJzID0gMTAKK2xvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzIKK2F1dG92YWN1dW1f bmFwdGltZSA9ICcxcycKK21pbl9wYXJhbGxlbF9pbmRleF9zY2FuX3NpemUgPSAwCitsb2dfYXV0 b3ZhY3V1bV9taW5fZHVyYXRpb24gPSAtMQorfSk7Ciskbm9kZS0+c3RhcnQ7CisKKyMgQ2hlY2sg aWYgdGhlIGV4dGVuc2lvbiBpbmplY3Rpb25fcG9pbnRzIGlzIGF2YWlsYWJsZSwgYXMgaXQgbWF5 IGJlCisjIHBvc3NpYmxlIHRoYXQgdGhpcyBzY3JpcHQgaXMgcnVuIHdpdGggaW5zdGFsbGNoZWNr LCB3aGVyZSB0aGUgbW9kdWxlCisjIHdvdWxkIG5vdCBiZSBpbnN0YWxsZWQgYnkgZGVmYXVsdC4K K2lmICghJG5vZGUtPmNoZWNrX2V4dGVuc2lvbignaW5qZWN0aW9uX3BvaW50cycpKQoreworCXBs YW4gc2tpcF9hbGwgPT4gJ0V4dGVuc2lvbiBpbmplY3Rpb25fcG9pbnRzIG5vdCBpbnN0YWxsZWQn OworfQorCisjIENyZWF0ZSBhbGwgZnVuY3Rpb25zIG5lZWRlZCBmb3IgdGVzdGluZworJG5vZGUt PnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKKwlDUkVBVEUgRVhURU5TSU9OIGluamVjdGlv bl9wb2ludHM7Cit9KTsKKworbXkgJGluZGV4ZXNfbnVtID0gMzsKK215ICRpbml0aWFsX3Jvd3Nf bnVtID0gMTBfMDAwOworbXkgJGF1dG92YWN1dW1fcGFyYWxsZWxfd29ya2VycyA9IDI7CisKKyMg Q3JlYXRlIHRhYmxlIGFuZCBmaWxsIGl0IHdpdGggc29tZSBkYXRhCiskbm9kZS0+c2FmZV9wc3Fs KAorCSdwb3N0Z3JlcycsIHFxeworCUNSRUFURSBUQUJMRSB0ZXN0X2F1dG92YWMgKAorCQlpZCBT RVJJQUwgUFJJTUFSWSBLRVksCisJCWNvbF8xIElOVEVHRVIsICBjb2xfMiBJTlRFR0VSLCAgY29s XzMgSU5URUdFUiwgIGNvbF80IElOVEVHRVIKKwkpIFdJVEggKGF1dG92YWN1dW1fcGFyYWxsZWxf d29ya2VycyA9ICRhdXRvdmFjdXVtX3BhcmFsbGVsX3dvcmtlcnMsCisJCQlsb2dfYXV0b3ZhY3V1 bV9taW5fZHVyYXRpb24gPSAwKTsKKworCUlOU0VSVCBJTlRPIHRlc3RfYXV0b3ZhYworCVNFTEVD VAorCQlnIEFTIGNvbDEsCisJCWcgKyAxIEFTIGNvbDIsCisJCWcgKyAyIEFTIGNvbDMsCisJCWcg KyAzIEFTIGNvbDQKKwlGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAkaW5pdGlhbF9yb3dzX251bSkg QVMgZzsKK30pOworCisjIENyZWF0ZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGItdHJlZSBpbmRleGVz IG9uIHRoZSB0YWJsZQorJG5vZGUtPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKKwlETyBc JFwkCisJREVDTEFSRQorCQlpIElOVEVHRVI7CisJQkVHSU4KKwkJRk9SIGkgSU4gMS4uJGluZGV4 ZXNfbnVtIExPT1AKKwkJCUVYRUNVVEUgZm9ybWF0KCdDUkVBVEUgSU5ERVggaWR4X2NvbF9cJXMg T04gdGVzdF9hdXRvdmFjIChjb2xfXCVzKTsnLCBpLCBpKTsKKwkJRU5EIExPT1A7CisJRU5EIFwk XCQ7Cit9KTsKKworIyBUZXN0IDEgOgorIyBPdXIgdGFibGUgaGFzIGVub3VnaCBpbmRleGVzIGFu ZCBhcHByb3ByaWF0ZSByZWxvcHRpb25zLCBzbyBhdXRvdmFjdXVtIG11c3QKKyMgYmUgYWJsZSB0 byBwcm9jZXNzIGl0IGluIHBhcmFsbGVsIG1vZGUuIEp1c3QgY2hlY2sgaWYgaXQgY2FuIGRvIGl0 LgorCitteSAkYXZfY291bnQgPSBwcmVwYXJlX2Zvcl9uZXh0X3Rlc3QoJG5vZGUsIDEpOworbXkg JGxvZ19vZmZzZXQgPSAtcyAkbm9kZS0+bG9nZmlsZTsKKworJG5vZGUtPnNhZmVfcHNxbCgKKwkn cG9zdGdyZXMnLCBxcXsKKwlBTFRFUiBUQUJMRSB0ZXN0X2F1dG92YWMgU0VUIChhdXRvdmFjdXVt X2VuYWJsZWQgPSB0cnVlKTsKK30pOworCisjIFdhaXQgdW50aWwgdGhlIHBhcmFsbGVsIGF1dG92 YWN1dW0gb24gdGFibGUgaXMgY29tcGxldGVkLiBBdCB0aGUgc2FtZSB0aW1lLAorIyB3ZSBjaGVj ayB0aGF0IHRoZSByZXF1aXJlZCBudW1iZXIgb2YgcGFyYWxsZWwgd29ya2VycyBoYXMgYmVlbiBz dGFydGVkLgord2FpdF9mb3JfYXV0b3ZhY3V1bV9jb21wbGV0ZSgkbm9kZSwgJGF2X2NvdW50KTsK K29rKCAkbm9kZS0+bG9nX2NvbnRhaW5zKAorCQlxci9wYXJhbGxlbCB3b3JrZXJzOiBpbmRleCB2 YWN1dW06IDIgcGxhbm5lZCwgMiBsYXVuY2hlZCBpbiB0b3RhbC8sCisJCSRsb2dfb2Zmc2V0KSk7 CisKKyMgVGVzdCAyOgorIyBDaGVjayB3aGV0aGVyIHBhcmFsbGVsIGF1dG92YWN1dW0gbGVhZGVy IGNhbiBwcm9wYWdhdGUgY29zdC1iYXNlZCBwYXJhbWV0ZXJzCisjIHRvIHRoZSBwYXJhbGxlbCB3 b3JrZXJzLgorCiskYXZfY291bnQgPSBwcmVwYXJlX2Zvcl9uZXh0X3Rlc3QoJG5vZGUsIDIpOwor JGxvZ19vZmZzZXQgPSAtcyAkbm9kZS0+bG9nZmlsZTsKKworJG5vZGUtPnNhZmVfcHNxbCgKKwkn cG9zdGdyZXMnLCBxcXsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2F1dG92YWN1 dW0tc3RhcnQtcGFyYWxsZWwtdmFjdXVtJywgJ3dhaXQnKTsKKwlTRUxFQ1QgaW5qZWN0aW9uX3Bv aW50c19hdHRhY2goJ2F1dG92YWN1dW0tbGVhZGVyLWJlZm9yZS1pbmRleGVzLXByb2Nlc3Npbmcn LCAnd2FpdCcpOworCisJQUxURVIgVEFCTEUgdGVzdF9hdXRvdmFjIFNFVCAoYXV0b3ZhY3V1bV9w YXJhbGxlbF93b3JrZXJzID0gMSwgYXV0b3ZhY3V1bV9lbmFibGVkID0gdHJ1ZSk7Cit9KTsKKwor IyBXYWl0IHVudGlsIHBhcmFsbGVsIGF1dG92YWN1dW0gaXMgaW5pdGVkCiskbm9kZS0+d2FpdF9m b3JfZXZlbnQoJ2F1dG92YWN1dW0gd29ya2VyJywKKwknYXV0b3ZhY3V1bS1zdGFydC1wYXJhbGxl bC12YWN1dW0nKTsKKworIyBVcGRhdGUgdGhlIHNoYXJlZCBjb3N0LWJhc2VkIGRlbGF5IHBhcmFt ZXRlcnMuCiskbm9kZS0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworCUFMVEVSIFNZU1RF TSBTRVQgdmFjdXVtX2Nvc3RfbGltaXQgPSA1MDA7CisJQUxURVIgU1lTVEVNIFNFVCB2YWN1dW1f Y29zdF9wYWdlX21pc3MgPSAxMDsKKwlBTFRFUiBTWVNURU0gU0VUIHZhY3V1bV9jb3N0X3BhZ2Vf ZGlydHkgPSAxMDsKKwlBTFRFUiBTWVNURU0gU0VUIHZhY3V1bV9jb3N0X3BhZ2VfaGl0ID0gMTA7 CisJU0VMRUNUIHBnX3JlbG9hZF9jb25mKCk7Cit9KTsKKworIyBSZXN1bWUgdGhlIGxlYWRlciBw cm9jZXNzIHRvIHVwZGF0ZSB0aGUgc2hhcmVkIHBhcmFtZXRlcnMgZHVyaW5nIGhlYXAgc2NhbiAo aS5lLgorIyB2YWN1dW1fZGVsYXlfcG9pbnQoKSBpcyBjYWxsZWQpIGFuZCBsYXVuY2ggYSBwYXJh bGxlbCB2YWN1dW0gd29ya2VyLCBidXQgaXQgc3RvcHMKKyMgYmVmb3JlIHZhY3V1bWluZyBpbmRl eGVzIGR1ZSB0byB0aGUgaW5qZWN0aW9uIHBvaW50LgorJG5vZGUtPnNhZmVfcHNxbCgKKwkncG9z dGdyZXMnLCBxcXsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2F1dG92YWN1dW0t c3RhcnQtcGFyYWxsZWwtdmFjdXVtJyk7Cit9KTsKKyRub2RlLT53YWl0X2Zvcl9ldmVudCgnYXV0 b3ZhY3V1bSB3b3JrZXInLAorCSdhdXRvdmFjdXVtLWxlYWRlci1iZWZvcmUtaW5kZXhlcy1wcm9j ZXNzaW5nJyk7CisKKyMgQ2hlY2sgd2hldGhlciBwYXJhbGxlbCB3b3JrZXIgc3VjY2Vzc2Z1bGx5 IHVwZGF0ZWQgYWxsIHBhcmFtZXRlcnMgZHVyaW5nCisjIGluZGV4IHByb2Nlc3NpbmcKKyRub2Rl LT53YWl0X2Zvcl9sb2coCisJcXIvcGFyYWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXIgdXBkYXRlZCBj b3N0IHBhcmFtczogY29zdF9saW1pdD01MDAsIGNvc3RfZGVsYXk9MiwgY29zdF9wYWdlX21pc3M9 MTAsIGNvc3RfcGFnZV9kaXJ0eT0xMCwgY29zdF9wYWdlX2hpdD0xMC8sCisJJGxvZ19vZmZzZXQp OworCiskbm9kZS0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworCVNFTEVDVCBpbmplY3Rp b25fcG9pbnRzX3dha2V1cCgnYXV0b3ZhY3V1bS1sZWFkZXItYmVmb3JlLWluZGV4ZXMtcHJvY2Vz c2luZycpOworfSk7CisKK3dhaXRfZm9yX2F1dG92YWN1dW1fY29tcGxldGUoJG5vZGUsICRhdl9j b3VudCk7CisKKyMgQ2xlYW51cAorJG5vZGUtPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsK KwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2F1dG92YWN1dW0tc3RhcnQtcGFyYWxs ZWwtdmFjdXVtJyk7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdhdXRvdmFjdXVt LWxlYWRlci1iZWZvcmUtaW5kZXhlcy1wcm9jZXNzaW5nJyk7Cit9KTsKKworJG5vZGUtPnN0b3A7 Citkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVm cy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggNjlhNzFkYjE0 OTYuLjNhYmEzNWMyMTU3IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMu bGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMjA5Nyw2ICsy MDk3LDcgQEAgUFZJbmRTdGF0cwogUFZJbmRWYWNTdGF0dXMKIFBWT0lECiBQVlNoYXJlZAorUFZT aGFyZWRDb3N0UGFyYW1zCiBQVldvcmtlclVzYWdlCiBQVldvcmtlclN0YXRzCiBQWF9BbGlhcwot LSAKMi41My4wCgo= --000000000000a52f4a064e4ca7f8--