Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kmD0a-0003DW-4P for pgadmin-hackers@arkaria.postgresql.org; Mon, 07 Dec 2020 09:40:40 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1kmD0Y-0006Im-Sd for pgadmin-hackers@arkaria.postgresql.org; Mon, 07 Dec 2020 09:40:38 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kmD0Y-0006If-EF for pgadmin-hackers@lists.postgresql.org; Mon, 07 Dec 2020 09:40:38 +0000 Received: from mail-qt1-x835.google.com ([2607:f8b0:4864:20::835]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1kmD0R-000276-Ae for pgadmin-hackers@postgresql.org; Mon, 07 Dec 2020 09:40:36 +0000 Received: by mail-qt1-x835.google.com with SMTP id 7so8952989qtp.1 for ; Mon, 07 Dec 2020 01:40:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=YqJGBmKDEmFJW+CnyuTyRIP6P+GQPJ2adqvLbDcja0Y=; b=dcUnQkBqpuLMJqwl4tSt6ovRVyDW+S5pEy2h8HuD4VPVe2LCADRe/Inq3g2UIfc6Tq h2VsWg2/1JOUqBeG0ewB41Xli5oGu501AyxO99QINXiURA7IYJg8qSh7qWAjeqV9DVbi pnB45GbkU7tYx3WTtoZ59iibddc/l0tR5BIuKOLLRlzH7MsHuSPDQPPuyDzWIh8NAKXK Zra5GJleQZ+RyoOAlhVMJ5R9nZiIyYr6fZ8j3hu/YWAEglTXl36JZyGDGdvoMSFdki7y 0o72apRzipoM4PVupDcQlWq+JhXjjWRo53kgtci+9nt99kWqGL6CMxgEIEBvUvdP7LI7 2BpQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=YqJGBmKDEmFJW+CnyuTyRIP6P+GQPJ2adqvLbDcja0Y=; b=UecNPivlHWcQ8+oMDfRQBdrUBoJcWyPzK2ZNL9GKrFnwk7lJY5a/6Tnf76CE/Zhw20 TXNtXiueA3E+IKZesj3AaFEnKl/btP1mGcn7xgkJPc8R5JTbEF8E46Ru33OFH0o03SOx ppveh1sBgimzNbaD6h6zGIa72X5+bQfU6c3rL6tLCIMDMWv/mn2NWTH1u4jxxqm6O/F6 jw1xQHU4636l4PkXGJkRuSiNkZeNM6/EwHlht7feuLB/fjvQJFkrmZc3ZWrkH8vSrhOe kTw1xBERRxKT68c6WEmXzL4uP/EonsVewLzFyUwD/Gt1M4aB58TYFLqqUP3dgf3qqYEQ 5qDQ== X-Gm-Message-State: AOAM531Dqr+B9rnFy2qbEBwrh8M6BWZie4SBFyfoaAXmqE29+hK7bhmX DDZ2ZdbwkN+pKi2ugtu8IkZODTwCeJeO7uvtrW/thmCKkW4yRmc2L9iNh8aozGfP5TuoNSTVrBq rkNEYS2j//JpBkWZQrPArs4UoJ1hWD2+ayg96KJuRxcWaLKfarq+fKZh6rrFspq/eqQweLwUjXl qV+moINDkIltNNOoNur7NqkoOB2Q9mRxIbqW9TeqSjlgx8VlqFR13kh/+dYu4DXLjTiOGC X-Google-Smtp-Source: ABdhPJyYqP80HxYyCyojnIUo6Ko6LTUSr3Cp7x2Sm3ozQrPHnjhcK0unehZQ5aEcq43N+kFIolRb7cqJvHMkj5WxK+k= X-Received: by 2002:ac8:1013:: with SMTP id z19mr22833837qti.74.1607334029773; Mon, 07 Dec 2020 01:40:29 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Rahul Shirsat Date: Mon, 7 Dec 2020 15:09:53 +0530 Message-ID: Subject: Re: [pgAdmin4] RM5965 Couldn't download file of Marcos query results To: pgadmin-hackers Content-Type: multipart/mixed; boundary="000000000000e186b905b5dc9d21" X-CLOUD-SEC-AV-Info: enterprisedb,google_mail,monitor X-CLOUD-SEC-AV-Sent: true X-Gm-Spam: 0 X-Gm-Phishy: 0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --000000000000e186b905b5dc9d21 Content-Type: multipart/alternative; boundary="000000000000e186b705b5dc9d1f" --000000000000e186b705b5dc9d1f Content-Type: text/plain; charset="UTF-8" Hi Hackers, Please find the updated patch below. On Mon, Dec 7, 2020 at 2:55 PM Rahul Shirsat wrote: > Hi Hackers, > > Please find the attached patch which resolves the issue of macros query > results download, have used async cursor to achieve this functionality, > where for downloading the results, cursor is scrolled back to 0 and end of > the records, and reset again while user scrolling on Data Output table. > > QA/Reviewer needs to observe below issues if it occurs: > > 1. If records are more like 5000 or 10000, try to fetch records by > scrolling at least (2000), now save the results by clicking the download > button, it should save the file, and now try scrolling again, the data > should be shown continuously and not any abrupt end or unexpected records > order. > 2. Also, the download button is now "Save results to CSV/TXT" where it > will only get enabled when there are valid records in the Data Output. > > > Also a minor fix of the add folder icon issue is also added into this > patch. > > -- > *Rahul Shirsat* > Senior Software Engineer | EnterpriseDB Corporation. > -- *Rahul Shirsat* Software Engineer | EnterpriseDB Corporation. --000000000000e186b705b5dc9d1f Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Hackers,

Please find the updated= patch below.



--
Rahul Shirsat
Software Engineer=C2=A0|=C2=A0EnterpriseDB=C2=A0Corporation.=
--000000000000e186b705b5dc9d1f-- --000000000000e186b905b5dc9d21 Content-Type: application/octet-stream; name="RM5965_v2.patch" Content-Disposition: attachment; filename="RM5965_v2.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kied5gyw0 ZGlmZiAtLWdpdCBhL2RvY3MvZW5fVVMvcXVlcnlfdG9vbF90b29sYmFyLnJzdCBiL2RvY3MvZW5f VVMvcXVlcnlfdG9vbF90b29sYmFyLnJzdAppbmRleCAyMTY4YzM5MzAuLmE2YzJjNmFjNSAxMDA2 NDQKLS0tIGEvZG9jcy9lbl9VUy9xdWVyeV90b29sX3Rvb2xiYXIucnN0CisrKyBiL2RvY3MvZW5f VVMvcXVlcnlfdG9vbF90b29sYmFyLnJzdApAQCAtMTc5LDEwICsxNzksMTAgQEAgUXVlcnkgRXhl Y3V0aW9uCiAgICB8ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwKICAgIHwgICAgICAgICAgICAg ICAgICAgICAgfCAgKiBTZWxlY3QgKkNsZWFyIEhpc3RvcnkqIHRvIGVyYXNlIHRoZSBjb250ZW50 IG9mIHRoZSAqSGlzdG9yeSogdGFiLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg ICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCi0gICB8ICpEb3du bG9hZCBhcyBDU1YvVFhUKnwgQ2xpY2sgdGhlICpEb3dubG9hZCBhcyBDU1YvVFhUKiBpY29uIHRv IGRvd25sb2FkIHRoZSByZXN1bHQgc2V0IG9mIHRoZSBjdXJyZW50IHF1ZXJ5IGFzIGEgKi5jc3Yq ICB8IEY4ICAgICAgICAgICAgIHwKLSAgIHwgICAgICAgICAgICAgICAgICAgICAgfCBvciBhcyBh ICoudHh0KiBmaWxlLiBpZiAqQ1NWIGZpZWxkIHNlcGVyYXRvciogc2V0IHRvIGNvbW1hKCwpIGVs c2UgYXMgYSAqLnR4dCogZmlsZS4gICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfAotICAg fCAgICAgICAgICAgICAgICAgICAgICB8IFlvdSBjYW4gc3BlY2lmeSB0aGUgQ1NWL1RYVCBzZXR0 aW5ncyB0aHJvdWdoICpQcmVmZXJlbmNlcyAtPiBTUUwgRWRpdG9yIC0+IENTVi9UWFQgb3V0cHV0 KiAgICAgICAgfCAgICAgICAgICAgICAgICB8Ci0gICB8ICAgICAgICAgICAgICAgICAgICAgIHwg ZGlhbG9ndWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAg IHwKKyAgIHwgKlNhdmUgcmVzdWx0cyB0byogICAgfCBDbGljayB0aGUgKlNhdmUgcmVzdWx0cyB0 byBmaWxlIGFzIENTVi9UWFQqIGljb24gdG8gZG93bmxvYWQgdGhlIHJlc3VsdCBzZXQgb2YgdGhl IGN1cnJlbnQgcXVlcnkgIHwgRjggICAgICAgICAgICAgfAorICAgfCAgKmZpbGUgYXMgQ1NWL1RY VCogICB8IGFzIGEgKi5jc3YqIG9yIGFzIGEgKi50eHQqIGZpbGUuIGlmICpDU1YgZmllbGQgc2Vw ZXJhdG9yKiBzZXQgdG8gY29tbWEoLCkgZWxzZSBhcyBhICoudHh0KiBmaWxlLiAgfCAgICAgICAg ICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgICAgIHwgQnV0dG9uIHdpbGwgb25seSBi ZSBlbmFibGVkIHdoZW4gdGhlcmUgYXJlIHJlc3VsdHMgdG8gc2F2ZS4gWW91IGNhbiBzcGVjaWZ5 IHRoZSBDU1YvVFhUIHNldHRpbmdzICB8ICAgICAgICAgICAgICAgIHwKKyAgIHwgICAgICAgICAg ICAgICAgICAgICAgfCB0aHJvdWdoICpQcmVmZXJlbmNlcyAtPiBTUUwgRWRpdG9yIC0+IENTVi9U WFQgb3V0cHV0KiBkaWFsb2d1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCiAgICB8ICpN YWNyb3MqICAgICAgICAgICAgIHwgQ2xpY2sgdGhlICpNYWNyb3MqIGljb24gdG8gbWFuYWdlIHRo ZSBtYWNyb3MuIFlvdSBjYW4gY3JlYXRlLCBlZGl0IG9yIGNsZWFyIHRoZSBtYWNyb3MgdGhyb3Vn aCAgICB8ICAgICAgICAgICAgICAgIHwKICAgIHwgICAgICAgICAgICAgICAgICAgICAgfCB0aGUg Kk1hbmFnZSBNYWNyb3MqIG9wdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfApk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2tleWJvYXJkX3Nob3J0Y3V0cy5qcyBi L3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9rZXlib2FyZF9zaG9ydGN1dHMuanMKaW5kZXggYWJkYThk OGYyLi4wNTlkZjA2MjggMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9rZXlib2Fy ZF9zaG9ydGN1dHMuanMKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2tleWJvYXJkX3Nob3J0 Y3V0cy5qcwpAQCAtMjExLDggKzIxMSwxMCBAQCBmdW5jdGlvbiBrZXlib2FyZFNob3J0Y3V0c1F1 ZXJ5VG9vbCgKICAgICB0aGlzLl9zdG9wRXZlbnRQcm9wYWdhdGlvbihldmVudCk7CiAgICAgcXVl cnlUb29sQWN0aW9ucy5leHBsYWluQW5hbHl6ZShzcWxFZGl0b3JDb250cm9sbGVyKTsKICAgfSBl bHNlIGlmICh0aGlzLnZhbGlkYXRlU2hvcnRjdXRLZXlzKGRvd25sb2FkQ3N2S2V5cywgZXZlbnQp KSB7Ci0gICAgdGhpcy5fc3RvcEV2ZW50UHJvcGFnYXRpb24oZXZlbnQpOwotICAgIHF1ZXJ5VG9v bEFjdGlvbnMuZG93bmxvYWQoc3FsRWRpdG9yQ29udHJvbGxlcik7CisgICAgaWYoIXNxbEVkaXRv ckNvbnRyb2xsZXIuaXNfc2F2ZV9yZXN1bHRzX3RvX2ZpbGVfZGlzYWJsZWQpIHsKKyAgICAgIHRo aXMuX3N0b3BFdmVudFByb3BhZ2F0aW9uKGV2ZW50KTsKKyAgICAgIHF1ZXJ5VG9vbEFjdGlvbnMu ZG93bmxvYWQoc3FsRWRpdG9yQ29udHJvbGxlcik7CisgICAgfQogICB9IGVsc2UgaWYgKHRoaXMu dmFsaWRhdGVTaG9ydGN1dEtleXModG9nZ2xlQ2FzZUtleXMsIGV2ZW50KSkgewogICAgIHRoaXMu X3N0b3BFdmVudFByb3BhZ2F0aW9uKGV2ZW50KTsKICAgICBxdWVyeVRvb2xBY3Rpb25zLnRvZ2ds ZUNhc2VPZlNlbGVjdGVkVGV4dChzcWxFZGl0b3JDb250cm9sbGVyKTsKZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvY2FsbF9yZW5kZXJfYWZ0ZXJfcG9sbC5qcyBi L3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvY2FsbF9yZW5kZXJfYWZ0ZXJfcG9sbC5q cwppbmRleCBkOGQzNjQ3MjIuLjJjNTJiYWYxMCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vc3Rh dGljL2pzL3NxbGVkaXRvci9jYWxsX3JlbmRlcl9hZnRlcl9wb2xsLmpzCisrKyBiL3dlYi9wZ2Fk bWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvY2FsbF9yZW5kZXJfYWZ0ZXJfcG9sbC5qcwpAQCAtNDMs NiArNDMsNyBAQCBleHBvcnQgZnVuY3Rpb24gY2FsbFJlbmRlckFmdGVyUG9sbChzcWxFZGl0b3Is IGFsZXJ0aWZ5LCByZXMpIHsKICAgICBpZiAoaXNOb3RpZmljYXRpb25FbmFibGVkKHNxbEVkaXRv cikpIHsKICAgICAgIGFsZXJ0aWZ5LnN1Y2Nlc3MobXNnLCBzcWxFZGl0b3IuaW5mb19ub3RpZmll cl90aW1lb3V0KTsKICAgICB9CisgICAgc3FsRWRpdG9yLmVuYWJsZV9kaXNhYmxlX2Rvd25sb2Fk X2J0bih0cnVlKTsKICAgfQogCiAgIGlmIChpc1F1ZXJ5VG9vbChzcWxFZGl0b3IpKSB7CmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc3FsZWRpdG9yL2V4ZWN1dGVfcXVlcnkuanMg Yi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc3FsZWRpdG9yL2V4ZWN1dGVfcXVlcnkuanMKaW5kZXgg NmM0MDY5ZDI0Li4zODk2NTVmYTkgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9z cWxlZGl0b3IvZXhlY3V0ZV9xdWVyeS5qcworKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc3Fs ZWRpdG9yL2V4ZWN1dGVfcXVlcnkuanMKQEAgLTgzLDYgKzgzLDcgQEAgY2xhc3MgRXhlY3V0ZVF1 ZXJ5IHsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICBzZWxmLmxvYWRpbmdTY3JlZW4uaGlk ZSgpOwogICAgICAgICAgIHNlbGYuZW5hYmxlU1FMRWRpdG9yQnV0dG9ucygpOworICAgICAgICAg IHNlbGYuZGlzYWJsZURvd25sb2FkQnV0dG9uKCk7CiAgICAgICAgICAgLy8gRW5hYmxlL0Rpc2Fi bGUgY29tbWl0IGFuZCByb2xsYmFjayBidXR0b24uCiAgICAgICAgICAgaWYgKHJlc3VsdC5kYXRh LmRhdGEudHJhbnNhY3Rpb25fc3RhdHVzID09IHF1ZXJ5VHhuU3RhdHVzLlRSQU5TQUNUSU9OX1NU QVRVU19JTlRSQU5TCiAgICAgICAgICAgICB8fCByZXN1bHQuZGF0YS5kYXRhLnRyYW5zYWN0aW9u X3N0YXR1cyA9PSBxdWVyeVR4blN0YXR1cy5UUkFOU0FDVElPTl9TVEFUVVNfSU5FUlJPUikgewpA QCAtMjAxLDcgKzIwMiw3IEBAIGNsYXNzIEV4ZWN1dGVRdWVyeSB7CiAgICAgdGhpcy5sb2FkaW5n U2NyZWVuLnNob3coZ2V0dGV4dCgnUnVubmluZyBxdWVyeS4uLicpKTsKIAogICAgICQoJyNidG4t Zmxhc2gnKS5wcm9wKCdkaXNhYmxlZCcsIHRydWUpOwotICAgICQoJyNidG4tZG93bmxvYWQnKS5w cm9wKCdkaXNhYmxlZCcsIHRydWUpOworICAgIHRoaXMuZGlzYWJsZURvd25sb2FkQnV0dG9uKCk7 CiAKICAgICB0aGlzLnNxbFNlcnZlck9iamVjdC5xdWVyeV9zdGFydF90aW1lID0gbmV3IERhdGUo KTsKICAgICBpZiAodHlwZW9mIHNxbFN0YXRlbWVudCA9PT0gJ29iamVjdCcpIHsKQEAgLTI4MSw2 ICsyODIsMTAgQEAgY2xhc3MgRXhlY3V0ZVF1ZXJ5IHsKICAgICB9CiAgIH0KIAorICBkaXNhYmxl RG93bmxvYWRCdXR0b24oKSB7CisgICAgdGhpcy5zcWxTZXJ2ZXJPYmplY3QuZW5hYmxlX2Rpc2Fi bGVfZG93bmxvYWRfYnRuKHRydWUpCisgIH0KKwogICBlbmFibGVTUUxFZGl0b3JCdXR0b25zKCkg ewogICAgIHRoaXMuc3FsU2VydmVyT2JqZWN0LmRpc2FibGVfdG9vbF9idXR0b25zKGZhbHNlKTsK ICAgfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NxbGVkaXRvci9xdWVyeV90 b29sX2FjdGlvbnMuanMgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc3FsZWRpdG9yL3F1ZXJ5X3Rv b2xfYWN0aW9ucy5qcwppbmRleCA4MTkzNzA1OGMuLmEzZTE2YmRmZiAxMDA2NDQKLS0tIGEvd2Vi L3BnYWRtaW4vc3RhdGljL2pzL3NxbGVkaXRvci9xdWVyeV90b29sX2FjdGlvbnMuanMKKysrIGIv d2ViL3BnYWRtaW4vc3RhdGljL2pzL3NxbGVkaXRvci9xdWVyeV90b29sX2FjdGlvbnMuanMKQEAg LTgxLDEzICs4MSw3IEBAIGxldCBxdWVyeVRvb2xBY3Rpb25zID0gewogICB9LAogCiAgIGRvd25s b2FkOiBmdW5jdGlvbiAoc3FsRWRpdG9yQ29udHJvbGxlcikgewotICAgIGxldCBzcWxRdWVyeSA9 IHNxbEVkaXRvckNvbnRyb2xsZXIuZ3JpZFZpZXcucXVlcnlfdG9vbF9vYmouZ2V0U2VsZWN0aW9u KCk7CiAKLSAgICBpZiAoIXNxbFF1ZXJ5KSB7Ci0gICAgICBzcWxRdWVyeSA9IHNxbEVkaXRvckNv bnRyb2xsZXIuZ3JpZFZpZXcucXVlcnlfdG9vbF9vYmouZ2V0VmFsdWUoKTsKLSAgICB9Ci0KLSAg ICBpZiAoIXNxbFF1ZXJ5KSByZXR1cm47CiAgICAgbGV0IGV4dGVuc2lvbiA9IHNxbEVkaXRvckNv bnRyb2xsZXIucHJlZmVyZW5jZXMuY3N2X2ZpZWxkX3NlcGFyYXRvciA9PT0gJywnID8gJy5jc3Yn OiAnLnR4dCc7CiAgICAgbGV0IGZpbGVuYW1lID0gJ2RhdGEtJyArIG5ldyBEYXRlKCkuZ2V0VGlt ZSgpICsgZXh0ZW5zaW9uOwogCkBAIC05NSw3ICs4OSw3IEBAIGxldCBxdWVyeVRvb2xBY3Rpb25z ID0gewogICAgICAgZmlsZW5hbWUgPSBzcWxFZGl0b3JDb250cm9sbGVyLnRhYmxlX25hbWUgKyBl eHRlbnNpb247CiAgICAgfQogCi0gICAgc3FsRWRpdG9yQ29udHJvbGxlci50cmlnZ2VyX2Nzdl9k b3dubG9hZChzcWxRdWVyeSwgZmlsZW5hbWUpOworICAgIHNxbEVkaXRvckNvbnRyb2xsZXIudHJp Z2dlcl9jc3ZfZG93bmxvYWQoZmlsZW5hbWUpOwogICB9LAogCiAgIGNvbW1lbnRCbG9ja0NvZGU6 IGZ1bmN0aW9uIChzcWxFZGl0b3JDb250cm9sbGVyKSB7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9zdGF0aWMvanMvc3FsZWRpdG9yL3F1ZXJ5X3Rvb2xfcHJlZmVyZW5jZXMuanMgYi93ZWIvcGdh ZG1pbi9zdGF0aWMvanMvc3FsZWRpdG9yL3F1ZXJ5X3Rvb2xfcHJlZmVyZW5jZXMuanMKaW5kZXgg YmE0ZTdjODgyLi5lMmQ0YTY1Y2EgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9z cWxlZGl0b3IvcXVlcnlfdG9vbF9wcmVmZXJlbmNlcy5qcworKysgYi93ZWIvcGdhZG1pbi9zdGF0 aWMvanMvc3FsZWRpdG9yL3F1ZXJ5X3Rvb2xfcHJlZmVyZW5jZXMuanMKQEAgLTExMiwxMSArMTEy LDExIEBAIGZ1bmN0aW9uIHVwZGF0ZVVJUHJlZmVyZW5jZXMoc3FsRWRpdG9yKSB7CiAgICAgLmF0 dHIoJ2FyaWEtbGFiZWwnLAogICAgICAgc2hvcnRjdXRfdGl0bGUoZ2V0dGV4dCgnRXhwbGFpbiBB bmFseXplJykscHJlZmVyZW5jZXMuZXhwbGFpbl9hbmFseXplX3F1ZXJ5KSk7CiAKLSAgJGVsLmZp bmQoJyNidG4tZG93bmxvYWQnKQorICAkZWwuZmluZCgnI2J0bi1zYXZlLXJlc3VsdHMtdG8tZmls ZScpCiAgICAgLmF0dHIoJ3RpdGxlJywKLSAgICAgIHNob3J0Y3V0X3RpdGxlKGdldHRleHQoJ0Rv d25sb2FkIGFzIENTVi9UWFQnKSxwcmVmZXJlbmNlcy5kb3dubG9hZF9jc3YpKQorICAgICAgc2hv cnRjdXRfdGl0bGUoZ2V0dGV4dCgnU2F2ZSByZXN1bHRzIHRvIGZpbGUgYXMgQ1NWL1RYVCcpLHBy ZWZlcmVuY2VzLmRvd25sb2FkX2NzdikpCiAgICAgLmF0dHIoJ2FyaWEtbGFiZWwnLAotICAgICAg c2hvcnRjdXRfdGl0bGUoZ2V0dGV4dCgnRG93bmxvYWQgYXMgQ1NWL1RYVCcpLHByZWZlcmVuY2Vz LmRvd25sb2FkX2NzdikpOworICAgICAgc2hvcnRjdXRfdGl0bGUoZ2V0dGV4dCgnU2F2ZSByZXN1 bHRzIHRvIGZpbGUgYXMgQ1NWL1RYVCcpLHByZWZlcmVuY2VzLmRvd25sb2FkX2NzdikpOwogCiAg ICRlbC5maW5kKCcjYnRuLXNhdmUtZGF0YScpCiAgICAgLmF0dHIoJ3RpdGxlJywKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3RlbXBsYXRlcy9kYXRhZ3JpZC9pbmRleC5o dG1sIGIvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvdGVtcGxhdGVzL2RhdGFncmlkL2luZGV4 Lmh0bWwKaW5kZXggY2JlZTk4MjIyLi5kOWQwZDIyNTQgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWlu L3Rvb2xzL2RhdGFncmlkL3RlbXBsYXRlcy9kYXRhZ3JpZC9pbmRleC5odG1sCisrKyBiL3dlYi9w Z2FkbWluL3Rvb2xzL2RhdGFncmlkL3RlbXBsYXRlcy9kYXRhZ3JpZC9pbmRleC5odG1sCkBAIC0z NzQsOSArMzc0LDkgQEAKICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgPC9kaXY+ CiAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJidG4tZ3JvdXAiIHJvbGU9Imdyb3VwIiBhcmlhLWxh YmVsPSIiPgotICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9ImJ0bi1kb3dubG9hZCIgdHlwZT0i YnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zbSBidG4tcHJpbWFyeS1pY29uIgorICAgICAgICAgICAg ICAgIDxidXR0b24gaWQ9ImJ0bi1zYXZlLXJlc3VsdHMtdG8tZmlsZSIgdHlwZT0iYnV0dG9uIiBj bGFzcz0iYnRuIGJ0bi1zbSBidG4tcHJpbWFyeS1pY29uIgogICAgICAgICAgICAgICAgICAgICAg ICAgdGl0bGU9IiIKLSAgICAgICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PSIwIj4KKyAgICAg ICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PSIwIiBkaXNhYmxlZD4KICAgICAgICAgICAgICAg ICAgICAgPGkgY2xhc3M9ImZhIGZhLWRvd25sb2FkIHNxbC1pY29uLWxnIiBhcmlhLWhpZGRlbj0i dHJ1ZSIgcm9sZT0iaW1nIj48L2k+CiAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAg ICAgICA8L2Rpdj4KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9fX2lu aXRfXy5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9fX2luaXRfXy5weQppbmRleCAw Nzg0YzU0NjguLmE5ZjU2MjdjNiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRp dG9yL19faW5pdF9fLnB5CisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9fX2luaXRf Xy5weQpAQCAtMTMzNiw3ICsxMzM2LDcgQEAgZGVmIHN0YXJ0X3F1ZXJ5X2Rvd25sb2FkX3Rvb2wo dHJhbnNfaWQpOgogICAgICAgICApCiAKICAgICBkYXRhID0gcmVxdWVzdC52YWx1ZXMgaWYgcmVx dWVzdC52YWx1ZXMgZWxzZSBOb25lCi0gICAgaWYgZGF0YSBpcyBOb25lIG9yIChkYXRhIGFuZCAn cXVlcnknIG5vdCBpbiBkYXRhKToKKyAgICBpZiBkYXRhIGlzIE5vbmU6CiAgICAgICAgIHJldHVy biBtYWtlX2pzb25fcmVzcG9uc2UoCiAgICAgICAgICAgICBzdGF0dXM9NDEwLAogICAgICAgICAg ICAgc3VjY2Vzcz0wLApAQCAtMTM0NiwxMiArMTM0Niw5IEBAIGRlZiBzdGFydF9xdWVyeV9kb3du bG9hZF90b29sKHRyYW5zX2lkKToKICAgICAgICAgKQogCiAgICAgdHJ5OgotICAgICAgICBzcWwg PSBkYXRhWydxdWVyeSddCiAKICAgICAgICAgIyBUaGlzIHJldHVybnMgZ2VuZXJhdG9yIG9mIHJl Y29yZHMuCi0gICAgICAgIHN0YXR1cywgZ2VuID0gc3luY19jb25uLmV4ZWN1dGVfb25fc2VydmVy X2FzX2NzdigKLSAgICAgICAgICAgIHNxbCwgcmVjb3Jkcz0yMDAwCi0gICAgICAgICkKKyAgICAg ICAgc3RhdHVzLCBnZW4gPSBzeW5jX2Nvbm4uZXhlY3V0ZV9vbl9zZXJ2ZXJfYXNfY3N2KHJlY29y ZHM9MjAwMCkKIAogICAgICAgICBpZiBub3Qgc3RhdHVzOgogICAgICAgICAgICAgcmV0dXJuIG1h a2VfanNvbl9yZXNwb25zZSgKQEAgLTEzNjIsNiArMTM1OSw3IEBAIGRlZiBzdGFydF9xdWVyeV9k b3dubG9hZF90b29sKHRyYW5zX2lkKToKIAogICAgICAgICByID0gUmVzcG9uc2UoCiAgICAgICAg ICAgICBnZW4oCisgICAgICAgICAgICAgICAgdHJhbnNfb2JqLAogICAgICAgICAgICAgICAgIHF1 b3RlPWJsdWVwcmludC5jc3ZfcXVvdGluZy5nZXQoKSwKICAgICAgICAgICAgICAgICBxdW90ZV9j aGFyPWJsdWVwcmludC5jc3ZfcXVvdGVfY2hhci5nZXQoKSwKICAgICAgICAgICAgICAgICBmaWVs ZF9zZXBhcmF0b3I9Ymx1ZXByaW50LmNzdl9maWVsZF9zZXBhcmF0b3IuZ2V0KCksCmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2pzL3NxbGVkaXRvci5qcyBi L3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvanMvc3FsZWRpdG9yLmpzCmluZGV4 IGM4ZDNjYmNmMy4uOGI4MGVlZWZiIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9zcWxl ZGl0b3Ivc3RhdGljL2pzL3NxbGVkaXRvci5qcworKysgYi93ZWIvcGdhZG1pbi90b29scy9zcWxl ZGl0b3Ivc3RhdGljL2pzL3NxbGVkaXRvci5qcwpAQCAtMTM2LDcgKzEzNiw3IEBAIGRlZmluZSgn dG9vbHMucXVlcnl0b29sJywgWwogICAgICAgJ2NsaWNrICNidG4tZmxhc2gnOiAnb25fZmxhc2gn LAogICAgICAgJ2NsaWNrICNidG4tZmxhc2gtbWVudSc6ICdvbl9mbGFzaCcsCiAgICAgICAnY2xp Y2sgI2J0bi1jYW5jZWwtcXVlcnknOiAnb25fY2FuY2VsX3F1ZXJ5JywKLSAgICAgICdjbGljayAj YnRuLWRvd25sb2FkJzogJ29uX2Rvd25sb2FkJywKKyAgICAgICdjbGljayAjYnRuLXNhdmUtcmVz dWx0cy10by1maWxlJzogJ29uX2Rvd25sb2FkJywKICAgICAgICdjbGljayAjYnRuLWNsZWFyJzog J29uX2NsZWFyJywKICAgICAgICdjbGljayAjYnRuLWF1dG8tY29tbWl0JzogJ29uX2F1dG9fY29t bWl0JywKICAgICAgICdjbGljayAjYnRuLWF1dG8tcm9sbGJhY2snOiAnb25fYXV0b19yb2xsYmFj aycsCkBAIC0xMzU4LDcgKzEzNTgsNyBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAg ICAgIHNlbGYuaGFuZGxlci5mZXRjaGluZ19yb3dzID0gdHJ1ZTsKIAogICAgICAgJCgnI2J0bi1m bGFzaCcpLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7Ci0gICAgICAkKCcjYnRuLWRvd25sb2FkJyku cHJvcCgnZGlzYWJsZWQnLCB0cnVlKTsKKyAgICAgIHNlbGYuZW5hYmxlX2Rpc2FibGVfZG93bmxv YWRfYnRuKHRydWUpOwogCiAgICAgICBpZiAoZmV0Y2hfYWxsKSB7CiAgICAgICAgIHNlbGYuaGFu ZGxlci50cmlnZ2VyKApAQCAtMTM4Miw3ICsxMzgyLDcgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRv b2wnLCBbCiAgICAgICAgIC5kb25lKGZ1bmN0aW9uKHJlcykgewogICAgICAgICAgIHNlbGYuaGFu ZGxlci5oYXNfbW9yZV9yb3dzID0gcmVzLmRhdGEuaGFzX21vcmVfcm93czsKICAgICAgICAgICAk KCcjYnRuLWZsYXNoJykucHJvcCgnZGlzYWJsZWQnLCBmYWxzZSk7Ci0gICAgICAgICAgJCgnI2J0 bi1kb3dubG9hZCcpLnByb3AoJ2Rpc2FibGVkJywgZmFsc2UpOworICAgICAgICAgIHNlbGYuZW5h YmxlX2Rpc2FibGVfZG93bmxvYWRfYnRuKGZhbHNlKTsKICAgICAgICAgICBzZWxmLmhhbmRsZXIu dHJpZ2dlcigncGdhZG1pbi1zcWxlZGl0b3I6bG9hZGluZy1pY29uOmhpZGUnKTsKICAgICAgICAg ICBzZWxmLnVwZGF0ZV9ncmlkX2RhdGEocmVzLmRhdGEucmVzdWx0KTsKICAgICAgICAgICBzZWxm LmhhbmRsZXIuZmV0Y2hpbmdfcm93cyA9IGZhbHNlOwpAQCAtMTM5Miw3ICsxMzkyLDcgQEAgZGVm aW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAgICAgICAgIH0pCiAgICAgICAgIC5mYWlsKGZ1bmN0 aW9uKGUpIHsKICAgICAgICAgICAkKCcjYnRuLWZsYXNoJykucHJvcCgnZGlzYWJsZWQnLCBmYWxz ZSk7Ci0gICAgICAgICAgJCgnI2J0bi1kb3dubG9hZCcpLnByb3AoJ2Rpc2FibGVkJywgZmFsc2Up OworICAgICAgICAgIHNlbGYuZW5hYmxlX2Rpc2FibGVfZG93bmxvYWRfYnRuKGZhbHNlKTsKICAg ICAgICAgICBzZWxmLmhhbmRsZXIudHJpZ2dlcigncGdhZG1pbi1zcWxlZGl0b3I6bG9hZGluZy1p Y29uOmhpZGUnKTsKICAgICAgICAgICBzZWxmLmhhbmRsZXIuaGFzX21vcmVfcm93cyA9IGZhbHNl OwogICAgICAgICAgIHNlbGYuaGFuZGxlci5mZXRjaGluZ19yb3dzID0gZmFsc2U7CkBAIC0yNTM0 LDYgKzI1MzQsNyBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAgICAgICAgc2VsZi5z ZXJ2ZXJfdHlwZSA9IHVybF9wYXJhbXMuc2VydmVyX3R5cGU7CiAgICAgICAgIHNlbGYudXJsX3Bh cmFtcyA9IHVybF9wYXJhbXM7CiAgICAgICAgIHNlbGYuaXNfdHJhbnNhY3Rpb25fYnV0dG9uc19k aXNhYmxlZCA9IHRydWU7CisgICAgICAgIHNlbGYuaXNfc2F2ZV9yZXN1bHRzX3RvX2ZpbGVfZGlz YWJsZWQgPSB0cnVlOwogCiAgICAgICAgIC8vIFdlIGRvIG5vdCBhbGxvdyB0byBjYWxsIHRoZSBz dGFydCBtdWx0aXBsZSB0aW1lcy4KICAgICAgICAgaWYgKHNlbGYuZ3JpZFZpZXcpCkBAIC0yNzgz LDcgKzI3ODQsNyBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAgICAgICAgKTsKIAog ICAgICAgICAkKCcjYnRuLWZsYXNoJykucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTsKLSAgICAgICAg JCgnI2J0bi1kb3dubG9hZCcpLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7CisgICAgICAgIHNlbGYu ZW5hYmxlX2Rpc2FibGVfZG93bmxvYWRfYnRuKHRydWUpOwogCiAgICAgICAgIHNlbGYudHJpZ2dl cigKICAgICAgICAgICAncGdhZG1pbi1zcWxlZGl0b3I6bG9hZGluZy1pY29uOm1lc3NhZ2UnLApA QCAtMzA1OCw3ICszMDU5LDEyIEBAIGRlZmluZSgndG9vbHMucXVlcnl0b29sJywgWwogICAgICAg ICAgICAgLy8gSGlkZSB0aGUgbG9hZGluZyBpY29uCiAgICAgICAgICAgICBzZWxmX2NvbC50cmln Z2VyKCdwZ2FkbWluLXNxbGVkaXRvcjpsb2FkaW5nLWljb246aGlkZScpOwogICAgICAgICAgICAg JCgnI2J0bi1mbGFzaCcpLnByb3AoJ2Rpc2FibGVkJywgZmFsc2UpOwotICAgICAgICAgICAgJCgn I2J0bi1kb3dubG9hZCcpLnByb3AoJ2Rpc2FibGVkJywgZmFsc2UpOworICAgICAgICAgICAgaWYg KCFfLmlzVW5kZWZpbmVkKGRhdGEpICYmIEFycmF5LmlzQXJyYXkoZGF0YS5yZXN1bHQpICYmIGRh dGEucmVzdWx0Lmxlbmd0aCA+IDApIHsKKyAgICAgICAgICAgICAgc2VsZi5lbmFibGVfZGlzYWJs ZV9kb3dubG9hZF9idG4oZmFsc2UpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7 CisgICAgICAgICAgICAgIHNlbGYuZW5hYmxlX2Rpc2FibGVfZG93bmxvYWRfYnRuKHRydWUpOwor ICAgICAgICAgICAgfQogICAgICAgICAgIH0uYmluZChzZWxmKQogICAgICAgICApOwogICAgICAg fSwKQEAgLTMyMzksNyArMzI0NSw2IEBAIGRlZmluZSgndG9vbHMucXVlcnl0b29sJywgWwogCiAg ICAgICAgIGlmIChzdGF0dXMgIT0gJ0J1c3knKSB7CiAgICAgICAgICAgJCgnI2J0bi1mbGFzaCcp LnByb3AoJ2Rpc2FibGVkJywgZmFsc2UpOwotICAgICAgICAgICQoJyNidG4tZG93bmxvYWQnKS5w cm9wKCdkaXNhYmxlZCcsIGZhbHNlKTsKICAgICAgICAgICBzZWxmLnRyaWdnZXIoJ3BnYWRtaW4t c3FsZWRpdG9yOmxvYWRpbmctaWNvbjpoaWRlJyk7CiAKICAgICAgICAgICBpZighc2VsZi50b3Rh bF90aW1lKSB7CkBAIC0zMzAxLDYgKzMzMDYsMTIgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wn LCBbCiAgICAgICAgIHJldHVybiAoc2VsZi5nZXQoJ2Nhbl9lZGl0JykpOwogICAgICAgfSwKIAor ICAgICAgZW5hYmxlX2Rpc2FibGVfZG93bmxvYWRfYnRuOiBmdW5jdGlvbihpc19zYXZlX3Jlc3Vs dHNfdG9fZmlsZV9kaXNhYmxlZCkgeworICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgICAg IHNlbGYuaXNfc2F2ZV9yZXN1bHRzX3RvX2ZpbGVfZGlzYWJsZWQgPSBpc19zYXZlX3Jlc3VsdHNf dG9fZmlsZV9kaXNhYmxlZDsKKyAgICAgICAgJCgnI2J0bi1zYXZlLXJlc3VsdHMtdG8tZmlsZScp LnByb3AoJ2Rpc2FibGVkJywgaXNfc2F2ZV9yZXN1bHRzX3RvX2ZpbGVfZGlzYWJsZWQpOworICAg ICAgfSwKKwogICAgICAgcm93c190b19kZWxldGU6IGZ1bmN0aW9uKGRhdGEpIHsKICAgICAgICAg bGV0IHNlbGYgPSB0aGlzOwogICAgICAgICBsZXQgdG1wX2tleXMgPSBzZWxmLnByaW1hcnlfa2V5 czsKQEAgLTQzNzYsNyArNDM4Nyw2IEBAIGRlZmluZSgndG9vbHMucXVlcnl0b29sJywgWwogICAg ICAgICAgICAgaWYoIV8uaXNVbmRlZmluZWQoc2VsZi5kb3dubG9hZF9jc3Zfb2JqKSkgewogICAg ICAgICAgICAgICBzZWxmLmRvd25sb2FkX2Nzdl9vYmouYWJvcnQoKTsKICAgICAgICAgICAgICAg JCgnI2J0bi1mbGFzaCcpLnByb3AoJ2Rpc2FibGVkJywgZmFsc2UpOwotICAgICAgICAgICAgICAk KCcjYnRuLWRvd25sb2FkJykucHJvcCgnZGlzYWJsZWQnLCBmYWxzZSk7CiAgICAgICAgICAgICAg IHNlbGYudHJpZ2dlcigKICAgICAgICAgICAgICAgICAncGdhZG1pbi1zcWxlZGl0b3I6bG9hZGlu Zy1pY29uOmhpZGUnKTsKICAgICAgICAgICAgIH0KQEAgLTQzOTQsMTYgKzQ0MDQsMTYgQEAgZGVm aW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAgICAgICB9LAogCiAgICAgICAvLyBUcmlnZ2VyIHF1 ZXJ5IHJlc3VsdCBkb3dubG9hZCB0byBjc3YuCi0gICAgICB0cmlnZ2VyX2Nzdl9kb3dubG9hZDog ZnVuY3Rpb24ocXVlcnksIGZpbGVuYW1lKSB7CisgICAgICB0cmlnZ2VyX2Nzdl9kb3dubG9hZDog ZnVuY3Rpb24oZmlsZW5hbWUpIHsKICAgICAgICAgdmFyIHNlbGYgPSB0aGlzLAogICAgICAgICAg IHVybCA9IHVybF9mb3IoJ3NxbGVkaXRvci5xdWVyeV90b29sX2Rvd25sb2FkJywgewogICAgICAg ICAgICAgJ3RyYW5zX2lkJzogc2VsZi50cmFuc0lkLAogICAgICAgICAgIH0pLAotICAgICAgICAg IGRhdGEgPSB7IHF1ZXJ5OiBxdWVyeSwgZmlsZW5hbWU6IGZpbGVuYW1lIH07CisgICAgICAgICAg ZGF0YSA9IHsgZmlsZW5hbWU6IGZpbGVuYW1lIH07CiAKICAgICAgICAgLy8gRGlzYWJsZSB0aGUg RXhlY3V0ZSBidXR0b24KICAgICAgICAgJCgnI2J0bi1mbGFzaCcpLnByb3AoJ2Rpc2FibGVkJywg dHJ1ZSk7Ci0gICAgICAgICQoJyNidG4tZG93bmxvYWQnKS5wcm9wKCdkaXNhYmxlZCcsIHRydWUp OworICAgICAgICBzZWxmLmVuYWJsZV9kaXNhYmxlX2Rvd25sb2FkX2J0bih0cnVlKTsKICAgICAg ICAgc2VsZi5kaXNhYmxlX3Rvb2xfYnV0dG9ucyh0cnVlKTsKICAgICAgICAgc2VsZi5zZXRfc3Fs X21lc3NhZ2UoJycpOwogICAgICAgICBzZWxmLnRyaWdnZXIoCkBAIC00NDQ4LDE0ICs0NDU4LDE0 IEBAIGRlZmluZSgndG9vbHMucXVlcnl0b29sJywgWwogCiAgICAgICAgICAgLy8gRW5hYmxlIHRo ZSBleGVjdXRlIGJ1dHRvbgogICAgICAgICAgICQoJyNidG4tZmxhc2gnKS5wcm9wKCdkaXNhYmxl ZCcsIGZhbHNlKTsKLSAgICAgICAgICAkKCcjYnRuLWRvd25sb2FkJykucHJvcCgnZGlzYWJsZWQn LCBmYWxzZSk7CisgICAgICAgICAgc2VsZi5lbmFibGVfZGlzYWJsZV9kb3dubG9hZF9idG4oZmFs c2UpOwogICAgICAgICAgIHNlbGYuZGlzYWJsZV90b29sX2J1dHRvbnMoZmFsc2UpOwogICAgICAg ICAgIHNlbGYudHJpZ2dlcigncGdhZG1pbi1zcWxlZGl0b3I6bG9hZGluZy1pY29uOmhpZGUnKTsK ICAgICAgICAgfSkuZmFpbChmdW5jdGlvbihlcnIpIHsKICAgICAgICAgICBsZXQgbXNnID0gJyc7 CiAgICAgICAgICAgLy8gRW5hYmxlIHRoZSBleGVjdXRlIGJ1dHRvbgogICAgICAgICAgICQoJyNi dG4tZmxhc2gnKS5wcm9wKCdkaXNhYmxlZCcsIGZhbHNlKTsKLSAgICAgICAgICAkKCcjYnRuLWRv d25sb2FkJykucHJvcCgnZGlzYWJsZWQnLCBmYWxzZSk7CisgICAgICAgICAgc2VsZi5lbmFibGVf ZGlzYWJsZV9kb3dubG9hZF9idG4oZmFsc2UpOwogICAgICAgICAgIHNlbGYuZGlzYWJsZV90b29s X2J1dHRvbnMoZmFsc2UpOwogICAgICAgICAgIHNlbGYudHJpZ2dlcigncGdhZG1pbi1zcWxlZGl0 b3I6bG9hZGluZy1pY29uOmhpZGUnKTsKIApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdXRpbHMv ZHJpdmVyL3BzeWNvcGcyL2Nvbm5lY3Rpb24ucHkgYi93ZWIvcGdhZG1pbi91dGlscy9kcml2ZXIv cHN5Y29wZzIvY29ubmVjdGlvbi5weQppbmRleCA0ZjQwZTY1MmIuLmY3ZWI5NTdlNCAxMDA2NDQK LS0tIGEvd2ViL3BnYWRtaW4vdXRpbHMvZHJpdmVyL3BzeWNvcGcyL2Nvbm5lY3Rpb24ucHkKKysr IGIvd2ViL3BnYWRtaW4vdXRpbHMvZHJpdmVyL3BzeWNvcGcyL2Nvbm5lY3Rpb24ucHkKQEAgLTcy OCwxMCArNzI4LDggQEAgV0hFUkUgZGIuZGF0bmFtZSA9IGN1cnJlbnRfZGF0YWJhc2UoKSIiIikK ICAgICAgICAgaWYgc2VsZi5hc3luY18gPT0gMToKICAgICAgICAgICAgIHNlbGYuX3dhaXQoY3Vy LmNvbm5lY3Rpb24pCiAKLSAgICBkZWYgZXhlY3V0ZV9vbl9zZXJ2ZXJfYXNfY3N2KHNlbGYsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeSwgcGFyYW1zPU5vbmUsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWRfZXhjZXB0aW9uX21zZz1GYWxz ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZHM9MjAwMCk6CisgICAg ZGVmIGV4ZWN1dGVfb25fc2VydmVyX2FzX2NzdihzZWxmLCBwYXJhbXM9Tm9uZSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZF9leGNlcHRpb25fbXNnPUZhbHNlLCBy ZWNvcmRzPTIwMDApOgogICAgICAgICAiIiIKICAgICAgICAgVG8gZmV0Y2ggcXVlcnkgcmVzdWx0 IGFuZCBnZW5lcmF0ZSBDU1Ygb3V0cHV0CiAKQEAgLTc0MywzOSArNzQxLDM2IEBAIFdIRVJFIGRi LmRhdG5hbWUgPSBjdXJyZW50X2RhdGFiYXNlKCkiIiIpCiAgICAgICAgIFJldHVybnM6CiAgICAg ICAgICAgICBHZW5lcmF0b3IgcmVzcG9uc2UKICAgICAgICAgIiIiCi0gICAgICAgIHN0YXR1cywg Y3VyID0gc2VsZi5fX2N1cnNvcigpCi0gICAgICAgIHNlbGYucm93X2NvdW50ID0gMAorICAgICAg ICBjdXIgPSBzZWxmLl9fYXN5bmNfY3Vyc29yCisgICAgICAgIGlmIG5vdCBjdXI6CisgICAgICAg ICAgICByZXR1cm4gRmFsc2UsIHNlbGYuQ1VSU09SX05PVF9GT1VORAogCi0gICAgICAgIGlmIG5v dCBzdGF0dXM6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UsIHN0cihjdXIpCi0gICAgICAgIHF1 ZXJ5X2lkID0gcmFuZG9tLnJhbmRpbnQoMSwgOTk5OTk5OSkKKyAgICAgICAgaWYgc2VsZi5jb25u LmlzZXhlY3V0aW5nKCk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UsIGdldHRleHQoCisgICAg ICAgICAgICAgICAgIkFzeW5jaHJvbm91cyBxdWVyeSBleGVjdXRpb24vb3BlcmF0aW9uIHVuZGVy d2F5LiIKKyAgICAgICAgICAgICkKIAogICAgICAgICBjdXJyZW50X2FwcC5sb2dnZXIubG9nKAog ICAgICAgICAgICAgMjUsCiAgICAgICAgICAgICAiRXhlY3V0ZSAod2l0aCBzZXJ2ZXIgY3Vyc29y KSBmb3Igc2VydmVyICN7c2VydmVyX2lkfSAtICIKLSAgICAgICAgICAgICJ7Y29ubl9pZH0gKFF1 ZXJ5LWlkOiB7cXVlcnlfaWR9KTpcbntxdWVyeX0iLmZvcm1hdCgKLSAgICAgICAgICAgICAgICBz ZXJ2ZXJfaWQ9c2VsZi5tYW5hZ2VyLnNpZCwKLSAgICAgICAgICAgICAgICBjb25uX2lkPXNlbGYu Y29ubl9pZCwKLSAgICAgICAgICAgICAgICBxdWVyeT1xdWVyeSwKLSAgICAgICAgICAgICAgICBx dWVyeV9pZD1xdWVyeV9pZAotICAgICAgICAgICAgKQorICAgICAgICAgICAgIntjb25uX2lkfSIu Zm9ybWF0KHNlcnZlcl9pZD1zZWxmLm1hbmFnZXIuc2lkLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbm5faWQ9c2VsZi5jb25uX2lkKQogICAgICAgICApCiAgICAgICAgIHRyeToK ICAgICAgICAgICAgICMgVW5yZWdpc3RlcmluZyB0eXBlIGNhc3RpbmcgZm9yIGxhcmdlIHNpemUg ZGF0YSB0eXBlcy4KICAgICAgICAgICAgIHVucmVnaXN0ZXJfbnVtZXJpY190eXBlY2FzdGVycyhz ZWxmLmNvbm4pCi0gICAgICAgICAgICBzZWxmLl9faW50ZXJuYWxfYmxvY2tpbmdfZXhlY3V0ZShj dXIsIHF1ZXJ5LCBwYXJhbXMpCisgICAgICAgICAgICBpZiBzZWxmLmFzeW5jXyA9PSAxOgorICAg ICAgICAgICAgICAgIHNlbGYuX3dhaXQoY3VyLmNvbm5lY3Rpb24pCiAgICAgICAgIGV4Y2VwdCBw c3ljb3BnMi5FcnJvciBhcyBwZToKICAgICAgICAgICAgIGN1ci5jbG9zZSgpCiAgICAgICAgICAg ICBlcnJtc2cgPSBzZWxmLl9mb3JtYXR0ZWRfZXhjZXB0aW9uX21zZyhwZSwgZm9ybWF0dGVkX2V4 Y2VwdGlvbl9tc2cpCiAgICAgICAgICAgICBjdXJyZW50X2FwcC5sb2dnZXIuZXJyb3IoCiAgICAg ICAgICAgICAgICAgImZhaWxlZCB0byBleGVjdXRlIHF1ZXJ5ICgod2l0aCBzZXJ2ZXIgY3Vyc29y KSAiCiAgICAgICAgICAgICAgICAgImZvciB0aGUgc2VydmVyICN7c2VydmVyX2lkfSAtIHtjb25u X2lkfSAiCi0gICAgICAgICAgICAgICAgIihxdWVyeS1pZDoge3F1ZXJ5X2lkfSk6XG4iCi0gICAg ICAgICAgICAgICAgImVycm9yIG1lc3NhZ2U6e2Vycm1zZ30iLmZvcm1hdCgKKyAgICAgICAgICAg ICAgICAiXG5lcnJvciBtZXNzYWdlOntlcnJtc2d9Ii5mb3JtYXQoCiAgICAgICAgICAgICAgICAg ICAgIHNlcnZlcl9pZD1zZWxmLm1hbmFnZXIuc2lkLAogICAgICAgICAgICAgICAgICAgICBjb25u X2lkPXNlbGYuY29ubl9pZCwKICAgICAgICAgICAgICAgICAgICAgZXJybXNnPWVycm1zZywKLSAg ICAgICAgICAgICAgICAgICAgcXVlcnlfaWQ9cXVlcnlfaWQKICAgICAgICAgICAgICAgICApCiAg ICAgICAgICAgICApCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UsIGVycm1zZwpAQCAtODA5LDEz ICs4MDQsMTIgQEAgV0hFUkUgZGIuZGF0bmFtZSA9IGN1cnJlbnRfZGF0YWJhc2UoKSIiIikKIAog ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHMKIAotICAgICAgICBkZWYgZ2VuKHF1b3RlPSdzdHJp bmdzJywgcXVvdGVfY2hhcj0iJyIsIGZpZWxkX3NlcGFyYXRvcj0nLCcsCi0gICAgICAgICAgICAg ICAgcmVwbGFjZV9udWxsc193aXRoPU5vbmUpOgorICAgICAgICBkZWYgZ2VuKHRyYW5zX29iaiwg cXVvdGU9J3N0cmluZ3MnLCBxdW90ZV9jaGFyPSInIiwKKyAgICAgICAgICAgICAgICBmaWVsZF9z ZXBhcmF0b3I9JywnLCByZXBsYWNlX251bGxzX3dpdGg9Tm9uZSk6CiAKKyAgICAgICAgICAgIGN1 ci5zY3JvbGwoMCwgbW9kZT0nYWJzb2x1dGUnKQogICAgICAgICAgICAgcmVzdWx0cyA9IGN1ci5m ZXRjaG1hbnkocmVjb3JkcykKICAgICAgICAgICAgIGlmIG5vdCByZXN1bHRzOgotICAgICAgICAg ICAgICAgIGlmIG5vdCBjdXIuY2xvc2VkOgotICAgICAgICAgICAgICAgICAgICBjdXIuY2xvc2Uo KQogICAgICAgICAgICAgICAgIHlpZWxkIGdldHRleHQoJ1RoZSBxdWVyeSBleGVjdXRlZCBkaWQg bm90IHJldHVybiBhbnkgZGF0YS4nKQogICAgICAgICAgICAgICAgIHJldHVybgogCkBAIC04NTcs OCArODUxLDYgQEAgV0hFUkUgZGIuZGF0bmFtZSA9IGN1cnJlbnRfZGF0YWJhc2UoKSIiIikKICAg ICAgICAgICAgICAgICByZXN1bHRzID0gY3VyLmZldGNobWFueShyZWNvcmRzKQogCiAgICAgICAg ICAgICAgICAgaWYgbm90IHJlc3VsdHM6Ci0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBjdXIu Y2xvc2VkOgotICAgICAgICAgICAgICAgICAgICAgICAgY3VyLmNsb3NlKCkKICAgICAgICAgICAg ICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICByZXNfaW8gPSBTdHJpbmdJTygpCiAKQEAg LTg3NCw5ICs4NjYsMjEgQEAgV0hFUkUgZGIuZGF0bmFtZSA9IGN1cnJlbnRfZGF0YWJhc2UoKSIi IikKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cyA9IGhhbmRsZV9udWxsX3ZhbHVlcyhyZXN1 bHRzLCByZXBsYWNlX251bGxzX3dpdGgpCiAgICAgICAgICAgICAgICAgY3N2X3dyaXRlci53cml0 ZXJvd3MocmVzdWx0cykKICAgICAgICAgICAgICAgICB5aWVsZCByZXNfaW8uZ2V0dmFsdWUoKQor CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgIyB0cnkgdG8gcmVzZXQgdGhlIGN1 cnNvciBzY3JvbGwgYmFjayB0byB3aGVyZSBpdCB3YXMsCisgICAgICAgICAgICAgICAgIyBieXBh c3MgZXJyb3IsIGlmIGNhbm5vdCBzY3JvbGwgYmFjaworICAgICAgICAgICAgICAgIHJvd3NfZmV0 Y2hlZF9mcm9tID0gdHJhbnNfb2JqLmdldF9mZXRjaGVkX3Jvd19jbnQoKQorICAgICAgICAgICAg ICAgIGN1ci5zY3JvbGwocm93c19mZXRjaGVkX2Zyb20sIG1vZGU9J2Fic29sdXRlJykKKyAgICAg ICAgICAgIGV4Y2VwdCBwc3ljb3BnMi5FcnJvcjoKKyAgICAgICAgICAgICAgICAjIGJ5cGFzc2lu ZyB0aGUgZXJyb3IgYXMgY3Vyc29yIHRyaWVkIHRvIHNjcm9sbCBvbiB0aGUgc3BlY2lmaWVkCisg ICAgICAgICAgICAgICAgIyBwb3NpdGlvbiwgYnV0IGVuZCBvZiByZWNvcmRzIGZvdW5kCisgICAg ICAgICAgICAgICAgcGFzcworCiAgICAgICAgICMgUmVnaXN0ZXJpbmcgYmFjayB0eXBlIGNhc3Rl ciBmb3IgbGFyZ2Ugc2l6ZSBkYXRhIHR5cGVzIHRvIHN0cmluZwogICAgICAgICAjIHdoaWNoIHdh cyB1bnJlZ2lzdGVyZWQgYXQgc3RhcnRpbmcKICAgICAgICAgcmVnaXN0ZXJfc3RyaW5nX3R5cGVj YXN0ZXJzKHNlbGYuY29ubikKKyAgICAgICAgIyBzZWxmLmNvbm4uYXV0b2NvbW1pdCA9IEZhbHNl CiAgICAgICAgIHJldHVybiBUcnVlLCBnZW4KIAogICAgIGRlZiBleGVjdXRlX3NjYWxhcihzZWxm LCBxdWVyeSwgcGFyYW1zPU5vbmUsCkBAIC0xMjI0LDYgKzEyMjgsNyBAQCBXSEVSRSBkYi5kYXRu YW1lID0gY3VycmVudF9kYXRhYmFzZSgpIiIiKQogICAgICAgICBBcmdzOgogICAgICAgICAgIHJl Y29yZHM6IG5vIG9mIHJlY29yZHMgdG8gZmV0Y2guIHVzZSAtMSB0byBmZXRjaGFsbC4KICAgICAg ICAgICBmb3JtYXR0ZWRfZXhjZXB0aW9uX21zZzoKKyAgICAgICAgICBmb3JfZG93bmxvYWQ6IGlm IFRydWUsIHdpbGwgZmV0Y2ggYWxsIHJlY29yZHMgYW5kIHJlc2V0IHRoZSBjdXJzb3IKIAogICAg ICAgICBSZXR1cm5zOgogCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi91dGlscy9kcml2ZXIvcHN5 Y29wZzIvY3Vyc29yLnB5IGIvd2ViL3BnYWRtaW4vdXRpbHMvZHJpdmVyL3BzeWNvcGcyL2N1cnNv ci5weQppbmRleCA4MmVjM2Q1OTIuLmI3NDA3NTBiNiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4v dXRpbHMvZHJpdmVyL3BzeWNvcGcyL2N1cnNvci5weQorKysgYi93ZWIvcGdhZG1pbi91dGlscy9k cml2ZXIvcHN5Y29wZzIvY3Vyc29yLnB5CkBAIC0yMjgsNiArMjI4LDEzIEBAIGNsYXNzIERpY3RD dXJzb3IoX2N1cnNvcik6CiAgICAgICAgIGlmIHR1cGxlcyBpcyBub3QgTm9uZToKICAgICAgICAg ICAgIHJldHVybiBbc2VsZi5fZGljdF90dXBsZSh0KSBmb3IgdCBpbiB0dXBsZXNdCiAKKyAgICBk ZWYgcm9sbGJhY2soc2VsZik6CisgICAgICAgICIiIgorCisgICAgICAgIDpyZXR1cm46CisgICAg ICAgICIiIgorICAgICAgICBfY3Vyc29yLnJvbGxiYWNrKCkKKwogICAgIGRlZiBfX2l0ZXJfXyhz ZWxmKToKICAgICAgICAgaXQgPSBfY3Vyc29yLl9faXRlcl9fKHNlbGYpCiAgICAgICAgIHRyeToK --000000000000e186b905b5dc9d21--