Received: from malur.postgresql.org ([2a02:16a8:dc51::56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fIXKz-0000rq-6l for pgadmin-hackers@arkaria.postgresql.org; Tue, 15 May 2018 10:37:45 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1fIXKx-0003t4-Mu for pgadmin-hackers@arkaria.postgresql.org; Tue, 15 May 2018 10:37:43 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fIXKx-0003rX-A0 for pgadmin-hackers@lists.postgresql.org; Tue, 15 May 2018 10:37:43 +0000 Received: from mail-ot0-x235.google.com ([2607:f8b0:4003:c0f::235]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1fIXKl-0007KR-FQ for pgadmin-hackers@postgresql.org; Tue, 15 May 2018 10:37:42 +0000 Received: by mail-ot0-x235.google.com with SMTP id l22-v6so17866409otj.0 for ; Tue, 15 May 2018 03:37:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=zyiIli6crSBnz9A1IpAI2y0F+cTNnB38D4iJAGKxsNc=; b=capbKgWE4+i48PcsAefLCxrF/kXfT7iLDqSJDc7Fzd1AqRUZhG5Cu/y/tHMi70RniE N1Ju+Ag7fJb6hFOkJGFuYdnjIfJGQBWd3bUzMhSJqR9VvC6oIMeafOfM2nAjurR4ETIe D0d1SmTDnRbqB160QuTh8DErkuo7VYF46+5tvGFFEnhP17nFHSBYTgtkeQUMKpVBq7NM Z6WQcG7M+bo/NMcEVgmrk3YTqUVH+J7rCXLf7bH1Uh14wRPd/OVxTKt5vQkXizfEKSTs tT6mmc1f1p8/Vy8KHNLOpiCH4ErtAeaD4G5ehFPfW9Zez1gNc5cDeR8DnNHADNZnD3SW xyMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=zyiIli6crSBnz9A1IpAI2y0F+cTNnB38D4iJAGKxsNc=; b=CEWt+NkxLBhFRFkzH6I1B3gLBW93+zlkrWPXH4Btboc/WWp71soYYb78JMEa4o1QKw 70uPsII0e1IeeIP7hXwxmUjW2MXugyjrq41IZLmRCQYUuvgZoDbPMw+34DyB+jxdrUnE L/TkMzI/OMEwC1phZ4AyxirZLZxhrW+HUJ6W37jkEpI2PsDxS3BhKeTpmaTjJKUtMJY7 P6wDHvzkoG3luhhQkjv6SJih1zrMVlnYIaKywHIWkKzUIZV14H8WsZdA/wukd5njOGcn sny9On6NmftPy+mUJwCPDOzaENNB8DkFDqh5hyqm771qdoND8lJ4BM52MHp7261WuDP5 A10Q== X-Gm-Message-State: ALKqPwe5v4UaNwxZxIG68J2aTOTE5K29f7PftwhdE6lEUDSXsvMlTfAw KyqW/1EVrscnvlPTuVgKBTdrncBU8GH9eK9IdTP/Gg== X-Google-Smtp-Source: AB8JxZpzpZex6ePufq7DsFSXV2CgGutxCZ3phMuVCOSp6JJtRhak6KwXTYQxW3Y227zk2AIwAw+6wJpXBJ6RaaTtiGY= X-Received: by 2002:a9d:614c:: with SMTP id c12-v6mr10697510otk.223.1526380648993; Tue, 15 May 2018 03:37:28 -0700 (PDT) MIME-Version: 1.0 Received: by 10.138.5.130 with HTTP; Tue, 15 May 2018 03:37:08 -0700 (PDT) In-Reply-To: References: From: Ashesh Vashi Date: Tue, 15 May 2018 16:07:08 +0530 Message-ID: Subject: Re: [pgadmin4][patch] Initial patch to decouple from ACI Tree To: Joao Pedro De Almeida Pereira Cc: Anthony Emengo , Dave Page , "Akshay Joshi (EDB)" , Murtuza Zabuawala , pgadmin-hackers , Khushboo Vashi Content-Type: multipart/mixed; boundary="00000000000060568d056c3c3096" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --00000000000060568d056c3c3096 Content-Type: multipart/alternative; boundary="00000000000060568a056c3c3094" --00000000000060568a056c3c3094 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Joao, On Mon, May 14, 2018 at 6:11 PM, Ashesh Vashi wrote: > > On Mon, May 14, 2018 at 6:10 PM, Dave Page wrote: > >> >> >> On Mon, May 14, 2018 at 1:38 PM, Ashesh Vashi < >> ashesh.vashi@enterprisedb.com> wrote: >> >>> On Mon, May 14, 2018 at 2:59 PM, Dave Page wrote: >>> >>>> >>>> >>>> On Sat, May 12, 2018 at 12:10 AM, Ashesh Vashi < >>>> ashesh.vashi@enterprisedb.com> wrote: >>>> >>>>> On Sat, May 12, 2018, 02:58 Joao De Almeida Pereira < >>>>> jdealmeidapereira@pivotal.io> wrote: >>>>> >>>>>> Hello Ashesh, >>>>>> >>>>>> 1. In TreeNode, we're keepging the reference of DOMElement, do we >>>>>>>> really need it? >>>>>>> >>>>>>> As of right now, our Tree abstraction acts as an adapter to the >>>>>>>> aciTree library. The aciTree library needs the domElement for most= of its >>>>>>>> functions (setInode, unload, etc). Thus this is the easiest way to >>>>>>>> introduce our abstraction and keep the functionality as before - a= t least >>>>>>>> until we decide that whether we want to switch out the library or = not. >>>>>>> >>>>>>> I understand that. But - I've not seen any reference of domElement >>>>>>> the code yet, hence - pointed that out. >>>>>> >>>>>> If you look at the function: reload, unload you will see that domNod= e >>>>>> is used to communicate with the ACITree >>>>>> =E2=80=8B >>>>>> >>>>>>> 2. Are you expecting the tree class to be a singleton class >>>>>>> >>>>>>> Since this tree is referenced throughout the codebase, considering >>>>>>>> it to be a singleton seems like the most appropriate pattern for t= his >>>>>>>> usecase. It is very much the same way how we create a single insta= nce of >>>>>>>> the aciTree library and use that throughout the codebase. Moreover= , it >>>>>>>> opens up opportunities to improve performance, for example caching= lockups >>>>>>>> of nodes. I=E2=80=99m not a fan of singletons myself, but I feel l= ike we=E2=80=99re simply >>>>>>>> keeping the architecture the same in the instance. >>>>>>> >>>>>>> Yeah - I don't see any usage of tree object from anywhere. >>>>>>> And, we're already creating new object in browser.js (and, not >>>>>>> utitlizing that instance anywhere.) >>>>>> >>>>>> >>>>>> You are right, we do not need to export tree as a singleton for now. >>>>>> The line that exports the variable tree can be remove when applying >>>>>> the patch number 2. >>>>>> =E2=80=8B >>>>>> >>>>>> I think we addressed all the concern raised about this patch. Does >>>>>> this mean that the patch is going to get committed? >>>>>> >>>>> Yes - from me for 0002. >>>>> >>>> >>>> Can you do that today? >>>> >>> Done. >>> >> >> Great, thanks! >> >> On to patch 0003 then :-) >> > Yes - already working on it! :-) > Majority part of the 0003 patch looks good to me. Except choice of the path of some of the file, and name of the functions. Please find the updated patch. I've moved files under the 'pgadmin/static/js/menu' directory under the 'pgadmin/static/js/tree', as they're using tree functionalities directly. Please review it, and let me know your concern. -- Thanks, Ashesh > > -- Thanks, Ashesh > >> >> -- >> Dave Page >> Blog: http://pgsnake.blogspot.com >> Twitter: @pgsnake >> >> EnterpriseDB UK: http://www.enterprisedb.com >> The Enterprise PostgreSQL Company >> > > --00000000000060568a056c3c3094 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
<= div style=3D"margin:0pt 0pt 8px">Hi Joao,
On Mon, May 14, 2018 at 6:11 PM, Ashesh Vashi <ashesh.vashi@enterprisedb.com> wrote:
On Mon, May 14, 2018 at 6:10 PM= , Dave Page <dpage@pgadmin.org> wrote:


On Mon, May 14, 2018 at 1:38 PM, Ashesh Vashi <ashesh.vashi@enterprisedb.com> wrote:
=
On Mon, May 14, 2018 at= 2:59 PM, Dave Page <dpage@pgadmin.org> wrote:


On Sat, May 12, 2018 at 12:10 AM, Ashesh Vashi <ashesh.vashi@enterprisedb.com> wrote:
On Sat, May 12, 2018, 02:58 Joao De Almeida Perei= ra <jd= ealmeidapereira@pivotal.io> wrote:
Hello Ashesh,

1. In TreeNode, we're keepging the reference of DOMElement, = do we really need it?

A= s of right now, our=C2=A0Tree=C2= =A0abstraction acts as an adapter to the aciTree library. The aciTre= e library needs the domElement for most of its functions (setInode, unload,= etc). Thus this is the easiest way to introduce our abstraction and keep t= he functionality as before - at least until we decide that whether we want = to switch out the library or not.
I understand that. But= - I've not seen any reference of domElement the code yet, hence - poin= ted that out.=C2=A0

If you look at the function: reload, unload you will see that dom= Node is used to communicate with the ACITree

=E2=80=8B

2.=C2=A0Are you ex= pecting the tree class to be a singleton class

Since this tree is referenced throughout the codebase, con= sidering it to be a singleton seems like the most appropriate pattern for t= his usecase. It is very much the same way how we create a single instance o= f the aciTree library and use that throughout the codebase. Moreover, it op= ens up opportunities to improve performance, for example caching lockups of= nodes. I=E2=80=99m not a fan of singletons myself, but I feel like we=E2= =80=99re simply keeping the architecture the same in the instance.
Yeah - I don't see any usage of tree object from anywhere.And, we're already creating new object in browser.js (and, not utitli= zing that instance anywhere.)

You are right, we do not= need to export tree as a singleton for now. The line that exports the vari= able tree can be remove when applying the patch num= ber 2.

=E2=80=8B

I think we addressed all the concern raised about this patch. Does th= is mean that the patch is going to get committed?
Yes - from me for 0002.

Can you do that today?=C2=A0
Done.

Great, thanks!

On to patch 0003 then :-)=C2=A0
Yes - already working on it! :-)
Majority part of the 0003 patch looks good to me.
Except c= hoice of the path of some of the file, and name of the functions.

Please find the updated patch.
I've moved fil= es under the 'pgadmin/static/js/menu' directory under the 'pgad= min/static/js/tree', as they're=C2=A0using tree functionalities dir= ectly.

Please review it, and let me know your conc= ern.

-- Thanks, Ashesh

-- Thanks, Ashesh=C2=A0

--
Dave Page
Blog:= http://pgsnake.b= logspot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.com=
The Enterprise PostgreSQL Company


--00000000000060568a056c3c3094-- --00000000000060568d056c3c3096 Content-Type: application/octet-stream; name="0001-Extract-test-and-refactor-methods.patch" Content-Disposition: attachment; filename="0001-Extract-test-and-refactor-methods.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_jh7jlra70 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2NvbGxhdGlvbnMvc3RhdGljL2pzL2NvbGxhdGlvbi5qcyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Nv bGxhdGlvbnMvc3RhdGljL2pzL2NvbGxhdGlvbi5qcwppbmRleCA5MDE1ZDhkMi4uYWVmZGJlNDEg MTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2NvbGxhdGlvbnMvc3RhdGljL2pzL2NvbGxhdGlvbi5qcworKysgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9jb2xsYXRpb25zL3N0YXRpYy9qcy9jb2xsYXRpb24uanMKQEAgLTEsOCArMSw5IEBACiBkZWZp bmUoJ3BnYWRtaW4ubm9kZS5jb2xsYXRpb24nLCBbCiAgICdzb3VyY2VzL2dldHRleHQnLCAnc291 cmNlcy91cmxfZm9yJywgJ2pxdWVyeScsICd1bmRlcnNjb3JlJywKICAgJ3VuZGVyc2NvcmUuc3Ry aW5nJywgJ3NvdXJjZXMvcGdhZG1pbicsICdwZ2FkbWluLmJyb3dzZXInLAorICAnc291cmNlcy90 cmVlL25vZGVfbWVudScsCiAgICdwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbicsCi1dLCBmdW5j dGlvbihnZXR0ZXh0LCB1cmxfZm9yLCAkLCBfLCBTLCBwZ0FkbWluLCBwZ0Jyb3dzZXIpIHsKK10s IGZ1bmN0aW9uKGdldHRleHQsIHVybF9mb3IsICQsIF8sIFMsIHBnQWRtaW4sIHBnQnJvd3Nlciwg dHJlZU5vZGVNZW51KSB7CiAKICAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ2NvbGwtY29sbGF0aW9u J10pIHsKICAgICBwZ0FkbWluLkJyb3dzZXIuTm9kZXNbJ2NvbGwtY29sbGF0aW9uJ10gPQpAQCAt MjIyLDM0ICsyMjMsNyBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5jb2xsYXRpb24nLCBbCiAgICAg ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0sCiAgICAgICB9KSwKLSAgICAgIGNhbkNyZWF0 ZTogZnVuY3Rpb24oaXRlbURhdGEsIGl0ZW0sIGRhdGEpIHsKLSAgICAgICAgICAvL0lmIGNoZWNr IGlzIGZhbHNlIHRoZW4gLCB3ZSB3aWxsIGFsbG93IGNyZWF0ZSBtZW51Ci0gICAgICAgIGlmIChk YXRhICYmIGRhdGEuY2hlY2sgPT0gZmFsc2UpCi0gICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAg ICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJlZSwgaSA9IGl0ZW0sIGQgPSBpdGVtRGF0YTsKLSAg ICAgICAgICAvLyBUbyBpdGVyYXRlIG92ZXIgdHJlZSB0byBjaGVjayBwYXJlbnQgbm9kZQotICAg ICAgICB3aGlsZSAoaSkgewotICAgICAgICAgICAgLy8gSWYgaXQgaXMgc2NoZW1hIHRoZW4gYWxs b3cgdXNlciB0byBjcmVhdGUgY29sbGF0aW9uCi0gICAgICAgICAgaWYgKF8uaW5kZXhPZihbJ3Nj aGVtYSddLCBkLl90eXBlKSA+IC0xKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAg ICAgICBpZiAoJ2NvbGwtY29sbGF0aW9uJyA9PSBkLl90eXBlKSB7Ci0gICAgICAgICAgICAgIC8v Q2hlY2sgaWYgd2UgYXJlIG5vdCBjaGlsZCBvZiBjYXRhbG9nCi0gICAgICAgICAgICB2YXIgcHJl dl9pID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGwsCi0gICAgICAgICAgICAg IHByZXZfZCA9IHByZXZfaSA/IHQuaXRlbURhdGEocHJldl9pKSA6IG51bGw7Ci0gICAgICAgICAg ICBpZiggcHJldl9kLl90eXBlID09ICdjYXRhbG9nJykgewotICAgICAgICAgICAgICByZXR1cm4g ZmFsc2U7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK LSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgICAgaSA9IHQuaGFzUGFyZW50KGkp ID8gdC5wYXJlbnQoaSkgOiBudWxsOwotICAgICAgICAgIGQgPSBpID8gdC5pdGVtRGF0YShpKSA6 IG51bGw7Ci0gICAgICAgIH0KLSAgICAgICAgICAvLyBieSBkZWZhdWx0IHdlIGRvIG5vdCB3YW50 IHRvIGFsbG93IGNyZWF0ZSBtZW51Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfSwKKyAg ICAgIGNhbkNyZWF0ZTogdHJlZU5vZGVNZW51LmNhbkNyZWF0ZShwZ0Jyb3dzZXIsICdjb2xsLWNv bGxhdGlvbicpLAogICAgIH0pOwogCiAgIH0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvc3RhdGlj L2pzL2RvbWFpbi5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvc3RhdGljL2pzL2RvbWFpbi5qcwppbmRleCA0MDNj YTQ3MS4uZWM2YWRiNmMgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvc3RhdGljL2pzL2RvbWFpbi5q cworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9kb21haW5zL3N0YXRpYy9qcy9kb21haW4uanMKQEAgLTIsOSArMiwxMSBAQAog ZGVmaW5lKCdwZ2FkbWluLm5vZGUuZG9tYWluJywgWwogICAnc291cmNlcy9nZXR0ZXh0JywgJ3Nv dXJjZXMvdXJsX2ZvcicsICdqcXVlcnknLCAndW5kZXJzY29yZScsICdiYWNrYm9uZScsCiAgICdz b3VyY2VzL3BnYWRtaW4nLCAncGdhZG1pbi5icm93c2VyJywgJ3BnYWRtaW4uYmFja2Zvcm0nLCAn cGdhZG1pbi5iYWNrZ3JpZCcsCisgICdzb3VyY2VzL3RyZWUvbm9kZV9tZW51JywKICAgJ3BnYWRt aW4uYnJvd3Nlci5jb2xsZWN0aW9uJywKIF0sIGZ1bmN0aW9uKAotICBnZXR0ZXh0LCB1cmxfZm9y LCAkLCBfLCBCYWNrYm9uZSwgcGdBZG1pbiwgcGdCcm93c2VyLCBCYWNrZm9ybSwgQmFja2dyaWQK KyAgZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgQmFja2JvbmUsIHBnQWRtaW4sIHBnQnJvd3Nlciwg QmFja2Zvcm0sIEJhY2tncmlkLAorICB0cmVlTm9kZU1lbnUKICkgewogCiAgIC8vIERlZmluZSBE b21haW4gQ29sbGVjdGlvbiBOb2RlCkBAIC0yOTYsMzQgKzI5OCw3IEBAIGRlZmluZSgncGdhZG1p bi5ub2RlLmRvbWFpbicsIFsKICAgICAgICAgICByZXR1cm4gZXJybXNnOwogICAgICAgICB9LAog ICAgICAgfSksCi0gICAgICBjYW5DcmVhdGU6IGZ1bmN0aW9uKGl0ZW1EYXRhLCBpdGVtLCBkYXRh KSB7Ci0gICAgICAgIC8vSWYgY2hlY2sgaXMgZmFsc2UgdGhlbiAsIHdlIHdpbGwgYWxsb3cgY3Jl YXRlIG1lbnUKLSAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS5jaGVjayA9PSBmYWxzZSkKLSAgICAg ICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICB2YXIgdCA9IHBnQnJvd3Nlci50cmVlLCBpID0g aXRlbSwgZCA9IGl0ZW1EYXRhOwotICAgICAgICAvLyBUbyBpdGVyYXRlIG92ZXIgdHJlZSB0byBj aGVjayBwYXJlbnQgbm9kZQotICAgICAgICB3aGlsZSAoaSkgewotICAgICAgICAgIC8vIElmIGl0 IGlzIHNjaGVtYSB0aGVuIGFsbG93IHVzZXIgdG8gY3JlYXRlIGRvbWFpbgotICAgICAgICAgIGlm IChfLmluZGV4T2YoWydzY2hlbWEnXSwgZC5fdHlwZSkgPiAtMSkKLSAgICAgICAgICAgIHJldHVy biB0cnVlOwotCi0gICAgICAgICAgaWYgKCdjb2xsLWRvbWFpbicgPT0gZC5fdHlwZSkgewotICAg ICAgICAgICAgLy9DaGVjayBpZiB3ZSBhcmUgbm90IGNoaWxkIG9mIGNhdGFsb2cKLSAgICAgICAg ICAgIHZhciBwcmV2X2kgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbCwKLSAg ICAgICAgICAgICAgcHJldl9kID0gcHJldl9pID8gdC5pdGVtRGF0YShwcmV2X2kpIDogbnVsbDsK LSAgICAgICAgICAgIGlmKCBwcmV2X2QuX3R5cGUgPT0gJ2NhdGFsb2cnKSB7Ci0gICAgICAgICAg ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgIHJl dHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICBpID0gdC5o YXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7Ci0gICAgICAgICAgZCA9IGkgPyB0Lml0 ZW1EYXRhKGkpIDogbnVsbDsKLSAgICAgICAgfQotICAgICAgICAvLyBieSBkZWZhdWx0IHdlIGRv IG5vdCB3YW50IHRvIGFsbG93IGNyZWF0ZSBtZW51Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAg ICAgfSwKKyAgICAgIGNhbkNyZWF0ZTogdHJlZU5vZGVNZW51LmNhbkNyZWF0ZShwZ0Jyb3dzZXIs ICdjb2xsLWRvbWFpbicpLAogICAgICAgaXNEaXNhYmxlZDogZnVuY3Rpb24obSl7CiAgICAgICAg IGlmICghbS5pc05ldygpKSB7CiAgICAgICAgICAgdmFyIHNlcnZlciA9IHRoaXMubm9kZV9pbmZv LnNlcnZlcjsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3N0YXRpYy9qcy9mb3JlaWdu X3RhYmxlLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvc3RhdGljL2pzL2ZvcmVpZ25fdGFibGUuanMK aW5kZXggMTYwZGI4M2YuLjRhODg3NmNmIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy9z dGF0aWMvanMvZm9yZWlnbl90YWJsZS5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy9zdGF0aWMv anMvZm9yZWlnbl90YWJsZS5qcwpAQCAtMiw5ICsyLDExIEBACiBkZWZpbmUoJ3BnYWRtaW4ubm9k ZS5mb3JlaWduX3RhYmxlJywgWwogICAnc291cmNlcy9nZXR0ZXh0JywgJ3NvdXJjZXMvdXJsX2Zv cicsICdqcXVlcnknLCAndW5kZXJzY29yZScsICdiYWNrYm9uZScsCiAgICdzb3VyY2VzL3BnYWRt aW4nLCAncGdhZG1pbi5icm93c2VyJywgJ3BnYWRtaW4uYmFja2Zvcm0nLCAncGdhZG1pbi5iYWNr Z3JpZCcsCisgICdzb3VyY2VzL3RyZWUvbm9kZV9tZW51JywKICAgJ3BnYWRtaW4uYnJvd3Nlci5j b2xsZWN0aW9uJywKIF0sIGZ1bmN0aW9uKAotICBnZXR0ZXh0LCB1cmxfZm9yLCAkLCBfLCBCYWNr Ym9uZSwgcGdBZG1pbiwgcGdCcm93c2VyLCBCYWNrZm9ybSwgQmFja2dyaWQKKyAgZ2V0dGV4dCwg dXJsX2ZvciwgJCwgXywgQmFja2JvbmUsIHBnQWRtaW4sIHBnQnJvd3NlciwgQmFja2Zvcm0sIEJh Y2tncmlkLAorICB0cmVlTm9kZU1lbnUKICkgewogCiAgIGlmICghcGdCcm93c2VyLk5vZGVzWydj b2xsLWZvcmVpZ25fdGFibGUnXSkgewpAQCAtNjU5LDM0ICs2NjEsNyBAQCBkZWZpbmUoJ3BnYWRt aW4ubm9kZS5mb3JlaWduX3RhYmxlJywgWwogICAgICAgICAgIHJldHVybiBlcnJtc2c7CiAgICAg ICAgIH0sCiAgICAgICB9KSwKLSAgICAgIGNhbkNyZWF0ZTogZnVuY3Rpb24oaXRlbURhdGEsIGl0 ZW0sIGRhdGEpIHsKLSAgICAgICAgLy9JZiBjaGVjayBpcyBmYWxzZSB0aGVuICwgd2Ugd2lsbCBh bGxvdyBjcmVhdGUgbWVudQotICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmNoZWNrID09IGZhbHNl KQotICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRy ZWUsIGkgPSBpdGVtLCBkID0gaXRlbURhdGE7Ci0gICAgICAgIC8vIFRvIGl0ZXJhdGUgb3ZlciB0 cmVlIHRvIGNoZWNrIHBhcmVudCBub2RlCi0gICAgICAgIHdoaWxlIChpKSB7Ci0gICAgICAgICAg Ly8gSWYgaXQgaXMgc2NoZW1hIHRoZW4gYWxsb3cgdXNlciB0byBjcmVhdGUgZm9yZWlnbiB0YWJs ZQotICAgICAgICAgIGlmIChfLmluZGV4T2YoWydzY2hlbWEnXSwgZC5fdHlwZSkgPiAtMSkKLSAg ICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgICAgaWYgKCdjb2xsLWZvcmVpZ25fdGFi bGUnID09IGQuX3R5cGUpIHsKLSAgICAgICAgICAgIC8vQ2hlY2sgaWYgd2UgYXJlIG5vdCBjaGls ZCBvZiBjYXRhbG9nCi0gICAgICAgICAgICB2YXIgcHJldl9pID0gdC5oYXNQYXJlbnQoaSkgPyB0 LnBhcmVudChpKSA6IG51bGwsCi0gICAgICAgICAgICAgIHByZXZfZCA9IHByZXZfaSA/IHQuaXRl bURhdGEocHJldl9pKSA6IG51bGw7Ci0gICAgICAgICAgICBpZiggcHJldl9kLl90eXBlID09ICdj YXRhbG9nJykgewotICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9IGVs c2UgewotICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg ICB9Ci0gICAgICAgICAgaSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkgOiBudWxsOwot ICAgICAgICAgIGQgPSBpID8gdC5pdGVtRGF0YShpKSA6IG51bGw7Ci0gICAgICAgIH0KLSAgICAg ICAgLy8gYnkgZGVmYXVsdCB3ZSBkbyBub3Qgd2FudCB0byBhbGxvdyBjcmVhdGUgbWVudQotICAg ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0sCisgICAgICBjYW5DcmVhdGU6IHRyZWVOb2RlTWVu dS5jYW5DcmVhdGUocGdCcm93c2VyLCAnY29sbC1mb3JlaWduX3RhYmxlJyksCiAgICAgfSk7CiAK ICAgfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX2NvbmZpZ3VyYXRpb25zL3N0YXRpYy9qcy9mdHNfY29u ZmlndXJhdGlvbi5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19jb25maWd1cmF0aW9ucy9zdGF0aWMvanMvZnRzX2NvbmZp Z3VyYXRpb24uanMKaW5kZXggODk4MDY2ODEuLjA2ZWRjNzA1IDEwMDY0NAotLS0gYS93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNf Y29uZmlndXJhdGlvbnMvc3RhdGljL2pzL2Z0c19jb25maWd1cmF0aW9uLmpzCisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0 c19jb25maWd1cmF0aW9ucy9zdGF0aWMvanMvZnRzX2NvbmZpZ3VyYXRpb24uanMKQEAgLTEsOSAr MSwxMSBAQAogZGVmaW5lKCdwZ2FkbWluLm5vZGUuZnRzX2NvbmZpZ3VyYXRpb24nLCBbCiAgICdz b3VyY2VzL2dldHRleHQnLCAnc291cmNlcy91cmxfZm9yJywgJ2pxdWVyeScsICd1bmRlcnNjb3Jl JywgJ2JhY2tib25lJywKICAgJ3NvdXJjZXMvcGdhZG1pbicsICdwZ2FkbWluLmJyb3dzZXInLCAn cGdhZG1pbi5iYWNrZm9ybScsICdwZ2FkbWluLmJhY2tncmlkJywKKyAgJ3NvdXJjZXMvdHJlZS9u b2RlX21lbnUnLAogICAncGdhZG1pbi5icm93c2VyLmNvbGxlY3Rpb24nLAogXSwgZnVuY3Rpb24o Ci0gIGdldHRleHQsIHVybF9mb3IsICQsIF8sIEJhY2tib25lLCBwZ0FkbWluLCBwZ0Jyb3dzZXIs IEJhY2tmb3JtLCBCYWNrZ3JpZAorICBnZXR0ZXh0LCB1cmxfZm9yLCAkLCBfLCBCYWNrYm9uZSwg cGdBZG1pbiwgcGdCcm93c2VyLCBCYWNrZm9ybSwgQmFja2dyaWQsCisgIHRyZWVOb2RlTWVudQog KSB7CiAKICAgLy8gTW9kZWwgZm9yIHRva2VucyBjb250cm9sCkBAIC01NzcsMzQgKzU3OSw3IEBA IGRlZmluZSgncGdhZG1pbi5ub2RlLmZ0c19jb25maWd1cmF0aW9uJywgWwogICAgICAgICAgIHJl dHVybiBudWxsOwogICAgICAgICB9LAogICAgICAgfSksCi0gICAgICBjYW5DcmVhdGU6IGZ1bmN0 aW9uKGl0ZW1EYXRhLCBpdGVtLCBkYXRhKSB7Ci0gICAgICAgIC8vSWYgY2hlY2sgaXMgZmFsc2Ug dGhlbiAsIHdlIHdpbGwgYWxsb3cgY3JlYXRlIG1lbnUKLSAgICAgICAgaWYgKGRhdGEgJiYgZGF0 YS5jaGVjayA9PSBmYWxzZSkKLSAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICB2YXIg dCA9IHBnQnJvd3Nlci50cmVlLCBpID0gaXRlbSwgZCA9IGl0ZW1EYXRhOwotICAgICAgICAvLyBU byBpdGVyYXRlIG92ZXIgdHJlZSB0byBjaGVjayBwYXJlbnQgbm9kZQotICAgICAgICB3aGlsZSAo aSkgewotICAgICAgICAgIC8vIElmIGl0IGlzIHNjaGVtYSB0aGVuIGFsbG93IHVzZXIgdG8gY3Jl YXRlIGZ0cyBjb25maWd1cmF0aW9uCi0gICAgICAgICAgaWYgKF8uaW5kZXhPZihbJ3NjaGVtYSdd LCBkLl90eXBlKSA+IC0xKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgICBp ZiAoJ2NvbGwtZnRzX2NvbmZpZ3VyYXRpb24nID09IGQuX3R5cGUpIHsKLSAgICAgICAgICAgIC8v Q2hlY2sgaWYgd2UgYXJlIG5vdCBjaGlsZCBvZiBjYXRhbG9nCi0gICAgICAgICAgICB2YXIgcHJl dl9pID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGwsCi0gICAgICAgICAgICAg IHByZXZfZCA9IHByZXZfaSA/IHQuaXRlbURhdGEocHJldl9pKSA6IG51bGw7Ci0gICAgICAgICAg ICBpZiggcHJldl9kLl90eXBlID09ICdjYXRhbG9nJykgewotICAgICAgICAgICAgICByZXR1cm4g ZmFsc2U7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK LSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgICAgaSA9IHQuaGFzUGFyZW50KGkp ID8gdC5wYXJlbnQoaSkgOiBudWxsOwotICAgICAgICAgIGQgPSBpID8gdC5pdGVtRGF0YShpKSA6 IG51bGw7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gYnkgZGVmYXVsdCB3ZSBkbyBub3Qgd2FudCB0 byBhbGxvdyBjcmVhdGUgbWVudQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0sCisgICAg ICBjYW5DcmVhdGU6IHRyZWVOb2RlTWVudS5jYW5DcmVhdGUocGdCcm93c2VyLCAnY29sbC1mdHNf Y29uZmlndXJhdGlvbicpLAogICAgIH0pOwogICB9CiAKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19kaWN0 aW9uYXJpZXMvc3RhdGljL2pzL2Z0c19kaWN0aW9uYXJ5LmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX2RpY3Rpb25hcmll cy9zdGF0aWMvanMvZnRzX2RpY3Rpb25hcnkuanMKaW5kZXggZWQ4M2ZlYjEuLjI4NzliMmJlIDEw MDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy9mdHNfZGljdGlvbmFyaWVzL3N0YXRpYy9qcy9mdHNfZGljdGlvbmFyeS5q cworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9mdHNfZGljdGlvbmFyaWVzL3N0YXRpYy9qcy9mdHNfZGljdGlvbmFyeS5qcwpA QCAtMSw4ICsxLDEwIEBACiBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5mdHNfZGljdGlvbmFyeScsIFsK ICAgJ3NvdXJjZXMvZ2V0dGV4dCcsICdzb3VyY2VzL3VybF9mb3InLCAnanF1ZXJ5JywgJ3VuZGVy c2NvcmUnLAogICAndW5kZXJzY29yZS5zdHJpbmcnLCAnc291cmNlcy9wZ2FkbWluJywgJ3BnYWRt aW4uYnJvd3NlcicsICdwZ2FkbWluLmJhY2tmb3JtJywKKyAgJ3NvdXJjZXMvdHJlZS9ub2RlX21l bnUnLAogICAncGdhZG1pbi5icm93c2VyLmNvbGxlY3Rpb24nLAotXSwgZnVuY3Rpb24oZ2V0dGV4 dCwgdXJsX2ZvciwgJCwgXywgUywgcGdBZG1pbiwgcGdCcm93c2VyLCBCYWNrZm9ybSkgeworXSwg ZnVuY3Rpb24oZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgUywgcGdBZG1pbiwgcGdCcm93c2VyLCBC YWNrZm9ybSwKKyAgdHJlZU5vZGVNZW51KSB7CiAKICAgLy8gRXh0ZW5kIHRoZSBicm93c2VyJ3Mg bm9kZSBtb2RlbCBjbGFzcyB0byBjcmVhdGUgYSBvcHRpb24vdmFsdWUgcGFpcgogICB2YXIgT3B0 aW9uTGFiZWxNb2RlbCA9IHBnQWRtaW4uQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7CkBAIC0x ODYsMzQgKzE4OCw3IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLmZ0c19kaWN0aW9uYXJ5JywgWwog ICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICB9LAogICAgICAgfSksCi0gICAgICBjYW5D cmVhdGU6IGZ1bmN0aW9uKGl0ZW1EYXRhLCBpdGVtLCBkYXRhKSB7Ci0gICAgICAgIC8vSWYgY2hl Y2sgaXMgZmFsc2UgdGhlbiAsIHdlIHdpbGwgYWxsb3cgY3JlYXRlIG1lbnUKLSAgICAgICAgaWYg KGRhdGEgJiYgZGF0YS5jaGVjayA9PSBmYWxzZSkKLSAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQot ICAgICAgICB2YXIgdCA9IHBnQnJvd3Nlci50cmVlLCBpID0gaXRlbSwgZCA9IGl0ZW1EYXRhOwot ICAgICAgICAvLyBUbyBpdGVyYXRlIG92ZXIgdHJlZSB0byBjaGVjayBwYXJlbnQgbm9kZQotICAg ICAgICB3aGlsZSAoaSkgewotICAgICAgICAgIC8vIElmIGl0IGlzIHNjaGVtYSB0aGVuIGFsbG93 IHVzZXIgdG8gY3JlYXRlIGZ0cyBkaWN0aW9uYXJ5Ci0gICAgICAgICAgaWYgKF8uaW5kZXhPZihb J3NjaGVtYSddLCBkLl90eXBlKSA+IC0xKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAg ICAgICAgICBpZiAoJ2NvbGwtZnRzX2RpY3Rpb25hcnknID09IGQuX3R5cGUpIHsKLSAgICAgICAg ICAgIC8vQ2hlY2sgaWYgd2UgYXJlIG5vdCBjaGlsZCBvZiBjYXRhbG9nCi0gICAgICAgICAgICB2 YXIgcHJldl9pID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGwsCi0gICAgICAg ICAgICAgIHByZXZfZCA9IHByZXZfaSA/IHQuaXRlbURhdGEocHJldl9pKSA6IG51bGw7Ci0gICAg ICAgICAgICBpZiggcHJldl9kLl90eXBlID09ICdjYXRhbG9nJykgewotICAgICAgICAgICAgICBy ZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICByZXR1cm4g dHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgICAgaSA9IHQuaGFzUGFy ZW50KGkpID8gdC5wYXJlbnQoaSkgOiBudWxsOwotICAgICAgICAgIGQgPSBpID8gdC5pdGVtRGF0 YShpKSA6IG51bGw7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gYnkgZGVmYXVsdCB3ZSBkbyBub3Qg d2FudCB0byBhbGxvdyBjcmVhdGUgbWVudQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0s CisgICAgICBjYW5DcmVhdGU6IHRyZWVOb2RlTWVudS5jYW5DcmVhdGUocGdCcm93c2VyLCAnY29s bC1mdHNfZGljdGlvbmFyeScpLAogICAgIH0pOwogICB9CiAKZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19w YXJzZXIvc3RhdGljL2pzL2Z0c19wYXJzZXIuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfcGFyc2VyL3N0YXRpYy9qcy9m dHNfcGFyc2VyLmpzCmluZGV4IDkyYzA3ODZlLi5hYmFjZGJjNyAxMDA2NDQKLS0tIGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRz X3BhcnNlci9zdGF0aWMvanMvZnRzX3BhcnNlci5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfcGFyc2VyL3N0YXRp Yy9qcy9mdHNfcGFyc2VyLmpzCkBAIC0xLDcgKzEsOSBAQAogZGVmaW5lKCdwZ2FkbWluLm5vZGUu ZnRzX3BhcnNlcicsIFsKICAgJ3NvdXJjZXMvZ2V0dGV4dCcsICdzb3VyY2VzL3VybF9mb3InLCAn anF1ZXJ5JywgJ3VuZGVyc2NvcmUnLAotICAnc291cmNlcy9wZ2FkbWluJywgJ3BnYWRtaW4uYnJv d3NlcicsICdwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbicsCi1dLCBmdW5jdGlvbihnZXR0ZXh0 LCB1cmxfZm9yLCAkLCBfLCBwZ0FkbWluLCBwZ0Jyb3dzZXIpIHsKKyAgJ3NvdXJjZXMvcGdhZG1p bicsICdwZ2FkbWluLmJyb3dzZXInLAorICAnc291cmNlcy90cmVlL25vZGVfbWVudScsCisgICdw Z2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbicsCitdLCBmdW5jdGlvbihnZXR0ZXh0LCB1cmxfZm9y LCAkLCBfLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIHRyZWVOb2RlTWVudSkgewogCiAgIC8vIEV4dGVu ZCB0aGUgY29sbGVjdGlvbiBjbGFzcyBmb3IgZnRzIHBhcnNlcgogICBpZiAoIXBnQnJvd3Nlci5O b2Rlc1snY29sbC1mdHNfcGFyc2VyJ10pIHsKQEAgLTE5OSwzNCArMjAxLDcgQEAgZGVmaW5lKCdw Z2FkbWluLm5vZGUuZnRzX3BhcnNlcicsIFsKICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAg ICAgfSwKICAgICAgIH0pLAotICAgICAgY2FuQ3JlYXRlOiBmdW5jdGlvbihpdGVtRGF0YSwgaXRl bSwgZGF0YSkgewotICAgICAgICAvL0lmIGNoZWNrIGlzIGZhbHNlIHRoZW4gLCB3ZSB3aWxsIGFs bG93IGNyZWF0ZSBtZW51Ci0gICAgICAgIGlmIChkYXRhICYmIGRhdGEuY2hlY2sgPT0gZmFsc2Up Ci0gICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJl ZSwgaSA9IGl0ZW0sIGQgPSBpdGVtRGF0YTsKLSAgICAgICAgLy8gVG8gaXRlcmF0ZSBvdmVyIHRy ZWUgdG8gY2hlY2sgcGFyZW50IG5vZGUKLSAgICAgICAgd2hpbGUgKGkpIHsKLSAgICAgICAgICAv LyBJZiBpdCBpcyBzY2hlbWEgdGhlbiBhbGxvdyB1c2VyIHRvIGNyZWF0ZSBmdHMgcGFyc2VyCi0g ICAgICAgICAgaWYgKF8uaW5kZXhPZihbJ3NjaGVtYSddLCBkLl90eXBlKSA+IC0xKQotICAgICAg ICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgICBpZiAoJ2NvbGwtZnRzX3BhcnNlcicgPT0g ZC5fdHlwZSkgewotICAgICAgICAgICAgLy9DaGVjayBpZiB3ZSBhcmUgbm90IGNoaWxkIG9mIGNh dGFsb2cKLSAgICAgICAgICAgIHZhciBwcmV2X2kgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50 KGkpIDogbnVsbCwKLSAgICAgICAgICAgICAgcHJldl9kID0gcHJldl9pID8gdC5pdGVtRGF0YShw cmV2X2kpIDogbnVsbDsKLSAgICAgICAgICAgIGlmKCBwcmV2X2QuX3R5cGUgPT0gJ2NhdGFsb2cn KSB7Ci0gICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0g ICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAg ICAgICAgICBpID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7Ci0gICAgICAg ICAgZCA9IGkgPyB0Lml0ZW1EYXRhKGkpIDogbnVsbDsKLSAgICAgICAgfQotICAgICAgICAvLyBi eSBkZWZhdWx0IHdlIGRvIG5vdCB3YW50IHRvIGFsbG93IGNyZWF0ZSBtZW51Ci0gICAgICAgIHJl dHVybiB0cnVlOwotICAgICAgfSwKKyAgICAgIGNhbkNyZWF0ZTogdHJlZU5vZGVNZW51LmNhbkNy ZWF0ZShwZ0Jyb3dzZXIsICdjb2xsLWZ0c19wYXJzZXInKSwKICAgICB9KTsKICAgfQogCmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9mdHNfdGVtcGxhdGVzL3N0YXRpYy9qcy9mdHNfdGVtcGxhdGUuanMgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9m dHNfdGVtcGxhdGVzL3N0YXRpYy9qcy9mdHNfdGVtcGxhdGUuanMKaW5kZXggNjA2YTU3YTYuLjY2 ZDUxYzk4IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfdGVtcGxhdGVzL3N0YXRpYy9qcy9mdHNfdGVtcGxh dGUuanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvZnRzX3RlbXBsYXRlcy9zdGF0aWMvanMvZnRzX3RlbXBsYXRlLmpzCkBA IC0xLDcgKzEsOSBAQAogZGVmaW5lKCdwZ2FkbWluLm5vZGUuZnRzX3RlbXBsYXRlJywgWwogICAn c291cmNlcy9nZXR0ZXh0JywgJ3NvdXJjZXMvdXJsX2ZvcicsICdqcXVlcnknLCAndW5kZXJzY29y ZScsCi0gICdzb3VyY2VzL3BnYWRtaW4nLCAncGdhZG1pbi5icm93c2VyJywgJ3BnYWRtaW4uYnJv d3Nlci5jb2xsZWN0aW9uJywKLV0sIGZ1bmN0aW9uKGdldHRleHQsIHVybF9mb3IsICQsIF8sIHBn QWRtaW4sIHBnQnJvd3NlcikgeworICAnc291cmNlcy9wZ2FkbWluJywgJ3BnYWRtaW4uYnJvd3Nl cicsCisgICdzb3VyY2VzL3RyZWUvbm9kZV9tZW51JywKKyAgJ3BnYWRtaW4uYnJvd3Nlci5jb2xs ZWN0aW9uJywKK10sIGZ1bmN0aW9uKGdldHRleHQsIHVybF9mb3IsICQsIF8sIHBnQWRtaW4sIHBn QnJvd3NlciwgdHJlZU5vZGVNZW51KSB7CiAKICAgLy8gRXh0ZW5kIHRoZSBjb2xsZWN0aW9uIGNs YXNzIGZvciBmdHMgdGVtcGxhdGUKICAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ2NvbGwtZnRzX3Rl bXBsYXRlJ10pIHsKQEAgLTEzOSwzNCArMTQxLDcgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuZnRz X3RlbXBsYXRlJywgWwogICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICB9LAogICAgICAg fSksCi0gICAgICBjYW5DcmVhdGU6IGZ1bmN0aW9uKGl0ZW1EYXRhLCBpdGVtLCBkYXRhKSB7Ci0g ICAgICAgIC8vSWYgY2hlY2sgaXMgZmFsc2UgdGhlbiAsIHdlIHdpbGwgYWxsb3cgY3JlYXRlIG1l bnUKLSAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS5jaGVjayA9PSBmYWxzZSkKLSAgICAgICAgICBy ZXR1cm4gdHJ1ZTsKLQotICAgICAgICB2YXIgdCA9IHBnQnJvd3Nlci50cmVlLCBpID0gaXRlbSwg ZCA9IGl0ZW1EYXRhOwotICAgICAgICAvLyBUbyBpdGVyYXRlIG92ZXIgdHJlZSB0byBjaGVjayBw YXJlbnQgbm9kZQotICAgICAgICB3aGlsZSAoaSkgewotICAgICAgICAgIC8vIElmIGl0IGlzIHNj aGVtYSB0aGVuIGFsbG93IHVzZXIgdG8gY3JlYXRlIGZ0cyBmdHNfdGVtcGxhdGUKLSAgICAgICAg ICBpZiAoXy5pbmRleE9mKFsnc2NoZW1hJ10sIGQuX3R5cGUpID4gLTEpCi0gICAgICAgICAgICBy ZXR1cm4gdHJ1ZTsKLQotICAgICAgICAgIGlmICgnY29sbC1mdHNfdGVtcGxhdGUnID09IGQuX3R5 cGUpIHsKLSAgICAgICAgICAgIC8vQ2hlY2sgaWYgd2UgYXJlIG5vdCBjaGlsZCBvZiBjYXRhbG9n Ci0gICAgICAgICAgICB2YXIgcHJldl9pID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6 IG51bGwsCi0gICAgICAgICAgICAgIHByZXZfZCA9IHByZXZfaSA/IHQuaXRlbURhdGEocHJldl9p KSA6IG51bGw7Ci0gICAgICAgICAgICBpZiggcHJldl9kLl90eXBlID09ICdjYXRhbG9nJykgewot ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAg ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAg ICAgaSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkgOiBudWxsOwotICAgICAgICAgIGQg PSBpID8gdC5pdGVtRGF0YShpKSA6IG51bGw7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gYnkgZGVm YXVsdCB3ZSBkbyBub3Qgd2FudCB0byBhbGxvdyBjcmVhdGUgbWVudQotICAgICAgICByZXR1cm4g dHJ1ZTsKLSAgICAgIH0sCisgICAgICBjYW5DcmVhdGU6IHRyZWVOb2RlTWVudS5jYW5DcmVhdGUo cGdCcm93c2VyLCAnY29sbC1mdHNfdGVtcGxhdGUnKSwKICAgICB9KTsKICAgfQogCmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy9mdW5jdGlvbnMvc3RhdGljL2pzL2Z1bmN0aW9uLmpzIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3N0 YXRpYy9qcy9mdW5jdGlvbi5qcwppbmRleCA2ZTQwNTE2NS4uYWYwYTFmOWYgMTAwNjQ0Ci0tLSBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL2Z1bmN0aW9ucy9zdGF0aWMvanMvZnVuY3Rpb24uanMKKysrIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3N0 YXRpYy9qcy9mdW5jdGlvbi5qcwpAQCAtMiw4ICsyLDEwIEBACiBkZWZpbmUoJ3BnYWRtaW4ubm9k ZS5mdW5jdGlvbicsIFsKICAgJ3NvdXJjZXMvZ2V0dGV4dCcsICdzb3VyY2VzL3VybF9mb3InLCAn anF1ZXJ5JywgJ3VuZGVyc2NvcmUnLCAnYmFja2JvbmUnLAogICAnc291cmNlcy9wZ2FkbWluJywg J3BnYWRtaW4uYnJvd3NlcicsICdwZ2FkbWluLmJhY2tmb3JtJywKKyAgJ3NvdXJjZXMvdHJlZS9u b2RlX21lbnUnLAogICAncGdhZG1pbi5icm93c2VyLmNvbGxlY3Rpb24nLCAncGdhZG1pbi5icm93 c2VyLnNlcnZlci5wcml2aWxlZ2UnLAotXSwgZnVuY3Rpb24oZ2V0dGV4dCwgdXJsX2ZvciwgJCwg XywgQmFja2JvbmUsIHBnQWRtaW4sIHBnQnJvd3NlciwgQmFja2Zvcm0pIHsKK10sIGZ1bmN0aW9u KGdldHRleHQsIHVybF9mb3IsICQsIF8sIEJhY2tib25lLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIEJh Y2tmb3JtLAorICAgdHJlZU5vZGVNZW51KSB7CiAKICAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ2Nv bGwtZnVuY3Rpb24nXSkgewogICAgIHBnQnJvd3Nlci5Ob2Rlc1snY29sbC1mdW5jdGlvbiddID0K QEAgLTQzOCwzNCArNDQwLDcgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuZnVuY3Rpb24nLCBbCiAg ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0sCiAgICAgICB9KSwKLSAgICAgIGNhbkNy ZWF0ZTogZnVuY3Rpb24oaXRlbURhdGEsIGl0ZW0sIGRhdGEpIHsKLSAgICAgICAgLy9JZiBjaGVj ayBpcyBmYWxzZSB0aGVuICwgd2Ugd2lsbCBhbGxvdyBjcmVhdGUgbWVudQotICAgICAgICBpZiAo ZGF0YSAmJiBkYXRhLmNoZWNrID09IGZhbHNlKQotICAgICAgICAgIHJldHVybiB0cnVlOwotCi0g ICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRyZWUsIGkgPSBpdGVtLCBkID0gaXRlbURhdGE7Ci0g ICAgICAgIC8vIFRvIGl0ZXJhdGUgb3ZlciB0cmVlIHRvIGNoZWNrIHBhcmVudCBub2RlCi0gICAg ICAgIHdoaWxlIChpKSB7Ci0gICAgICAgICAgLy8gSWYgaXQgaXMgc2NoZW1hIHRoZW4gYWxsb3cg dXNlciB0byBjcmVhdGUgRnVuY3Rpb24KLSAgICAgICAgICBpZiAoXy5pbmRleE9mKFsnc2NoZW1h J10sIGQuX3R5cGUpID4gLTEpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICAg IGlmICgnY29sbC1mdW5jdGlvbicgPT0gZC5fdHlwZSkgewotICAgICAgICAgICAgLy9DaGVjayBp ZiB3ZSBhcmUgbm90IGNoaWxkIG9mIGNhdGFsb2cKLSAgICAgICAgICAgIHZhciBwcmV2X2kgPSB0 Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbCwKLSAgICAgICAgICAgICAgcHJldl9k ID0gcHJldl9pID8gdC5pdGVtRGF0YShwcmV2X2kpIDogbnVsbDsKLSAgICAgICAgICAgIGlmKCBw cmV2X2QuX3R5cGUgPT0gJ2NhdGFsb2cnKSB7Ci0gICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK LSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg ICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICBpID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBh cmVudChpKSA6IG51bGw7Ci0gICAgICAgICAgZCA9IGkgPyB0Lml0ZW1EYXRhKGkpIDogbnVsbDsK LSAgICAgICAgfQotICAgICAgICAvLyBieSBkZWZhdWx0IHdlIGRvIG5vdCB3YW50IHRvIGFsbG93 IGNyZWF0ZSBtZW51Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfSwKKyAgICAgIGNhbkNy ZWF0ZTogdHJlZU5vZGVNZW51LmNhbkNyZWF0ZShwZ0Jyb3dzZXIsICdjb2xsLWZ1bmN0aW9uJyks CiAgICAgfSk7CiAKICAgfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3N0YXRpYy9qcy90cmln Z2VyX2Z1bmN0aW9uLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3N0YXRpYy9qcy90cmlnZ2VyX2Z1bmN0aW9u LmpzCmluZGV4IGFlYjgyNzFiLi5jYTU1MmExYyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3N0 YXRpYy9qcy90cmlnZ2VyX2Z1bmN0aW9uLmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy9zdGF0aWMvanMv dHJpZ2dlcl9mdW5jdGlvbi5qcwpAQCAtMiw4ICsyLDEwIEBACiBkZWZpbmUoJ3BnYWRtaW4ubm9k ZS50cmlnZ2VyX2Z1bmN0aW9uJywgWwogICAnc291cmNlcy9nZXR0ZXh0JywgJ3NvdXJjZXMvdXJs X2ZvcicsICdqcXVlcnknLCAndW5kZXJzY29yZScsCiAgICdzb3VyY2VzL3BnYWRtaW4nLCAncGdh ZG1pbi5icm93c2VyJywgJ3BnYWRtaW4uYmFja2Zvcm0nLAorICAnc291cmNlcy90cmVlL25vZGVf bWVudScsCiAgICdwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbicsICdwZ2FkbWluLmJyb3dzZXIu c2VydmVyLnByaXZpbGVnZScsCi1dLCBmdW5jdGlvbihnZXR0ZXh0LCB1cmxfZm9yLCAkLCBfLCBw Z0FkbWluLCBwZ0Jyb3dzZXIsIEJhY2tmb3JtKSB7CitdLCBmdW5jdGlvbihnZXR0ZXh0LCB1cmxf Zm9yLCAkLCBfLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIEJhY2tmb3JtLAorICAgdHJlZU5vZGVNZW51 KSB7CiAKICAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ2NvbGwtdHJpZ2dlcl9mdW5jdGlvbiddKSB7 CiAgICAgcGdCcm93c2VyLk5vZGVzWydjb2xsLXRyaWdnZXJfZnVuY3Rpb24nXSA9CkBAIC0zNTcs MzQgKzM1OSw3IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLnRyaWdnZXJfZnVuY3Rpb24nLCBbCiAg ICAgICAgICAgcmV0dXJuICEodGhpcy5ub2RlX2luZm8gJiYgICdjYXRhbG9nJyBpbiB0aGlzLm5v ZGVfaW5mbyk7CiAgICAgICAgIH0sCiAgICAgICB9KSwKLSAgICAgIGNhbkNyZWF0ZTogZnVuY3Rp b24oaXRlbURhdGEsIGl0ZW0sIGRhdGEpIHsKLSAgICAgICAgLy9JZiBjaGVjayBpcyBmYWxzZSB0 aGVuICwgd2Ugd2lsbCBhbGxvdyBjcmVhdGUgbWVudQotICAgICAgICBpZiAoZGF0YSAmJiBkYXRh LmNoZWNrID09IGZhbHNlKQotICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIHZhciB0 ID0gcGdCcm93c2VyLnRyZWUsIGkgPSBpdGVtLCBkID0gaXRlbURhdGE7Ci0gICAgICAgIC8vIFRv IGl0ZXJhdGUgb3ZlciB0cmVlIHRvIGNoZWNrIHBhcmVudCBub2RlCi0gICAgICAgIHdoaWxlIChp KSB7Ci0gICAgICAgICAgLy8gSWYgaXQgaXMgc2NoZW1hIHRoZW4gYWxsb3cgdXNlciB0byBjcmVh dGUgRnVuY3Rpb24KLSAgICAgICAgICBpZiAoXy5pbmRleE9mKFsnc2NoZW1hJ10sIGQuX3R5cGUp ID4gLTEpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICAgIGlmICgnY29sbC10 cmlnZ2VyX2Z1bmN0aW9uJyA9PSBkLl90eXBlKSB7Ci0gICAgICAgICAgICAvL0NoZWNrIGlmIHdl IGFyZSBub3QgY2hpbGQgb2YgY2F0YWxvZwotICAgICAgICAgICAgdmFyIHByZXZfaSA9IHQuaGFz UGFyZW50KGkpID8gdC5wYXJlbnQoaSkgOiBudWxsLAotICAgICAgICAgICAgICBwcmV2X2QgPSBw cmV2X2kgPyB0Lml0ZW1EYXRhKHByZXZfaSkgOiBudWxsOwotICAgICAgICAgICAgaWYoIHByZXZf ZC5fdHlwZSA9PSAnY2F0YWxvZycpIHsKLSAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAg ICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIGkgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50 KGkpIDogbnVsbDsKLSAgICAgICAgICBkID0gaSA/IHQuaXRlbURhdGEoaSkgOiBudWxsOwotICAg ICAgICB9Ci0gICAgICAgIC8vIGJ5IGRlZmF1bHQgd2UgZG8gbm90IHdhbnQgdG8gYWxsb3cgY3Jl YXRlIG1lbnUKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9LAorICAgICAgY2FuQ3JlYXRl OiB0cmVlTm9kZU1lbnUuY2FuQ3JlYXRlKHBnQnJvd3NlciwgJ2NvbGwtdHJpZ2dlcl9mdW5jdGlv bicpLAogICAgIH0pOwogCiAgIH0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3NlcXVlbmNlcy9zdGF0aWMvanMv c2VxdWVuY2UuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9zZXF1ZW5jZXMvc3RhdGljL2pzL3NlcXVlbmNlLmpzCmluZGV4IDU3 Yzk1YWNkLi40NGQ1ZjZiMyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvc2VxdWVuY2VzL3N0YXRpYy9qcy9zZXF1 ZW5jZS5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9zZXF1ZW5jZXMvc3RhdGljL2pzL3NlcXVlbmNlLmpzCkBAIC0xLDgg KzEsMTAgQEAKIGRlZmluZSgncGdhZG1pbi5ub2RlLnNlcXVlbmNlJywgWwogICAnc291cmNlcy9n ZXR0ZXh0JywgJ3NvdXJjZXMvdXJsX2ZvcicsICdqcXVlcnknLCAndW5kZXJzY29yZScsCiAgICd1 bmRlcnNjb3JlLnN0cmluZycsICdzb3VyY2VzL3BnYWRtaW4nLCAncGdhZG1pbi5icm93c2VyJywg J3BnYWRtaW4uYmFja2Zvcm0nLAorICAnc291cmNlcy90cmVlL25vZGVfbWVudScsCiAgICdwZ2Fk bWluLmJyb3dzZXIuY29sbGVjdGlvbicsCi1dLCBmdW5jdGlvbihnZXR0ZXh0LCB1cmxfZm9yLCAk LCBfLCBTLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIEJhY2tmb3JtKSB7CitdLCBmdW5jdGlvbihnZXR0 ZXh0LCB1cmxfZm9yLCAkLCBfLCBTLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIEJhY2tmb3JtLAorICAg dHJlZU5vZGVNZW51KSB7CiAKICAgLy8gRXh0ZW5kIHRoZSBicm93c2VyJ3MgY29sbGVjdGlvbiBj bGFzcyBmb3Igc2VxdWVuY2UgY29sbGVjdGlvbgogICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1snY29s bC1zZXF1ZW5jZSddKSB7CkBAIC02MCwzNCArNjIsNyBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5z ZXF1ZW5jZScsIFsKICAgICAgIH0sCiAgICAgICBjYW5Ecm9wOiBwZ0Jyb3dzZXIuTm9kZXNbJ3Nj aGVtYSddLmNhbkNoaWxkRHJvcCwKICAgICAgIGNhbkRyb3BDYXNjYWRlOiBwZ0Jyb3dzZXIuTm9k ZXNbJ3NjaGVtYSddLmNhbkNoaWxkRHJvcCwKLSAgICAgIGNhbkNyZWF0ZTogZnVuY3Rpb24oaXRl bURhdGEsIGl0ZW0sIGRhdGEpIHsKLSAgICAgICAgICAvL0lmIGNoZWNrIGlzIGZhbHNlIHRoZW4g LCB3ZSB3aWxsIGFsbG93IGNyZWF0ZSBtZW51Ci0gICAgICAgIGlmIChkYXRhICYmIGRhdGEuY2hl Y2sgPT0gZmFsc2UpCi0gICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgdmFyIHQgPSBw Z0Jyb3dzZXIudHJlZSwgaSA9IGl0ZW0sIGQgPSBpdGVtRGF0YTsKLSAgICAgICAgICAvLyBUbyBp dGVyYXRlIG92ZXIgdHJlZSB0byBjaGVjayBwYXJlbnQgbm9kZQotICAgICAgICB3aGlsZSAoaSkg ewotICAgICAgICAgICAgLy8gSWYgaXQgaXMgc2NoZW1hIHRoZW4gYWxsb3cgdXNlciB0byBjcmVh dGUgY29sbGF0aW9uCi0gICAgICAgICAgaWYgKF8uaW5kZXhPZihbJ3NjaGVtYSddLCBkLl90eXBl KSA+IC0xKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgICBpZiAoJ2NvbGwt c2VxdWVuY2UnID09IGQuX3R5cGUpIHsKLSAgICAgICAgICAgICAgLy9DaGVjayBpZiB3ZSBhcmUg bm90IGNoaWxkIG9mIGNhdGFsb2cKLSAgICAgICAgICAgIHZhciBwcmV2X2kgPSB0Lmhhc1BhcmVu dChpKSA/IHQucGFyZW50KGkpIDogbnVsbCwKLSAgICAgICAgICAgICAgcHJldl9kID0gcHJldl9p ID8gdC5pdGVtRGF0YShwcmV2X2kpIDogbnVsbDsKLSAgICAgICAgICAgIGlmKCBwcmV2X2QuX3R5 cGUgPT0gJ2NhdGFsb2cnKSB7Ci0gICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQot ICAgICAgICAgIH0KLSAgICAgICAgICBpID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6 IG51bGw7Ci0gICAgICAgICAgZCA9IGkgPyB0Lml0ZW1EYXRhKGkpIDogbnVsbDsKLSAgICAgICAg fQotICAgICAgICAgIC8vIGJ5IGRlZmF1bHQgd2Ugd2FudCB0byBhbGxvdyBjcmVhdGUgbWVudQot ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0sCisgICAgICBjYW5DcmVhdGU6IHRyZWVOb2Rl TWVudS5jYW5DcmVhdGUocGdCcm93c2VyLCAnY29sbC1zZXF1ZW5jZScpLAogICAgICAgLy8gRGVm aW5lIHRoZSBtb2RlbCBmb3Igc2VxdWVuY2Ugbm9kZS4KICAgICAgIG1vZGVsOiBwZ0Jyb3dzZXIu Tm9kZS5Nb2RlbC5leHRlbmQoewogICAgICAgICBkZWZhdWx0czogewpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv c3RhdGljL2pzL2Nhbl9kcm9wX2NoaWxkLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvc3RhdGljL2pzL2Nhbl9kcm9wX2NoaWxk LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi44NGUyNWI1YwotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3N0YXRpYy9qcy9jYW5fZHJvcF9jaGlsZC5qcwpAQCAtMCwwICsxLDE4 IEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworLy8KKy8vIENv cHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKy8v IFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQor Ly8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vCisKK2V4cG9ydCBmdW5jdGlvbiBjYW5Ecm9wQ2hpbGQocGdCcm93c2VyLCBpdGVt RGF0YSwgaXRlbSkgeworICBsZXQgbm9kZSA9IHBnQnJvd3Nlci50cmVlTWVudS5maW5kTm9kZUJ5 RG9tRWxlbWVudChpdGVtKTsKKworICBpZiAobm9kZS5hbnlQYXJlbnQoKHBhcmVudCkgPT4gcGFy ZW50LmdldERhdGEoKS5fdHlwZSA9PT0gJ2NhdGFsb2cnKSkgeworICAgIHJldHVybiBmYWxzZTsK KyAgfQorCisgIHJldHVybiB0cnVlOworfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvc3RhdGljL2pzL3NjaGVt YS5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3N0YXRpYy9qcy9zY2hlbWEuanMKaW5kZXggYTdmZDRjN2MuLmEwOTYxMGFkIDEw MDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy9zdGF0aWMvanMvc2NoZW1hLmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3N0YXRpYy9qcy9zY2hl bWEuanMKQEAgLTEsOCArMSwxMCBAQAogZGVmaW5lKCdwZ2FkbWluLm5vZGUuc2NoZW1hJywgWwog ICAnc291cmNlcy9nZXR0ZXh0JywgJ3NvdXJjZXMvdXJsX2ZvcicsICdqcXVlcnknLCAndW5kZXJz Y29yZScsCiAgICdzb3VyY2VzL3BnYWRtaW4nLCAncGdhZG1pbi5icm93c2VyJywgJ3BnYWRtaW4u YmFja2Zvcm0nLCAncGdhZG1pbi5iYWNrZ3JpZCcsCisgICdwZ2FkbWluLm5vZGUuc2NoZW1hLmRp ci9jYW5fZHJvcF9jaGlsZCcsCiAgICdwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbicsICdwZ2Fk bWluLmJyb3dzZXIuc2VydmVyLnByaXZpbGVnZScsCi1dLCBmdW5jdGlvbihnZXR0ZXh0LCB1cmxf Zm9yLCAkLCBfLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIEJhY2tmb3JtLCBCYWNrZ3JpZCkgeworXSwg ZnVuY3Rpb24oZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgcGdBZG1pbiwgcGdCcm93c2VyLCBCYWNr Zm9ybSwgQmFja2dyaWQsCitjYW5Ecm9wQ2hpbGQpIHsKIAogICAvLyBWYWN1dW1TZXR0aW5ncyBD b2xsZWN0aW9uIHRvIGRpc3BsYXkgYWxsIHNldHRpbmdzIHBhcmFtZXRlcnMgYXMgR3JpZAogICBC YWNrZm9ybS5WYWN1dW1Db2xsZWN0aW9uQ29udHJvbCA9CkBAIC00MjgsNTEgKzQzMCwxMiBAQCBk ZWZpbmUoJ3BnYWRtaW4ubm9kZS5zY2hlbWEnLCBbCiAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIHdp bGwgY2hlY2tzIHdoZXRoZXIgd2UgY2FuIGFsbG93IHVzZXIgdG8KICAgICAgIC8vIGRyb3Agb2Jq ZWN0IG9yIG5vdCBiYXNlZCBvbiBsb2NhdGlvbiB3aXRoaW4gc2NoZW1hICYgY2F0YWxvZwogICAg ICAgY2FuQ2hpbGREcm9wOiBmdW5jdGlvbihpdGVtRGF0YSwgaXRlbSkgewotICAgICAgICB2YXIg dCA9IHBnQnJvd3Nlci50cmVlLCBpID0gaXRlbSwgZCA9IGl0ZW1EYXRhOwotICAgICAgICAvLyBU byBpdGVyYXRlIG92ZXIgdHJlZSB0byBjaGVjayBwYXJlbnQgbm9kZQotICAgICAgICB3aGlsZSAo aSkgewotICAgICAgICAgIC8vIElmIGl0IGlzIHNjaGVtYSB0aGVuIGFsbG93IHVzZXIgdG8gY3Jl YXRlIGNvbGxhdGlvbgotICAgICAgICAgIGlmIChfLmluZGV4T2YoWydzY2hlbWEnXSwgZC5fdHlw ZSkgPiAtMSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgICAgICAvL0NoZWNr IGlmIHdlIGFyZSBub3QgY2hpbGQgb2YgY2F0YWxvZwotICAgICAgICAgIHZhciBwcmV2X2kgPSB0 Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbCwKLSAgICAgICAgICAgIHByZXZfZCA9 IHByZXZfaSA/IHQuaXRlbURhdGEocHJldl9pKSA6IG51bGw7Ci0gICAgICAgICAgaWYocHJldl9k ICYmIHByZXZfZC5fdHlwZSA9PSAnY2F0YWxvZycpIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxz ZTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgaSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQo aSkgOiBudWxsOwotICAgICAgICAgIGQgPSBpID8gdC5pdGVtRGF0YShpKSA6IG51bGw7Ci0gICAg ICAgIH0KLSAgICAgICAgLy8gYnkgZGVmYXVsdCB3ZSBkbyBub3Qgd2FudCB0byBhbGxvdyBjcmVh dGUgbWVudQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGNhbkRyb3BDaGls ZC5jYW5Ecm9wQ2hpbGQocGdCcm93c2VyLCBpdGVtRGF0YSwgaXRlbSk7CiAgICAgICB9LAogICAg IH0pOwogCiAgICAgcGdCcm93c2VyLnRhYmxlQ2hpbGRUcmVlTm9kZUhpZXJhcmNoeSA9IGZ1bmN0 aW9uKGkpIHsKLSAgICAgIHZhciBpZHggPSAwLAotICAgICAgICByZXMgPSB7fSwKLSAgICAgICAg dCA9IHBnQnJvd3Nlci50cmVlOwotCi0gICAgICBkbyB7Ci0gICAgICAgIHZhciBkID0gdC5pdGVt RGF0YShpKTsKLSAgICAgICAgaWYgKAotICAgICAgICAgIGQuX3R5cGUgaW4gcGdCcm93c2VyLk5v ZGVzICYmIHBnQnJvd3Nlci5Ob2Rlc1tkLl90eXBlXS5oYXNJZAotICAgICAgICApIHsKLSAgICAg ICAgICBpZiAoZC5fdHlwZSA9PT0gJ3BhcnRpdGlvbicgfHwgZC5fdHlwZSA9PT0gJ3RhYmxlJykg ewotICAgICAgICAgICAgaWYgKCEoJ3RhYmxlJyBpbiByZXMpKSB7Ci0gICAgICAgICAgICAgIHJl c1sndGFibGUnXSA9IF8uZXh0ZW5kKHt9LCBkLCB7J3ByaW9yaXR5JzogaWR4fSk7Ci0gICAgICAg ICAgICAgIGlkeCAtPSAxOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0gZWxzZSB7Ci0gICAg ICAgICAgICByZXNbZC5fdHlwZV0gPSBfLmV4dGVuZCh7fSwgZCwgeydwcmlvcml0eSc6IGlkeH0p OwotICAgICAgICAgICAgaWR4IC09IDE7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAg IGkgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbDsKLSAgICAgIH0gd2hpbGUg KGkpOwotCi0gICAgICByZXR1cm4gcmVzOworICAgICAgcmV0dXJuIHRoaXMuZ2V0VHJlZU5vZGVI aWVyYXJjaHkoaSk7CiAgICAgfTsKICAgfQogCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29sdW1u L3N0YXRpYy9qcy9jb2x1bW4uanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29sdW1uL3N0YXRpYy9qcy9jb2x1bW4u anMKaW5kZXggNzJiNmViMGMuLjFmZGFjZjUyIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29sdW1u L3N0YXRpYy9qcy9jb2x1bW4uanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbHVtbi9zdGF0aWMvanMvY29s dW1uLmpzCkBAIC04OCw3ICs4OCw2IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLmNvbHVtbicsIFsK IAogICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1snY29sdW1uJ10pIHsKICAgICBwZ0Jyb3dzZXIuTm9k ZXNbJ2NvbHVtbiddID0gcGdCcm93c2VyLk5vZGUuZXh0ZW5kKHsKLSAgICAgIGdldFRyZWVOb2Rl SGllcmFyY2h5OiBwZ0Jyb3dzZXIudGFibGVDaGlsZFRyZWVOb2RlSGllcmFyY2h5LAogICAgICAg cGFyZW50X3R5cGU6IFsndGFibGUnLCAndmlldycsICdtdmlldyddLAogICAgICAgY29sbGVjdGlv bl90eXBlOiBbJ2NvbGwtdGFibGUnLCAnY29sbC12aWV3JywgJ2NvbGwtbXZpZXcnXSwKICAgICAg IHR5cGU6ICdjb2x1bW4nLApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2NoZWNr X2NvbnN0cmFpbnQvc3RhdGljL2pzL2NoZWNrX2NvbnN0cmFpbnQuanMgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29u c3RyYWludHMvY2hlY2tfY29uc3RyYWludC9zdGF0aWMvanMvY2hlY2tfY29uc3RyYWludC5qcwpp bmRleCA4NTdjZjRjNC4uYWIyOGE4NmIgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50 cy9jaGVja19jb25zdHJhaW50L3N0YXRpYy9qcy9jaGVja19jb25zdHJhaW50LmpzCisrKyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy9jb25zdHJhaW50cy9jaGVja19jb25zdHJhaW50L3N0YXRpYy9qcy9jaGVja19jb25z dHJhaW50LmpzCkBAIC04LDcgKzgsNiBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5jaGVja19jb25z dHJhaW50JywgWwogICAvLyBDaGVjayBDb25zdHJhaW50IE5vZGUKICAgaWYgKCFwZ0Jyb3dzZXIu Tm9kZXNbJ2NoZWNrX2NvbnN0cmFpbnQnXSkgewogICAgIHBnQWRtaW4uQnJvd3Nlci5Ob2Rlc1sn Y2hlY2tfY29uc3RyYWludCddID0gcGdCcm93c2VyLk5vZGUuZXh0ZW5kKHsKLSAgICAgIGdldFRy ZWVOb2RlSGllcmFyY2h5OiBwZ0Jyb3dzZXIudGFibGVDaGlsZFRyZWVOb2RlSGllcmFyY2h5LAog ICAgICAgdHlwZTogJ2NoZWNrX2NvbnN0cmFpbnQnLAogICAgICAgbGFiZWw6IGdldHRleHQoJ0No ZWNrJyksCiAgICAgICBjb2xsZWN0aW9uX3R5cGU6ICdjb2xsLWNvbnN0cmFpbnRzJywKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9leGNsdXNpb25fY29uc3RyYWludC9zdGF0aWMv anMvZXhjbHVzaW9uX2NvbnN0cmFpbnQuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvZXhjbHVz aW9uX2NvbnN0cmFpbnQvc3RhdGljL2pzL2V4Y2x1c2lvbl9jb25zdHJhaW50LmpzCmluZGV4IDBi YmY2NmExLi5hZGNjZjJlOSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2V4Y2x1 c2lvbl9jb25zdHJhaW50L3N0YXRpYy9qcy9leGNsdXNpb25fY29uc3RyYWludC5qcworKysgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy90YWJsZXMvY29uc3RyYWludHMvZXhjbHVzaW9uX2NvbnN0cmFpbnQvc3RhdGljL2pzL2V4Y2x1 c2lvbl9jb25zdHJhaW50LmpzCkBAIC02MDUsNyArNjA1LDYgQEAgZGVmaW5lKCdwZ2FkbWluLm5v ZGUuZXhjbHVzaW9uX2NvbnN0cmFpbnQnLCBbCiAgIC8vIEV4dGVuZCB0aGUgYnJvd3NlcidzIG5v ZGUgY2xhc3MgZm9yIGV4Y2x1c2lvbiBjb25zdHJhaW50IG5vZGUKICAgaWYgKCFwZ0Jyb3dzZXIu Tm9kZXNbJ2V4Y2x1c2lvbl9jb25zdHJhaW50J10pIHsKICAgICBwZ0FkbWluLkJyb3dzZXIuTm9k ZXNbJ2V4Y2x1c2lvbl9jb25zdHJhaW50J10gPSBwZ0Jyb3dzZXIuTm9kZS5leHRlbmQoewotICAg ICAgZ2V0VHJlZU5vZGVIaWVyYXJjaHk6IHBnQnJvd3Nlci50YWJsZUNoaWxkVHJlZU5vZGVIaWVy YXJjaHksCiAgICAgICB0eXBlOiAnZXhjbHVzaW9uX2NvbnN0cmFpbnQnLAogICAgICAgbGFiZWw6 IGdldHRleHQoJ0V4Y2x1c2lvbiBjb25zdHJhaW50JyksCiAgICAgICBjb2xsZWN0aW9uX3R5cGU6 ICdjb2xsLWNvbnN0cmFpbnRzJywKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9m b3JlaWduX2tleS9zdGF0aWMvanMvZm9yZWlnbl9rZXkuanMgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWlu dHMvZm9yZWlnbl9rZXkvc3RhdGljL2pzL2ZvcmVpZ25fa2V5LmpzCmluZGV4IDNjNGI4OWYzLi45 ODk5ZGY5MiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2ZvcmVpZ25fa2V5L3N0 YXRpYy9qcy9mb3JlaWduX2tleS5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvZm9yZWln bl9rZXkvc3RhdGljL2pzL2ZvcmVpZ25fa2V5LmpzCkBAIC02MDMsNyArNjAzLDYgQEAgZGVmaW5l KCdwZ2FkbWluLm5vZGUuZm9yZWlnbl9rZXknLCBbCiAgIC8vIEV4dGVuZCB0aGUgYnJvd3Nlcidz IG5vZGUgY2xhc3MgZm9yIGZvcmVpZ24ga2V5IG5vZGUKICAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNb J2ZvcmVpZ25fa2V5J10pIHsKICAgICBwZ0FkbWluLkJyb3dzZXIuTm9kZXNbJ2ZvcmVpZ25fa2V5 J10gPSBwZ0Jyb3dzZXIuTm9kZS5leHRlbmQoewotICAgICAgZ2V0VHJlZU5vZGVIaWVyYXJjaHk6 IHBnQnJvd3Nlci50YWJsZUNoaWxkVHJlZU5vZGVIaWVyYXJjaHksCiAgICAgICB0eXBlOiAnZm9y ZWlnbl9rZXknLAogICAgICAgbGFiZWw6IGdldHRleHQoJ0ZvcmVpZ24ga2V5JyksCiAgICAgICBj b2xsZWN0aW9uX3R5cGU6ICdjb2xsLWNvbnN0cmFpbnRzJywKZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxl cy9jb25zdHJhaW50cy9pbmRleF9jb25zdHJhaW50L3N0YXRpYy9qcy9wcmltYXJ5X2tleS5qcyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3RhYmxlcy9jb25zdHJhaW50cy9pbmRleF9jb25zdHJhaW50L3N0YXRpYy9qcy9wcmltYXJ5 X2tleS5qcwppbmRleCBkM2E2Y2ZmNC4uMGFkMGYwNTQgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9j b25zdHJhaW50cy9pbmRleF9jb25zdHJhaW50L3N0YXRpYy9qcy9wcmltYXJ5X2tleS5qcworKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy90YWJsZXMvY29uc3RyYWludHMvaW5kZXhfY29uc3RyYWludC9zdGF0aWMvanMvcHJpbWFy eV9rZXkuanMKQEAgLTIwLDcgKzIwLDYgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUucHJpbWFyeV9r ZXknLCBbCiAgICAgICBwYXJlbnRfdHlwZTogWyd0YWJsZScsJ3BhcnRpdGlvbiddLAogICAgICAg Y2FuRHJvcDogdHJ1ZSwKICAgICAgIGNhbkRyb3BDYXNjYWRlOiB0cnVlLAotICAgICAgZ2V0VHJl ZU5vZGVIaWVyYXJjaHk6IHBnQnJvd3Nlci50YWJsZUNoaWxkVHJlZU5vZGVIaWVyYXJjaHksCiAg ICAgICBJbml0OiBmdW5jdGlvbigpIHsKICAgICAgICAgLyogQXZvaWQgbXVsdGlwbGUgcmVnaXN0 cmF0aW9uIG9mIG1lbnVzICovCiAgICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKQpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2luZGV4X2NvbnN0cmFpbnQvc3RhdGljL2pzL3Vu aXF1ZV9jb25zdHJhaW50LmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2luZGV4X2NvbnN0cmFp bnQvc3RhdGljL2pzL3VuaXF1ZV9jb25zdHJhaW50LmpzCmluZGV4IDc2OTE4NWQ2Li4xOGQzY2Ez MyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2luZGV4X2NvbnN0cmFpbnQvc3Rh dGljL2pzL3VuaXF1ZV9jb25zdHJhaW50LmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9p bmRleF9jb25zdHJhaW50L3N0YXRpYy9qcy91bmlxdWVfY29uc3RyYWludC5qcwpAQCAtMjAsNyAr MjAsNiBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS51bmlxdWVfY29uc3RyYWludCcsIFsKICAgICAg IHBhcmVudF90eXBlOiBbJ3RhYmxlJywncGFydGl0aW9uJ10sCiAgICAgICBjYW5Ecm9wOiB0cnVl LAogICAgICAgY2FuRHJvcENhc2NhZGU6IHRydWUsCi0gICAgICBnZXRUcmVlTm9kZUhpZXJhcmNo eTogcGdCcm93c2VyLnRhYmxlQ2hpbGRUcmVlTm9kZUhpZXJhcmNoeSwKICAgICAgIEluaXQ6IGZ1 bmN0aW9uKCkgewogICAgICAgICAvKiBBdm9pZCBtdWx0aXBsZSByZWdpc3RyYXRpb24gb2YgbWVu dXMgKi8KICAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpCmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJs ZXMvY29uc3RyYWludHMvc3RhdGljL2pzL2NvbnN0cmFpbnRzLmpzIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0 cmFpbnRzL3N0YXRpYy9qcy9jb25zdHJhaW50cy5qcwppbmRleCBjYjI0MmNkMi4uOWMwZTI0ZmUg MTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9zdGF0aWMvanMvY29uc3RyYWludHMu anMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL3N0YXRpYy9qcy9jb25zdHJhaW50cy5qcwpA QCAtMTIsMTQgKzEyLDEyIEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLmNvbnN0cmFpbnRzJywgWwog ICAgICAgICBub2RlOiAnY29uc3RyYWludHMnLAogICAgICAgICBsYWJlbDogZ2V0dGV4dCgnQ29u c3RyYWludHMnKSwKICAgICAgICAgdHlwZTogJ2NvbGwtY29uc3RyYWludHMnLAotICAgICAgICBn ZXRUcmVlTm9kZUhpZXJhcmNoeTogcGdCcm93c2VyLnRhYmxlQ2hpbGRUcmVlTm9kZUhpZXJhcmNo eSwKICAgICAgICAgY29sdW1uczogWyduYW1lJywgJ2NvbW1lbnQnXSwKICAgICAgIH0pOwogICB9 CiAKICAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ2NvbnN0cmFpbnRzJ10pIHsKICAgICBwZ0FkbWlu LkJyb3dzZXIuTm9kZXNbJ2NvbnN0cmFpbnRzJ10gPSBwZ0Jyb3dzZXIuTm9kZS5leHRlbmQoewot ICAgICAgZ2V0VHJlZU5vZGVIaWVyYXJjaHk6IHBnQnJvd3Nlci50YWJsZUNoaWxkVHJlZU5vZGVI aWVyYXJjaHksCiAgICAgICB0eXBlOiAnY29uc3RyYWludHMnLAogICAgICAgbGFiZWw6IGdldHRl eHQoJ0NvbnN0cmFpbnRzJyksCiAgICAgICBjb2xsZWN0aW9uX3R5cGU6ICdjb2xsLWNvbnN0cmFp bnRzJywKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9pbmRleGVzL3N0YXRpYy9qcy9pbmRleC5qcyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3RhYmxlcy9pbmRleGVzL3N0YXRpYy9qcy9pbmRleC5qcwppbmRleCBlYzJiNGRhMS4uMmI2 ODdjMWEgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9pbmRleGVzL3N0YXRpYy9qcy9pbmRleC5qcwor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90YWJsZXMvaW5kZXhlcy9zdGF0aWMvanMvaW5kZXguanMKQEAgLTEzLDcgKzEzLDYg QEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuaW5kZXgnLCBbCiAgICAgICAgIG5vZGU6ICdpbmRleCcs CiAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdJbmRleGVzJyksCiAgICAgICAgIHR5cGU6ICdjb2xs LWluZGV4JywKLSAgICAgICAgZ2V0VHJlZU5vZGVIaWVyYXJjaHk6IHBnQnJvd3Nlci50YWJsZUNo aWxkVHJlZU5vZGVIaWVyYXJjaHksCiAgICAgICAgIHNxbEFsdGVySGVscDogJ3NxbC1hbHRlcmlu ZGV4Lmh0bWwnLAogICAgICAgICBzcWxDcmVhdGVIZWxwOiAnc3FsLWNyZWF0ZWluZGV4Lmh0bWwn LAogICAgICAgICBkaWFsb2dIZWxwOiB1cmxfZm9yKCdoZWxwLnN0YXRpYycsIHsnZmlsZW5hbWUn OiAnaW5kZXhfZGlhbG9nLmh0bWwnfSksCkBAIC0yMTUsNyArMjE0LDYgQEAgZGVmaW5lKCdwZ2Fk bWluLm5vZGUuaW5kZXgnLCBbCiAKICAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ2luZGV4J10pIHsK ICAgICBwZ0FkbWluLkJyb3dzZXIuTm9kZXNbJ2luZGV4J10gPSBwZ0Jyb3dzZXIuTm9kZS5leHRl bmQoewotICAgICAgZ2V0VHJlZU5vZGVIaWVyYXJjaHk6IHBnQnJvd3Nlci50YWJsZUNoaWxkVHJl ZU5vZGVIaWVyYXJjaHksCiAgICAgICBwYXJlbnRfdHlwZTogWyd0YWJsZScsICd2aWV3JywgJ212 aWV3JywgJ3BhcnRpdGlvbiddLAogICAgICAgY29sbGVjdGlvbl90eXBlOiBbJ2NvbGwtdGFibGUn LCAnY29sbC12aWV3J10sCiAgICAgICBzcWxBbHRlckhlbHA6ICdzcWwtYWx0ZXJpbmRleC5odG1s JywKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9wYXJ0aXRpb25zL3N0YXRpYy9qcy9wYXJ0aXRpb24u anMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90YWJsZXMvcGFydGl0aW9ucy9zdGF0aWMvanMvcGFydGl0aW9uLmpzCmluZGV4IGQ4 MDczMDRlLi5kMDg2NDczYSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3BhcnRpdGlvbnMvc3RhdGlj L2pzL3BhcnRpdGlvbi5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvcGFydGl0aW9ucy9zdGF0aWMvanMvcGFy dGl0aW9uLmpzCkBAIC0yLDEwICsyLDEyIEBAIGRlZmluZShbCiAgICdzb3VyY2VzL2dldHRleHQn LCAnc291cmNlcy91cmxfZm9yJywgJ2pxdWVyeScsICd1bmRlcnNjb3JlJywKICAgJ3VuZGVyc2Nv cmUuc3RyaW5nJywgJ3NvdXJjZXMvcGdhZG1pbicsICdwZ2FkbWluLmJyb3dzZXInLAogICAncGdh ZG1pbi5hbGVydGlmeWpzJywgJ3BnYWRtaW4uYmFja2Zvcm0nLCAncGdhZG1pbi5iYWNrZ3JpZCcs CisgICdzb3VyY2VzL3RyZWUvbm9kZV9tZW51JywKICAgJ3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0 aW9uJywgJ3BnYWRtaW4uYnJvd3Nlci50YWJsZS5wYXJ0aXRpb24udXRpbHMnLAogXSwKIGZ1bmN0 aW9uKAotICBnZXR0ZXh0LCB1cmxfZm9yLCAkLCBfLCBTLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIEFs ZXJ0aWZ5LCBCYWNrZm9ybSwgQmFja2dyaWQKKyAgZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgUywg cGdBZG1pbiwgcGdCcm93c2VyLCBBbGVydGlmeSwgQmFja2Zvcm0sIEJhY2tncmlkLAorICB0cmVl Tm9kZU1lbnUKICkgewogCiAgIGlmICghcGdCcm93c2VyLk5vZGVzWydjb2xsLXBhcnRpdGlvbidd KSB7CkBAIC0xMyw3ICsxNSw2IEBAIGZ1bmN0aW9uKAogICAgICAgcGdBZG1pbi5Ccm93c2VyLkNv bGxlY3Rpb24uZXh0ZW5kKHsKICAgICAgICAgbm9kZTogJ3BhcnRpdGlvbicsCiAgICAgICAgIGxh YmVsOiBnZXR0ZXh0KCdQYXJ0aXRpb25zJyksCi0gICAgICAgIGdldFRyZWVOb2RlSGllcmFyY2h5 OiBwZ0Jyb3dzZXIudGFibGVDaGlsZFRyZWVOb2RlSGllcmFyY2h5LAogICAgICAgICB0eXBlOiAn Y29sbC1wYXJ0aXRpb24nLAogICAgICAgICBjb2x1bW5zOiBbCiAgICAgICAgICAgJ25hbWUnLCAn c2NoZW1hJywgJ3BhcnRpdGlvbl92YWx1ZScsICdpc19wYXJ0aXRpb25lZCcsICdkZXNjcmlwdGlv bicsCkBAIC04MCwzNiArODEsNiBAQCBmdW5jdGlvbigKICAgICAgICAgfSwKICAgICAgICAgXSk7 CiAgICAgICB9LAotICAgICAgZ2V0VHJlZU5vZGVIaWVyYXJjaHk6IGZ1bmN0aW9uKGkpIHsKLSAg ICAgICAgdmFyIGlkeCA9IDAsCi0gICAgICAgICAgcmVzID0ge30sCi0gICAgICAgICAgdCA9IHBn QnJvd3Nlci50cmVlOwotCi0gICAgICAgIGRvIHsKLSAgICAgICAgICB2YXIgZCA9IHQuaXRlbURh dGEoaSk7Ci0gICAgICAgICAgaWYgKAotICAgICAgICAgICAgZC5fdHlwZSBpbiBwZ0Jyb3dzZXIu Tm9kZXMgJiYgcGdCcm93c2VyLk5vZGVzW2QuX3R5cGVdLmhhc0lkCi0gICAgICAgICAgKSB7Ci0g ICAgICAgICAgICBpZiAoZC5fdHlwZSA9PSAncGFydGl0aW9uJyAmJiAncGFydGl0aW9uJyBpbiBy ZXMpIHsKLSAgICAgICAgICAgICAgaWYgKCEoJ3RhYmxlJyBpbiByZXMpKSB7Ci0gICAgICAgICAg ICAgICAgcmVzWyd0YWJsZSddID0gXy5leHRlbmQoe30sIGQsIHsncHJpb3JpdHknOiBpZHh9KTsK LSAgICAgICAgICAgICAgICBpZHggLT0gMTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAg fSBlbHNlIGlmIChkLl90eXBlID09ICd0YWJsZScpIHsKLSAgICAgICAgICAgICAgaWYgKCEoJ3Rh YmxlJyBpbiByZXMpKSB7Ci0gICAgICAgICAgICAgICAgcmVzWyd0YWJsZSddID0gXy5leHRlbmQo e30sIGQsIHsncHJpb3JpdHknOiBpZHh9KTsKLSAgICAgICAgICAgICAgICBpZHggLT0gMTsKLSAg ICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgcmVzW2Qu X3R5cGVdID0gXy5leHRlbmQoe30sIGQsIHsncHJpb3JpdHknOiBpZHh9KTsKLSAgICAgICAgICAg ICAgaWR4IC09IDE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIGkgPSB0 Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbDsKLSAgICAgICAgfSB3aGlsZSAoaSk7 Ci0KLSAgICAgICAgcmV0dXJuIHJlczsKLSAgICAgIH0sCiAgICAgICBnZW5lcmF0ZV91cmw6IGZ1 bmN0aW9uKGl0ZW0sIHR5cGUsIGQsIHdpdGhfaWQsIGluZm8pIHsKICAgICAgICAgaWYgKF8uaW5k ZXhPZihbCiAgICAgICAgICAgJ3N0YXRzJywgJ3N0YXRpc3RpY3MnLCAnZGVwZW5kZW5jeScsICdk ZXBlbmRlbnQnLCAncmVzZXQnLApAQCAtMTE4OSwzNCArMTE2MCw3IEBAIGZ1bmN0aW9uKAogICAg ICAgICAgIHJldHVybiBkYXRhOwogICAgICAgICB9LAogICAgICAgfSksCi0gICAgICBjYW5DcmVh dGU6IGZ1bmN0aW9uKGl0ZW1EYXRhLCBpdGVtLCBkYXRhKSB7Ci0gICAgICAgICAgLy9JZiBjaGVj ayBpcyBmYWxzZSB0aGVuICwgd2Ugd2lsbCBhbGxvdyBjcmVhdGUgbWVudQotICAgICAgICBpZiAo ZGF0YSAmJiBkYXRhLmNoZWNrID09IGZhbHNlKQotICAgICAgICAgIHJldHVybiB0cnVlOwotCi0g ICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRyZWUsIGkgPSBpdGVtLCBkID0gaXRlbURhdGE7Ci0g ICAgICAgICAgLy8gVG8gaXRlcmF0ZSBvdmVyIHRyZWUgdG8gY2hlY2sgcGFyZW50IG5vZGUKLSAg ICAgICAgd2hpbGUgKGkpIHsKLSAgICAgICAgICAgIC8vIElmIGl0IGlzIHNjaGVtYSB0aGVuIGFs bG93IHVzZXIgdG8gY3JlYXRlIHRhYmxlCi0gICAgICAgICAgaWYgKF8uaW5kZXhPZihbJ3NjaGVt YSddLCBkLl90eXBlKSA+IC0xKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAg ICBpZiAoJ2NvbGwtdGFibGUnID09IGQuX3R5cGUpIHsKLSAgICAgICAgICAgICAgLy9DaGVjayBp ZiB3ZSBhcmUgbm90IGNoaWxkIG9mIGNhdGFsb2cKLSAgICAgICAgICAgIHZhciBwcmV2X2kgPSB0 Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbDsKLSAgICAgICAgICAgIHZhciBwcmV2 X2QgPSBwcmV2X2kgPyB0Lml0ZW1EYXRhKHByZXZfaSkgOiBudWxsOwotICAgICAgICAgICAgaWYo IHByZXZfZC5fdHlwZSA9PSAnY2F0YWxvZycpIHsKLSAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg ICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIGkgPSB0Lmhhc1BhcmVudChpKSA/IHQu cGFyZW50KGkpIDogbnVsbDsKLSAgICAgICAgICBkID0gaSA/IHQuaXRlbURhdGEoaSkgOiBudWxs OwotICAgICAgICB9Ci0gICAgICAgICAgLy8gYnkgZGVmYXVsdCB3ZSBkbyBub3Qgd2FudCB0byBh bGxvdyBjcmVhdGUgbWVudQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0sCisgICAgICBj YW5DcmVhdGU6IHRyZWVOb2RlTWVudS5jYW5DcmVhdGUocGdCcm93c2VyLCAnY29sbC10YWJsZScp LAogICAgICAgLy8gQ2hlY2sgdG8gd2hldGhlciB0YWJsZSBoYXMgZGlzYWJsZSB0cmlnZ2VyKHMp CiAgICAgICBjYW5DcmVhdGVfd2l0aF90cmlnZ2VyX2VuYWJsZTogZnVuY3Rpb24oaXRlbURhdGEs IGl0ZW0sIGRhdGEpIHsKICAgICAgICAgaWYodGhpcy5jYW5DcmVhdGUuYXBwbHkodGhpcywgW2l0 ZW1EYXRhLCBpdGVtLCBkYXRhXSkpIHsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9ydWxlcy9zdGF0 aWMvanMvcnVsZS5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9ydWxlcy9zdGF0aWMvanMvcnVsZS5qcwppbmRleCAz YWY2MTc1NC4uMzU0OTA5ZjMgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9ydWxlcy9zdGF0aWMvanMv cnVsZS5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvcnVsZXMvc3RhdGljL2pzL3J1bGUuanMKQEAgLTE2LDcg KzE2LDYgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUucnVsZScsIFsKICAgICAgICAgbm9kZTogJ3J1 bGUnLAogICAgICAgICBsYWJlbDogZ2V0dGV4dCgnUnVsZXMnKSwKICAgICAgICAgdHlwZTogJ2Nv bGwtcnVsZScsCi0gICAgICAgIGdldFRyZWVOb2RlSGllcmFyY2h5OiBwZ0Jyb3dzZXIudGFibGVD aGlsZFRyZWVOb2RlSGllcmFyY2h5LAogICAgICAgICBjb2x1bW5zOiBbJ25hbWUnLCAnb3duZXIn LCAnY29tbWVudCddLAogICAgICAgfSk7CiAgIH0KQEAgLTM1LDcgKzM0LDYgQEAgZGVmaW5lKCdw Z2FkbWluLm5vZGUucnVsZScsIFsKICAgICovCiAgIGlmICghcGdCcm93c2VyLk5vZGVzWydydWxl J10pIHsKICAgICBwZ0FkbWluLkJyb3dzZXIuTm9kZXNbJ3J1bGUnXSA9IHBnQnJvd3Nlci5Ob2Rl LmV4dGVuZCh7Ci0gICAgICBnZXRUcmVlTm9kZUhpZXJhcmNoeTogcGdCcm93c2VyLnRhYmxlQ2hp bGRUcmVlTm9kZUhpZXJhcmNoeSwKICAgICAgIHBhcmVudF90eXBlOiBbJ3RhYmxlJywndmlldycs ICdwYXJ0aXRpb24nXSwKICAgICAgIHR5cGU6ICdydWxlJywKICAgICAgIHNxbEFsdGVySGVscDog J3NxbC1hbHRlcnJ1bGUuaHRtbCcsCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvc3RhdGljL2pzL2Vu YWJsZV9kaXNhYmxlX3RyaWdnZXJzLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3N0YXRpYy9qcy9lbmFibGVfZGlz YWJsZV90cmlnZ2Vycy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uMmQ3 OTIwNDMKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvc3RhdGljL2pzL2VuYWJsZV9kaXNh YmxlX3RyaWdnZXJzLmpzCkBAIC0wLDAgKzEsNTIgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0FkbWluIDQg LSBQb3N0Z3JlU1FMIFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhl IHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1 bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworaW1wb3J0IGF4aW9zIGZy b20gJ2F4aW9zJzsKKworZXhwb3J0IGZ1bmN0aW9uIGRpc2FibGVUcmlnZ2Vycyh0cmVlLCBhbGVy dGlmeSwgZ2VuZXJhdGVVcmwsIGFyZ3MpIHsKKyAgcmV0dXJuIHNldFRyaWdnZXJzKHRyZWUsIGFs ZXJ0aWZ5LCBnZW5lcmF0ZVVybCwgYXJncywge2VuYWJsZTogJ2ZhbHNlJyB9KTsKK30KK2V4cG9y dCBmdW5jdGlvbiBlbmFibGVUcmlnZ2Vycyh0cmVlLCBhbGVydGlmeSwgZ2VuZXJhdGVVcmwsIGFy Z3MpIHsKKyAgcmV0dXJuIHNldFRyaWdnZXJzKHRyZWUsIGFsZXJ0aWZ5LCBnZW5lcmF0ZVVybCwg YXJncywge2VuYWJsZTogJ3RydWUnIH0pOworfQorCitmdW5jdGlvbiBzZXRUcmlnZ2Vycyh0cmVl LCBhbGVydGlmeSwgZ2VuZXJhdGVVcmwsIGFyZ3MsIHBhcmFtcykgeworICBjb25zdCB0cmVlTm9k ZSA9IHJldHJpZXZlVHJlZU5vZGUoYXJncywgdHJlZSk7CisKKyAgaWYgKCF0cmVlTm9kZSB8fCB0 cmVlTm9kZS5nZXREYXRhKCkgPT09IG51bGwgfHwgdHJlZU5vZGUuZ2V0RGF0YSgpID09PSB1bmRl ZmluZWQpCisgICAgcmV0dXJuIGZhbHNlOworCisgIGF4aW9zLnB1dCgKKyAgICBnZW5lcmF0ZVVy bCh0cmVlTm9kZS5nZXRIdG1sSWRlbnRpZmllcigpLCAnc2V0X3RyaWdnZXInLCB0cmVlTm9kZS5n ZXREYXRhKCksIHRydWUpLAorICAgIHBhcmFtcworICApCisgICAgLnRoZW4oKHJlcykgPT4gewor ICAgICAgaWYgKHJlcy5kYXRhLnN1Y2Nlc3MgPT09IDEpIHsKKyAgICAgICAgYWxlcnRpZnkuc3Vj Y2VzcyhyZXMuZGF0YS5pbmZvKTsKKyAgICAgICAgdHJlZU5vZGUucmVsb2FkKHRyZWUpOworICAg ICAgfQorICAgIH0pCisgICAgLmNhdGNoKCh4aHIpID0+IHsKKyAgICAgIHRyeSB7CisgICAgICAg IGNvbnN0IGVyciA9IHhoci5yZXNwb25zZS5kYXRhOworICAgICAgICBpZiAoZXJyLnN1Y2Nlc3Mg PT09IDApIHsKKyAgICAgICAgICBhbGVydGlmeS5lcnJvcihlcnIuZXJyb3Jtc2cpOworICAgICAg ICB9CisgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGNvbnNvbGUud2FybihlLnN0YWNrIHx8 IGUpOworICAgICAgfQorICAgICAgdHJlZU5vZGUudW5sb2FkKHRyZWUpOworICAgIH0pOworfQor CitmdW5jdGlvbiByZXRyaWV2ZVRyZWVOb2RlKGFyZ3MsIHRyZWUpIHsKKyAgY29uc3QgaW5wdXQg PSBhcmdzIHx8IHt9OworICBjb25zdCBkb21FbGVtZW50SWRlbnRpZmllciA9IGlucHV0Lml0ZW0g fHwgdHJlZS5zZWxlY3RlZCgpOworICByZXR1cm4gdHJlZS5maW5kTm9kZUJ5RG9tRWxlbWVudChk b21FbGVtZW50SWRlbnRpZmllcik7Cit9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvc3RhdGljL2pz L3RhYmxlLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdGFibGVzL3N0YXRpYy9qcy90YWJsZS5qcwppbmRleCBkNDQwYmYwNC4u YjBiYzA1YjkgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9zdGF0aWMvanMvdGFibGUuanMKKysrIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdGFibGVzL3N0YXRpYy9qcy90YWJsZS5qcwpAQCAtMSwxMyArMSwxNiBAQAogZGVmaW5lKCdw Z2FkbWluLm5vZGUudGFibGUnLCBbCisgICdwZ2FkbWluLnRhYmxlcy5qcy9lbmFibGVfZGlzYWJs ZV90cmlnZ2VycycsCiAgICdzb3VyY2VzL2dldHRleHQnLCAnc291cmNlcy91cmxfZm9yJywgJ2px dWVyeScsICd1bmRlcnNjb3JlJywKICAgJ3VuZGVyc2NvcmUuc3RyaW5nJywgJ3NvdXJjZXMvcGdh ZG1pbicsICdwZ2FkbWluLmJyb3dzZXInLAogICAncGdhZG1pbi5hbGVydGlmeWpzJywgJ3BnYWRt aW4uYmFja2Zvcm0nLCAncGdhZG1pbi5iYWNrZ3JpZCcsCiAgICdwZ2FkbWluLnRhYmxlcy5qcy9z aG93X2FkdmFuY2VkX3RhYicsCisgICdzb3VyY2VzL3RyZWUvbm9kZV9tZW51JywKICAgJ3BnYWRt aW4uYnJvd3Nlci5jb2xsZWN0aW9uJywgJ3BnYWRtaW4ubm9kZS5jb2x1bW4nLAogICAncGdhZG1p bi5ub2RlLmNvbnN0cmFpbnRzJywgJ3BnYWRtaW4uYnJvd3Nlci50YWJsZS5wYXJ0aXRpb24udXRp bHMnLAogXSwgZnVuY3Rpb24oCisgIHRhYmxlRnVuY3Rpb25zLAogICBnZXR0ZXh0LCB1cmxfZm9y LCAkLCBfLCBTLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIEFsZXJ0aWZ5LCBCYWNrZm9ybSwgQmFja2dy aWQsCi0gIFNob3dBZHZhbmNlZFRhYgorICBTaG93QWR2YW5jZWRUYWIsIHRyZWVOb2RlTWVudQog KSB7CiAKICAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ2NvbGwtdGFibGUnXSkgewpAQCAtMjYsNyAr MjksNiBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS50YWJsZScsIFsKIAogICBpZiAoIXBnQnJvd3Nl ci5Ob2Rlc1sndGFibGUnXSkgewogICAgIHBnQnJvd3Nlci5Ob2Rlc1sndGFibGUnXSA9IHBnQnJv d3Nlci5Ob2RlLmV4dGVuZCh7Ci0gICAgICBnZXRUcmVlTm9kZUhpZXJhcmNoeTogcGdCcm93c2Vy LnRhYmxlQ2hpbGRUcmVlTm9kZUhpZXJhcmNoeSwKICAgICAgIHR5cGU6ICd0YWJsZScsCiAgICAg ICBsYWJlbDogZ2V0dGV4dCgnVGFibGUnKSwKICAgICAgIGNvbGxlY3Rpb25fdHlwZTogJ2NvbGwt dGFibGUnLApAQCAtMTE4LDQ2ICsxMjAsMjEgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUudGFibGUn LCBbCiAgICAgICBjYWxsYmFja3M6IHsKICAgICAgICAgLyogRW5hYmxlIHRyaWdnZXIocykgb24g dGFibGUgKi8KICAgICAgICAgZW5hYmxlX3RyaWdnZXJzX29uX3RhYmxlOiBmdW5jdGlvbihhcmdz KSB7Ci0gICAgICAgICAgdmFyIHBhcmFtcyA9IHsnZW5hYmxlJzogdHJ1ZSB9OwotICAgICAgICAg IHRoaXMuY2FsbGJhY2tzLnNldF90cmlnZ2Vycy5hcHBseSh0aGlzLCBbYXJncywgcGFyYW1zXSk7 CisgICAgICAgICAgdGFibGVGdW5jdGlvbnMuZW5hYmxlVHJpZ2dlcnMoCisgICAgICAgICAgICBw Z0Jyb3dzZXIudHJlZU1lbnUsCisgICAgICAgICAgICBBbGVydGlmeSwKKyAgICAgICAgICAgIHRo aXMuZ2VuZXJhdGVfdXJsLmJpbmQodGhpcyksCisgICAgICAgICAgICBhcmdzCisgICAgICAgICAg KTsKICAgICAgICAgfSwKICAgICAgICAgLyogRGlzYWJsZSB0cmlnZ2VyKHMpIG9uIHRhYmxlICov CiAgICAgICAgIGRpc2FibGVfdHJpZ2dlcnNfb25fdGFibGU6IGZ1bmN0aW9uKGFyZ3MpIHsKLSAg ICAgICAgICB2YXIgcGFyYW1zID0geydlbmFibGUnOiBmYWxzZSB9OwotICAgICAgICAgIHRoaXMu Y2FsbGJhY2tzLnNldF90cmlnZ2Vycy5hcHBseSh0aGlzLCBbYXJncywgcGFyYW1zXSk7Ci0gICAg ICAgIH0sCi0gICAgICAgIHNldF90cmlnZ2VyczogZnVuY3Rpb24oYXJncywgcGFyYW1zKSB7Ci0g ICAgICAgICAgLy8gVGhpcyBmdW5jdGlvbiB3aWxsIHNlbmQgcmVxdWVzdCB0byBlbmFibGUgb3IK LSAgICAgICAgICAvLyBkaXNhYmxlIHRyaWdnZXJzIG9uIHRhYmxlIGxldmVsCi0gICAgICAgICAg dmFyIGlucHV0ID0gYXJncyB8fCB7fSwKLSAgICAgICAgICAgIG9iaiA9IHRoaXMsCi0gICAgICAg ICAgICB0ID0gcGdCcm93c2VyLnRyZWUsCi0gICAgICAgICAgICBpID0gaW5wdXQuaXRlbSB8fCB0 LnNlbGVjdGVkKCksCi0gICAgICAgICAgICBkID0gaSAmJiBpLmxlbmd0aCA9PSAxID8gdC5pdGVt RGF0YShpKSA6IHVuZGVmaW5lZDsKLSAgICAgICAgICBpZiAoIWQpCi0gICAgICAgICAgICByZXR1 cm4gZmFsc2U7Ci0KLSAgICAgICAgICAkLmFqYXgoewotICAgICAgICAgICAgdXJsOiBvYmouZ2Vu ZXJhdGVfdXJsKGksICdzZXRfdHJpZ2dlcicgLCBkLCB0cnVlKSwKLSAgICAgICAgICAgIHR5cGU6 J1BVVCcsCi0gICAgICAgICAgICBkYXRhOiBwYXJhbXMsCi0gICAgICAgICAgICBkYXRhVHlwZTog J2pzb24nLAotICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24ocmVzKSB7Ci0gICAgICAgICAg ICAgIGlmIChyZXMuc3VjY2VzcyA9PSAxKSB7Ci0gICAgICAgICAgICAgICAgQWxlcnRpZnkuc3Vj Y2VzcyhyZXMuaW5mbyk7Ci0gICAgICAgICAgICAgICAgdC51bmxvYWQoaSk7Ci0gICAgICAgICAg ICAgICAgdC5zZXRJbm9kZShpKTsKLSAgICAgICAgICAgICAgICB0LmRlc2VsZWN0KGkpOwotICAg ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICB0 LnNlbGVjdChpKTsKLSAgICAgICAgICAgICAgICB9LCAxMCk7Ci0gICAgICAgICAgICAgIH0KLSAg ICAgICAgICAgIH0sCi0gICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24oeGhyLCBzdGF0dXMsIGVy cm9yKSB7Ci0gICAgICAgICAgICAgIEFsZXJ0aWZ5LnBnUmVzcEVycm9yTm90aWZ5KHhociwgZXJy b3IpOwotICAgICAgICAgICAgICB0LnVubG9hZChpKTsKLSAgICAgICAgICAgIH0sCi0gICAgICAg ICAgfSk7CisgICAgICAgICAgdGFibGVGdW5jdGlvbnMuZGlzYWJsZVRyaWdnZXJzKAorICAgICAg ICAgICAgcGdCcm93c2VyLnRyZWVNZW51LAorICAgICAgICAgICAgQWxlcnRpZnksCisgICAgICAg ICAgICB0aGlzLmdlbmVyYXRlX3VybC5iaW5kKHRoaXMpLAorICAgICAgICAgICAgYXJncworICAg ICAgICAgICk7CiAgICAgICAgIH0sCiAgICAgICAgIC8qIFRydW5jYXRlIHRhYmxlICovCiAgICAg ICAgIHRydW5jYXRlX3RhYmxlOiBmdW5jdGlvbihhcmdzKSB7CkBAIC0xMjk5LDM0ICsxMjc2LDcg QEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUudGFibGUnLCBbCiAgICAgICAgICAgcmV0dXJuIGRhdGE7 CiAgICAgICAgIH0sCiAgICAgICB9KSwKLSAgICAgIGNhbkNyZWF0ZTogZnVuY3Rpb24oaXRlbURh dGEsIGl0ZW0sIGRhdGEpIHsKLSAgICAgICAgLy9JZiBjaGVjayBpcyBmYWxzZSB0aGVuICwgd2Ug d2lsbCBhbGxvdyBjcmVhdGUgbWVudQotICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmNoZWNrID09 IGZhbHNlKQotICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIHZhciB0ID0gcGdCcm93 c2VyLnRyZWUsIGkgPSBpdGVtLCBkID0gaXRlbURhdGE7Ci0gICAgICAgIC8vIFRvIGl0ZXJhdGUg b3ZlciB0cmVlIHRvIGNoZWNrIHBhcmVudCBub2RlCi0gICAgICAgIHdoaWxlIChpKSB7Ci0gICAg ICAgICAgLy8gSWYgaXQgaXMgc2NoZW1hIHRoZW4gYWxsb3cgdXNlciB0byBjcmVhdGUgdGFibGUK LSAgICAgICAgICBpZiAoXy5pbmRleE9mKFsnc2NoZW1hJ10sIGQuX3R5cGUpID4gLTEpCi0gICAg ICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICAgIGlmICgnY29sbC10YWJsZScgPT0gZC5f dHlwZSkgewotICAgICAgICAgICAgLy9DaGVjayBpZiB3ZSBhcmUgbm90IGNoaWxkIG9mIGNhdGFs b2cKLSAgICAgICAgICAgIHZhciBwcmV2X2kgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkp IDogbnVsbCwKLSAgICAgICAgICAgICAgcHJldl9kID0gcHJldl9pID8gdC5pdGVtRGF0YShwcmV2 X2kpIDogbnVsbDsKLSAgICAgICAgICAgIGlmKCBwcmV2X2QuX3R5cGUgPT0gJ2NhdGFsb2cnKSB7 Ci0gICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAg ICAgICBpID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7Ci0gICAgICAgICAg ZCA9IGkgPyB0Lml0ZW1EYXRhKGkpIDogbnVsbDsKLSAgICAgICAgfQotICAgICAgICAvLyBieSBk ZWZhdWx0IHdlIGRvIG5vdCB3YW50IHRvIGFsbG93IGNyZWF0ZSBtZW51Ci0gICAgICAgIHJldHVy biB0cnVlOwotICAgICAgfSwKKyAgICAgIGNhbkNyZWF0ZTogdHJlZU5vZGVNZW51LmNhbkNyZWF0 ZShwZ0Jyb3dzZXIsICdjb2xsLXRhYmxlJyksCiAgICAgICAvLyBDaGVjayB0byB3aGV0aGVyIHRh YmxlIGhhcyBkaXNhYmxlIHRyaWdnZXIocykKICAgICAgIGNhbkNyZWF0ZV93aXRoX3RyaWdnZXJf ZW5hYmxlOiBmdW5jdGlvbihpdGVtRGF0YSwgaXRlbSwgZGF0YSkgewogICAgICAgICBpZih0aGlz LmNhbkNyZWF0ZS5hcHBseSh0aGlzLCBbaXRlbURhdGEsIGl0ZW0sIGRhdGFdKSkgewpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL3RyaWdnZXJzL3N0YXRpYy9qcy90cmlnZ2VyLmpzIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L3RyaWdnZXJzL3N0YXRpYy9qcy90cmlnZ2VyLmpzCmluZGV4IGEyYzI3MTg4Li40YzI1ZTNlYSAx MDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RyaWdnZXJzL3N0YXRpYy9qcy90cmlnZ2VyLmpzCisrKyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3RhYmxlcy90cmlnZ2Vycy9zdGF0aWMvanMvdHJpZ2dlci5qcwpAQCAtMjksMTQgKzI5LDEy IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLnRyaWdnZXInLCBbCiAgICAgICAgIG5vZGU6ICd0cmln Z2VyJywKICAgICAgICAgbGFiZWw6IGdldHRleHQoJ1RyaWdnZXJzJyksCiAgICAgICAgIHR5cGU6 ICdjb2xsLXRyaWdnZXInLAotICAgICAgICBnZXRUcmVlTm9kZUhpZXJhcmNoeTogcGdCcm93c2Vy LnRhYmxlQ2hpbGRUcmVlTm9kZUhpZXJhcmNoeSwKICAgICAgICAgY29sdW1uczogWyduYW1lJywg J2Rlc2NyaXB0aW9uJ10sCiAgICAgICB9KTsKICAgfQogCiAgIGlmICghcGdCcm93c2VyLk5vZGVz Wyd0cmlnZ2VyJ10pIHsKICAgICBwZ0FkbWluLkJyb3dzZXIuTm9kZXNbJ3RyaWdnZXInXSA9IHBn QnJvd3Nlci5Ob2RlLmV4dGVuZCh7Ci0gICAgICBnZXRUcmVlTm9kZUhpZXJhcmNoeTogcGdCcm93 c2VyLnRhYmxlQ2hpbGRUcmVlTm9kZUhpZXJhcmNoeSwKICAgICAgIHBhcmVudF90eXBlOiBbJ3Rh YmxlJywgJ3ZpZXcnLCAncGFydGl0aW9uJ10sCiAgICAgICBjb2xsZWN0aW9uX3R5cGU6IFsnY29s bC10YWJsZScsICdjb2xsLXZpZXcnXSwKICAgICAgIHR5cGU6ICd0cmlnZ2VyJywKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3R5cGVzL3N0YXRpYy9qcy90eXBlLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvc3RhdGljL2pzL3R5cGUu anMKaW5kZXggYzFjMjQ4NjEuLjI4YTIyM2FkIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90eXBlcy9zdGF0aWMv anMvdHlwZS5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90eXBlcy9zdGF0aWMvanMvdHlwZS5qcwpAQCAtMSw4ICsxLDkg QEAKIGRlZmluZSgncGdhZG1pbi5ub2RlLnR5cGUnLCBbCiAgICdzb3VyY2VzL2dldHRleHQnLCAn c291cmNlcy91cmxfZm9yJywgJ2pxdWVyeScsICd1bmRlcnNjb3JlJywKICAgJ3NvdXJjZXMvcGdh ZG1pbicsICdwZ2FkbWluLmJyb3dzZXInLCAncGdhZG1pbi5iYWNrZm9ybScsCi0gICdwZ2FkbWlu LmJhY2tncmlkJywgJ3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uJywKLV0sIGZ1bmN0aW9uKGdl dHRleHQsIHVybF9mb3IsICQsIF8sIHBnQWRtaW4sIHBnQnJvd3NlciwgQmFja2Zvcm0sIEJhY2tn cmlkKSB7CisgICdwZ2FkbWluLmJhY2tncmlkJywgJ3NvdXJjZXMvdHJlZS9ub2RlX21lbnUnLCAn cGdhZG1pbi5icm93c2VyLmNvbGxlY3Rpb24nLAorXSwgZnVuY3Rpb24oZ2V0dGV4dCwgdXJsX2Zv ciwgJCwgXywgcGdBZG1pbiwgcGdCcm93c2VyLCBCYWNrZm9ybSwgQmFja2dyaWQsCisgICB0cmVl Tm9kZU1lbnUpIHsKIAogICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1snY29sbC10eXBlJ10pIHsKICAg ICBwZ0Jyb3dzZXIuTm9kZXNbJ2NvbGwtdHlwZSddID0KQEAgLTkxMSwzNCArOTEyLDcgQEAgZGVm aW5lKCdwZ2FkbWluLm5vZGUudHlwZScsIFsKICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg ICAgICB9LAogICAgICAgfSksCi0gICAgICBjYW5DcmVhdGU6IGZ1bmN0aW9uKGl0ZW1EYXRhLCBp dGVtLCBkYXRhKSB7Ci0gICAgICAgIC8vSWYgY2hlY2sgaXMgZmFsc2UgdGhlbiAsIHdlIHdpbGwg YWxsb3cgY3JlYXRlIG1lbnUKLSAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS5jaGVjayA9PSBmYWxz ZSkKLSAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICB2YXIgdCA9IHBnQnJvd3Nlci50 cmVlLCBpID0gaXRlbSwgZCA9IGl0ZW1EYXRhOwotICAgICAgICAvLyBUbyBpdGVyYXRlIG92ZXIg dHJlZSB0byBjaGVjayBwYXJlbnQgbm9kZQotICAgICAgICB3aGlsZSAoaSkgewotICAgICAgICAg IC8vIElmIGl0IGlzIHNjaGVtYSB0aGVuIGFsbG93IHVzZXIgdG8gY3JlYXRlIHRhYmxlCi0gICAg ICAgICAgaWYgKF8uaW5kZXhPZihbJ3NjaGVtYSddLCBkLl90eXBlKSA+IC0xKQotICAgICAgICAg ICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgICBpZiAoJ2NvbGwtdHlwZScgPT0gZC5fdHlwZSkg ewotICAgICAgICAgICAgLy9DaGVjayBpZiB3ZSBhcmUgbm90IGNoaWxkIG9mIGNhdGFsb2cKLSAg ICAgICAgICAgIHZhciBwcmV2X2kgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVs bCwKLSAgICAgICAgICAgICAgcHJldl9kID0gcHJldl9pID8gdC5pdGVtRGF0YShwcmV2X2kpIDog bnVsbDsKLSAgICAgICAgICAgIGlmKCBwcmV2X2QuX3R5cGUgPT0gJ2NhdGFsb2cnKSB7Ci0gICAg ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg ICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICBp ID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7Ci0gICAgICAgICAgZCA9IGkg PyB0Lml0ZW1EYXRhKGkpIDogbnVsbDsKLSAgICAgICAgfQotICAgICAgICAvLyBieSBkZWZhdWx0 IHdlIGRvIG5vdCB3YW50IHRvIGFsbG93IGNyZWF0ZSBtZW51Ci0gICAgICAgIHJldHVybiB0cnVl OwotICAgICAgfSwKKyAgICAgIGNhbkNyZWF0ZTogdHJlZU5vZGVNZW51LmNhbkNyZWF0ZShwZ0Jy b3dzZXIsICdjb2xsLXR5cGUnKSwKICAgICB9KTsKICAgfQogICByZXR1cm4gcGdCcm93c2VyLk5v ZGVzWyd0eXBlJ107CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy9zdGF0aWMvanMvbXZpZXcuanMgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy92aWV3cy9zdGF0aWMvanMvbXZpZXcuanMKaW5kZXggMDczZWY1Y2IuLmFlM2Q1NWMxIDEwMDY0 NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy92aWV3cy9zdGF0aWMvanMvbXZpZXcuanMKKysrIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3Mvc3RhdGlj L2pzL212aWV3LmpzCkBAIC0xLDggKzEsMTAgQEAKIGRlZmluZSgncGdhZG1pbi5ub2RlLm12aWV3 JywgWwogICAnc291cmNlcy9nZXR0ZXh0JywgJ3NvdXJjZXMvdXJsX2ZvcicsICdqcXVlcnknLCAn dW5kZXJzY29yZScsCiAgICdzb3VyY2VzL3BnYWRtaW4nLCAncGdhZG1pbi5hbGVydGlmeWpzJywg J3BnYWRtaW4uYnJvd3NlcicsCi0gICdwZ2FkbWluLmJhY2tmb3JtJywgJ3BnYWRtaW4uYnJvd3Nl ci5zZXJ2ZXIucHJpdmlsZWdlJywKLV0sIGZ1bmN0aW9uKGdldHRleHQsIHVybF9mb3IsICQsIF8s IHBnQWRtaW4sIEFsZXJ0aWZ5LCBwZ0Jyb3dzZXIsIEJhY2tmb3JtKSB7CisgICdwZ2FkbWluLmJh Y2tmb3JtJywgJ3NvdXJjZXMvdHJlZS9ub2RlX21lbnUnLAorICAncGdhZG1pbi5icm93c2VyLnNl cnZlci5wcml2aWxlZ2UnLAorXSwgZnVuY3Rpb24oZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgcGdB ZG1pbiwgQWxlcnRpZnksIHBnQnJvd3NlciwgQmFja2Zvcm0sCisgIHRyZWVOb2RlTWVudSkgewog CiAgIC8qKgogICAgIENyZWF0ZSBhbmQgYWRkIGEgdmlldyBjb2xsZWN0aW9uIGludG8gbm9kZXMK QEAgLTI0MCwzOSArMjQyLDcgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUubXZpZXcnLCBbCiAgICAg ICAgIFNob3cgb3IgaGlkZSBjcmVhdGUgdmlldyBtZW51IG9wdGlvbiBvbiBwYXJlbnQgbm9kZQog ICAgICAgICBhbmQgaGlkZSBmb3Igc3lzdGVtIHZpZXcgaW4gY2F0YWxvZ3MuCiAgICAgICAgKi8K LSAgICAgIGNhbkNyZWF0ZTogZnVuY3Rpb24oaXRlbURhdGEsIGl0ZW0sIGRhdGEpIHsKLQotICAg ICAgICAvLyBJZiBjaGVjayBpcyBmYWxzZSB0aGVuLCB3ZSB3aWxsIGFsbG93IGNyZWF0ZSBtZW51 Ci0gICAgICAgIGlmIChkYXRhICYmIGRhdGEuY2hlY2sgPT09IGZhbHNlKQotICAgICAgICAgIHJl dHVybiB0cnVlOwotCi0gICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRyZWUsIGkgPSBpdGVtLCBk ID0gaXRlbURhdGE7Ci0KLSAgICAgICAgLy8gVG8gaXRlcmF0ZSBvdmVyIHRyZWUgdG8gY2hlY2sg cGFyZW50IG5vZGUKLSAgICAgICAgd2hpbGUgKGkpIHsKLQotICAgICAgICAgIC8vIElmIGl0IGlz IHNjaGVtYSB0aGVuIGFsbG93IHVzZXIgdG8gY3JlYXRlIHZpZXcKLSAgICAgICAgICBpZiAoXy5p bmRleE9mKFsnc2NoZW1hJ10sIGQuX3R5cGUpID4gLTEpCi0gICAgICAgICAgICByZXR1cm4gdHJ1 ZTsKLQotICAgICAgICAgIGlmICgnY29sbC1tdmlldycgPT0gZC5fdHlwZSkgewotCi0gICAgICAg ICAgICAvLyBDaGVjayBpZiB3ZSBhcmUgbm90IGNoaWxkIG9mIHZpZXcKLSAgICAgICAgICAgIHZh ciBwcmV2X2kgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbCwKLSAgICAgICAg ICAgICAgcHJldl9kID0gcHJldl9pID8gdC5pdGVtRGF0YShwcmV2X2kpIDogbnVsbDsKLSAgICAg ICAgICAgIGlmKCBwcmV2X2QuX3R5cGUgPT0gJ2NhdGFsb2cnKSB7Ci0gICAgICAgICAgICAgIHJl dHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgIHJldHVybiB0 cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICBpID0gdC5oYXNQYXJl bnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7Ci0gICAgICAgICAgZCA9IGkgPyB0Lml0ZW1EYXRh KGkpIDogbnVsbDsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIGJ5IGRlZmF1bHQgd2UgZG8gbm90 IHdhbnQgdG8gYWxsb3cgY3JlYXRlIG1lbnUKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9 LAorICAgICAgY2FuQ3JlYXRlOiB0cmVlTm9kZU1lbnUuY2FuQ3JlYXRlKHBnQnJvd3NlciwgJ2Nv bGwtbXZpZXcnKSwKICAgICAgIHJlZnJlc2hfbXZpZXc6IGZ1bmN0aW9uKGFyZ3MpIHsKICAgICAg ICAgdmFyIGlucHV0ID0gYXJncyB8fCB7fSwKICAgICAgICAgICBvYmogPSB0aGlzLApkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdmlld3Mvc3RhdGljL2pzL3ZpZXcuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy9zdGF0aWMvanMvdmll dy5qcwppbmRleCA1NzU1YTUwOS4uYmQ5ZTFmZGEgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3N0YXRp Yy9qcy92aWV3LmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3N0YXRpYy9qcy92aWV3LmpzCkBAIC0xLDkgKzEs MTEgQEAKIGRlZmluZSgncGdhZG1pbi5ub2RlLnZpZXcnLCBbCiAgICdzb3VyY2VzL2dldHRleHQn LAogICAnc291cmNlcy91cmxfZm9yJywgJ2pxdWVyeScsICd1bmRlcnNjb3JlJywgJ3NvdXJjZXMv cGdhZG1pbicsCi0gICdwZ2FkbWluLmJyb3dzZXInLCAncGdhZG1pbi5iYWNrZm9ybScsICdwZ2Fk bWluLmJyb3dzZXIuc2VydmVyLnByaXZpbGVnZScsCisgICdwZ2FkbWluLmJyb3dzZXInLCAncGdh ZG1pbi5iYWNrZm9ybScsCisgICdzb3VyY2VzL3RyZWUvbm9kZV9tZW51JywgJ3BnYWRtaW4uYnJv d3Nlci5zZXJ2ZXIucHJpdmlsZWdlJywKICAgJ3BnYWRtaW4ubm9kZS5ydWxlJywKLV0sIGZ1bmN0 aW9uKGdldHRleHQsIHVybF9mb3IsICQsIF8sIHBnQWRtaW4sIHBnQnJvd3NlciwgQmFja2Zvcm0p IHsKK10sIGZ1bmN0aW9uKGdldHRleHQsIHVybF9mb3IsICQsIF8sIHBnQWRtaW4sIHBnQnJvd3Nl ciwgQmFja2Zvcm0sCisgIHRyZWVOb2RlTWVudSkgewogCiAgIC8qKgogICAgIENyZWF0ZSBhbmQg YWRkIGEgdmlldyBjb2xsZWN0aW9uIGludG8gbm9kZXMKQEAgLTIwMiw0MCArMjA0LDcgQEAgZGVm aW5lKCdwZ2FkbWluLm5vZGUudmlldycsIFsKICAgICAgICAgU2hvdyBvciBoaWRlIGNyZWF0ZSB2 aWV3IG1lbnUgb3B0aW9uIG9uIHBhcmVudCBub2RlCiAgICAgICAgIGFuZCBoaWRlIGZvciBzeXN0 ZW0gdmlldyBpbiBjYXRhbG9ncy4KICAgICAgICAgKi8KLSAgICAgIGNhbkNyZWF0ZTogZnVuY3Rp b24oaXRlbURhdGEsIGl0ZW0sIGRhdGEpIHsKLQotICAgICAgICAvLyBJZiBjaGVjayBpcyBmYWxz ZSB0aGVuLCB3ZSB3aWxsIGFsbG93IGNyZWF0ZSBtZW51Ci0gICAgICAgIGlmIChkYXRhICYmIGRh dGEuY2hlY2sgPT0gZmFsc2UpCi0gICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgdmFy IHQgPSBwZ0Jyb3dzZXIudHJlZSwgaSA9IGl0ZW0sIGQgPSBpdGVtRGF0YTsKLQotICAgICAgICAv LyBUbyBpdGVyYXRlIG92ZXIgdHJlZSB0byBjaGVjayBwYXJlbnQgbm9kZQotICAgICAgICB3aGls ZSAoaSkgewotCi0gICAgICAgICAgLy8gSWYgaXQgaXMgc2NoZW1hIHRoZW4gYWxsb3cgdXNlciB0 byBjcmVhdGUgdmlldwotICAgICAgICAgIGlmIChfLmluZGV4T2YoWydzY2hlbWEnXSwgZC5fdHlw ZSkgPiAtMSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgICAgaWYgKCdjb2xs LXZpZXcnID09IGQuX3R5cGUpIHsKLQotICAgICAgICAgICAgLy8gQ2hlY2sgaWYgd2UgYXJlIG5v dCBjaGlsZCBvZiB2aWV3Ci0gICAgICAgICAgICB2YXIgcHJldl9pID0gdC5oYXNQYXJlbnQoaSkg PyB0LnBhcmVudChpKSA6IG51bGwsCi0gICAgICAgICAgICAgIHByZXZfZCA9IHByZXZfaSA/IHQu aXRlbURhdGEocHJldl9pKSA6IG51bGw7Ci0gICAgICAgICAgICBpZiggcHJldl9kLl90eXBlID09 ICdjYXRhbG9nJykgewotICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9 IGVsc2UgewotICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAg ICAgICB9Ci0gICAgICAgICAgaSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkgOiBudWxs OwotICAgICAgICAgIGQgPSBpID8gdC5pdGVtRGF0YShpKSA6IG51bGw7Ci0gICAgICAgIH0KLQot ICAgICAgICAvLyBieSBkZWZhdWx0IHdlIGRvIG5vdCB3YW50IHRvIGFsbG93IGNyZWF0ZSBtZW51 Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICB9LAorICAgICAgY2FuQ3JlYXRlOiB0cmVl Tm9kZU1lbnUuY2FuQ3JlYXRlKHBnQnJvd3NlciwgJ2NvbGwtdmlldycpLAogICAgIH0pOwogICB9 CiAKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL25vZGUuanMgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9ub2RlLmpzCmluZGV4IGFkNTgyNDgzLi4zYmFm NTU0YSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvbm9kZS5qcwor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9ub2RlLmpzCkBAIC0xLDkgKzEsMTIg QEAKIGRlZmluZSgncGdhZG1pbi5icm93c2VyLm5vZGUnLCBbCisgICdzb3VyY2VzL3RyZWUvcGdh ZG1pbl90cmVlX25vZGUnLAogICAnc291cmNlcy9nZXR0ZXh0JywgJ2pxdWVyeScsICd1bmRlcnNj b3JlJywgJ3VuZGVyc2NvcmUuc3RyaW5nJywgJ3NvdXJjZXMvcGdhZG1pbicsCiAgICdwZ2FkbWlu LmJyb3dzZXIubWVudScsICdiYWNrYm9uZScsICdwZ2FkbWluLmFsZXJ0aWZ5anMnLCAncGdhZG1p bi5icm93c2VyLmRhdGFtb2RlbCcsCiAgICdiYWNrZm9ybScsICdzb3VyY2VzL2Jyb3dzZXIvZ2Vu ZXJhdGVfdXJsJywgJ3NvdXJjZXMvdXRpbHMnLCAncGdhZG1pbi5icm93c2VyLnV0aWxzJywKICAg J3BnYWRtaW4uYmFja2Zvcm0nLAotXSwgZnVuY3Rpb24oZ2V0dGV4dCwgJCwgXywgUywgcGdBZG1p biwgTWVudSwgQmFja2JvbmUsIEFsZXJ0aWZ5LCBwZ0Jyb3dzZXIsIEJhY2tmb3JtLCBnZW5lcmF0 ZVVybCwgY29tbW9uVXRpbHMpIHsKK10sIGZ1bmN0aW9uKAorICBwZ2FkbWluVHJlZU5vZGUsCisg IGdldHRleHQsICQsIF8sIFMsIHBnQWRtaW4sIE1lbnUsIEJhY2tib25lLCBBbGVydGlmeSwgcGdC cm93c2VyLCBCYWNrZm9ybSwgZ2VuZXJhdGVVcmwsIGNvbW1vblV0aWxzKSB7CiAKICAgdmFyIHdj RG9ja2VyID0gd2luZG93LndjRG9ja2VyLAogICAgIGtleUNvZGUgPSB7CkBAIC0xNTY2LDcgKzE1 NjksNiBAQCBkZWZpbmUoJ3BnYWRtaW4uYnJvd3Nlci5ub2RlJywgWwogICAgICAqIGRlcGVuZHMs IHN0YXRpc3RpY3MKICAgICAgKi8KICAgICBnZW5lcmF0ZV91cmw6IGZ1bmN0aW9uKGl0ZW0sIHR5 cGUsIGQsIHdpdGhfaWQsIGluZm8pIHsKLQogICAgICAgdmFyIG9wVVJMID0gewogICAgICAgICAg ICdjcmVhdGUnOiAnb2JqJywKICAgICAgICAgICAnZHJvcCc6ICdvYmonLApAQCAtMTYwOCwyNCAr MTYxMCw3IEBAIGRlZmluZSgncGdhZG1pbi5icm93c2VyLm5vZGUnLCBbCiAgICAgQ29sbGVjdGlv bjogcGdCcm93c2VyLkRhdGFDb2xsZWN0aW9uLAogICAgIC8vIEJhc2UgY2xhc3MgZm9yIE5vZGUg RGF0YSBNb2RlbAogICAgIE1vZGVsOiBwZ0Jyb3dzZXIuRGF0YU1vZGVsLAotICAgIGdldFRyZWVO b2RlSGllcmFyY2h5OiBmdW5jdGlvbihpKSB7Ci0gICAgICB2YXIgaWR4ID0gMCwKLSAgICAgICAg cmVzID0ge30sCi0gICAgICAgIHQgPSBwZ0Jyb3dzZXIudHJlZSwKLSAgICAgICAgZDsKLSAgICAg IGRvIHsKLSAgICAgICAgZCA9IHQuaXRlbURhdGEoaSk7Ci0gICAgICAgIGlmIChkLl90eXBlIGlu IHBnQnJvd3Nlci5Ob2RlcyAmJiBwZ0Jyb3dzZXIuTm9kZXNbZC5fdHlwZV0uaGFzSWQpIHsKLSAg ICAgICAgICByZXNbZC5fdHlwZV0gPSBfLmV4dGVuZCh7fSwgZCwgewotICAgICAgICAgICAgJ3By aW9yaXR5JzogaWR4LAotICAgICAgICAgIH0pOwotICAgICAgICAgIGlkeCAtPSAxOwotICAgICAg ICB9Ci0gICAgICAgIGkgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbDsKLSAg ICAgIH0gd2hpbGUgKGkpOwotCi0gICAgICByZXR1cm4gcmVzOwotICAgIH0sCisgICAgZ2V0VHJl ZU5vZGVIaWVyYXJjaHk6IHBnYWRtaW5UcmVlTm9kZS5nZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21J ZGVudGlmaWVyLmJpbmQocGdCcm93c2VyKSwKICAgICBjYWNoZTogZnVuY3Rpb24odXJsLCBub2Rl X2luZm8sIGxldmVsLCBkYXRhKSB7CiAgICAgICB2YXIgY2FjaGVkID0gdGhpcy5jYWNoZWQgPSB0 aGlzLmNhY2hlZCB8fCB7fSwKICAgICAgICAgaGFzaCA9IHVybCwKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL3N0YXRpYy9qcy9hbGVydGlmeS9kaWFsb2cuanMgYi93ZWIvcGdhZG1pbi9zdGF0aWMv anMvYWxlcnRpZnkvZGlhbG9nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw Li41YTg2NDZmOQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9hbGVy dGlmeS9kaWFsb2cuanMKQEAgLTAsMCArMSwxMjkgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0FkbWluIDQg LSBQb3N0Z3JlU1FMIFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhl IHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1 bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworaW1wb3J0IGdldHRleHQg ZnJvbSAnLi4vZ2V0dGV4dCc7CitpbXBvcnQge3NwcmludGZ9IGZyb20gJ3NwcmludGYtanMnOwor aW1wb3J0IHtEaWFsb2dGYWN0b3J5fSBmcm9tICcuL2RpYWxvZ19mYWN0b3J5JzsKK2ltcG9ydCBC YWNrZm9ybSBmcm9tICcuLi9iYWNrZm9ybS5wZ2FkbWluJzsKK2ltcG9ydCB7Z2V0VHJlZU5vZGVI aWVyYXJjaHlGcm9tSWRlbnRpZmllcn0gZnJvbSAnLi4vdHJlZS9wZ2FkbWluX3RyZWVfbm9kZSc7 CisKKy8qKgorICogVGhpcyBjbGFzcyBjYW4gYmUgZXh0ZW5kZWQgdG8gY3JlYXRlIG5ldyBkaWFs b2cgYm94ZXMuCisgKiBFeGFtcGxlcyBvZiB0aGlzIGNhbiBiZSBmb3VuZCBpbjoKKyAqIGB3ZWIv cGdhZG1pbi9zdGF0aWMvanMvYmFja3VwL2JhY2t1cF9kaWFsb2cuanNgCisgKgorICogRG8gbm90 IGZvcmdldCB0byBhZGQgdGhlIG5ldyBEaWFsb2cgdHlwZSB0byB0aGUgYERpYWxvZ0ZhY3Rvcnlg CisgKi8KK2V4cG9ydCBjbGFzcyBEaWFsb2cgeworICBjb25zdHJ1Y3RvcihlcnJvckFsZXJ0VGl0 bGUsCisgICAgICAgICAgICAgIGRpYWxvZ0NvbnRhaW5lclNlbGVjdG9yLAorICAgICAgICAgICAg ICBwZ0Jyb3dzZXIsICQsIGFsZXJ0aWZ5LCBEaWFsb2dNb2RlbCwKKyAgICAgICAgICAgICAgYmFj a2Zvcm0gPSBCYWNrZm9ybSkgeworICAgIHRoaXMuZXJyb3JBbGVydFRpdGxlID0gZXJyb3JBbGVy dFRpdGxlOworICAgIHRoaXMuYWxlcnRpZnkgPSBhbGVydGlmeTsKKyAgICB0aGlzLnBnQnJvd3Nl ciA9IHBnQnJvd3NlcjsKKyAgICB0aGlzLmpxdWVyeSA9ICQ7CisgICAgdGhpcy5kaWFsb2dNb2Rl bCA9IERpYWxvZ01vZGVsOworICAgIHRoaXMuYmFja2Zvcm0gPSBiYWNrZm9ybTsKKyAgICB0aGlz LmRpYWxvZ0NvbnRhaW5lclNlbGVjdG9yID0gZGlhbG9nQ29udGFpbmVyU2VsZWN0b3I7CisgIH0K KworICByZXRyaWV2ZUFuY2VzdG9yT2ZUeXBlU2VydmVyKGl0ZW0pIHsKKyAgICBsZXQgc2VydmVy SW5mb3JtYXRpb24gPSBudWxsOworICAgIGxldCBhY2lUcmVlSXRlbSA9IGl0ZW0gfHwgdGhpcy5w Z0Jyb3dzZXIudHJlZU1lbnUuc2VsZWN0ZWQoKTsKKyAgICBsZXQgdHJlZU5vZGUgPSB0aGlzLnBn QnJvd3Nlci50cmVlTWVudS5maW5kTm9kZUJ5RG9tRWxlbWVudChhY2lUcmVlSXRlbSk7CisKKyAg ICB3aGlsZSAodHJlZU5vZGUpIHsKKyAgICAgIGNvbnN0IG5vZGVfZGF0YSA9IHRyZWVOb2RlLmdl dERhdGEoKTsKKyAgICAgIGlmIChub2RlX2RhdGEuX3R5cGUgPT09ICdzZXJ2ZXInKSB7CisgICAg ICAgIHNlcnZlckluZm9ybWF0aW9uID0gbm9kZV9kYXRhOworICAgICAgICBicmVhazsKKyAgICAg IH0KKworICAgICAgaWYgKHRyZWVOb2RlLmhhc1BhcmVudCgpKSB7CisgICAgICAgIHRyZWVOb2Rl ID0gdHJlZU5vZGUucGFyZW50KCk7CisgICAgICB9IGVsc2UgeworICAgICAgICB0aGlzLmFsZXJ0 aWZ5LmFsZXJ0KAorICAgICAgICAgIGdldHRleHQodGhpcy5lcnJvckFsZXJ0VGl0bGUpLAorICAg ICAgICAgIGdldHRleHQoJ1BsZWFzZSBzZWxlY3Qgc2VydmVyIG9yIGNoaWxkIG5vZGUgZnJvbSB0 aGUgYnJvd3NlciB0cmVlLicpCisgICAgICAgICk7CisgICAgICAgIGJyZWFrOworICAgICAgfQor ICAgIH0KKyAgICByZXR1cm4gc2VydmVySW5mb3JtYXRpb247CisgIH0KKworICBoYXNCaW5hcmll c0NvbmZpZ3VyYXRpb24oc2VydmVySW5mb3JtYXRpb24pIHsKKyAgICBjb25zdCBtb2R1bGUgPSAn cGF0aHMnOworICAgIGxldCBwcmVmZXJlbmNlX25hbWUgPSAncGdfYmluX2Rpcic7CisgICAgbGV0 IG1zZyA9IGdldHRleHQoJ1BsZWFzZSBjb25maWd1cmUgdGhlIFBvc3RncmVTUUwgQmluYXJ5IFBh dGggaW4gdGhlIFByZWZlcmVuY2VzIGRpYWxvZy4nKTsKKworICAgIGlmICgoc2VydmVySW5mb3Jt YXRpb24udHlwZSAmJiBzZXJ2ZXJJbmZvcm1hdGlvbi50eXBlID09PSAncHBhcycpIHx8CisgICAg ICBzZXJ2ZXJJbmZvcm1hdGlvbi5zZXJ2ZXJfdHlwZSA9PT0gJ3BwYXMnKSB7CisgICAgICBwcmVm ZXJlbmNlX25hbWUgPSAncHBhc19iaW5fZGlyJzsKKyAgICAgIG1zZyA9IGdldHRleHQoJ1BsZWFz ZSBjb25maWd1cmUgdGhlIEVEQiBBZHZhbmNlZCBTZXJ2ZXIgQmluYXJ5IFBhdGggaW4gdGhlIFBy ZWZlcmVuY2VzIGRpYWxvZy4nKTsKKyAgICB9CisgICAgY29uc3QgcHJlZmVyZW5jZSA9IHRoaXMu cGdCcm93c2VyLmdldF9wcmVmZXJlbmNlKG1vZHVsZSwgcHJlZmVyZW5jZV9uYW1lKTsKKworICAg IGlmIChwcmVmZXJlbmNlKSB7CisgICAgICBpZiAoIXByZWZlcmVuY2UudmFsdWUpIHsKKyAgICAg ICAgdGhpcy5hbGVydGlmeS5hbGVydChnZXR0ZXh0KCdDb25maWd1cmF0aW9uIHJlcXVpcmVkJyks IG1zZyk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAg ICAgdGhpcy5hbGVydGlmeS5hbGVydCgKKyAgICAgICAgZ2V0dGV4dCh0aGlzLmVycm9yQWxlcnRU aXRsZSksCisgICAgICAgIHNwcmludGYoZ2V0dGV4dCgnRmFpbGVkIHRvIGxvYWQgcHJlZmVyZW5j ZSAlcyBvZiBtb2R1bGUgJXMnKSwgcHJlZmVyZW5jZV9uYW1lLCBtb2R1bGUpCisgICAgICApOwor ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorCisgIGRp YWxvZ05hbWUoKSB7CisgICAgcmV0dXJuIHVuZGVmaW5lZDsKKyAgfQorCisgIGNyZWF0ZU9yR2V0 RGlhbG9nKGRpYWxvZ1RpdGxlLCB0eXBlT2ZEaWFsb2cpIHsKKyAgICBjb25zdCBkaWFsb2dOYW1l ID0gdGhpcy5kaWFsb2dOYW1lKHR5cGVPZkRpYWxvZyk7CisKKyAgICBpZiAoIXRoaXMuYWxlcnRp ZnlbZGlhbG9nTmFtZV0pIHsKKyAgICAgIGNvbnN0IHNlbGYgPSB0aGlzOworICAgICAgdGhpcy5h bGVydGlmeS5kaWFsb2coZGlhbG9nTmFtZSwgZnVuY3Rpb24gZmFjdG9yeSgpIHsKKyAgICAgICAg cmV0dXJuIHNlbGYuZGlhbG9nRmFjdG9yeShkaWFsb2dUaXRsZSwgdHlwZU9mRGlhbG9nKTsKKyAg ICAgIH0pOworICAgIH0KKyAgICByZXR1cm4gdGhpcy5hbGVydGlmeVtkaWFsb2dOYW1lXTsKKyAg fQorCisgIGRpYWxvZ0ZhY3RvcnkoZGlhbG9nVGl0bGUsIHR5cGVPZkRpYWxvZykgeworICAgIGNv bnN0IGZhY3RvcnkgPSBuZXcgRGlhbG9nRmFjdG9yeSgKKyAgICAgIHRoaXMucGdCcm93c2VyLAor ICAgICAgdGhpcy5qcXVlcnksCisgICAgICB0aGlzLmFsZXJ0aWZ5LAorICAgICAgdGhpcy5kaWFs b2dNb2RlbCwKKyAgICAgIHRoaXMuYmFja2Zvcm0sCisgICAgICB0aGlzLmRpYWxvZ0NvbnRhaW5l clNlbGVjdG9yKTsKKyAgICByZXR1cm4gZmFjdG9yeS5jcmVhdGUoZGlhbG9nVGl0bGUsIHR5cGVP ZkRpYWxvZyk7CisgIH0KKworICBjYW5FeGVjdXRlT25DdXJyZW50RGF0YWJhc2UoYWNpVHJlZUl0 ZW0pIHsKKyAgICBjb25zdCB0cmVlSW5mbyA9IGdldFRyZWVOb2RlSGllcmFyY2h5RnJvbUlkZW50 aWZpZXIuYXBwbHkodGhpcy5wZ0Jyb3dzZXIsIFthY2lUcmVlSXRlbV0pOworCisgICAgaWYgKHRy ZWVJbmZvLmRhdGFiYXNlICYmIHRyZWVJbmZvLmRhdGFiYXNlLl9sYWJlbC5pbmRleE9mKCc9Jykg Pj0gMCkgeworICAgICAgdGhpcy5hbGVydGlmeS5hbGVydCgKKyAgICAgICAgZ2V0dGV4dCh0aGlz LmVycm9yQWxlcnRUaXRsZSksCisgICAgICAgIGdldHRleHQoJ0RhdGFiYXNlcyB3aXRoID0gc3lt Ym9scyBpbiB0aGUgbmFtZSBjYW5ub3QgYmUgYmFja2VkIHVwIG9yIHJlc3RvcmVkIHVzaW5nIHRo aXMgdXRpbGl0eS4nKQorICAgICAgKTsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg ICByZXR1cm4gdHJ1ZTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pz L2FsZXJ0aWZ5L2RpYWxvZ19mYWN0b3J5LmpzIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2FsZXJ0 aWZ5L2RpYWxvZ19mYWN0b3J5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw Li41MDAxNDBiOAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9hbGVy dGlmeS9kaWFsb2dfZmFjdG9yeS5qcwpAQCAtMCwwICsxLDUyIEBACisvLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdB ZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIw MTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVs ZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2ltcG9ydCAq IGFzIEJhY2t1cERpYWxvZyBmcm9tICcuLi8uLi8uLi90b29scy9iYWNrdXAvc3RhdGljL2pzL2Jh Y2t1cF9kaWFsb2dfd3JhcHBlcic7CitpbXBvcnQge1Jlc3RvcmVEaWFsb2dXcmFwcGVyfSBmcm9t ICcuLi8uLi8uLi90b29scy9yZXN0b3JlL3N0YXRpYy9qcy9yZXN0b3JlX2RpYWxvZ193cmFwcGVy JzsKKworZXhwb3J0IGNsYXNzIERpYWxvZ0ZhY3RvcnkgeworICBjb25zdHJ1Y3RvcihwZ0Jyb3dz ZXIsICQsCisgICAgICAgICAgICAgIGFsZXJ0aWZ5LCBEaWFsb2dNb2RlbCwKKyAgICAgICAgICAg ICAgYmFja2Zvcm0sIGRpYWxvZ0NvbnRhaW5lclNlbGVjdG9yKSB7CisgICAgdGhpcy5wZ0Jyb3dz ZXIgPSBwZ0Jyb3dzZXI7CisgICAgdGhpcy5qcXVlcnkgPSAkOworICAgIHRoaXMuYWxlcnRpZnkg PSBhbGVydGlmeTsKKyAgICB0aGlzLmRpYWxvZ01vZGVsID0gRGlhbG9nTW9kZWw7CisgICAgdGhp cy5iYWNrZm9ybSA9IGJhY2tmb3JtOworICAgIHRoaXMuZGlhbG9nQ29udGFpbmVyU2VsZWN0b3Ig PSBkaWFsb2dDb250YWluZXJTZWxlY3RvcjsKKyAgfQorCisgIGNyZWF0ZShkaWFsb2dUaXRsZSwg dHlwZU9mRGlhbG9nKSB7CisgICAgaWYgKHR5cGVPZkRpYWxvZyA9PT0gJ3Jlc3RvcmUnKSB7Cisg ICAgICByZXR1cm4gdGhpcy5jcmVhdGVSZXN0b3JlRGlhbG9nKGRpYWxvZ1RpdGxlLCB0eXBlT2ZE aWFsb2cpOworICAgIH0gZWxzZSB7CisgICAgICByZXR1cm4gdGhpcy5jcmVhdGVCYWNrdXBEaWFs b2coZGlhbG9nVGl0bGUsIHR5cGVPZkRpYWxvZyk7CisgICAgfQorICB9CisKKyAgY3JlYXRlUmVz dG9yZURpYWxvZyhkaWFsb2dUaXRsZSwgdHlwZU9mRGlhbG9nKSB7CisgICAgcmV0dXJuIG5ldyBS ZXN0b3JlRGlhbG9nV3JhcHBlcigKKyAgICAgIHRoaXMuZGlhbG9nQ29udGFpbmVyU2VsZWN0b3Is IGRpYWxvZ1RpdGxlLCB0eXBlT2ZEaWFsb2csCisgICAgICB0aGlzLmpxdWVyeSwKKyAgICAgIHRo aXMucGdCcm93c2VyLAorICAgICAgdGhpcy5hbGVydGlmeSwKKyAgICAgIHRoaXMuZGlhbG9nTW9k ZWwsCisgICAgICB0aGlzLmJhY2tmb3JtKTsKKyAgfQorCisgIGNyZWF0ZUJhY2t1cERpYWxvZyhk aWFsb2dUaXRsZSwgdHlwZU9mRGlhbG9nKSB7CisgICAgcmV0dXJuIG5ldyBCYWNrdXBEaWFsb2cu QmFja3VwRGlhbG9nV3JhcHBlcigKKyAgICAgIHRoaXMuZGlhbG9nQ29udGFpbmVyU2VsZWN0b3Is IGRpYWxvZ1RpdGxlLCB0eXBlT2ZEaWFsb2csCisgICAgICB0aGlzLmpxdWVyeSwKKyAgICAgIHRo aXMucGdCcm93c2VyLAorICAgICAgdGhpcy5hbGVydGlmeSwKKyAgICAgIHRoaXMuZGlhbG9nTW9k ZWwsCisgICAgICB0aGlzLmJhY2tmb3JtKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vc3RhdGljL2pzL2FsZXJ0aWZ5L2RpYWxvZ193cmFwcGVyLmpzIGIvd2ViL3BnYWRtaW4vc3Rh dGljL2pzL2FsZXJ0aWZ5L2RpYWxvZ193cmFwcGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwLi5iNWZmODIwNAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3N0 YXRpYy9qcy9hbGVydGlmeS9kaWFsb2dfd3JhcHBlci5qcwpAQCAtMCwwICsxLDU3IEBACitpbXBv cnQgKiBhcyBjb21tb25VdGlscyBmcm9tICcuLi91dGlscyc7CisKK2V4cG9ydCBjbGFzcyBEaWFs b2dXcmFwcGVyIHsKKyAgY29uc3RydWN0b3IoCisgICAgZGlhbG9nQ29udGFpbmVyU2VsZWN0b3Is IGRpYWxvZ1RpdGxlLCBqcXVlcnksIHBnQnJvd3NlciwKKyAgICBhbGVydGlmeSwgZGlhbG9nTW9k ZWwsIGJhY2tmb3JtKSB7CisgICAgdGhpcy5ob29rcyA9IHsKKyAgICAgIG9uY2xvc2U6IGZ1bmN0 aW9uICgpIHsKKyAgICAgICAgaWYgKHRoaXMudmlldykgeworICAgICAgICAgIHRoaXMudmlldy5y ZW1vdmUoeworICAgICAgICAgICAgZGF0YTogdHJ1ZSwKKyAgICAgICAgICAgIGludGVybmFsOiB0 cnVlLAorICAgICAgICAgICAgc2lsZW50OiB0cnVlLAorICAgICAgICAgIH0pOworICAgICAgICB9 CisgICAgICB9LAorICAgIH07CisgICAgdGhpcy5kaWFsb2dDb250YWluZXJTZWxlY3RvciA9IGRp YWxvZ0NvbnRhaW5lclNlbGVjdG9yOworICAgIHRoaXMuZGlhbG9nVGl0bGUgPSBkaWFsb2dUaXRs ZTsKKyAgICB0aGlzLmpxdWVyeSA9IGpxdWVyeTsKKyAgICB0aGlzLnBnQnJvd3NlciA9IHBnQnJv d3NlcjsKKyAgICB0aGlzLmFsZXJ0aWZ5ID0gYWxlcnRpZnk7CisgICAgdGhpcy5kaWFsb2dNb2Rl bCA9IGRpYWxvZ01vZGVsOworICAgIHRoaXMuYmFja2Zvcm0gPSBiYWNrZm9ybTsKKyAgfQorCisg IGJ1aWxkKCkgeworICAgIHRoaXMuYWxlcnRpZnkucGdEaWFsb2dCdWlsZC5hcHBseSh0aGlzKTsK KyAgfQorCisgIHdhc0hlbHBCdXR0b25QcmVzc2VkKGUpIHsKKyAgICByZXR1cm4gZS5idXR0b24u ZWxlbWVudC5uYW1lID09PSAnZGlhbG9nX2hlbHAnCisgICAgICB8fCBlLmJ1dHRvbi5lbGVtZW50 Lm5hbWUgPT09ICdvYmplY3RfaGVscCc7CisgIH0KKworICBnZXRTZWxlY3RlZE5vZGVEYXRhKHNl bGVjdGVkVHJlZU5vZGUpIHsKKyAgICBpZiAoIXRoaXMuaXNOb2RlU2VsZWN0ZWQoc2VsZWN0ZWRU cmVlTm9kZSkpIHsKKyAgICAgIHJldHVybiB1bmRlZmluZWQ7CisgICAgfQorICAgIGNvbnN0IHRy ZWVOb2RlRGF0YSA9IHNlbGVjdGVkVHJlZU5vZGUuZ2V0RGF0YSgpOworICAgIGlmICh0cmVlTm9k ZURhdGEpIHsKKyAgICAgIHJldHVybiB0cmVlTm9kZURhdGE7CisgICAgfQorICAgIHJldHVybiB1 bmRlZmluZWQ7CisgIH0KKworICBmb2N1c09uRGlhbG9nKGRpYWxvZykgeworICAgIGRpYWxvZy4k ZWwuYXR0cigndGFiaW5kZXgnLCAtMSk7CisgICAgdGhpcy5wZ0Jyb3dzZXIua2V5Ym9hcmROYXZp Z2F0aW9uLmdldERpYWxvZ1RhYk5hdmlnYXRvcihkaWFsb2cpOworICAgIGNvbnN0IGNvbnRhaW5l ciA9IGRpYWxvZy4kZWwuZmluZCgnLnRhYi1jb250ZW50OmZpcnN0ID4gLnRhYi1wYW5lLmFjdGl2 ZTpmaXJzdCcpOworICAgIGNvbW1vblV0aWxzLmZpbmRBbmRTZXRGb2N1cyhjb250YWluZXIpOwor ICB9CisKKyAgaXNOb2RlU2VsZWN0ZWQoc2VsZWN0ZWRUcmVlTm9kZSkgeworICAgIHJldHVybiBz ZWxlY3RlZFRyZWVOb2RlOworICB9Cit9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMv anMvdHJlZS9ub2RlX21lbnUuanMgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvdHJlZS9ub2RlX21l bnUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjdhZWRiNTRlCi0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3RyZWUvbm9kZV9tZW51LmpzCkBA IC0wLDAgKzEsNDYgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xz CisvLworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1l bnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNR TCBMaWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLworCitleHBvcnQgZnVuY3Rpb24gY2FuQ3JlYXRlKHBnQnJvd3Nl ciwgY2hpbGRPZkNhdGFsb2dUeXBlKSB7CisgIHJldHVybiBjYW5DcmVhdGVPYmplY3QuYmluZCh7 CisgICAgYnJvd3NlcjogcGdCcm93c2VyLAorICAgIGNoaWxkT2ZDYXRhbG9nVHlwZTogY2hpbGRP ZkNhdGFsb2dUeXBlLAorICB9KTsKK30KKworZnVuY3Rpb24gY2FuQ3JlYXRlT2JqZWN0KGl0ZW1E YXRhLCBpdGVtLCBkYXRhKSB7CisgIC8vSWYgY2hlY2sgaXMgZmFsc2UgdGhlbiAsIHdlIHdpbGwg YWxsb3cgY3JlYXRlIG1lbnUKKyAgaWYgKGRhdGEgJiYgZGF0YS5jaGVjayA9PT0gZmFsc2UpIHsK KyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorCisgIGxldCBub2RlID0gdGhpcy5icm93c2VyLnRyZWVN ZW51LmZpbmROb2RlQnlEb21FbGVtZW50KGl0ZW0pOworCisgIGlmIChub2RlLmFueUZhbWlseU1l bWJlcigKKyAgICBwYXJlbnRDYXRhbG9nT2ZUYWJsZUNoaWxkLmJpbmQobnVsbCwgdGhpcy5jaGls ZE9mQ2F0YWxvZ1R5cGUpCisgICkpIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICByZXR1 cm4gdHJ1ZTsKK30KKworZnVuY3Rpb24gcGFyZW50Q2F0YWxvZ09mVGFibGVDaGlsZChhcmcsIG5v ZGUpIHsKKyAgaWYgKGFyZyA9PT0gbm9kZS5nZXREYXRhKCkuX3R5cGUpIHsKKyAgICBpZiAobm9k ZS5oYXNQYXJlbnQoKSkgeworCisgICAgICBsZXQgcGFyZW50ID0gbm9kZS5wYXJlbnQoKTsKKyAg ICAgIGlmICgnY2F0YWxvZycgPT09IHBhcmVudC5nZXREYXRhKCkuX3R5cGUpIHsKKyAgICAgICAg cmV0dXJuIHRydWU7CisgICAgICB9CisgICAgfQorICB9CisKKyAgcmV0dXJuIGZhbHNlOworfQpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3RyZWUvcGdhZG1pbl90cmVlX25vZGUu anMgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvdHJlZS9wZ2FkbWluX3RyZWVfbm9kZS5qcwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uMDBmMTBkMjQKLS0tIC9kZXYvbnVsbAor KysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvdHJlZS9wZ2FkbWluX3RyZWVfbm9kZS5qcwpAQCAt MCwwICsxLDcyIEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRtaW4gNCAtIFBvc3Rn cmVTUUwgVG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1p biBEZXZlbG9wbWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRo ZSBQb3N0Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCisvKioKKyAqIFRo aXMgbWV0aG9kIHJlY2VpdmVkIHBnQnJvd3NlciBhbmQgbmV3IFRyZWVOb2RlIG9iamVjdAorICoK KyAqIFRoaXMgbWV0aG9kIHJldHJpZXZlcyBhbGwgdGhlIGRhdGEgdGhhdCBleGlzdHMgaW4gdGhl IHRyZWUgbm9kZSBhbmQgaW4KKyAqIGBwZ0Jyb3dzZXIuTm9kZXNgIGZvciBhbGwgdGhlIHBhcmVu dCBub2RlIG9mIHRoZSBwcm92aWRlZCBub2RlLgorICoKKyAqIFRoZSAyIGNvbmRpdGlvbiB0byBn ZXQgdGhlIGluZm9ybWF0aW9uIGZyb20gcGdCcm93c2VyLk5vZGVzIGFyZToKKyAqICAxIC0gdGhl IHZhcmlhYmxlIF90eXBlIG9mIHRoZSB0cmVlIG5vZGUKKyAqICAyIC0gdGhlIHByZXNlbmNlIG9m IGhhc0lkIGluIHRoZSBwZ0Jyb3dzZXIuTm9kZXMgZm9yIHRoZSBzcGVjaWZpYyBub2RlCisgKgor ICogTnVtYmVyIDIgaXMgdXNlZCB0byBpZ25vcmUgY29sbC0qIG5vZGVzIGFzIHRoZXkgZG8gbm90 IGFkZCBhbnkgdXNlZnVsCisgKiBpbmZvcm1hdGlvbgorICovCitleHBvcnQgZnVuY3Rpb24gZ2V0 VHJlZU5vZGVIaWVyYXJjaHlGcm9tRWxlbWVudChwZ0Jyb3dzZXIsIHRyZWVOb2RlKSB7CisgIHJl dHVybiBnZXRUcmVlTm9kZUhpZXJhcmNoeS5jYWxsKHBnQnJvd3NlciwgdHJlZU5vZGUpOworfQor CisvKioKKyAqIFRoaXMgbWV0aG9kIHJlY2VpdmVkIGFuIEFDSSBUcmVlIEpRdWVyeSBub2RlCisg KgorICogTk9URTogdGhpcyBmdW5jdGlvbiBuZWVkIHRvIGJlIGNhbGxlZCBvbiBwZ0Jyb3dzZXIg aW5zdGFuY2UuCisgKiBnZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21JZGVudGlmaWVyLmFwcGx5KHBn QnJvd3NlciwgW2FjaVRyZWVOb2RlSWRlbnRpZmllcl0pCisgKgorICogVGhpcyBtZXRob2QgcmV0 cmlldmVzIGFsbCB0aGUgZGF0YSB0aGF0IGV4aXN0cyBpbiB0aGUgdHJlZSBub2RlIGFuZCBpbgor ICogYHBnQnJvd3Nlci5Ob2Rlc2AgZm9yIGFsbCB0aGUgcGFyZW50IG5vZGUgb2YgdGhlIHByb3Zp ZGVkIG5vZGUuCisgKgorICogVGhlIDIgY29uZGl0aW9uIHRvIGdldCB0aGUgaW5mb3JtYXRpb24g ZnJvbSBwZ0Jyb3dzZXIuTm9kZXMgYXJlOgorICogIDEgLSB0aGUgdmFyaWFibGUgX3R5cGUgb2Yg dGhlIHRyZWUgbm9kZQorICogIDIgLSB0aGUgcHJlc2VuY2Ugb2YgaGFzSWQgaW4gdGhlIHBnQnJv d3Nlci5Ob2RlcyBmb3IgdGhlIHNwZWNpZmljIG5vZGUKKyAqCisgKiBOdW1iZXIgMiBpcyB1c2Vk IHRvIGlnbm9yZSBjb2xsLSogbm9kZXMgYXMgdGhleSBkbyBub3QgYWRkIGFueSB1c2VmdWwKKyAq IGluZm9ybWF0aW9uCisgKi8KK2V4cG9ydCBmdW5jdGlvbiBnZXRUcmVlTm9kZUhpZXJhcmNoeUZy b21JZGVudGlmaWVyKGFjaVRyZWVOb2RlSWRlbnRpZmllcikgeworICBsZXQgaWRlbnRpZmllciA9 IHRoaXMudHJlZU1lbnUudHJhbnNsYXRlVHJlZU5vZGVJZEZyb21BQ0lUcmVlKGFjaVRyZWVOb2Rl SWRlbnRpZmllcik7CisgIGxldCBjdXJyZW50Tm9kZSA9IHRoaXMudHJlZU1lbnUuZmluZE5vZGUo aWRlbnRpZmllcik7CisgIHJldHVybiBnZXRUcmVlTm9kZUhpZXJhcmNoeS5jYWxsKHRoaXMsIGN1 cnJlbnROb2RlKTsKK30KKworZXhwb3J0IGZ1bmN0aW9uIGdldFRyZWVOb2RlSGllcmFyY2h5KGN1 cnJlbnROb2RlKSB7CisgIGxldCBpZHggPSAwOworICBsZXQgcmVzdWx0ID0ge307CisKKyAgZG8g eworICAgIGNvbnN0IGN1cnJlbnROb2RlRGF0YSA9IGN1cnJlbnROb2RlLmdldERhdGEoKTsKKyAg ICBpZiAoY3VycmVudE5vZGVEYXRhLl90eXBlIGluIHRoaXMuTm9kZXMgJiYgdGhpcy5Ob2Rlc1tj dXJyZW50Tm9kZURhdGEuX3R5cGVdLmhhc0lkKSB7CisgICAgICBjb25zdCBub2RlVHlwZSA9IG1h cFR5cGUoY3VycmVudE5vZGVEYXRhLl90eXBlKTsKKyAgICAgIGlmIChyZXN1bHRbbm9kZVR5cGVd ID09PSB1bmRlZmluZWQpIHsKKyAgICAgICAgcmVzdWx0W25vZGVUeXBlXSA9IF8uZXh0ZW5kKHt9 LCBjdXJyZW50Tm9kZURhdGEsIHsKKyAgICAgICAgICAncHJpb3JpdHknOiBpZHgsCisgICAgICAg IH0pOworICAgICAgICBpZHggLT0gMTsKKyAgICAgIH0KKyAgICB9CisgICAgY3VycmVudE5vZGUg PSBjdXJyZW50Tm9kZS5oYXNQYXJlbnQoKSA/IGN1cnJlbnROb2RlLnBhcmVudCgpIDogbnVsbDsK KyAgfSB3aGlsZSAoY3VycmVudE5vZGUpOworCisgIHJldHVybiByZXN1bHQ7Cit9CisKK2Z1bmN0 aW9uIG1hcFR5cGUodHlwZSkgeworICByZXR1cm4gdHlwZSA9PT0gJ3BhcnRpdGlvbicgPyAndGFi bGUnIDogdHlwZTsKK30KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy90cmVlL3N1 cHBvcnRlZF9ub2Rlc19tZW51LmpzIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3RyZWUvc3VwcG9y dGVkX25vZGVzX21lbnUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjhj ZGZjZDk4Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3RyZWUvc3Vw cG9ydGVkX25vZGVzX21lbnUuanMKQEAgLTAsMCArMSw1MCBAQAorLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRt aW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4 LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVh c2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCitpbXBvcnQge2lz VmFsaWRUcmVlTm9kZURhdGF9IGZyb20gJy4vdHJlZSc7CisKK2Z1bmN0aW9uIGlzTm9kZVR5cGVT dXBwb3J0ZWQoc3VwcG9ydGVkTm9kZXMsIG5vZGVEYXRhVHlwZSwgdHJlZU5vZGUpIHsKKyAgcmV0 dXJuIF8uaW5kZXhPZihzdXBwb3J0ZWROb2Rlcywgbm9kZURhdGFUeXBlKSAhPT0gLTEKKyAgICAm JiBhbmNlc3RvcldpdGhUeXBlQ2F0YWxvZ0RvZXNOb3RFeGlzdHModHJlZU5vZGUpOworfQorCitm dW5jdGlvbiBkb2VzTm9kZUhhdmVNZW51KHRyZWVOb2RlRGF0YSkgeworICByZXR1cm4gKHRyZWVO b2RlRGF0YS5fdHlwZSA9PT0gJ2RhdGFiYXNlJyAmJiB0cmVlTm9kZURhdGEuYWxsb3dDb25uKQor ICAgIHx8IHRyZWVOb2RlRGF0YS5fdHlwZSAhPT0gJ2RhdGFiYXNlJzsKK30KKworZnVuY3Rpb24g YW5jZXN0b3JXaXRoVHlwZUNhdGFsb2dEb2VzTm90RXhpc3RzKHRyZWVOb2RlKSB7CisgIGxldCBj dXJyZW50Tm9kZSA9IHRyZWVOb2RlOworCisgIHdoaWxlKGN1cnJlbnROb2RlLmhhc1BhcmVudCgp ICYmIHRyZWVOb2RlLnBhcmVudCgpLmdldERhdGEoKSAhPT0gbnVsbCkgeworICAgIGlmKGN1cnJl bnROb2RlLnBhcmVudCgpLmdldERhdGEoKS5fdHlwZSA9PT0gJ2NhdGFsb2cnKSB7CisgICAgICBy ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS5wYXJl bnQoKTsKKyAgfQorCisgIHJldHVybiB0cnVlOworfQorCitleHBvcnQgZnVuY3Rpb24gZW5hYmxl ZCh0cmVlLCBzdXBwb3J0ZWROb2RlcywgdHJlZU5vZGVEYXRhLCBkb21UcmVlTm9kZSkgeworICBs ZXQgdHJlZU5vZGUgPSB0cmVlLmZpbmROb2RlQnlEb21FbGVtZW50KGRvbVRyZWVOb2RlKTsKKyAg aWYgKCF0cmVlTm9kZSkgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIGlmIChpc1ZhbGlk VHJlZU5vZGVEYXRhKHRyZWVOb2RlRGF0YSkpIHsKKyAgICByZXR1cm4gaXNOb2RlVHlwZVN1cHBv cnRlZChzdXBwb3J0ZWROb2RlcywgdHJlZU5vZGVEYXRhLl90eXBlLCB0cmVlTm9kZSkKKyAgICAg ICYmIGRvZXNOb2RlSGF2ZU1lbnUodHJlZU5vZGVEYXRhKTsKKyAgfSBlbHNlIHsKKyAgICByZXR1 cm4gZmFsc2U7CisgIH0KK30KKworCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMv dHJlZS90cmVlLmpzIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3RyZWUvdHJlZS5qcwppbmRleCAw MWVkYjZjMy4uYThiMTIyY2YgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy90cmVl L3RyZWUuanMKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3RyZWUvdHJlZS5qcwpAQCAtMjEw LDMgKzIxMCw3IEBAIGZ1bmN0aW9uIGZpbmRJblRyZWUocm9vdE5vZGUsIHBhdGgpIHsKICAgICB9 CiAgIH0pKHJvb3ROb2RlKTsKIH0KKworZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRUcmVlTm9kZURh dGEodHJlZU5vZGVEYXRhKSB7CisgIHJldHVybiAhXy5pc1VuZGVmaW5lZCh0cmVlTm9kZURhdGEp ICYmICFfLmlzTnVsbCh0cmVlTm9kZURhdGEpOworfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v dG9vbHMvYmFja3VwL3N0YXRpYy9qcy9iYWNrdXAuanMgYi93ZWIvcGdhZG1pbi90b29scy9iYWNr dXAvc3RhdGljL2pzL2JhY2t1cC5qcwppbmRleCAxYjBiMzYyOC4uZmE0ZTVjNmQgMTAwNjQ0Ci0t LSBhL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC9zdGF0aWMvanMvYmFja3VwLmpzCisrKyBiL3dl Yi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC9zdGF0aWMvanMvYmFja3VwLmpzCkBAIC0zLDkgKzMsMTIg QEAgZGVmaW5lKFsKICAgJ3NvdXJjZXMvZ2V0dGV4dCcsICdzb3VyY2VzL3VybF9mb3InLCAnanF1 ZXJ5JywgJ3VuZGVyc2NvcmUnLAogICAndW5kZXJzY29yZS5zdHJpbmcnLCAncGdhZG1pbi5hbGVy dGlmeWpzJywgJ2JhY2tib25lJywgJ3BnYWRtaW4uYmFja2dyaWQnLAogICAncGdhZG1pbi5iYWNr Zm9ybScsICdwZ2FkbWluLmJyb3dzZXInLCAnc291cmNlcy91dGlscycsCisgICd0b29scy9iYWNr dXAvc3RhdGljL2pzL21lbnVfdXRpbHMnLAorICAndG9vbHMvYmFja3VwL3N0YXRpYy9qcy9iYWNr dXBfZGlhbG9nJywKKyAgJ3NvdXJjZXMvdHJlZS9zdXBwb3J0ZWRfbm9kZXNfbWVudScsCiBdLCBm dW5jdGlvbigKICAgZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgUywgYWxlcnRpZnksIEJhY2tib25l LCBCYWNrZ3JpZCwgQmFja2Zvcm0sIHBnQnJvd3NlciwKLWNvbW1vblV0aWxzCitjb21tb25VdGls cywgbWVudVV0aWxzLCBnbG9iYWxCYWNrdXBEaWFsb2csIHN1cHBvcnRlZE5vZGVzTWVudQogKSB7 CiAKICAgLy8gaWYgbW9kdWxlIGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQsIHJlZmVyIHRvIHRoYXQu CkBAIC0zOTQsNDggKzM5Nyw2IEBAIGNvbW1vblV0aWxzCiAKICAgICAgIHRoaXMuaW5pdGlhbGl6 ZWQgPSB0cnVlOwogCi0gICAgICAvLyBEZWZpbmUgbGlzdCBvZiBub2RlcyBvbiB3aGljaCBiYWNr dXAgY29udGV4dCBtZW51IG9wdGlvbiBhcHBlYXJzCi0gICAgICB2YXIgYmFja3VwX3N1cHBvcnRl ZF9ub2RlcyA9IFsKLSAgICAgICAgJ2RhdGFiYXNlJywgJ3NjaGVtYScsICd0YWJsZScsICdwYXJ0 aXRpb24nLAotICAgICAgXTsKLQotICAgICAgLyoqCi0gICAgICAgIEVuYWJsZS9kaXNhYmxlIGJh Y2t1cCBtZW51IGluIHRvb2xzIGJhc2VkCi0gICAgICAgIG9uIG5vZGUgc2VsZWN0ZWQKLSAgICAg ICAgaWYgc2VsZWN0ZWQgbm9kZSBpcyBwcmVzZW50IGluIHN1cHBvcnRlZF9ub2RlcywKLSAgICAg ICAgbWVudSB3aWxsIGJlIGVuYWJsZWQgb3RoZXJ3aXNlIGRpc2FibGVkLgotICAgICAgICBBbHNv LCBoaWRlIGl0IGZvciBzeXN0ZW0gdmlldyBpbiBjYXRhbG9ncwotICAgICAgKi8KLSAgICAgIHZh ciBtZW51X2VuYWJsZWQgPSBmdW5jdGlvbihpdGVtRGF0YSwgaXRlbSkgewotICAgICAgICB2YXIg dCA9IHBnQnJvd3Nlci50cmVlLAotICAgICAgICAgIGkgPSBpdGVtLAotICAgICAgICAgIGQgPSBp dGVtRGF0YSwKLSAgICAgICAgICBwYXJlbnRfaXRlbSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJl bnQoaSkgOiBudWxsLAotICAgICAgICAgIHBhcmVudF9kYXRhID0gcGFyZW50X2l0ZW0gPyB0Lml0 ZW1EYXRhKHBhcmVudF9pdGVtKSA6IG51bGw7Ci0KLSAgICAgICAgaWYgKCFfLmlzVW5kZWZpbmVk KGQpICYmICFfLmlzTnVsbChkKSAmJiAhXy5pc051bGwocGFyZW50X2RhdGEpKSB7Ci0gICAgICAg ICAgaWYgKF8uaW5kZXhPZihiYWNrdXBfc3VwcG9ydGVkX25vZGVzLCBkLl90eXBlKSAhPT0gLTEg JiYKLSAgICAgICAgICAgIHBhcmVudF9kYXRhLl90eXBlICE9ICdjYXRhbG9nJykgewotICAgICAg ICAgICAgaWYgKGQuX3R5cGUgPT0gJ2RhdGFiYXNlJyAmJiBkLmFsbG93Q29ubikKLSAgICAgICAg ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICBlbHNlIGlmIChkLl90eXBlICE9ICdkYXRh YmFzZScpCi0gICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgZWxzZQotICAg ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBy ZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg ICAgIH07Ci0KLSAgICAgIHZhciBtZW51X2VuYWJsZWRfc2VydmVyID0gZnVuY3Rpb24oaXRlbURh dGEpIHsKLSAgICAgICAgLy8gSWYgc2VydmVyIG5vZGUgc2VsZWN0ZWQgJiYgY29ubmVjdGVkCi0g ICAgICAgIGlmICghXy5pc1VuZGVmaW5lZChpdGVtRGF0YSkgJiYgIV8uaXNOdWxsKGl0ZW1EYXRh KSkKLSAgICAgICAgICByZXR1cm4gKCgnc2VydmVyJyA9PT0gaXRlbURhdGEuX3R5cGUpICYmIGl0 ZW1EYXRhLmNvbm5lY3RlZCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICByZXR1cm4gZmFsc2U7 Ci0gICAgICB9OwotCiAgICAgICAvLyBEZWZpbmUgdGhlIG5vZGVzIG9uIHdoaWNoIHRoZSBtZW51 cyB0byBiZSBhcHBlYXIKICAgICAgIHZhciBtZW51cyA9IFt7CiAgICAgICAgIG5hbWU6ICdiYWNr dXBfZ2xvYmFsJywKQEAgLTQ0NSw3ICs0MDYsNyBAQCBjb21tb25VdGlscwogICAgICAgICBwcmlv cml0eTogMTIsCiAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdCYWNrdXAgR2xvYmFscy4uLicpLAog ICAgICAgICBpY29uOiAnZmEgZmEtZmxvcHB5LW8nLAotICAgICAgICBlbmFibGU6IG1lbnVfZW5h YmxlZF9zZXJ2ZXIsCisgICAgICAgIGVuYWJsZTogbWVudVV0aWxzLm1lbnVFbmFibGVkU2VydmVy LAogICAgICAgfSwgewogICAgICAgICBuYW1lOiAnYmFja3VwX3NlcnZlcicsCiAgICAgICAgIG1v ZHVsZTogdGhpcywKQEAgLTQ1NCw3ICs0MTUsNyBAQCBjb21tb25VdGlscwogICAgICAgICBwcmlv cml0eTogMTIsCiAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdCYWNrdXAgU2VydmVyLi4uJyksCiAg ICAgICAgIGljb246ICdmYSBmYS1mbG9wcHktbycsCi0gICAgICAgIGVuYWJsZTogbWVudV9lbmFi bGVkX3NlcnZlciwKKyAgICAgICAgZW5hYmxlOiBtZW51VXRpbHMubWVudUVuYWJsZWRTZXJ2ZXIs CiAgICAgICB9LCB7CiAgICAgICAgIG5hbWU6ICdiYWNrdXBfZ2xvYmFsX2N0eCcsCiAgICAgICAg IG1vZHVsZTogdGhpcywKQEAgLTQ2NCw3ICs0MjUsNyBAQCBjb21tb25VdGlscwogICAgICAgICBw cmlvcml0eTogMTIsCiAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdCYWNrdXAgR2xvYmFscy4uLicp LAogICAgICAgICBpY29uOiAnZmEgZmEtZmxvcHB5LW8nLAotICAgICAgICBlbmFibGU6IG1lbnVf ZW5hYmxlZF9zZXJ2ZXIsCisgICAgICAgIGVuYWJsZTogbWVudVV0aWxzLm1lbnVFbmFibGVkU2Vy dmVyLAogICAgICAgfSwgewogICAgICAgICBuYW1lOiAnYmFja3VwX3NlcnZlcl9jdHgnLAogICAg ICAgICBtb2R1bGU6IHRoaXMsCkBAIC00NzQsNyArNDM1LDcgQEAgY29tbW9uVXRpbHMKICAgICAg ICAgcHJpb3JpdHk6IDEyLAogICAgICAgICBsYWJlbDogZ2V0dGV4dCgnQmFja3VwIFNlcnZlci4u LicpLAogICAgICAgICBpY29uOiAnZmEgZmEtZmxvcHB5LW8nLAotICAgICAgICBlbmFibGU6IG1l bnVfZW5hYmxlZF9zZXJ2ZXIsCisgICAgICAgIGVuYWJsZTogbWVudVV0aWxzLm1lbnVFbmFibGVk U2VydmVyLAogICAgICAgfSwgewogICAgICAgICBuYW1lOiAnYmFja3VwX29iamVjdCcsCiAgICAg ICAgIG1vZHVsZTogdGhpcywKQEAgLTQ4MywyMCArNDQ0LDI0IEBAIGNvbW1vblV0aWxzCiAgICAg ICAgIHByaW9yaXR5OiAxMSwKICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0JhY2t1cC4uLicpLAog ICAgICAgICBpY29uOiAnZmEgZmEtZmxvcHB5LW8nLAotICAgICAgICBlbmFibGU6IG1lbnVfZW5h YmxlZCwKKyAgICAgICAgZW5hYmxlOiBzdXBwb3J0ZWROb2Rlc01lbnUuZW5hYmxlZC5iaW5kKAor ICAgICAgICAgIG51bGwsIHBnQnJvd3Nlci50cmVlTWVudSwgbWVudVV0aWxzLmJhY2t1cFN1cHBv cnRlZE5vZGVzCisgICAgICAgICksCiAgICAgICB9XTsKIAotICAgICAgZm9yICh2YXIgaWR4ID0g MDsgaWR4IDwgYmFja3VwX3N1cHBvcnRlZF9ub2Rlcy5sZW5ndGg7IGlkeCsrKSB7CisgICAgICBm b3IgKHZhciBpZHggPSAwOyBpZHggPCBtZW51VXRpbHMuYmFja3VwU3VwcG9ydGVkTm9kZXMubGVu Z3RoOyBpZHgrKykgewogICAgICAgICBtZW51cy5wdXNoKHsKLSAgICAgICAgICBuYW1lOiAnYmFj a3VwXycgKyBiYWNrdXBfc3VwcG9ydGVkX25vZGVzW2lkeF0sCi0gICAgICAgICAgbm9kZTogYmFj a3VwX3N1cHBvcnRlZF9ub2Rlc1tpZHhdLAorICAgICAgICAgIG5hbWU6ICdiYWNrdXBfJyArIG1l bnVVdGlscy5iYWNrdXBTdXBwb3J0ZWROb2Rlc1tpZHhdLAorICAgICAgICAgIG5vZGU6IG1lbnVV dGlscy5iYWNrdXBTdXBwb3J0ZWROb2Rlc1tpZHhdLAogICAgICAgICAgIG1vZHVsZTogdGhpcywK ICAgICAgICAgICBhcHBsaWVzOiBbJ2NvbnRleHQnXSwKICAgICAgICAgICBjYWxsYmFjazogJ2Jh Y2t1cF9vYmplY3RzJywKICAgICAgICAgICBwcmlvcml0eTogMTEsCiAgICAgICAgICAgbGFiZWw6 IGdldHRleHQoJ0JhY2t1cC4uLicpLAogICAgICAgICAgIGljb246ICdmYSBmYS1mbG9wcHktbycs Ci0gICAgICAgICAgZW5hYmxlOiBtZW51X2VuYWJsZWQsCisgICAgICAgICAgZW5hYmxlOiBzdXBw b3J0ZWROb2Rlc01lbnUuZW5hYmxlZC5iaW5kKAorICAgICAgICAgICAgbnVsbCwgcGdCcm93c2Vy LnRyZWVNZW51LCBtZW51VXRpbHMuYmFja3VwU3VwcG9ydGVkTm9kZXMKKyAgICAgICAgICApLAog ICAgICAgICB9KTsKICAgICAgIH0KIApAQCAtNTIxLDU0MiArNDg2LDI1IEBAIGNvbW1vblV0aWxz CiAgICAgfSwKIAogICAgIC8vIENhbGxiYWNrIHRvIGRyYXcgQmFja3VwIERpYWxvZyBmb3IgZ2xv YmFscy9zZXJ2ZXIKLSAgICBzdGFydF9iYWNrdXBfZ2xvYmFsX3NlcnZlcjogZnVuY3Rpb24oYWN0 aW9uLCBpdGVtLCBwYXJhbXMpIHsKLSAgICAgIHZhciBpID0gaXRlbSB8fCBwZ0Jyb3dzZXIudHJl ZS5zZWxlY3RlZCgpLAotICAgICAgICBzZXJ2ZXJfZGF0YSA9IG51bGw7Ci0KLSAgICAgIHdoaWxl IChpKSB7Ci0gICAgICAgIHZhciBub2RlX2RhdGEgPSBwZ0Jyb3dzZXIudHJlZS5pdGVtRGF0YShp KTsKLSAgICAgICAgaWYgKG5vZGVfZGF0YS5fdHlwZSA9PSAnc2VydmVyJykgewotICAgICAgICAg IHNlcnZlcl9kYXRhID0gbm9kZV9kYXRhOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0K LSAgICAgICAgaWYgKHBnQnJvd3Nlci50cmVlLmhhc1BhcmVudChpKSkgewotICAgICAgICAgIGkg PSAkKHBnQnJvd3Nlci50cmVlLnBhcmVudChpKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg ICAgYWxlcnRpZnkuYWxlcnQoCi0gICAgICAgICAgICBnZXR0ZXh0KCdCYWNrdXAgRXJyb3InKSwK LSAgICAgICAgICAgIGdldHRleHQoJ1BsZWFzZSBzZWxlY3Qgc2VydmVyIG9yIGNoaWxkIG5vZGUg ZnJvbSB0aGUgYnJvd3NlciB0cmVlLicpCi0gICAgICAgICAgKTsKLSAgICAgICAgICBicmVhazsK LSAgICAgICAgfQotICAgICAgfQotCi0gICAgICBpZiAoIXNlcnZlcl9kYXRhKSB7Ci0gICAgICAg IHJldHVybjsKLSAgICAgIH0KLQotICAgICAgdmFyIG1vZHVsZSA9ICdwYXRocycsCi0gICAgICAg IHByZWZlcmVuY2VfbmFtZSA9ICdwZ19iaW5fZGlyJywKLSAgICAgICAgbXNnID0gZ2V0dGV4dCgn UGxlYXNlIGNvbmZpZ3VyZSB0aGUgUG9zdGdyZVNRTCBCaW5hcnkgUGF0aCBpbiB0aGUgUHJlZmVy ZW5jZXMgZGlhbG9nLicpOwotCi0gICAgICBpZiAoKHNlcnZlcl9kYXRhLnR5cGUgJiYgc2VydmVy X2RhdGEudHlwZSA9PSAncHBhcycpIHx8Ci0gICAgICAgIHNlcnZlcl9kYXRhLnNlcnZlcl90eXBl ID09ICdwcGFzJykgewotICAgICAgICBwcmVmZXJlbmNlX25hbWUgPSAncHBhc19iaW5fZGlyJzsK LSAgICAgICAgbXNnID0gZ2V0dGV4dCgnUGxlYXNlIGNvbmZpZ3VyZSB0aGUgRURCIEFkdmFuY2Vk IFNlcnZlciBCaW5hcnkgUGF0aCBpbiB0aGUgUHJlZmVyZW5jZXMgZGlhbG9nLicpOwotICAgICAg fQotCi0gICAgICB2YXIgcHJlZmVyZW5jZSA9IHBnQnJvd3Nlci5nZXRfcHJlZmVyZW5jZShtb2R1 bGUsIHByZWZlcmVuY2VfbmFtZSk7Ci0KLSAgICAgIGlmIChwcmVmZXJlbmNlKSB7Ci0gICAgICAg IGlmICghcHJlZmVyZW5jZS52YWx1ZSkgewotICAgICAgICAgIGFsZXJ0aWZ5LmFsZXJ0KGdldHRl eHQoJ0NvbmZpZ3VyYXRpb24gcmVxdWlyZWQnKSwgbXNnKTsKLSAgICAgICAgICByZXR1cm47Ci0g ICAgICAgIH0KLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGFsZXJ0aWZ5LmFsZXJ0KAotICAgICAg ICAgIGdldHRleHQoJ0JhY2t1cCBFcnJvcicpLAotICAgICAgICAgIFMoZ2V0dGV4dCgnRmFpbGVk IHRvIGxvYWQgcHJlZmVyZW5jZSAlcyBvZiBtb2R1bGUgJXMnKSkuc3ByaW50ZihwcmVmZXJlbmNl X25hbWUsIG1vZHVsZSkudmFsdWUoKQotICAgICAgICApOwotICAgICAgICByZXR1cm47Ci0gICAg ICB9Ci0KLSAgICAgIHZhciBvZl90eXBlID0gdW5kZWZpbmVkOwotCi0gICAgICAvLyBTZXQgTm90 ZXMgYWNjb3JkaW5nIHRvIHR5cGUgb2YgYmFja3VwCi0gICAgICBpZiAoIV8uaXNVbmRlZmluZWQo cGFyYW1zWydnbG9iYWxzJ10pICYmIHBhcmFtc1snZ2xvYmFscyddKSB7Ci0gICAgICAgIG9mX3R5 cGUgPSAnZ2xvYmFscyc7Ci0gICAgICB9IGVsc2UgewotICAgICAgICBvZl90eXBlID0gJ3NlcnZl cic7Ci0gICAgICB9Ci0KLSAgICAgIHZhciBEaWFsb2dOYW1lID0gJ0JhY2t1cERpYWxvZ18nICsg b2ZfdHlwZSwKLSAgICAgICAgRGlhbG9nVGl0bGUgPSAoKG9mX3R5cGUgPT0gJ2dsb2JhbHMnKSA/ Ci0gICAgICAgICAgZ2V0dGV4dCgnQmFja3VwIEdsb2JhbHMuLi4nKSA6Ci0gICAgICAgICAgZ2V0 dGV4dCgnQmFja3VwIFNlcnZlci4uLicpKTsKLQotICAgICAgaWYgKCFhbGVydGlmeVtEaWFsb2dO YW1lXSkgewotICAgICAgICBhbGVydGlmeS5kaWFsb2coRGlhbG9nTmFtZSwgZnVuY3Rpb24gZmFj dG9yeSgpIHsKLSAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgbWFpbjogZnVuY3Rpb24o dGl0bGUpIHsKLSAgICAgICAgICAgICAgdGhpcy5zZXQoJ3RpdGxlJywgdGl0bGUpOwotICAgICAg ICAgICAgfSwKLSAgICAgICAgICAgIGJ1aWxkOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAg YWxlcnRpZnkucGdEaWFsb2dCdWlsZC5hcHBseSh0aGlzKTsKLSAgICAgICAgICAgIH0sCi0gICAg ICAgICAgICBzZXR1cDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgIHJldHVybiB7Ci0gICAg ICAgICAgICAgICAgYnV0dG9uczogW3sKLSAgICAgICAgICAgICAgICAgIHRleHQ6ICcnLAotICAg ICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnYnRuIGJ0bi1kZWZhdWx0IHB1bGwtbGVmdCBmYSBm YS1sZyBmYS1pbmZvJywKLSAgICAgICAgICAgICAgICAgIGF0dHJzOiB7Ci0gICAgICAgICAgICAg ICAgICAgIG5hbWU6ICdvYmplY3RfaGVscCcsCi0gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdi dXR0b24nLAotICAgICAgICAgICAgICAgICAgICB1cmw6ICdiYWNrdXAuaHRtbCcsCi0gICAgICAg ICAgICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdCYWNrdXAnKSwKLSAgICAgICAgICAgICAgICAg IH0sCi0gICAgICAgICAgICAgICAgfSwgewotICAgICAgICAgICAgICAgICAgdGV4dDogJycsCi0g ICAgICAgICAgICAgICAgICBrZXk6IDExMiwKLSAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTog J2J0biBidG4tZGVmYXVsdCBwdWxsLWxlZnQgZmEgZmEtbGcgZmEtcXVlc3Rpb24nLAotICAgICAg ICAgICAgICAgICAgYXR0cnM6IHsKLSAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2RpYWxvZ19o ZWxwJywKLSAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2J1dHRvbicsCi0gICAgICAgICAgICAg ICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdCYWNrdXAnKSwKLSAgICAgICAgICAgICAgICAgICAgdXJs OiB1cmxfZm9yKCdoZWxwLnN0YXRpYycsIHsKLSAgICAgICAgICAgICAgICAgICAgICAnZmlsZW5h bWUnOiAnYmFja3VwX2RpYWxvZy5odG1sJywKLSAgICAgICAgICAgICAgICAgICAgfSksCi0gICAg ICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIH0sIHsKLSAgICAgICAgICAgICAgICAg IHRleHQ6IGdldHRleHQoJ0JhY2t1cCcpLAotICAgICAgICAgICAgICAgICAga2V5OiAxMywKLSAg ICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2J0biBidG4tcHJpbWFyeSBmYSBmYS1sZyBmYS1z YXZlIHBnLWFsZXJ0aWZ5LWJ1dHRvbicsCi0gICAgICAgICAgICAgICAgICAnZGF0YS1idG4tbmFt ZSc6ICdiYWNrdXAnLAotICAgICAgICAgICAgICAgIH0sIHsKLSAgICAgICAgICAgICAgICAgIHRl eHQ6IGdldHRleHQoJ0NhbmNlbCcpLAotICAgICAgICAgICAgICAgICAga2V5OiAyNywKLSAgICAg ICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2J0biBidG4tZGFuZ2VyIGZhIGZhLWxnIGZhLXRpbWVz IHBnLWFsZXJ0aWZ5LWJ1dHRvbicsCi0gICAgICAgICAgICAgICAgICAnZGF0YS1idG4tbmFtZSc6 ICdjYW5jZWwnLAotICAgICAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgICAgIC8vIFNldCBv cHRpb25zIGZvciBkaWFsb2cKLSAgICAgICAgICAgICAgICBvcHRpb25zOiB7Ci0gICAgICAgICAg ICAgICAgICB0aXRsZTogRGlhbG9nVGl0bGUsCi0gICAgICAgICAgICAgICAgICAvL2Rpc2FibGUg Ym90aCBwYWRkaW5nIGFuZCBvdmVyZmxvdyBjb250cm9sLgotICAgICAgICAgICAgICAgICAgcGFk ZGluZzogITEsCi0gICAgICAgICAgICAgICAgICBvdmVyZmxvdzogITEsCi0gICAgICAgICAgICAg ICAgICBtb2RlbDogMCwKLSAgICAgICAgICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSwKLSAgICAg ICAgICAgICAgICAgIG1heGltaXphYmxlOiB0cnVlLAotICAgICAgICAgICAgICAgICAgcGlubmFi bGU6IGZhbHNlLAotICAgICAgICAgICAgICAgICAgY2xvc2FibGVCeURpbW1lcjogZmFsc2UsCi0g ICAgICAgICAgICAgICAgICBtb2RhbDogZmFsc2UsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAg ICAgICAgICAgfTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBob29rczogewotICAgICAg ICAgICAgICAvLyBUcmlnZ2VyZWQgd2hlbiB0aGUgZGlhbG9nIGlzIGNsb3NlZAotICAgICAgICAg ICAgICBvbmNsb3NlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBpZiAodGhpcy52aWV3 KSB7Ci0gICAgICAgICAgICAgICAgICAvLyBjbGVhciBvdXIgYmFja2Zvcm0gbW9kZWwvdmlldwot ICAgICAgICAgICAgICAgICAgdGhpcy52aWV3LnJlbW92ZSh7Ci0gICAgICAgICAgICAgICAgICAg IGRhdGE6IHRydWUsCi0gICAgICAgICAgICAgICAgICAgIGludGVybmFsOiB0cnVlLAotICAgICAg ICAgICAgICAgICAgICBzaWxlbnQ6IHRydWUsCi0gICAgICAgICAgICAgICAgICB9KTsKLSAgICAg ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB9LAotICAgICAgICAg ICAgcHJlcGFyZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgIHZhciBzZWxmID0gdGhpczsK LSAgICAgICAgICAgICAgLy8gRGlzYWJsZSBCYWNrdXAgYnV0dG9uIHVudGlsIHVzZXIgcHJvdmlk ZXMgRmlsZW5hbWUKLSAgICAgICAgICAgICAgdGhpcy5fX2ludGVybmFsLmJ1dHRvbnNbMl0uZWxl bWVudC5kaXNhYmxlZCA9IHRydWU7Ci0KLSAgICAgICAgICAgICAgdmFyICRjb250YWluZXIgPSAk KCc8ZGl2IGNsYXNzPVwnYmFja3VwX2RpYWxvZ1wnPjwvZGl2PicpOwotICAgICAgICAgICAgICAv LyBGaW5kIGN1cnJlbnQvc2VsZWN0ZWQgbm9kZQotICAgICAgICAgICAgICB2YXIgdCA9IHBnQnJv d3Nlci50cmVlLAotICAgICAgICAgICAgICAgIGkgPSB0LnNlbGVjdGVkKCksCi0gICAgICAgICAg ICAgICAgZCA9IGkgJiYgaS5sZW5ndGggPT0gMSA/IHQuaXRlbURhdGEoaSkgOiB1bmRlZmluZWQs Ci0gICAgICAgICAgICAgICAgbm9kZSA9IGQgJiYgcGdCcm93c2VyLk5vZGVzW2QuX3R5cGVdOwot Ci0gICAgICAgICAgICAgIGlmICghZCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg ICAgICAgIC8vIENyZWF0ZSB0cmVlSW5mbwotICAgICAgICAgICAgICB2YXIgdHJlZUluZm8gPSBu b2RlLmdldFRyZWVOb2RlSGllcmFyY2h5LmFwcGx5KG5vZGUsIFtpXSk7Ci0gICAgICAgICAgICAg IC8vIEluc3RhbmNlIG9mIGJhY2tib25lIG1vZGVsCi0gICAgICAgICAgICAgIHZhciBuZXdNb2Rl bCA9IG5ldyBCYWNrdXBNb2RlbCh7Ci0gICAgICAgICAgICAgICAgICB0eXBlOiBvZl90eXBlLAot ICAgICAgICAgICAgICAgIH0sIHsKLSAgICAgICAgICAgICAgICAgIG5vZGVfaW5mbzogdHJlZUlu Zm8sCi0gICAgICAgICAgICAgICAgfSksCi0gICAgICAgICAgICAgICAgZmllbGRzID0gQmFja2Zv cm0uZ2VuZXJhdGVWaWV3U2NoZW1hKAotICAgICAgICAgICAgICAgICAgdHJlZUluZm8sIG5ld01v ZGVsLCAnY3JlYXRlJywgbm9kZSwgdHJlZUluZm8uc2VydmVyLCB0cnVlCi0gICAgICAgICAgICAg ICAgKTsKLQotICAgICAgICAgICAgICB2YXIgdmlldyA9IHRoaXMudmlldyA9IG5ldyBCYWNrZm9y bS5EaWFsb2coewotICAgICAgICAgICAgICAgIGVsOiAkY29udGFpbmVyLAotICAgICAgICAgICAg ICAgIG1vZGVsOiBuZXdNb2RlbCwKLSAgICAgICAgICAgICAgICBzY2hlbWE6IGZpZWxkcywKLSAg ICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgIC8vIEFkZCBvdXIgY2xhc3MgdG8gYWxlcnRp ZnkKLSAgICAgICAgICAgICAgJCh0aGlzLmVsZW1lbnRzLmJvZHkuY2hpbGROb2Rlc1swXSkuYWRk Q2xhc3MoCi0gICAgICAgICAgICAgICAgJ2FsZXJ0aWZ5X3Rvb2xzX2RpYWxvZ19wcm9wZXJ0aWVz IG9ial9wcm9wZXJ0aWVzJwotICAgICAgICAgICAgICApOwotICAgICAgICAgICAgICAvLyBSZW5k ZXIgZGlhbG9nCi0gICAgICAgICAgICAgIHZpZXcucmVuZGVyKCk7Ci0KLSAgICAgICAgICAgICAg dGhpcy5lbGVtZW50cy5jb250ZW50LmFwcGVuZENoaWxkKCRjb250YWluZXIuZ2V0KDApKTsKLQot ICAgICAgICAgICAgICB2YXIgY29udGFpbmVyID0gdmlldy4kZWwuZmluZCgnLnRhYi1jb250ZW50 OmZpcnN0ID4gLnRhYi1wYW5lLmFjdGl2ZTpmaXJzdCcpOwotICAgICAgICAgICAgICBjb21tb25V dGlscy5maW5kQW5kU2V0Rm9jdXMoY29udGFpbmVyKTsKLQotICAgICAgICAgICAgICAvLyBMaXN0 ZW4gdG8gbW9kZWwgJiBpZiBmaWxlbmFtZSBpcyBwcm92aWRlZCB0aGVuIGVuYWJsZSBCYWNrdXAg YnV0dG9uCi0gICAgICAgICAgICAgIHRoaXMudmlldy5tb2RlbC5vbignY2hhbmdlJywgZnVuY3Rp b24oKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHRoaXMuZ2V0KCdmaWxl JykpICYmIHRoaXMuZ2V0KCdmaWxlJykgIT09ICcnKSB7Ci0gICAgICAgICAgICAgICAgICB0aGlz LmVycm9yTW9kZWwuY2xlYXIoKTsKLSAgICAgICAgICAgICAgICAgIHNlbGYuX19pbnRlcm5hbC5i dXR0b25zWzJdLmVsZW1lbnQuZGlzYWJsZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICB9IGVs c2UgewotICAgICAgICAgICAgICAgICAgc2VsZi5fX2ludGVybmFsLmJ1dHRvbnNbMl0uZWxlbWVu dC5kaXNhYmxlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0 KCdmaWxlJywgZ2V0dGV4dCgnUGxlYXNlIHByb3ZpZGUgYSBmaWxlbmFtZScpKTsKLSAgICAgICAg ICAgICAgICB9Ci0gICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAg IC8vIENhbGxiYWNrIGZ1bmN0aW9ucyB3aGVuIGNsaWNrIG9uIHRoZSBidXR0b25zIG9mIHRoZSBB bGVydGlmeSBkaWFsb2dzCi0gICAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24oZSkgewotICAg ICAgICAgICAgICAvLyBGZXRjaCBjdXJyZW50IHNlcnZlciBpZAotICAgICAgICAgICAgICB2YXIg dCA9IHBnQnJvd3Nlci50cmVlLAotICAgICAgICAgICAgICAgIGkgPSB0LnNlbGVjdGVkKCksCi0g ICAgICAgICAgICAgICAgZCA9IGkgJiYgaS5sZW5ndGggPT0gMSA/IHQuaXRlbURhdGEoaSkgOiB1 bmRlZmluZWQsCi0gICAgICAgICAgICAgICAgbm9kZSA9IGQgJiYgcGdCcm93c2VyLk5vZGVzW2Qu X3R5cGVdOwotCi0gICAgICAgICAgICAgIGlmIChlLmJ1dHRvbi5lbGVtZW50Lm5hbWUgPT0gJ2Rp YWxvZ19oZWxwJyB8fCBlLmJ1dHRvbi5lbGVtZW50Lm5hbWUgPT0gJ29iamVjdF9oZWxwJykgewot ICAgICAgICAgICAgICAgIGUuY2FuY2VsID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBwZ0Jyb3dz ZXIuc2hvd0hlbHAoZS5idXR0b24uZWxlbWVudC5uYW1lLCBlLmJ1dHRvbi5lbGVtZW50LmdldEF0 dHJpYnV0ZSgndXJsJyksCi0gICAgICAgICAgICAgICAgICBub2RlLCBpLCBlLmJ1dHRvbi5lbGVt ZW50LmdldEF0dHJpYnV0ZSgnbGFiZWwnKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgaWYgKGUuYnV0dG9uWydkYXRhLWJ0bi1uYW1l J10gPT09ICdiYWNrdXAnKSB7Ci0KLSAgICAgICAgICAgICAgICBpZiAoIWQpCi0gICAgICAgICAg ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICB2YXIgdHJlZUluZm8gPSBub2RlLmdl dFRyZWVOb2RlSGllcmFyY2h5LmFwcGx5KG5vZGUsIFtpXSk7Ci0KLSAgICAgICAgICAgICAgICB2 YXIgc2VsZiA9IHRoaXMsCi0gICAgICAgICAgICAgICAgICBiYXNlVXJsID0gdXJsX2ZvcignYmFj a3VwLmNyZWF0ZV9zZXJ2ZXJfam9iJywgewotICAgICAgICAgICAgICAgICAgICAnc2lkJzogdHJl ZUluZm8uc2VydmVyLl9pZCwKLSAgICAgICAgICAgICAgICAgIH0pLAotICAgICAgICAgICAgICAg ICAgYXJncyA9IHRoaXMudmlldy5tb2RlbC50b0pTT04oKTsKLQotICAgICAgICAgICAgICAgICQu YWpheCh7Ci0gICAgICAgICAgICAgICAgICB1cmw6IGJhc2VVcmwsCi0gICAgICAgICAgICAgICAg ICBtZXRob2Q6ICdQT1NUJywKLSAgICAgICAgICAgICAgICAgIGRhdGE6IHsKLSAgICAgICAgICAg ICAgICAgICAgJ2RhdGEnOiBKU09OLnN0cmluZ2lmeShhcmdzKSwKLSAgICAgICAgICAgICAgICAg IH0sCi0gICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihyZXMpIHsKLSAgICAgICAg ICAgICAgICAgICAgaWYgKHJlcy5zdWNjZXNzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgYWxl cnRpZnkuc3VjY2VzcyhnZXR0ZXh0KCdCYWNrdXAgam9iIGNyZWF0ZWQuJyksIDUpOwotICAgICAg ICAgICAgICAgICAgICAgIHBnQnJvd3Nlci5FdmVudHMudHJpZ2dlcigncGdhZG1pbi1iZ3Byb2Nl c3M6Y3JlYXRlZCcsIHNlbGYpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAg ICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihyZXMpOwotICAgICAgICAgICAgICAgICAgICB9 Ci0gICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9u KHhocikgewotICAgICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAg IHZhciBlcnIgPSAkLnBhcnNlSlNPTih4aHIucmVzcG9uc2VUZXh0KTsKLSAgICAgICAgICAgICAg ICAgICAgICBhbGVydGlmeS5hbGVydCgKLSAgICAgICAgICAgICAgICAgICAgICAgIGdldHRleHQo J0JhY2t1cCBqb2IgZmFpbGVkLicpLAotICAgICAgICAgICAgICAgICAgICAgICAgZXJyLmVycm9y bXNnCi0gICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgICAgICAgICAgfSBjYXRj aCAoZSkgewotICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihlLnN0YWNrIHx8IGUp OwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICB9LAotICAgICAgICAg ICAgICAgIH0pOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LAotICAgICAgICAgIH07 Ci0gICAgICAgIH0pOwotICAgICAgfQotICAgICAgYWxlcnRpZnlbRGlhbG9nTmFtZV0odHJ1ZSku cmVzaXplVG8oJzYwJScsICc1MCUnKTsKKyAgICBzdGFydF9iYWNrdXBfZ2xvYmFsX3NlcnZlcjog ZnVuY3Rpb24oYWN0aW9uLCB0cmVlSXRlbSwgcGFyYW1zKSB7CisgICAgICBsZXQgZGlhbG9nID0g bmV3IGdsb2JhbEJhY2t1cERpYWxvZy5CYWNrdXBEaWFsb2coCisgICAgICAgIHBnQnJvd3NlciwK KyAgICAgICAgJCwKKyAgICAgICAgYWxlcnRpZnksCisgICAgICAgIEJhY2t1cE1vZGVsCisgICAg ICApOworICAgICAgZGlhbG9nLmRyYXcoYWN0aW9uLCB0cmVlSXRlbSwgcGFyYW1zKTsKICAgICB9 LAogCiAgICAgLy8gQ2FsbGJhY2sgdG8gZHJhdyBCYWNrdXAgRGlhbG9nIGZvciBvYmplY3RzCiAg ICAgYmFja3VwX29iamVjdHM6IGZ1bmN0aW9uKGFjdGlvbiwgdHJlZUl0ZW0pIHsKLQotICAgICAg dmFyIGkgPSB0cmVlSXRlbSB8fCBwZ0Jyb3dzZXIudHJlZS5zZWxlY3RlZCgpLAotICAgICAgICBz ZXJ2ZXJfZGF0YSA9IG51bGw7Ci0KLSAgICAgIHdoaWxlIChpKSB7Ci0gICAgICAgIHZhciBub2Rl X2RhdGEgPSBwZ0Jyb3dzZXIudHJlZS5pdGVtRGF0YShpKTsKLSAgICAgICAgaWYgKG5vZGVfZGF0 YS5fdHlwZSA9PSAnc2VydmVyJykgewotICAgICAgICAgIHNlcnZlcl9kYXRhID0gbm9kZV9kYXRh OwotICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHBnQnJvd3Nlci50 cmVlLmhhc1BhcmVudChpKSkgewotICAgICAgICAgIGkgPSAkKHBnQnJvd3Nlci50cmVlLnBhcmVu dChpKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgYWxlcnRpZnkuYWxlcnQoCi0gICAg ICAgICAgICBnZXR0ZXh0KCdCYWNrdXAgRXJyb3InKSwKLSAgICAgICAgICAgIGdldHRleHQoJ1Bs ZWFzZSBzZWxlY3Qgc2VydmVyIG9yIGNoaWxkIG5vZGUgZnJvbSB0cmVlLicpCi0gICAgICAgICAg KTsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICBpZiAoIXNl cnZlcl9kYXRhKSB7Ci0gICAgICAgIHJldHVybjsKLSAgICAgIH0KLQotICAgICAgdmFyIG1vZHVs ZSA9ICdwYXRocycsCi0gICAgICAgIHByZWZlcmVuY2VfbmFtZSA9ICdwZ19iaW5fZGlyJywKLSAg ICAgICAgbXNnID0gZ2V0dGV4dCgnUGxlYXNlIHNldCBiaW5hcnkgcGF0aCBmb3IgUG9zdGdyZVNR TCBTZXJ2ZXIgZnJvbSBwcmVmZXJlbmNlcy4nKTsKLQotICAgICAgaWYgKChzZXJ2ZXJfZGF0YS50 eXBlICYmIHNlcnZlcl9kYXRhLnR5cGUgPT0gJ3BwYXMnKSB8fAotICAgICAgICBzZXJ2ZXJfZGF0 YS5zZXJ2ZXJfdHlwZSA9PSAncHBhcycpIHsKLSAgICAgICAgcHJlZmVyZW5jZV9uYW1lID0gJ3Bw YXNfYmluX2Rpcic7Ci0gICAgICAgIG1zZyA9IGdldHRleHQoJ1BsZWFzZSBzZXQgYmluYXJ5IHBh dGggZm9yIEVEQiBQb3N0Z3JlcyBBZHZhbmNlZCBTZXJ2ZXIgZnJvbSBwcmVmZXJlbmNlcy4nKTsK LSAgICAgIH0KLQotICAgICAgdmFyIHByZWZlcmVuY2UgPSBwZ0Jyb3dzZXIuZ2V0X3ByZWZlcmVu Y2UobW9kdWxlLCBwcmVmZXJlbmNlX25hbWUpOwotCi0gICAgICBpZiAocHJlZmVyZW5jZSkgewot ICAgICAgICBpZiAoIXByZWZlcmVuY2UudmFsdWUpIHsKLSAgICAgICAgICBhbGVydGlmeS5hbGVy dChnZXR0ZXh0KCdDb25maWd1cmF0aW9uIHJlcXVpcmVkJyksIG1zZyk7Ci0gICAgICAgICAgcmV0 dXJuOwotICAgICAgICB9Ci0gICAgICB9IGVsc2UgewotICAgICAgICBhbGVydGlmeS5hbGVydCgK LSAgICAgICAgICBnZXR0ZXh0KCdCYWNrdXAgRXJyb3InKSwKLSAgICAgICAgICBTKGdldHRleHQo J0ZhaWxlZCB0byBsb2FkIHByZWZlcmVuY2UgJXMgb2YgbW9kdWxlICVzJykpLnNwcmludGYocHJl ZmVyZW5jZV9uYW1lLCBtb2R1bGUpLnZhbHVlKCkKLSAgICAgICAgKTsKLSAgICAgICAgcmV0dXJu OwotICAgICAgfQotCi0gICAgICB2YXIgdGl0bGUgPSBTKGdldHRleHQoJ0JhY2t1cCAoJXM6ICVz KScpKSwKLSAgICAgICAgdHJlZSA9IHBnQnJvd3Nlci50cmVlLAotICAgICAgICBpdGVtID0gdHJl ZUl0ZW0gfHwgdHJlZS5zZWxlY3RlZCgpLAotICAgICAgICBkYXRhID0gaXRlbSAmJiBpdGVtLmxl bmd0aCA9PSAxICYmIHRyZWUuaXRlbURhdGEoaXRlbSksCi0gICAgICAgIG5vZGUgPSBkYXRhICYm IGRhdGEuX3R5cGUgJiYgcGdCcm93c2VyLk5vZGVzW2RhdGEuX3R5cGVdOwotCi0gICAgICBpZiAo IW5vZGUpCi0gICAgICAgIHJldHVybjsKLQotICAgICAgdmFyIHRyZWVJbmZvID0gbm9kZS5nZXRU cmVlTm9kZUhpZXJhcmNoeS5hcHBseShub2RlLCBbaXRlbV0pOwotCi0gICAgICBpZiAodHJlZUlu Zm8uZGF0YWJhc2UuX2xhYmVsLmluZGV4T2YoJz0nKSA+PSAwKSB7Ci0gICAgICAgIGFsZXJ0aWZ5 LmFsZXJ0KAotICAgICAgICAgIGdldHRleHQoJ0JhY2t1cCBlcnJvcicpLAotICAgICAgICAgIGdl dHRleHQoJ0JhY2t1cCBqb2IgY3JlYXRpb24gZmFpbGVkLiAnKwotICAgICAgICAgICdEYXRhYmFz ZXMgd2l0aCA9IHN5bWJvbHMgaW4gdGhlIG5hbWUgY2Fubm90IGJlIGJhY2tlZCB1cCB1c2luZyB0 aGlzIHV0aWxpdHkuJykKLSAgICAgICAgKTsKLSAgICAgICAgcmV0dXJuOwotICAgICAgfQotCi0g ICAgICB0aXRsZSA9IHRpdGxlLnNwcmludGYobm9kZS5sYWJlbCwgZGF0YS5sYWJlbCkudmFsdWUo KTsKLQotICAgICAgaWYgKCFhbGVydGlmeS5iYWNrdXBfb2JqZWN0cykgewotICAgICAgICAvLyBD cmVhdGUgRGlhbG9nIHRpdGxlIG9uIHRoZSBmbHkgd2l0aCBub2RlIGRldGFpbHMKLSAgICAgICAg YWxlcnRpZnkuZGlhbG9nKCdiYWNrdXBfb2JqZWN0cycsIGZ1bmN0aW9uIGZhY3RvcnkoKSB7Ci0g ICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgIG1haW46IGZ1bmN0aW9uKHRpdGxlKSB7Ci0g ICAgICAgICAgICAgIHRoaXMuc2V0KCd0aXRsZScsIHRpdGxlKTsKLSAgICAgICAgICAgIH0sCi0g ICAgICAgICAgICBidWlsZDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgIGFsZXJ0aWZ5LnBn RGlhbG9nQnVpbGQuYXBwbHkodGhpcyk7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgc2V0 dXA6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAg IGJ1dHRvbnM6IFt7Ci0gICAgICAgICAgICAgICAgICB0ZXh0OiAnJywKLSAgICAgICAgICAgICAg ICAgIGNsYXNzTmFtZTogJ2J0biBidG4tZGVmYXVsdCBwdWxsLWxlZnQgZmEgZmEtbGcgZmEtaW5m bycsCi0gICAgICAgICAgICAgICAgICBhdHRyczogewotICAgICAgICAgICAgICAgICAgICBuYW1l OiAnb2JqZWN0X2hlbHAnLAotICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYnV0dG9uJywKLSAg ICAgICAgICAgICAgICAgICAgdXJsOiAnYmFja3VwLmh0bWwnLAotICAgICAgICAgICAgICAgICAg ICBsYWJlbDogZ2V0dGV4dCgnQmFja3VwJyksCi0gICAgICAgICAgICAgICAgICB9LAotICAgICAg ICAgICAgICAgIH0sIHsKLSAgICAgICAgICAgICAgICAgIHRleHQ6ICcnLAotICAgICAgICAgICAg ICAgICAga2V5OiAxMTIsCi0gICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdidG4gYnRuLWRl ZmF1bHQgcHVsbC1sZWZ0IGZhIGZhLWxnIGZhLXF1ZXN0aW9uJywKLSAgICAgICAgICAgICAgICAg IGF0dHJzOiB7Ci0gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdkaWFsb2dfaGVscCcsCi0gICAg ICAgICAgICAgICAgICAgIHR5cGU6ICdidXR0b24nLAotICAgICAgICAgICAgICAgICAgICBsYWJl bDogZ2V0dGV4dCgnQmFja3VwJyksCi0gICAgICAgICAgICAgICAgICAgIHVybDogdXJsX2Zvcign aGVscC5zdGF0aWMnLCB7Ci0gICAgICAgICAgICAgICAgICAgICAgJ2ZpbGVuYW1lJzogJ2JhY2t1 cF9kaWFsb2cuaHRtbCcsCi0gICAgICAgICAgICAgICAgICAgIH0pLAotICAgICAgICAgICAgICAg ICAgfSwKLSAgICAgICAgICAgICAgICB9LCB7Ci0gICAgICAgICAgICAgICAgICB0ZXh0OiBnZXR0 ZXh0KCdCYWNrdXAnKSwKLSAgICAgICAgICAgICAgICAgIGtleTogMTMsCi0gICAgICAgICAgICAg ICAgICBjbGFzc05hbWU6ICdidG4gYnRuLXByaW1hcnkgZmEgZmEtbGcgZmEtc2F2ZSBwZy1hbGVy dGlmeS1idXR0b24nLAotICAgICAgICAgICAgICAgICAgJ2RhdGEtYnRuLW5hbWUnOiAnYmFja3Vw JywKLSAgICAgICAgICAgICAgICB9LCB7Ci0gICAgICAgICAgICAgICAgICB0ZXh0OiBnZXR0ZXh0 KCdDYW5jZWwnKSwKLSAgICAgICAgICAgICAgICAgIGtleTogMjcsCi0gICAgICAgICAgICAgICAg ICBjbGFzc05hbWU6ICdidG4gYnRuLWRhbmdlciBmYSBmYS1sZyBmYS10aW1lcyBwZy1hbGVydGlm eS1idXR0b24nLAotICAgICAgICAgICAgICAgICAgJ2RhdGEtYnRuLW5hbWUnOiAnY2FuY2VsJywK LSAgICAgICAgICAgICAgICB9XSwKLSAgICAgICAgICAgICAgICAvLyBTZXQgb3B0aW9ucyBmb3Ig ZGlhbG9nCi0gICAgICAgICAgICAgICAgb3B0aW9uczogewotICAgICAgICAgICAgICAgICAgdGl0 bGU6IHRpdGxlLAotICAgICAgICAgICAgICAgICAgLy9kaXNhYmxlIGJvdGggcGFkZGluZyBhbmQg b3ZlcmZsb3cgY29udHJvbC4KLSAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICExLAotICAgICAg ICAgICAgICAgICAgb3ZlcmZsb3c6ICExLAotICAgICAgICAgICAgICAgICAgbW9kZWw6IDAsCi0g ICAgICAgICAgICAgICAgICByZXNpemFibGU6IHRydWUsCi0gICAgICAgICAgICAgICAgICBtYXhp bWl6YWJsZTogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgIHBpbm5hYmxlOiBmYWxzZSwKLSAgICAg ICAgICAgICAgICAgIGNsb3NhYmxlQnlEaW1tZXI6IGZhbHNlLAotICAgICAgICAgICAgICAgICAg bW9kYWw6IGZhbHNlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgIH07Ci0gICAg ICAgICAgICB9LAotICAgICAgICAgICAgaG9va3M6IHsKLSAgICAgICAgICAgICAgLy8gdHJpZ2dl cmVkIHdoZW4gdGhlIGRpYWxvZyBpcyBjbG9zZWQKLSAgICAgICAgICAgICAgb25jbG9zZTogZnVu Y3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHRoaXMudmlldykgewotICAgICAgICAgICAg ICAgICAgdGhpcy52aWV3LnJlbW92ZSh7Ci0gICAgICAgICAgICAgICAgICAgIGRhdGE6IHRydWUs Ci0gICAgICAgICAgICAgICAgICAgIGludGVybmFsOiB0cnVlLAotICAgICAgICAgICAgICAgICAg ICBzaWxlbnQ6IHRydWUsCi0gICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICB9 Ci0gICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgcHJlcGFyZTog ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgIHZhciBzZWxmID0gdGhpczsKLSAgICAgICAgICAg ICAgLy8gRGlzYWJsZSBCYWNrdXAgYnV0dG9uIHVudGlsIHVzZXIgcHJvdmlkZXMgRmlsZW5hbWUK LSAgICAgICAgICAgICAgdGhpcy5fX2ludGVybmFsLmJ1dHRvbnNbMl0uZWxlbWVudC5kaXNhYmxl ZCA9IHRydWU7Ci0gICAgICAgICAgICAgIHZhciAkY29udGFpbmVyID0gJCgnPGRpdiBjbGFzcz1c J2JhY2t1cF9kaWFsb2dcJz48L2Rpdj4nKTsKLSAgICAgICAgICAgICAgdmFyIHQgPSBwZ0Jyb3dz ZXIudHJlZSwKLSAgICAgICAgICAgICAgICBpID0gdC5zZWxlY3RlZCgpLAotICAgICAgICAgICAg ICAgIGQgPSBpICYmIGkubGVuZ3RoID09IDEgPyB0Lml0ZW1EYXRhKGkpIDogdW5kZWZpbmVkLAot ICAgICAgICAgICAgICAgIG5vZGUgPSBkICYmIHBnQnJvd3Nlci5Ob2Rlc1tkLl90eXBlXTsKLQot ICAgICAgICAgICAgICBpZiAoIWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAg ICAgICAgIHZhciB0cmVlSW5mbyA9IG5vZGUuZ2V0VHJlZU5vZGVIaWVyYXJjaHkuYXBwbHkobm9k ZSwgW2ldKTsKLQotICAgICAgICAgICAgICB2YXIgbmV3TW9kZWwgPSBuZXcgQmFja3VwT2JqZWN0 TW9kZWwoe30sIHsKLSAgICAgICAgICAgICAgICAgIG5vZGVfaW5mbzogdHJlZUluZm8sCi0gICAg ICAgICAgICAgICAgfSksCi0gICAgICAgICAgICAgICAgZmllbGRzID0gQmFja2Zvcm0uZ2VuZXJh dGVWaWV3U2NoZW1hKAotICAgICAgICAgICAgICAgICAgdHJlZUluZm8sIG5ld01vZGVsLCAnY3Jl YXRlJywgbm9kZSwgdHJlZUluZm8uc2VydmVyLCB0cnVlCi0gICAgICAgICAgICAgICAgKTsKLQot ICAgICAgICAgICAgICB2YXIgdmlldyA9IHRoaXMudmlldyA9IG5ldyBCYWNrZm9ybS5EaWFsb2co ewotICAgICAgICAgICAgICAgIGVsOiAkY29udGFpbmVyLAotICAgICAgICAgICAgICAgIG1vZGVs OiBuZXdNb2RlbCwKLSAgICAgICAgICAgICAgICBzY2hlbWE6IGZpZWxkcywKLSAgICAgICAgICAg ICAgfSk7Ci0KLSAgICAgICAgICAgICAgJCh0aGlzLmVsZW1lbnRzLmJvZHkuY2hpbGROb2Rlc1sw XSkuYWRkQ2xhc3MoCi0gICAgICAgICAgICAgICAgJ2FsZXJ0aWZ5X3Rvb2xzX2RpYWxvZ19wcm9w ZXJ0aWVzIG9ial9wcm9wZXJ0aWVzJwotICAgICAgICAgICAgICApOwotCi0gICAgICAgICAgICAg IHZpZXcucmVuZGVyKCk7Ci0KLSAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cy5jb250ZW50LmFw cGVuZENoaWxkKCRjb250YWluZXIuZ2V0KDApKTsKLQotICAgICAgICAgICAgICBpZih2aWV3KSB7 Ci0gICAgICAgICAgICAgICAgdmlldy4kZWwuYXR0cigndGFiaW5kZXgnLCAtMSk7Ci0gICAgICAg ICAgICAgICAgLy8gdmFyIGRpYWxvZ1RhYk5hdmlnYXRvciA9IHBnQnJvd3Nlci5rZXlib2FyZE5h dmlnYXRpb24uZ2V0RGlhbG9nVGFiTmF2aWdhdG9yKHZpZXcpOwotICAgICAgICAgICAgICAgIHBn QnJvd3Nlci5rZXlib2FyZE5hdmlnYXRpb24uZ2V0RGlhbG9nVGFiTmF2aWdhdG9yKHZpZXcpOwot ICAgICAgICAgICAgICAgIHZhciBjb250YWluZXIgPSB2aWV3LiRlbC5maW5kKCcudGFiLWNvbnRl bnQ6Zmlyc3QgPiAudGFiLXBhbmUuYWN0aXZlOmZpcnN0Jyk7Ci0gICAgICAgICAgICAgICAgY29t bW9uVXRpbHMuZmluZEFuZFNldEZvY3VzKGNvbnRhaW5lcik7Ci0gICAgICAgICAgICAgIH0KLSAg ICAgICAgICAgICAgLy8gTGlzdGVuIHRvIG1vZGVsICYgaWYgZmlsZW5hbWUgaXMgcHJvdmlkZWQg dGhlbiBlbmFibGUgQmFja3VwIGJ1dHRvbgotICAgICAgICAgICAgICB0aGlzLnZpZXcubW9kZWwu b24oJ2NoYW5nZScsIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGlmICghXy5pc1VuZGVm aW5lZCh0aGlzLmdldCgnZmlsZScpKSAmJiB0aGlzLmdldCgnZmlsZScpICE9PSAnJykgewotICAg ICAgICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLmNsZWFyKCk7Ci0gICAgICAgICAgICAgICAg ICBzZWxmLl9faW50ZXJuYWwuYnV0dG9uc1syXS5lbGVtZW50LmRpc2FibGVkID0gZmFsc2U7Ci0g ICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgIHNlbGYuX19pbnRlcm5h bC5idXR0b25zWzJdLmVsZW1lbnQuZGlzYWJsZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAg dGhpcy5lcnJvck1vZGVsLnNldCgnZmlsZScsIGdldHRleHQoJ1BsZWFzZSBwcm92aWRlIGZpbGVu YW1lJykpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAg ICAgIH0sCi0gICAgICAgICAgICAvLyBDYWxsYmFjayBmdW5jdGlvbnMgd2hlbiBjbGljayBvbiB0 aGUgYnV0dG9ucyBvZiB0aGUgQWxlcnRpZnkgZGlhbG9ncwotICAgICAgICAgICAgY2FsbGJhY2s6 IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgLy8gRmV0Y2ggY3VycmVudCBzZXJ2ZXIgaWQK LSAgICAgICAgICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJlZSwKLSAgICAgICAgICAgICAgICBp ID0gdC5zZWxlY3RlZCgpLAotICAgICAgICAgICAgICAgIGQgPSBpICYmIGkubGVuZ3RoID09IDEg PyB0Lml0ZW1EYXRhKGkpIDogdW5kZWZpbmVkLAotICAgICAgICAgICAgICAgIG5vZGUgPSBkICYm IHBnQnJvd3Nlci5Ob2Rlc1tkLl90eXBlXTsKLQotICAgICAgICAgICAgICBpZiAoZS5idXR0b24u ZWxlbWVudC5uYW1lID09ICdkaWFsb2dfaGVscCcgfHwgZS5idXR0b24uZWxlbWVudC5uYW1lID09 ICdvYmplY3RfaGVscCcpIHsKLSAgICAgICAgICAgICAgICBlLmNhbmNlbCA9IHRydWU7Ci0gICAg ICAgICAgICAgICAgcGdCcm93c2VyLnNob3dIZWxwKGUuYnV0dG9uLmVsZW1lbnQubmFtZSwgZS5i dXR0b24uZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3VybCcpLAotICAgICAgICAgICAgICAgICAgbm9k ZSwgaSwgZS5idXR0b24uZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2xhYmVsJykpOwotICAgICAgICAg ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgIGlmIChlLmJ1 dHRvblsnZGF0YS1idG4tbmFtZSddID09PSAnYmFja3VwJykgewotICAgICAgICAgICAgICAgIGlm ICghZCkKLSAgICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICAgIHZhciB0 cmVlSW5mbyA9IG5vZGUuZ2V0VHJlZU5vZGVIaWVyYXJjaHkuYXBwbHkobm9kZSwgW2ldKTsKLQot ICAgICAgICAgICAgICAgIC8vIFNldCBjdXJyZW50IGRhdGFiYXNlIGludG8gbW9kZWwKLSAgICAg ICAgICAgICAgICB0aGlzLnZpZXcubW9kZWwuc2V0KCdkYXRhYmFzZScsIHRyZWVJbmZvLmRhdGFi YXNlLl9sYWJlbCk7Ci0KLSAgICAgICAgICAgICAgICAvLyBXZSB3aWxsIHJlbW92ZSBvbmNlIG9i amVjdCB0cmVlIGlzIGltcGxlbWVudGVkCi0gICAgICAgICAgICAgICAgLy8gSWYgc2VsZWN0ZWQg bm9kZSBpcyBTY2hlbWEgdGhlbiBhZGQgaXQgaW4gbW9kZWwKLSAgICAgICAgICAgICAgICBpZiAo ZC5fdHlwZSA9PSAnc2NoZW1hJykgewotICAgICAgICAgICAgICAgICAgdmFyIHNjaGVtYXMgPSBb XTsKLSAgICAgICAgICAgICAgICAgIHNjaGVtYXMucHVzaChkLl9sYWJlbCk7Ci0gICAgICAgICAg ICAgICAgICB0aGlzLnZpZXcubW9kZWwuc2V0KCdzY2hlbWFzJywgc2NoZW1hcyk7Ci0gICAgICAg ICAgICAgICAgfQotICAgICAgICAgICAgICAgIC8vIElmIHNlbGVjdGVkIG5vZGUgaXMgVGFibGUg dGhlbiBhZGQgaXQgaW4gbW9kZWwgYWxvbmcgd2l0aAotICAgICAgICAgICAgICAgIC8vIGl0cyBz Y2hlbWEKLSAgICAgICAgICAgICAgICBpZiAoZC5fdHlwZSA9PSAndGFibGUnKSB7Ci0gICAgICAg ICAgICAgICAgICB0aGlzLnZpZXcubW9kZWwuc2V0KAotICAgICAgICAgICAgICAgICAgICAndGFi bGVzJywgWwotICAgICAgICAgICAgICAgICAgICAgIFt0cmVlSW5mby5zY2hlbWEuX2xhYmVsLCBk Ll9sYWJlbF0sCi0gICAgICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAgICAgICAgICk7Ci0g ICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gUmVtb3ZlIHJhdGlvIGF0dHJp YnV0ZSBmcm9tIG1vZGVsIGlmIGl0IGhhcyBlbXB0eSBzdHJpbmcuCi0gICAgICAgICAgICAgICAg Ly8gVGhlIHZhbGlkIHZhbHVlIGNhbiBiZSBiZXR3ZWVuIDAgdG8gOS4KLSAgICAgICAgICAgICAg ICBpZiAoXy5pc0VtcHR5KHRoaXMudmlldy5tb2RlbC5nZXQoJ3JhdGlvJykpKSB7Ci0gICAgICAg ICAgICAgICAgICB0aGlzLnZpZXcubW9kZWwudW5zZXQoJ3JhdGlvJyk7Ci0gICAgICAgICAgICAg ICAgfQotCi0gICAgICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzLAotICAgICAgICAgICAgICAg ICAgYmFzZVVybCA9IHVybF9mb3IoJ2JhY2t1cC5jcmVhdGVfb2JqZWN0X2pvYicsIHsKLSAgICAg ICAgICAgICAgICAgICAgJ3NpZCc6IHRyZWVJbmZvLnNlcnZlci5faWQsCi0gICAgICAgICAgICAg ICAgICB9KSwKLSAgICAgICAgICAgICAgICAgIGFyZ3MgPSB0aGlzLnZpZXcubW9kZWwudG9KU09O KCk7Ci0KLSAgICAgICAgICAgICAgICAkLmFqYXgoewotICAgICAgICAgICAgICAgICAgdXJsOiBi YXNlVXJsLAotICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsCi0gICAgICAgICAgICAg ICAgICBkYXRhOiB7Ci0gICAgICAgICAgICAgICAgICAgICdkYXRhJzogSlNPTi5zdHJpbmdpZnko YXJncyksCi0gICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgc3VjY2Vzczog ZnVuY3Rpb24ocmVzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZXMuc3VjY2Vzcykgewot ICAgICAgICAgICAgICAgICAgICAgIGFsZXJ0aWZ5LnN1Y2Nlc3MoZ2V0dGV4dCgnQmFja3VwIGpv YiBjcmVhdGVkLicpLCA1KTsKLSAgICAgICAgICAgICAgICAgICAgICBwZ0Jyb3dzZXIuRXZlbnRz LnRyaWdnZXIoJ3BnYWRtaW4tYmdwcm9jZXNzOmNyZWF0ZWQnLCBzZWxmKTsKLSAgICAgICAgICAg ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgIGVycm9y OiBmdW5jdGlvbih4aHIpIHsKLSAgICAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAg ICAgICAgICAgICB2YXIgZXJyID0gJC5wYXJzZUpTT04oeGhyLnJlc3BvbnNlVGV4dCk7Ci0gICAg ICAgICAgICAgICAgICAgICAgYWxlcnRpZnkuYWxlcnQoCi0gICAgICAgICAgICAgICAgICAgICAg ICBnZXR0ZXh0KCdCYWNrdXAgam9iIGZhaWxlZC4nKSwKLSAgICAgICAgICAgICAgICAgICAgICAg IGVyci5lcnJvcm1zZwotICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICAgICAg ICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oZS5z dGFjayB8fCBlKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgfSwK LSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSwKLSAg ICAgICAgICB9OwotICAgICAgICB9KTsKLSAgICAgIH0KLSAgICAgIGFsZXJ0aWZ5LmJhY2t1cF9v YmplY3RzKHRpdGxlKS5yZXNpemVUbygnNjUlJywgJzYwJScpOworICAgICAgbGV0IGRpYWxvZyA9 IG5ldyBnbG9iYWxCYWNrdXBEaWFsb2cuQmFja3VwRGlhbG9nKAorICAgICAgICBwZ0Jyb3dzZXIs CisgICAgICAgICQsCisgICAgICAgIGFsZXJ0aWZ5LAorICAgICAgICBCYWNrdXBPYmplY3RNb2Rl bAorICAgICAgKTsKKyAgICAgIGRpYWxvZy5kcmF3KGFjdGlvbiwgdHJlZUl0ZW0sIG51bGwpOwog ICAgIH0sCiAgIH07CiAgIHJldHVybiBwZ0Jyb3dzZXIuQmFja3VwOwpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vdG9vbHMvYmFja3VwL3N0YXRpYy9qcy9iYWNrdXBfZGlhbG9nLmpzIGIvd2ViL3Bn YWRtaW4vdG9vbHMvYmFja3VwL3N0YXRpYy9qcy9iYWNrdXBfZGlhbG9nLmpzCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi5jNzRjMzc2YwotLS0gL2Rldi9udWxsCisrKyBiL3dl Yi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC9zdGF0aWMvanMvYmFja3VwX2RpYWxvZy5qcwpAQCAtMCww ICsxLDY5IEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworLy8K Ky8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRl YW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGlj ZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vCisKK2ltcG9ydCBnZXR0ZXh0IGZyb20gJy4uLy4uLy4uLy4uL3N0YXRp Yy9qcy9nZXR0ZXh0JzsKK2ltcG9ydCBCYWNrZm9ybSBmcm9tICcuLi8uLi8uLi8uLi9zdGF0aWMv anMvYmFja2Zvcm0ucGdhZG1pbic7CitpbXBvcnQge0RpYWxvZ30gZnJvbSAnLi4vLi4vLi4vLi4v c3RhdGljL2pzL2FsZXJ0aWZ5L2RpYWxvZyc7CisKK2V4cG9ydCBjbGFzcyBCYWNrdXBEaWFsb2cg ZXh0ZW5kcyBEaWFsb2cgeworICBjb25zdHJ1Y3RvcihwZ0Jyb3dzZXIsICQsIGFsZXJ0aWZ5LCBC YWNrdXBNb2RlbCwgYmFja2Zvcm0gPSBCYWNrZm9ybSkgeworICAgIHN1cGVyKCdCYWNrdXAgRXJy b3InLAorICAgICAgJzxkaXYgY2xhc3M9XCdiYWNrdXBfZGlhbG9nXCc+PC9kaXY+JywKKyAgICAg IHBnQnJvd3NlciwgJCwgYWxlcnRpZnksIEJhY2t1cE1vZGVsLCBiYWNrZm9ybSk7CisgIH0KKwor ICBkcmF3KGFjdGlvbiwgYWNpVHJlZUl0ZW0sIHBhcmFtcykgeworICAgIGNvbnN0IHNlcnZlcklu Zm9ybWF0aW9uID0gdGhpcy5yZXRyaWV2ZUFuY2VzdG9yT2ZUeXBlU2VydmVyKGFjaVRyZWVJdGVt KTsKKworICAgIGlmICghc2VydmVySW5mb3JtYXRpb24pIHsKKyAgICAgIHJldHVybjsKKyAgICB9 CisKKyAgICBpZiAoIXRoaXMuaGFzQmluYXJpZXNDb25maWd1cmF0aW9uKHNlcnZlckluZm9ybWF0 aW9uKSkgeworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnN0IHR5cGVPZkRpYWxvZyA9 IEJhY2t1cERpYWxvZy50eXBlT2ZEaWFsb2cocGFyYW1zKTsKKworICAgIGlmICghdGhpcy5jYW5F eGVjdXRlT25DdXJyZW50RGF0YWJhc2UoYWNpVHJlZUl0ZW0pKSB7CisgICAgICByZXR1cm47Cisg ICAgfQorCisgICAgY29uc3QgZGlhbG9nID0gdGhpcy5jcmVhdGVPckdldERpYWxvZyhCYWNrdXBE aWFsb2cuZGlhbG9nVGl0bGUodHlwZU9mRGlhbG9nKSwKKyAgICAgIHR5cGVPZkRpYWxvZyk7Cisg ICAgZGlhbG9nKHRydWUpLnJlc2l6ZVRvKCc2MCUnLCAnNTAlJyk7CisgIH0KKworICBzdGF0aWMg dHlwZU9mRGlhbG9nKHBhcmFtcykgeworICAgIGlmIChwYXJhbXMgPT09IG51bGwpIHsKKyAgICAg IHJldHVybiAnYmFja3VwX29iamVjdHMnOworICAgIH0KKyAgICBsZXQgdHlwZU9mRGlhbG9nID0g J3NlcnZlcic7CisgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHBhcmFtc1snZ2xvYmFscyddKSAmJiBw YXJhbXNbJ2dsb2JhbHMnXSkgeworICAgICAgdHlwZU9mRGlhbG9nID0gJ2dsb2JhbHMnOworICAg IH0KKyAgICByZXR1cm4gdHlwZU9mRGlhbG9nOworICB9CisKKyAgc3RhdGljIGRpYWxvZ1RpdGxl KHR5cGVPZkRpYWxvZykgeworICAgIGlmICh0eXBlT2ZEaWFsb2cgPT09ICdiYWNrdXBfb2JqZWN0 cycpIHsKKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgICByZXR1cm4gKCh0eXBlT2ZEaWFs b2cgPT09ICdnbG9iYWxzJykgPworICAgICAgZ2V0dGV4dCgnQmFja3VwIEdsb2JhbHMuLi4nKSA6 CisgICAgICBnZXR0ZXh0KCdCYWNrdXAgU2VydmVyLi4uJykpOworICB9CisKKyAgZGlhbG9nTmFt ZSh0eXBlT2ZEaWFsb2cpIHsKKyAgICBpZiAodHlwZU9mRGlhbG9nID09PSAnYmFja3VwX29iamVj dHMnKSB7CisgICAgICByZXR1cm4gdHlwZU9mRGlhbG9nOworICAgIH0KKyAgICByZXR1cm4gJ0Jh Y2t1cERpYWxvZ18nICsgdHlwZU9mRGlhbG9nOworICB9Cit9CmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi90b29scy9iYWNrdXAvc3RhdGljL2pzL2JhY2t1cF9kaWFsb2dfd3JhcHBlci5qcyBiL3dl Yi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC9zdGF0aWMvanMvYmFja3VwX2RpYWxvZ193cmFwcGVyLmpz Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi4yY2ViZTNkMQotLS0gL2Rldi9u dWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC9zdGF0aWMvanMvYmFja3VwX2RpYWxv Z193cmFwcGVyLmpzCkBAIC0wLDAgKzEsMjU4IEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0g UG9zdGdyZVNRTCBUb29scworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBw Z0FkbWluIERldmVsb3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5k ZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2ltcG9ydCB7Z2V0VHJlZU5v ZGVIaWVyYXJjaHlGcm9tRWxlbWVudH0gZnJvbSAnLi4vLi4vLi4vLi4vc3RhdGljL2pzL3RyZWUv cGdhZG1pbl90cmVlX25vZGUnOworaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zL2luZGV4JzsKK2lt cG9ydCBnZXR0ZXh0IGZyb20gJy4uLy4uLy4uLy4uL3N0YXRpYy9qcy9nZXR0ZXh0JzsKK2ltcG9y dCB1cmxfZm9yIGZyb20gJy4uLy4uLy4uLy4uL3N0YXRpYy9qcy91cmxfZm9yJzsKK2ltcG9ydCBf IGZyb20gJ3VuZGVyc2NvcmUnOworaW1wb3J0IHtEaWFsb2dXcmFwcGVyfSBmcm9tICcuLi8uLi8u Li8uLi9zdGF0aWMvanMvYWxlcnRpZnkvZGlhbG9nX3dyYXBwZXInOworCitleHBvcnQgY2xhc3Mg QmFja3VwRGlhbG9nV3JhcHBlciBleHRlbmRzIERpYWxvZ1dyYXBwZXIgeworICBjb25zdHJ1Y3Rv cihkaWFsb2dDb250YWluZXJTZWxlY3RvciwgZGlhbG9nVGl0bGUsIHR5cGVPZkRpYWxvZywKKyAg ICAgICAgICAgICAganF1ZXJ5LCBwZ0Jyb3dzZXIsIGFsZXJ0aWZ5LCBkaWFsb2dNb2RlbCwgYmFj a2Zvcm0pIHsKKyAgICBzdXBlcihkaWFsb2dDb250YWluZXJTZWxlY3RvciwgZGlhbG9nVGl0bGUs IGpxdWVyeSwKKyAgICAgIHBnQnJvd3NlciwgYWxlcnRpZnksIGRpYWxvZ01vZGVsLCBiYWNrZm9y bSk7CisgICAgdGhpcy50eXBlT2ZEaWFsb2cgPSB0eXBlT2ZEaWFsb2c7CisgIH0KKworICBtYWlu KHRpdGxlKSB7CisgICAgdGhpcy5zZXQoJ3RpdGxlJywgdGl0bGUpOworICB9CisKKyAgc2V0dXAo KSB7CisgICAgcmV0dXJuIHsKKyAgICAgIGJ1dHRvbnM6IFt7CisgICAgICAgIHRleHQ6ICcnLAor ICAgICAgICBjbGFzc05hbWU6ICdidG4gYnRuLWRlZmF1bHQgcHVsbC1sZWZ0IGZhIGZhLWxnIGZh LWluZm8nLAorICAgICAgICBhdHRyczogeworICAgICAgICAgIG5hbWU6ICdvYmplY3RfaGVscCcs CisgICAgICAgICAgdHlwZTogJ2J1dHRvbicsCisgICAgICAgICAgdXJsOiAnYmFja3VwLmh0bWwn LAorICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdCYWNrdXAnKSwKKyAgICAgICAgfSwKKyAgICAg IH0sIHsKKyAgICAgICAgdGV4dDogJycsCisgICAgICAgIGtleTogMTEyLAorICAgICAgICBjbGFz c05hbWU6ICdidG4gYnRuLWRlZmF1bHQgcHVsbC1sZWZ0IGZhIGZhLWxnIGZhLXF1ZXN0aW9uJywK KyAgICAgICAgYXR0cnM6IHsKKyAgICAgICAgICBuYW1lOiAnZGlhbG9nX2hlbHAnLAorICAgICAg ICAgIHR5cGU6ICdidXR0b24nLAorICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdCYWNrdXAnKSwK KyAgICAgICAgICB1cmw6IHVybF9mb3IoJ2hlbHAuc3RhdGljJywgeworICAgICAgICAgICAgJ2Zp bGVuYW1lJzogJ2JhY2t1cF9kaWFsb2cuaHRtbCcsCisgICAgICAgICAgfSksCisgICAgICAgIH0s CisgICAgICB9LCB7CisgICAgICAgIHRleHQ6IGdldHRleHQoJ0JhY2t1cCcpLAorICAgICAgICBr ZXk6IDEzLAorICAgICAgICBjbGFzc05hbWU6ICdidG4gYnRuLXByaW1hcnkgZmEgZmEtbGcgZmEt c2F2ZSBwZy1hbGVydGlmeS1idXR0b24nLAorICAgICAgICAnZGF0YS1idG4tbmFtZSc6ICdiYWNr dXAnLAorICAgICAgfSwgeworICAgICAgICB0ZXh0OiBnZXR0ZXh0KCdDYW5jZWwnKSwKKyAgICAg ICAga2V5OiAyNywKKyAgICAgICAgY2xhc3NOYW1lOiAnYnRuIGJ0bi1kYW5nZXIgZmEgZmEtbGcg ZmEtdGltZXMgcGctYWxlcnRpZnktYnV0dG9uJywKKyAgICAgICAgJ2RhdGEtYnRuLW5hbWUnOiAn Y2FuY2VsJywKKyAgICAgIH1dLAorICAgICAgLy8gU2V0IG9wdGlvbnMgZm9yIGRpYWxvZworICAg ICAgb3B0aW9uczogeworICAgICAgICB0aXRsZTogdGhpcy5kaWFsb2dUaXRsZSwKKyAgICAgICAg Ly9kaXNhYmxlIGJvdGggcGFkZGluZyBhbmQgb3ZlcmZsb3cgY29udHJvbC4KKyAgICAgICAgcGFk ZGluZzogITEsCisgICAgICAgIG92ZXJmbG93OiAhMSwKKyAgICAgICAgbW9kZWw6IDAsCisgICAg ICAgIHJlc2l6YWJsZTogdHJ1ZSwKKyAgICAgICAgbWF4aW1pemFibGU6IHRydWUsCisgICAgICAg IHBpbm5hYmxlOiBmYWxzZSwKKyAgICAgICAgY2xvc2FibGVCeURpbW1lcjogZmFsc2UsCisgICAg ICAgIG1vZGFsOiBmYWxzZSwKKyAgICAgIH0sCisgICAgfTsKKyAgfQorCisgIHByZXBhcmUoKSB7 CisgICAgdGhpcy5kaXNhYmxlQmFja3VwQnV0dG9uKCk7CisKKyAgICBjb25zdCAkY29udGFpbmVy ID0gdGhpcy5qcXVlcnkodGhpcy5kaWFsb2dDb250YWluZXJTZWxlY3Rvcik7CisgICAgY29uc3Qg c2VsZWN0ZWRUcmVlTm9kZSA9IHRoaXMuZ2V0U2VsZWN0ZWROb2RlKCk7CisgICAgY29uc3Qgc2Vs ZWN0ZWRUcmVlTm9kZURhdGEgPSB0aGlzLmdldFNlbGVjdGVkTm9kZURhdGEoc2VsZWN0ZWRUcmVl Tm9kZSk7CisgICAgaWYgKCFzZWxlY3RlZFRyZWVOb2RlRGF0YSkgeworICAgICAgcmV0dXJuOwor ICAgIH0KKworICAgIGNvbnN0IG5vZGUgPSB0aGlzLnBnQnJvd3Nlci5Ob2Rlc1tzZWxlY3RlZFRy ZWVOb2RlRGF0YS5fdHlwZV07CisgICAgaWYgKHRoaXMuZGlhbG9nVGl0bGUgPT09IG51bGwpIHsK KyAgICAgIGNvbnN0IHRpdGxlID0gYEJhY2t1cCAoJHtub2RlLmxhYmVsfTogJHtzZWxlY3RlZFRy ZWVOb2RlRGF0YS5sYWJlbH0pYDsKKyAgICAgIHRoaXMubWFpbih0aXRsZSk7CisgICAgfQorCisg ICAgY29uc3QgdHJlZUluZm8gPSBnZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21FbGVtZW50KHRoaXMu cGdCcm93c2VyLCBzZWxlY3RlZFRyZWVOb2RlKTsKKyAgICBjb25zdCBkaWFsb2cgPSB0aGlzLmNy ZWF0ZURpYWxvZyhub2RlLCB0cmVlSW5mbywgdGhpcy50eXBlT2ZEaWFsb2csICRjb250YWluZXIp OworICAgIHRoaXMuYWRkQWxlcnRpZnlDbGFzc1RvQmFja3VwTm9kZUNoaWxkTm9kZXMoKTsKKyAg ICBkaWFsb2cucmVuZGVyKCk7CisKKyAgICB0aGlzLmVsZW1lbnRzLmNvbnRlbnQuYXBwZW5kQ2hp bGQoJGNvbnRhaW5lci5nZXQoMCkpOworCisgICAgdGhpcy5mb2N1c09uRGlhbG9nKGRpYWxvZyk7 CisgICAgdGhpcy5zZXRMaXN0ZW5lcnNGb3JGaWxlbmFtZUNoYW5nZXMoKTsKKyAgfQorCisgIGNh bGxiYWNrKGV2ZW50KSB7CisgICAgY29uc3Qgc2VsZWN0ZWRUcmVlTm9kZSA9IHRoaXMuZ2V0U2Vs ZWN0ZWROb2RlKCk7CisgICAgY29uc3Qgc2VsZWN0ZWRUcmVlTm9kZURhdGEgPSB0aGlzLmdldFNl bGVjdGVkTm9kZURhdGEoc2VsZWN0ZWRUcmVlTm9kZSk7CisgICAgY29uc3Qgbm9kZSA9IHNlbGVj dGVkVHJlZU5vZGVEYXRhICYmIHRoaXMucGdCcm93c2VyLk5vZGVzW3NlbGVjdGVkVHJlZU5vZGVE YXRhLl90eXBlXTsKKworICAgIGlmICh0aGlzLndhc0hlbHBCdXR0b25QcmVzc2VkKGV2ZW50KSkg eworICAgICAgZXZlbnQuY2FuY2VsID0gdHJ1ZTsKKyAgICAgIHRoaXMucGdCcm93c2VyLnNob3dI ZWxwKAorICAgICAgICBldmVudC5idXR0b24uZWxlbWVudC5uYW1lLAorICAgICAgICBldmVudC5i dXR0b24uZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3VybCcpLAorICAgICAgICBub2RlLAorICAgICAg ICBzZWxlY3RlZFRyZWVOb2RlLAorICAgICAgICBldmVudC5idXR0b24uZWxlbWVudC5nZXRBdHRy aWJ1dGUoJ2xhYmVsJykKKyAgICAgICk7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg KHRoaXMud2FzQmFja3VwQnV0dG9uUHJlc3NlZChldmVudCkpIHsKKworICAgICAgaWYgKCFzZWxl Y3RlZFRyZWVOb2RlRGF0YSkKKyAgICAgICAgcmV0dXJuOworCisgICAgICBjb25zdCBzZXJ2ZXJJ ZGVudGlmaWVyID0gdGhpcy5yZXRyaWV2ZVNlcnZlcklkZW50aWZpZXIobm9kZSwgc2VsZWN0ZWRU cmVlTm9kZSk7CisKKyAgICAgIGNvbnN0IGRpYWxvZyA9IHRoaXM7CisgICAgICBsZXQgdXJsU2hv cnRjdXQgPSAnYmFja3VwLmNyZWF0ZV9zZXJ2ZXJfam9iJzsKKyAgICAgIGlmICh0aGlzLnR5cGVP ZkRpYWxvZyA9PT0gJ2JhY2t1cF9vYmplY3RzJykgeworICAgICAgICB1cmxTaG9ydGN1dCA9ICdi YWNrdXAuY3JlYXRlX29iamVjdF9qb2InOworICAgICAgfQorICAgICAgY29uc3QgYmFzZVVybCA9 IHVybF9mb3IodXJsU2hvcnRjdXQsIHsKKyAgICAgICAgJ3NpZCc6IHNlcnZlcklkZW50aWZpZXIs CisgICAgICB9KTsKKworICAgICAgY29uc3QgdHJlZUluZm8gPSBnZXRUcmVlTm9kZUhpZXJhcmNo eUZyb21FbGVtZW50KAorICAgICAgICB0aGlzLnBnQnJvd3NlciwKKyAgICAgICAgc2VsZWN0ZWRU cmVlTm9kZQorICAgICAgKTsKKworICAgICAgdGhpcy5zZXRFeHRyYVBhcmFtZXRlcnMoc2VsZWN0 ZWRUcmVlTm9kZSwgdHJlZUluZm8pOworCisgICAgICBsZXQgc2VydmljZSA9IGF4aW9zLmNyZWF0 ZSh7fSk7CisgICAgICBzZXJ2aWNlLnBvc3QoCisgICAgICAgIGJhc2VVcmwsCisgICAgICAgIHRo aXMudmlldy5tb2RlbC50b0pTT04oKQorICAgICAgKS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAg ICAgZGlhbG9nLmFsZXJ0aWZ5LnN1Y2Nlc3MoZ2V0dGV4dCgnQmFja3VwIGpvYiBjcmVhdGVkLicp LCA1KTsKKyAgICAgICAgZGlhbG9nLnBnQnJvd3Nlci5FdmVudHMudHJpZ2dlcigncGdhZG1pbi1i Z3Byb2Nlc3M6Y3JlYXRlZCcsIGRpYWxvZyk7CisgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJy b3IpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICBjb25zdCBlcnIgPSBlcnJvci5yZXNwb25z ZS5kYXRhOworICAgICAgICAgIGRpYWxvZy5hbGVydGlmeS5hbGVydCgKKyAgICAgICAgICAgIGdl dHRleHQoJ0JhY2t1cCBqb2IgZmFpbGVkLicpLAorICAgICAgICAgICAgZXJyLmVycm9ybXNnCisg ICAgICAgICAgKTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgIGNvbnNvbGUud2Fy bihlLnN0YWNrIHx8IGUpOworICAgICAgICB9CisgICAgICB9KTsKKyAgICB9CisgIH0KKworICBh ZGRBbGVydGlmeUNsYXNzVG9CYWNrdXBOb2RlQ2hpbGROb2RlcygpIHsKKyAgICB0aGlzLmpxdWVy eSh0aGlzLmVsZW1lbnRzLmJvZHkuY2hpbGROb2Rlc1swXSkuYWRkQ2xhc3MoCisgICAgICAnYWxl cnRpZnlfdG9vbHNfZGlhbG9nX3Byb3BlcnRpZXMgb2JqX3Byb3BlcnRpZXMnCisgICAgKTsKKyAg fQorCisgIGdldFNlbGVjdGVkTm9kZSgpIHsKKyAgICBjb25zdCB0cmVlID0gdGhpcy5wZ0Jyb3dz ZXIudHJlZU1lbnU7CisgICAgY29uc3Qgc2VsZWN0ZWROb2RlID0gdHJlZS5zZWxlY3RlZCgpOwor ICAgIGlmIChzZWxlY3RlZE5vZGUpIHsKKyAgICAgIHJldHVybiB0cmVlLmZpbmROb2RlQnlEb21F bGVtZW50KHNlbGVjdGVkTm9kZSk7CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiB1bmRlZmlu ZWQ7CisgICAgfQorICB9CisKKyAgZGlzYWJsZUJhY2t1cEJ1dHRvbigpIHsKKyAgICB0aGlzLl9f aW50ZXJuYWwuYnV0dG9uc1syXS5lbGVtZW50LmRpc2FibGVkID0gdHJ1ZTsKKyAgfQorCisgIGVu YWJsZUJhY2t1cEJ1dHRvbigpIHsKKyAgICB0aGlzLl9faW50ZXJuYWwuYnV0dG9uc1syXS5lbGVt ZW50LmRpc2FibGVkID0gZmFsc2U7CisgIH0KKworICBjcmVhdGVEaWFsb2cobm9kZSwgdHJlZUlu Zm8sIHR5cGVPZkRpYWxvZywgJGNvbnRhaW5lcikgeworICAgIGxldCBhdHRyaWJ1dGVzID0ge307 CisgICAgaWYgKHR5cGVPZkRpYWxvZyAhPT0gJ2JhY2t1cF9vYmplY3RzJykgeworICAgICAgYXR0 cmlidXRlc1sndHlwZSddID0gdHlwZU9mRGlhbG9nOworICAgIH0KKyAgICAvLyBJbnN0YW5jZSBv ZiBiYWNrYm9uZSBtb2RlbAorICAgIGNvbnN0IG5ld01vZGVsID0gbmV3IHRoaXMuZGlhbG9nTW9k ZWwoYXR0cmlidXRlcywgeworICAgICAgbm9kZV9pbmZvOiB0cmVlSW5mbywKKyAgICB9KTsKKyAg ICBjb25zdCBmaWVsZHMgPSB0aGlzLmJhY2tmb3JtLmdlbmVyYXRlVmlld1NjaGVtYSgKKyAgICAg IHRyZWVJbmZvLCBuZXdNb2RlbCwgJ2NyZWF0ZScsIG5vZGUsIHRyZWVJbmZvLnNlcnZlciwgdHJ1 ZQorICAgICk7CisKKyAgICByZXR1cm4gdGhpcy52aWV3ID0gbmV3IHRoaXMuYmFja2Zvcm0uRGlh bG9nKHsKKyAgICAgIGVsOiAkY29udGFpbmVyLAorICAgICAgbW9kZWw6IG5ld01vZGVsLAorICAg ICAgc2NoZW1hOiBmaWVsZHMsCisgICAgfSk7CisgIH0KKworICByZXRyaWV2ZVNlcnZlcklkZW50 aWZpZXIobm9kZSwgc2VsZWN0ZWRUcmVlTm9kZSkgeworICAgIGNvbnN0IHRyZWVJbmZvID0gZ2V0 VHJlZU5vZGVIaWVyYXJjaHlGcm9tRWxlbWVudCgKKyAgICAgIHRoaXMucGdCcm93c2VyLAorICAg ICAgc2VsZWN0ZWRUcmVlTm9kZQorICAgICk7CisgICAgcmV0dXJuIHRyZWVJbmZvLnNlcnZlci5f aWQ7CisgIH0KKworICBzZXRMaXN0ZW5lcnNGb3JGaWxlbmFtZUNoYW5nZXMoKSB7CisgICAgY29u c3Qgc2VsZiA9IHRoaXM7CisKKyAgICB0aGlzLnZpZXcubW9kZWwub24oJ2NoYW5nZScsIGZ1bmN0 aW9uICgpIHsKKyAgICAgIGlmICghXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgnZmlsZScpKSAmJiB0 aGlzLmdldCgnZmlsZScpICE9PSAnJykgeworICAgICAgICB0aGlzLmVycm9yTW9kZWwuY2xlYXIo KTsKKyAgICAgICAgc2VsZi5lbmFibGVCYWNrdXBCdXR0b24oKTsKKyAgICAgIH0gZWxzZSB7Cisg ICAgICAgIHNlbGYuZGlzYWJsZUJhY2t1cEJ1dHRvbigpOworICAgICAgICB0aGlzLmVycm9yTW9k ZWwuc2V0KCdmaWxlJywgZ2V0dGV4dCgnUGxlYXNlIHByb3ZpZGUgYSBmaWxlbmFtZScpKTsKKyAg ICAgIH0KKyAgICB9KTsKKyAgfQorCisgIHNldEV4dHJhUGFyYW1ldGVycyhzZWxlY3RlZFRyZWVO b2RlLCB0cmVlSW5mbykgeworICAgIGlmICh0aGlzLnR5cGVPZkRpYWxvZyA9PT0gJ2JhY2t1cF9v YmplY3RzJykgeworCisgICAgICB0aGlzLnZpZXcubW9kZWwuc2V0KCdkYXRhYmFzZScsIHRyZWVJ bmZvLmRhdGFiYXNlLl9sYWJlbCk7CisKKyAgICAgIGNvbnN0IG5vZGVEYXRhID0gc2VsZWN0ZWRU cmVlTm9kZS5nZXREYXRhKCk7CisgICAgICBpZiAobm9kZURhdGEuX3R5cGUgPT09ICdzY2hlbWEn KSB7CisgICAgICAgIHRoaXMudmlldy5tb2RlbC5zZXQoJ3NjaGVtYXMnLCBbbm9kZURhdGEuX2xh YmVsXSk7CisgICAgICB9CisKKyAgICAgIGlmIChub2RlRGF0YS5fdHlwZSA9PT0gJ3RhYmxlJykg eworICAgICAgICB0aGlzLnZpZXcubW9kZWwuc2V0KCd0YWJsZXMnLCBbCisgICAgICAgICAgW3Ry ZWVJbmZvLnNjaGVtYS5fbGFiZWwsIG5vZGVEYXRhLl9sYWJlbF0sCisgICAgICAgIF0pOworICAg ICAgfQorCisgICAgICBpZiAoXy5pc0VtcHR5KHRoaXMudmlldy5tb2RlbC5nZXQoJ3JhdGlvJykp KSB7CisgICAgICAgIHRoaXMudmlldy5tb2RlbC51bnNldCgncmF0aW8nKTsKKyAgICAgIH0KKyAg ICB9CisgIH0KKworICB3YXNCYWNrdXBCdXR0b25QcmVzc2VkKGV2ZW50KSB7CisgICAgcmV0dXJu IGV2ZW50LmJ1dHRvblsnZGF0YS1idG4tbmFtZSddID09PSAnYmFja3VwJzsKKyAgfQorfQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3N0YXRpYy9qcy9tZW51X3V0aWxzLmpz IGIvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3N0YXRpYy9qcy9tZW51X3V0aWxzLmpzCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi40N2E5ZjBkMwotLS0gL2Rldi9udWxsCisr KyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC9zdGF0aWMvanMvbWVudV91dGlscy5qcwpAQCAt MCwwICsxLDIzIEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scwor Ly8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50 IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwg TGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vCisKK2ltcG9ydCB7aXNWYWxpZFRyZWVOb2RlRGF0YX0gZnJvbSAn Li4vLi4vLi4vLi4vc3RhdGljL2pzL3RyZWUvdHJlZSc7CisKK2V4cG9ydCBjb25zdCBiYWNrdXBT dXBwb3J0ZWROb2RlcyA9IFsKKyAgJ2RhdGFiYXNlJywgJ3NjaGVtYScsICd0YWJsZScsICdwYXJ0 aXRpb24nLAorXTsKKworZnVuY3Rpb24gaXNOb2RlQVNlcnZlckFuZENvbm5lY3RlZCh0cmVlTm9k ZURhdGEpIHsKKyAgcmV0dXJuICgoJ3NlcnZlcicgPT09IHRyZWVOb2RlRGF0YS5fdHlwZSkgJiYg dHJlZU5vZGVEYXRhLmNvbm5lY3RlZCk7Cit9CisKK2V4cG9ydCBmdW5jdGlvbiBtZW51RW5hYmxl ZFNlcnZlcih0cmVlTm9kZURhdGEpIHsKKyAgcmV0dXJuIGlzVmFsaWRUcmVlTm9kZURhdGEodHJl ZU5vZGVEYXRhKQorICAgICYmIGlzTm9kZUFTZXJ2ZXJBbmRDb25uZWN0ZWQodHJlZU5vZGVEYXRh KTsKK30KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9qcy9k YXRhZ3JpZC5qcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9qcy9kYXRhZ3Jp ZC5qcwppbmRleCBiMGVkNjBmNi4uNTIwYTljZTUgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rv b2xzL2RhdGFncmlkL3N0YXRpYy9qcy9kYXRhZ3JpZC5qcworKysgYi93ZWIvcGdhZG1pbi90b29s cy9kYXRhZ3JpZC9zdGF0aWMvanMvZGF0YWdyaWQuanMKQEAgLTEsMTAgKzEsMTQgQEAKIGRlZmlu ZSgncGdhZG1pbi5kYXRhZ3JpZCcsIFsKICAgJ3NvdXJjZXMvZ2V0dGV4dCcsICdzb3VyY2VzL3Vy bF9mb3InLCAnanF1ZXJ5JywgJ3VuZGVyc2NvcmUnLAogICAncGdhZG1pbi5hbGVydGlmeWpzJywg J3NvdXJjZXMvcGdhZG1pbicsICdidW5kbGVkX2NvZGVtaXJyb3InLAotICAnc291cmNlcy9zcWxl ZGl0b3JfdXRpbHMnLCAnYmFja2JvbmUnLCAnd2Nkb2NrZXInLAorICAnc291cmNlcy9zcWxlZGl0 b3JfdXRpbHMnLCAnYmFja2JvbmUnLAorICAndG9vbHMvZGF0YWdyaWQvc3RhdGljL2pzL3Nob3df ZGF0YScsCisgICd0b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvZ2V0X3BhbmVsX3RpdGxlJywKKyAg J3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9qcy9zaG93X3F1ZXJ5X3Rvb2wnLAorICAnd2Nkb2NrZXIn LAogXSwgZnVuY3Rpb24oCiAgIGdldHRleHQsIHVybF9mb3IsICQsIF8sIGFsZXJ0aWZ5LCBwZ0Fk bWluLCBjb2RlbWlycm9yLCBzcWxFZGl0b3JVdGlscywKLSAgQmFja2JvbmUKKyAgQmFja2JvbmUs IHNob3dEYXRhLCBwYW5lbFRpdGxlLCBzaG93UXVlcnlUb29sCiApIHsKICAgLy8gU29tZSBzY3Jp cHRzIGRvIGV4cG9ydCB0aGVpciBvYmplY3QgaW4gdGhlIHdpbmRvdyBvbmx5LgogICAvLyBHZW5l cmFsbHkgdGhlIG9uZSwgd2hpY2ggZG8gbm8gaGF2ZSBBTUQgc3VwcG9ydC4KQEAgLTE2MSw1NSAr MTY1LDcgQEAgZGVmaW5lKCdwZ2FkbWluLmRhdGFncmlkJywgWwogCiAgICAgICAvLyBUaGlzIGlz IGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gc2hvdyBkYXRhIHdoZW4gdXNlciBjbGljayBvbiBtZW51 IGl0ZW0uCiAgICAgICBzaG93X2RhdGFfZ3JpZDogZnVuY3Rpb24oZGF0YSwgaSkgewotICAgICAg ICB2YXIgc2VsZiA9IHRoaXMsCi0gICAgICAgICAgZCA9IHBnQWRtaW4uQnJvd3Nlci50cmVlLml0 ZW1EYXRhKGkpOwotICAgICAgICBpZiAoZCA9PT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgICAgYWxl cnRpZnkuYWxlcnQoCi0gICAgICAgICAgICBnZXR0ZXh0KCdEYXRhIEdyaWQgRXJyb3InKSwKLSAg ICAgICAgICAgIGdldHRleHQoJ05vIG9iamVjdCBzZWxlY3RlZC4nKQotICAgICAgICAgICk7Ci0g ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gR2V0IHRoZSBwYXJlbnQg ZGF0YSBmcm9tIHRoZSB0cmVlIG5vZGUgaGllcmFyY2h5LgotICAgICAgICB2YXIgbm9kZSA9IHBn QnJvd3Nlci5Ob2Rlc1tkLl90eXBlXSwKLSAgICAgICAgICBwYXJlbnREYXRhID0gbm9kZS5nZXRU cmVlTm9kZUhpZXJhcmNoeShpKTsKLQotICAgICAgICAvLyBJZiBzZXJ2ZXIsIGRhdGFiYXNlIG9y IHNjaGVtYSBpcyB1bmRlZmluZWQgdGhlbiByZXR1cm4gZnJvbSB0aGUgZnVuY3Rpb24uCi0gICAg ICAgIGlmIChwYXJlbnREYXRhLnNlcnZlciA9PT0gdW5kZWZpbmVkIHx8IHBhcmVudERhdGEuZGF0 YWJhc2UgPT09IHVuZGVmaW5lZCkgewotICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAg ICAgICAvLyBJZiBzY2hlbWEsIHZpZXcsIGNhdGFsb2cgb2JqZWN0IGFsbCBhcmUgdW5kZWZpbmVk IHRoZW4gcmV0dXJuIGZyb20gdGhlIGZ1bmN0aW9uLgotICAgICAgICBpZiAocGFyZW50RGF0YS5z Y2hlbWEgPT09IHVuZGVmaW5lZCAmJiBwYXJlbnREYXRhLnZpZXcgPT09IHVuZGVmaW5lZCAmJgot ICAgICAgICAgICAgIHBhcmVudERhdGEuY2F0YWxvZyA9PT0gdW5kZWZpbmVkKSB7Ci0gICAgICAg ICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIG5zcF9uYW1lID0gJyc7Ci0KLSAg ICAgICAgaWYgKHBhcmVudERhdGEuc2NoZW1hICE9IHVuZGVmaW5lZCkgewotICAgICAgICAgIG5z cF9uYW1lID0gcGFyZW50RGF0YS5zY2hlbWEubGFiZWw7Ci0gICAgICAgIH0KLSAgICAgICAgZWxz ZSBpZiAocGFyZW50RGF0YS52aWV3ICE9IHVuZGVmaW5lZCkgewotICAgICAgICAgIG5zcF9uYW1l ID0gcGFyZW50RGF0YS52aWV3LmxhYmVsOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHBh cmVudERhdGEuY2F0YWxvZyAhPSB1bmRlZmluZWQpIHsKLSAgICAgICAgICBuc3BfbmFtZSA9IHBh cmVudERhdGEuY2F0YWxvZy5sYWJlbDsKLSAgICAgICAgfQotICAgICAgICB2YXIgdXJsX3BhcmFt cyA9IHsKLSAgICAgICAgICAnY21kX3R5cGUnOiBkYXRhLm1udWlkLAotICAgICAgICAgICdvYmpf dHlwZSc6IGQuX3R5cGUsCi0gICAgICAgICAgJ3NnaWQnOiBwYXJlbnREYXRhLnNlcnZlcl9ncm91 cC5faWQsCi0gICAgICAgICAgJ3NpZCc6IHBhcmVudERhdGEuc2VydmVyLl9pZCwKLSAgICAgICAg ICAnZGlkJzogcGFyZW50RGF0YS5kYXRhYmFzZS5faWQsCi0gICAgICAgICAgJ29ial9pZCc6IGQu X2lkLAotICAgICAgICB9OwotCi0gICAgICAgIHZhciBiYXNlVXJsID0gdXJsX2ZvcignZGF0YWdy aWQuaW5pdGlhbGl6ZV9kYXRhZ3JpZCcsIHVybF9wYXJhbXMpOwotICAgICAgICB2YXIgZ3JpZF90 aXRsZSA9IHBhcmVudERhdGEuc2VydmVyLmxhYmVsICsgJyAtICcgKyBwYXJlbnREYXRhLmRhdGFi YXNlLmxhYmVsICsgJyAtICcKLSAgICAgICAgICAgICAgICAgICAgICAgICsgbnNwX25hbWUgKyAn LicgKyBkLmxhYmVsOwotCi0gICAgICAgIHNlbGYuY3JlYXRlX3RyYW5zYWN0aW9uKGJhc2VVcmws IG51bGwsICdmYWxzZScsIHBhcmVudERhdGEuc2VydmVyLnNlcnZlcl90eXBlLCAnJywgZ3JpZF90 aXRsZSwgJycpOworICAgICAgICBzaG93RGF0YS5zaG93RGF0YUdyaWQodGhpcywgcGdCcm93c2Vy LCBhbGVydGlmeSwgZGF0YSwgaSk7CiAgICAgICB9LAogCiAgICAgICAvLyBUaGlzIGlzIGEgY2Fs bGJhY2sgZnVuY3Rpb24gdG8gc2hvdyBmaWx0ZXJlZCBkYXRhIHdoZW4gdXNlciBjbGljayBvbiBt ZW51IGl0ZW0uCkBAIC0zODQsNjMgKzM0MCwxMiBAQCBkZWZpbmUoJ3BnYWRtaW4uZGF0YWdyaWQn LCBbCiAgICAgICB9LAogCiAgICAgICBnZXRfcGFuZWxfdGl0bGU6IGZ1bmN0aW9uKCkgewotICAg ICAgICAvLyBHZXQgdGhlIHBhcmVudCBkYXRhIGZyb20gdGhlIHRyZWUgbm9kZSBoaWVyYXJjaHku Ci0gICAgICAgIHZhciB0cmVlID0gcGdBZG1pbi5Ccm93c2VyLnRyZWUsCi0gICAgICAgICAgc2Vs ZWN0ZWRfaXRlbSA9IHRyZWUuc2VsZWN0ZWQoKSwKLSAgICAgICAgICBpdGVtX2RhdGEgPSB0cmVl Lml0ZW1EYXRhKHNlbGVjdGVkX2l0ZW0pOwotCi0gICAgICAgIHZhciBub2RlID0gcGdCcm93c2Vy Lk5vZGVzW2l0ZW1fZGF0YS5fdHlwZV0sCi0gICAgICAgICAgcGFyZW50RGF0YSA9IG5vZGUuZ2V0 VHJlZU5vZGVIaWVyYXJjaHkoc2VsZWN0ZWRfaXRlbSk7Ci0KLSAgICAgICAgLy8gSWYgc2VydmVy LCBkYXRhYmFzZSBpcyB1bmRlZmluZWQgdGhlbiByZXR1cm4gZnJvbSB0aGUgZnVuY3Rpb24uCi0g ICAgICAgIGlmIChwYXJlbnREYXRhLnNlcnZlciA9PT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgICAg cmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIC8vIElmIERhdGFiYXNlIGlzIG5vdCBhdmFpbGFi bGUgdGhlbiB1c2UgZGVmYXVsdCBkYgotICAgICAgICB2YXIgZGJfbGFiZWwgPSBwYXJlbnREYXRh LmRhdGFiYXNlID8gcGFyZW50RGF0YS5kYXRhYmFzZS5sYWJlbAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDogcGFyZW50RGF0YS5zZXJ2ZXIuZGI7Ci0KLSAgICAg ICAgdmFyIGdyaWRfdGl0bGUgPSBkYl9sYWJlbCArICcgb24gJyArIHBhcmVudERhdGEuc2VydmVy LnVzZXIubmFtZSArICdAJyArCi0gICAgICAgICAgICAgICAgcGFyZW50RGF0YS5zZXJ2ZXIubGFi ZWw7Ci0gICAgICAgIHJldHVybiBncmlkX3RpdGxlOworICAgICAgICByZXR1cm4gcGFuZWxUaXRs ZS5nZXRQYW5lbFRpdGxlKHBnQnJvd3Nlcik7CiAgICAgICB9LAogICAgICAgLy8gVGhpcyBpcyBh IGNhbGxiYWNrIGZ1bmN0aW9uIHRvIHNob3cgcXVlcnkgdG9vbCB3aGVuIHVzZXIgY2xpY2sgb24g bWVudSBpdGVtLgotICAgICAgc2hvd19xdWVyeV90b29sOiBmdW5jdGlvbih1cmwsIGksIHBhbmVs X3RpdGxlKSB7Ci0gICAgICAgIHZhciBzVVJMID0gdXJsIHx8ICcnLAotICAgICAgICAgIGQgPSBw Z0FkbWluLkJyb3dzZXIudHJlZS5pdGVtRGF0YShpKTsKLQotICAgICAgICBwYW5lbF90aXRsZSA9 IHBhbmVsX3RpdGxlIHx8ICcnOwotICAgICAgICBpZiAoZCA9PT0gdW5kZWZpbmVkKSB7Ci0gICAg ICAgICAgYWxlcnRpZnkuYWxlcnQoCi0gICAgICAgICAgICBnZXR0ZXh0KCdRdWVyeSBUb29sIEVy cm9yJyksCi0gICAgICAgICAgICBnZXR0ZXh0KCdObyBvYmplY3Qgc2VsZWN0ZWQuJykKLSAgICAg ICAgICApOwotICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEdldCB0 aGUgcGFyZW50IGRhdGEgZnJvbSB0aGUgdHJlZSBub2RlIGhpZXJhcmNoeS4KLSAgICAgICAgdmFy IG5vZGUgPSBwZ0Jyb3dzZXIuTm9kZXNbZC5fdHlwZV0sCi0gICAgICAgICAgcGFyZW50RGF0YSA9 IG5vZGUuZ2V0VHJlZU5vZGVIaWVyYXJjaHkoaSk7Ci0KLSAgICAgICAgLy8gSWYgc2VydmVyLCBk YXRhYmFzZSBpcyB1bmRlZmluZWQgdGhlbiByZXR1cm4gZnJvbSB0aGUgZnVuY3Rpb24uCi0gICAg ICAgIGlmIChwYXJlbnREYXRhLnNlcnZlciA9PT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgICAgcmV0 dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHVybF9wYXJhbXMgPSB7Ci0gICAgICAgICAg ICAnc2dpZCc6IHBhcmVudERhdGEuc2VydmVyX2dyb3VwLl9pZCwKLSAgICAgICAgICAgICdzaWQn OiBwYXJlbnREYXRhLnNlcnZlci5faWQsCi0gICAgICAgICAgfSwKLSAgICAgICAgICB1cmxfZW5k cG9pbnQgPSAnZGF0YWdyaWQuaW5pdGlhbGl6ZV9xdWVyeV90b29sJzsKLSAgICAgICAgLy8gSWYg ZGF0YWJhc2Ugbm90IHByZXNlbnQgdGhlbiB1c2UgTWFpbnRlbmFuY2UgZGF0YWJhc2UKLSAgICAg ICAgLy8gV2Ugd2lsbCBoYW5kbGUgdGhpcyBhdCBzZXJ2ZXIgc2lkZQotICAgICAgICBpZiAocGFy ZW50RGF0YS5kYXRhYmFzZSkgewotICAgICAgICAgIHVybF9wYXJhbXNbJ2RpZCddID0gcGFyZW50 RGF0YS5kYXRhYmFzZS5faWQ7Ci0gICAgICAgICAgdXJsX2VuZHBvaW50ID0gJ2RhdGFncmlkLmlu aXRpYWxpemVfcXVlcnlfdG9vbF93aXRoX2RpZCc7Ci0gICAgICAgIH0KLSAgICAgICAgdmFyIGJh c2VVcmwgPSB1cmxfZm9yKHVybF9lbmRwb2ludCwgdXJsX3BhcmFtcyk7Ci0KLSAgICAgICAgdGhp cy5jcmVhdGVfdHJhbnNhY3Rpb24oYmFzZVVybCwgbnVsbCwgJ3RydWUnLCBwYXJlbnREYXRhLnNl cnZlci5zZXJ2ZXJfdHlwZSwgc1VSTCwgcGFuZWxfdGl0bGUsICcnLCBmYWxzZSk7CisgICAgICBz aG93X3F1ZXJ5X3Rvb2w6IGZ1bmN0aW9uKHVybCwgYWNpVHJlZUlkZW50aWZpZXIsIHBhbmVsVGl0 bGUpIHsKKyAgICAgICAgc2hvd1F1ZXJ5VG9vbC5zaG93UXVlcnlUb29sKHRoaXMsIHBnQnJvd3Nl ciwgYWxlcnRpZnksIHVybCwKKyAgICAgICAgICBhY2lUcmVlSWRlbnRpZmllciwgcGFuZWxUaXRs ZSk7CiAgICAgICB9LAogICAgICAgY3JlYXRlX3RyYW5zYWN0aW9uOiBmdW5jdGlvbihiYXNlVXJs LCB0YXJnZXQsIGlzX3F1ZXJ5X3Rvb2wsIHNlcnZlcl90eXBlLCBzVVJMLCBwYW5lbF90aXRsZSwg c3FsX2ZpbHRlciwgcmVjcmVhdGUpIHsKICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvc3RhdGljL2pzL2dldF9wYW5lbF90aXRs ZS5qcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9qcy9nZXRfcGFuZWxfdGl0 bGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjY0YjNhM2QyCi0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvc3RhdGljL2pzL2dldF9w YW5lbF90aXRsZS5qcwpAQCAtMCwwICsxLDMzIEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0g UG9zdGdyZVNRTCBUb29scworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBw Z0FkbWluIERldmVsb3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5k ZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2ltcG9ydCB7Z2V0VHJlZU5v ZGVIaWVyYXJjaHlGcm9tSWRlbnRpZmllcn0gZnJvbSAnLi4vLi4vLi4vLi4vc3RhdGljL2pzL3Ry ZWUvcGdhZG1pbl90cmVlX25vZGUnOworCitmdW5jdGlvbiBnZXREYXRhYmFzZUxhYmVsKHBhcmVu dERhdGEpIHsKKyAgcmV0dXJuIHBhcmVudERhdGEuZGF0YWJhc2UgPyBwYXJlbnREYXRhLmRhdGFi YXNlLmxhYmVsCisgICAgOiBwYXJlbnREYXRhLnNlcnZlci5kYjsKK30KKworZnVuY3Rpb24gaXNT ZXJ2ZXJJbmZvcm1hdGlvbkF2YWlsYWJsZShwYXJlbnREYXRhKSB7CisgIHJldHVybiBwYXJlbnRE YXRhLnNlcnZlciA9PT0gdW5kZWZpbmVkOworfQorCitleHBvcnQgZnVuY3Rpb24gZ2V0UGFuZWxU aXRsZShwZ0Jyb3dzZXIpIHsKKyAgY29uc3Qgc2VsZWN0ZWRfaXRlbSA9IHBnQnJvd3Nlci50cmVl TWVudS5zZWxlY3RlZCgpOworCisgIGNvbnN0IHBhcmVudERhdGEgPSBnZXRUcmVlTm9kZUhpZXJh cmNoeUZyb21JZGVudGlmaWVyCisgICAgLmNhbGwocGdCcm93c2VyLCBzZWxlY3RlZF9pdGVtKTsK KyAgaWYgKGlzU2VydmVySW5mb3JtYXRpb25BdmFpbGFibGUocGFyZW50RGF0YSkpIHsKKyAgICBy ZXR1cm47CisgIH0KKworICBjb25zdCBkYl9sYWJlbCA9IGdldERhdGFiYXNlTGFiZWwocGFyZW50 RGF0YSk7CisKKyAgcmV0dXJuIGAke2RiX2xhYmVsfSBvbiAke3BhcmVudERhdGEuc2VydmVyLnVz ZXIubmFtZX1AJHtwYXJlbnREYXRhLnNlcnZlci5sYWJlbH1gOworfQpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvc3RhdGljL2pzL3Nob3dfZGF0YS5qcyBiL3dlYi9wZ2Fk bWluL3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9qcy9zaG93X2RhdGEuanMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAuLjM3M2M5N2NkCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3Bn YWRtaW4vdG9vbHMvZGF0YWdyaWQvc3RhdGljL2pzL3Nob3dfZGF0YS5qcwpAQCAtMCwwICsxLDky IEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworLy8KKy8vIENv cHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKy8v IFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQor Ly8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vCitpbXBvcnQgZ2V0dGV4dCBmcm9tICcuLi8uLi8uLi8uLi9zdGF0aWMvanMvZ2V0 dGV4dCc7CitpbXBvcnQgdXJsX2ZvciBmcm9tICcuLi8uLi8uLi8uLi9zdGF0aWMvanMvdXJsX2Zv cic7CitpbXBvcnQge2dldFRyZWVOb2RlSGllcmFyY2h5RnJvbUlkZW50aWZpZXJ9IGZyb20gJy4u Ly4uLy4uLy4uL3N0YXRpYy9qcy90cmVlL3BnYWRtaW5fdHJlZV9ub2RlJzsKKworZXhwb3J0IGZ1 bmN0aW9uIHNob3dEYXRhR3JpZCgKKyAgZGF0YWdyaWQsCisgIHBnQnJvd3NlciwKKyAgYWxlcnRp ZnksCisgIGNvbm5lY3Rpb25EYXRhLAorICBhY2lUcmVlSWRlbnRpZmllcgorKSB7CisgIGNvbnN0 IG5vZGUgPSBwZ0Jyb3dzZXIudHJlZU1lbnUuZmluZE5vZGVCeURvbUVsZW1lbnQoYWNpVHJlZUlk ZW50aWZpZXIpOworICBpZiAobm9kZSA9PT0gdW5kZWZpbmVkIHx8ICFub2RlLmdldERhdGEoKSkg eworICAgIGFsZXJ0aWZ5LmFsZXJ0KAorICAgICAgZ2V0dGV4dCgnRGF0YSBHcmlkIEVycm9yJyks CisgICAgICBnZXR0ZXh0KCdObyBvYmplY3Qgc2VsZWN0ZWQuJykKKyAgICApOworICAgIHJldHVy bjsKKyAgfQorCisgIGNvbnN0IHBhcmVudERhdGEgPSBnZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21J ZGVudGlmaWVyLmNhbGwoCisgICAgcGdCcm93c2VyLAorICAgIGFjaVRyZWVJZGVudGlmaWVyCisg ICk7CisKKyAgaWYgKGhhc1NlcnZlck9yRGF0YWJhc2VDb25maWd1cmF0aW9uKHBhcmVudERhdGEp CisgICAgfHwgIWhhc1NjaGVtYU9yQ2F0YWxvZ09yVmlld0luZm9ybWF0aW9uKHBhcmVudERhdGEp KSB7CisgICAgcmV0dXJuOworICB9CisKKyAgbGV0IG5hbWVzcGFjZU5hbWUgPSByZXRyaWV2ZU5h bWVTcGFjZU5hbWUocGFyZW50RGF0YSk7CisgIGNvbnN0IGJhc2VVcmwgPSBnZW5lcmF0ZVVybChj b25uZWN0aW9uRGF0YSwgbm9kZS5nZXREYXRhKCksIHBhcmVudERhdGEpOworICBjb25zdCBncmlk X3RpdGxlID0gZ2VuZXJhdGVEYXRhZ3JpZFRpdGxlKHBhcmVudERhdGEsIG5hbWVzcGFjZU5hbWUs IG5vZGUuZ2V0RGF0YSgpKTsKKworICBkYXRhZ3JpZC5jcmVhdGVfdHJhbnNhY3Rpb24oCisgICAg YmFzZVVybCwKKyAgICBudWxsLAorICAgICdmYWxzZScsCisgICAgcGFyZW50RGF0YS5zZXJ2ZXIu c2VydmVyX3R5cGUsCisgICAgJycsCisgICAgZ3JpZF90aXRsZSwKKyAgICAnJworICApOworfQor CisKK2Z1bmN0aW9uIHJldHJpZXZlTmFtZVNwYWNlTmFtZShwYXJlbnREYXRhKSB7CisgIGlmIChw YXJlbnREYXRhLnNjaGVtYSAhPT0gdW5kZWZpbmVkKSB7CisgICAgcmV0dXJuIHBhcmVudERhdGEu c2NoZW1hLmxhYmVsOworICB9CisgIGVsc2UgaWYgKHBhcmVudERhdGEudmlldyAhPT0gdW5kZWZp bmVkKSB7CisgICAgcmV0dXJuIHBhcmVudERhdGEudmlldy5sYWJlbDsKKyAgfQorICBlbHNlIGlm IChwYXJlbnREYXRhLmNhdGFsb2cgIT09IHVuZGVmaW5lZCkgeworICAgIHJldHVybiBwYXJlbnRE YXRhLmNhdGFsb2cubGFiZWw7CisgIH0KKyAgcmV0dXJuICcnOworfQorCitmdW5jdGlvbiBnZW5l cmF0ZVVybChjb25uZWN0aW9uRGF0YSwgbm9kZURhdGEsIHBhcmVudERhdGEpIHsKKyAgY29uc3Qg dXJsX3BhcmFtcyA9IHsKKyAgICAnY21kX3R5cGUnOiBjb25uZWN0aW9uRGF0YS5tbnVpZCwKKyAg ICAnb2JqX3R5cGUnOiBub2RlRGF0YS5fdHlwZSwKKyAgICAnc2dpZCc6IHBhcmVudERhdGEuc2Vy dmVyX2dyb3VwLl9pZCwKKyAgICAnc2lkJzogcGFyZW50RGF0YS5zZXJ2ZXIuX2lkLAorICAgICdk aWQnOiBwYXJlbnREYXRhLmRhdGFiYXNlLl9pZCwKKyAgICAnb2JqX2lkJzogbm9kZURhdGEuX2lk LAorICB9OworCisgIHJldHVybiB1cmxfZm9yKCdkYXRhZ3JpZC5pbml0aWFsaXplX2RhdGFncmlk JywgdXJsX3BhcmFtcyk7Cit9CisKK2Z1bmN0aW9uIGhhc1NlcnZlck9yRGF0YWJhc2VDb25maWd1 cmF0aW9uKHBhcmVudERhdGEpIHsKKyAgcmV0dXJuIHBhcmVudERhdGEuc2VydmVyID09PSB1bmRl ZmluZWQgfHwgcGFyZW50RGF0YS5kYXRhYmFzZSA9PT0gdW5kZWZpbmVkOworfQorCitmdW5jdGlv biBoYXNTY2hlbWFPckNhdGFsb2dPclZpZXdJbmZvcm1hdGlvbihwYXJlbnREYXRhKSB7CisgIHJl dHVybiBwYXJlbnREYXRhLnNjaGVtYSAhPT0gdW5kZWZpbmVkIHx8IHBhcmVudERhdGEudmlldyAh PT0gdW5kZWZpbmVkIHx8CisgICAgcGFyZW50RGF0YS5jYXRhbG9nICE9PSB1bmRlZmluZWQ7Cit9 CisKK2Z1bmN0aW9uIGdlbmVyYXRlRGF0YWdyaWRUaXRsZShwYXJlbnREYXRhLCBuYW1lc3BhY2VO YW1lLCBub2RlRGF0YSkgeworICByZXR1cm4gYCR7cGFyZW50RGF0YS5zZXJ2ZXIubGFiZWx9IC0g JHtwYXJlbnREYXRhLmRhdGFiYXNlLmxhYmVsfSAtICR7bmFtZXNwYWNlTmFtZX0uJHtub2RlRGF0 YS5sYWJlbH1gOworfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvc3Rh dGljL2pzL3Nob3dfcXVlcnlfdG9vbC5qcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3N0 YXRpYy9qcy9zaG93X3F1ZXJ5X3Rvb2wuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAuLjBlYjEyYjhiCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvZGF0 YWdyaWQvc3RhdGljL2pzL3Nob3dfcXVlcnlfdG9vbC5qcwpAQCAtMCwwICsxLDYzIEBACisvLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v CisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworLy8KKy8vIENvcHlyaWdodCAo QykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKy8vIFRoaXMgc29m dHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorLy8KKy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v CisKK2ltcG9ydCBnZXR0ZXh0IGZyb20gJy4uLy4uLy4uLy4uL3N0YXRpYy9qcy9nZXR0ZXh0JzsK K2ltcG9ydCB1cmxfZm9yIGZyb20gJy4uLy4uLy4uLy4uL3N0YXRpYy9qcy91cmxfZm9yJzsKK2lt cG9ydCB7Z2V0VHJlZU5vZGVIaWVyYXJjaHlGcm9tSWRlbnRpZmllcn0gZnJvbSAnLi4vLi4vLi4v Li4vc3RhdGljL2pzL3RyZWUvcGdhZG1pbl90cmVlX25vZGUnOworCitmdW5jdGlvbiBoYXNEYXRh YmFzZUluZm9ybWF0aW9uKHBhcmVudERhdGEpIHsKKyAgcmV0dXJuIHBhcmVudERhdGEuZGF0YWJh c2U7Cit9CisKK2Z1bmN0aW9uIGdlbmVyYXRlVXJsKHBhcmVudERhdGEpIHsKKyAgbGV0IHVybF9l bmRwb2ludCA9ICdkYXRhZ3JpZC5pbml0aWFsaXplX3F1ZXJ5X3Rvb2wnOworICBsZXQgdXJsX3Bh cmFtcyA9IHsKKyAgICAnc2dpZCc6IHBhcmVudERhdGEuc2VydmVyX2dyb3VwLl9pZCwKKyAgICAn c2lkJzogcGFyZW50RGF0YS5zZXJ2ZXIuX2lkLAorICB9OworCisgIGlmIChoYXNEYXRhYmFzZUlu Zm9ybWF0aW9uKHBhcmVudERhdGEpKSB7CisgICAgdXJsX3BhcmFtc1snZGlkJ10gPSBwYXJlbnRE YXRhLmRhdGFiYXNlLl9pZDsKKyAgICB1cmxfZW5kcG9pbnQgPSAnZGF0YWdyaWQuaW5pdGlhbGl6 ZV9xdWVyeV90b29sX3dpdGhfZGlkJzsKKyAgfQorCisgIHJldHVybiB1cmxfZm9yKHVybF9lbmRw b2ludCwgdXJsX3BhcmFtcyk7Cit9CisKK2Z1bmN0aW9uIGhhc1NlcnZlckluZm9ybWF0aW9ucyhw YXJlbnREYXRhKSB7CisgIHJldHVybiBwYXJlbnREYXRhLnNlcnZlciA9PT0gdW5kZWZpbmVkOwor fQorCitleHBvcnQgZnVuY3Rpb24gc2hvd1F1ZXJ5VG9vbChkYXRhZ3JpZCwgcGdCcm93c2VyLCBh bGVydGlmeSwgdXJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNpVHJlZUlkZW50 aWZpZXIsIHBhbmVsVGl0bGUpIHsKKyAgY29uc3Qgc1VSTCA9IHVybCB8fCAnJzsKKyAgY29uc3Qg cXVlcnlUb29sVGl0bGUgPSBwYW5lbFRpdGxlIHx8ICcnOworCisgIGNvbnN0IGN1cnJlbnROb2Rl ID0gcGdCcm93c2VyLnRyZWVNZW51LmZpbmROb2RlQnlEb21FbGVtZW50KGFjaVRyZWVJZGVudGlm aWVyKTsKKyAgaWYgKGN1cnJlbnROb2RlID09PSB1bmRlZmluZWQpIHsKKyAgICBhbGVydGlmeS5h bGVydCgKKyAgICAgIGdldHRleHQoJ1F1ZXJ5IFRvb2wgRXJyb3InKSwKKyAgICAgIGdldHRleHQo J05vIG9iamVjdCBzZWxlY3RlZC4nKQorICAgICk7CisgICAgcmV0dXJuOworICB9CisKKyAgY29u c3QgcGFyZW50RGF0YSA9IGdldFRyZWVOb2RlSGllcmFyY2h5RnJvbUlkZW50aWZpZXIuY2FsbCgK KyAgICBwZ0Jyb3dzZXIsIGFjaVRyZWVJZGVudGlmaWVyKTsKKworICBpZiAoaGFzU2VydmVySW5m b3JtYXRpb25zKHBhcmVudERhdGEpKSB7CisgICAgcmV0dXJuOworICB9CisKKyAgY29uc3QgYmFz ZVVybCA9IGdlbmVyYXRlVXJsKHBhcmVudERhdGEpOworCisgIGRhdGFncmlkLmNyZWF0ZV90cmFu c2FjdGlvbigKKyAgICBiYXNlVXJsLCBudWxsLCAndHJ1ZScsCisgICAgcGFyZW50RGF0YS5zZXJ2 ZXIuc2VydmVyX3R5cGUsIHNVUkwsIHF1ZXJ5VG9vbFRpdGxlLCAnJywgZmFsc2UpOworfQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvZ3JhbnRfd2l6YXJkL3N0YXRpYy9qcy9ncmFudF93 aXphcmQuanMgYi93ZWIvcGdhZG1pbi90b29scy9ncmFudF93aXphcmQvc3RhdGljL2pzL2dyYW50 X3dpemFyZC5qcwppbmRleCA3NTA4ODdlYy4uMWI5ZTZkYjUgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2Fk bWluL3Rvb2xzL2dyYW50X3dpemFyZC9zdGF0aWMvanMvZ3JhbnRfd2l6YXJkLmpzCisrKyBiL3dl Yi9wZ2FkbWluL3Rvb2xzL2dyYW50X3dpemFyZC9zdGF0aWMvanMvZ3JhbnRfd2l6YXJkLmpzCkBA IC0yLDEyICsyLDE1IEBACiBkZWZpbmUoWwogICAnc291cmNlcy9nZXR0ZXh0JywgJ3NvdXJjZXMv dXJsX2ZvcicsICdqcXVlcnknLCAndW5kZXJzY29yZScsICdiYWNrYm9uZScsCiAgICdwZ2FkbWlu LmFsZXJ0aWZ5anMnLCAncGdhZG1pbi5iYWNrZ3JpZCcsICdwZ2FkbWluLmJhY2tmb3JtJywKLSAg J3BnYWRtaW4uYnJvd3NlcicsICdwZ2FkbWluLmJyb3dzZXIubm9kZScsICdiYWNrZ3JpZC5zZWxl Y3QuYWxsJywKKyAgJ3BnYWRtaW4uYnJvd3NlcicsICdwZ2FkbWluLmJyb3dzZXIubm9kZScsCisg ICd0b29scy9ncmFudF93aXphcmQvc3RhdGljL2pzL21lbnVfdXRpbHMnLAorICAnc291cmNlcy90 cmVlL3N1cHBvcnRlZF9ub2Rlc19tZW51JywKKyAgJ2JhY2tncmlkLnNlbGVjdC5hbGwnLAogICAn YmFja2dyaWQuZmlsdGVyJywgJ3BnYWRtaW4uYnJvd3Nlci5zZXJ2ZXIucHJpdmlsZWdlJywKICAg J3BnYWRtaW4uYnJvd3Nlci53aXphcmQnLAogXSwgZnVuY3Rpb24oCiAgIGdldHRleHQsIHVybF9m b3IsICQsIF8sIEJhY2tib25lLCBBbGVydGlmeSwgQmFja2dyaWQsIEJhY2tmb3JtLCBwZ0Jyb3dz ZXIsCi0gIHBnTm9kZQorICBwZ05vZGUsIG1lbnVVdGlscywgc3VwcG9ydGVkTm9kZXNNZW51CiAp IHsKIAogICAvLyBpZiBtb2R1bGUgaXMgYWxyZWFkeSBpbml0aWFsaXplZCwgcmVmZXIgdG8gdGhh dC4KQEAgLTE0Myw0MSArMTQ2LDYgQEAgZGVmaW5lKFsKIAogICAgICAgdGhpcy5pbml0aWFsaXpl ZCA9IHRydWU7CiAKLSAgICAgIC8vIERlZmluZSBsaXN0IG9mIG5vZGVzIG9uIHdoaWNoIGdyYW50 IHdpemFyZCBjb250ZXh0IG1lbnUgb3B0aW9uIGFwcGVhcnMKLSAgICAgIHZhciBzdXBwb3J0ZWRf bm9kZXMgPSBbCi0gICAgICAgICAgJ3NjaGVtYScsICdjb2xsLWZ1bmN0aW9uJywgJ2NvbGwtc2Vx dWVuY2UnLAotICAgICAgICAgICdjb2xsLXRhYmxlJywgJ2NvbGwtdmlldycsICdjb2xsLXByb2Nl ZHVyZScsCi0gICAgICAgICAgJ2NvbGwtbXZpZXcnLCAnZGF0YWJhc2UnLCAnY29sbC10cmlnZ2Vy X2Z1bmN0aW9uJywKLSAgICAgICAgXSwKLQotICAgICAgICAvKioKLSAgICAgICAgICBFbmFibGUv ZGlzYWJsZSBncmFudHdpemFyZCBtZW51IGluIHRvb2xzIGJhc2VkCi0gICAgICAgICAgb24gbm9k ZSBzZWxlY3RlZAotICAgICAgICAgIGlmIHNlbGVjdGVkIG5vZGUgaXMgcHJlc2VudCBpbiBzdXBw b3J0ZWRfbm9kZXMsCi0gICAgICAgICAgbWVudSB3aWxsIGJlIGVuYWJsZWQgb3RoZXJ3aXNlIGRp c2FibGVkLgotICAgICAgICAgIEFsc28sIGhpZGUgaXQgZm9yIHN5c3RlbSB2aWV3IGluIGNhdGFs b2dzCi0gICAgICAgICovCi0gICAgICAgIG1lbnVfZW5hYmxlZCA9IGZ1bmN0aW9uKGl0ZW1EYXRh LCBpdGVtKSB7Ci0gICAgICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJlZSwKLSAgICAgICAgICAg IGkgPSBpdGVtLAotICAgICAgICAgICAgZCA9IGl0ZW1EYXRhOwotICAgICAgICAgIHZhciBwYXJl bnRfaXRlbSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkgOiBudWxsLAotICAgICAgICAg ICAgcGFyZW50X2RhdGEgPSBwYXJlbnRfaXRlbSA/IHQuaXRlbURhdGEocGFyZW50X2l0ZW0pIDog bnVsbDsKLSAgICAgICAgICBpZiAoIV8uaXNVbmRlZmluZWQoZCkgJiYgIV8uaXNOdWxsKGQpICYm ICFfLmlzTnVsbChwYXJlbnRfZGF0YSkpIHsKLSAgICAgICAgICAgIGlmIChfLmluZGV4T2Yoc3Vw cG9ydGVkX25vZGVzLCBkLl90eXBlKSAhPT0gLTEgJiYKLSAgICAgICAgICAgICAgcGFyZW50X2Rh dGEuX3R5cGUgIT0gJ2NhdGFsb2cnKSB7Ci0gICAgICAgICAgICAgIGlmIChkLl90eXBlID09ICdk YXRhYmFzZScgJiYgZC5hbGxvd0Nvbm4pCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g ICAgICAgICAgICAgIGVsc2UgaWYgKGQuX3R5cGUgIT0gJ2RhdGFiYXNlJykKLSAgICAgICAgICAg ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJl dHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICByZXR1cm4gZmFs c2U7Ci0gICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg IH07Ci0KICAgICAgIC8vIERlZmluZSB0aGUgbm9kZXMgb24gd2hpY2ggdGhlIG1lbnVzIHRvIGJl IGFwcGVhcgogICAgICAgdmFyIG1lbnVzID0gW3sKICAgICAgICAgbmFtZTogJ2dyYW50X3dpemFy ZF9zY2hlbWEnLApAQCAtMTg3LDIxICsxNTUsMjUgQEAgZGVmaW5lKFsKICAgICAgICAgcHJpb3Jp dHk6IDE0LAogICAgICAgICBsYWJlbDogZ2V0dGV4dCgnR3JhbnQgV2l6YXJkLi4uJyksCiAgICAg ICAgIGljb246ICdmYSBmYS11bmxvY2stYWx0JywKLSAgICAgICAgZW5hYmxlOiBtZW51X2VuYWJs ZWQsCisgICAgICAgIGVuYWJsZTogc3VwcG9ydGVkTm9kZXNNZW51LmVuYWJsZWQuYmluZCgKKyAg ICAgICAgICBudWxsLCBwZ0Jyb3dzZXIudHJlZU1lbnUsIG1lbnVVdGlscy5zdXBwb3J0ZWROb2Rl cworICAgICAgICApLAogICAgICAgfV07CiAKICAgICAgIC8vIEFkZCBzdXBwb3J0ZWQgbWVudXMg aW50byB0aGUgbWVudXMgbGlzdAotICAgICAgZm9yICh2YXIgaWR4ID0gMDsgaWR4IDwgc3VwcG9y dGVkX25vZGVzLmxlbmd0aDsgaWR4KyspIHsKKyAgICAgIGZvciAodmFyIGlkeCA9IDA7IGlkeCA8 IG1lbnVVdGlscy5zdXBwb3J0ZWROb2Rlcy5sZW5ndGg7IGlkeCsrKSB7CiAgICAgICAgIG1lbnVz LnB1c2goewotICAgICAgICAgIG5hbWU6ICdncmFudF93aXphcmRfc2NoZW1hX2NvbnRleHRfJyAr IHN1cHBvcnRlZF9ub2Rlc1tpZHhdLAotICAgICAgICAgIG5vZGU6IHN1cHBvcnRlZF9ub2Rlc1tp ZHhdLAorICAgICAgICAgIG5hbWU6ICdncmFudF93aXphcmRfc2NoZW1hX2NvbnRleHRfJyArIG1l bnVVdGlscy5zdXBwb3J0ZWROb2Rlc1tpZHhdLAorICAgICAgICAgIG5vZGU6IG1lbnVVdGlscy5z dXBwb3J0ZWROb2Rlc1tpZHhdLAogICAgICAgICAgIG1vZHVsZTogdGhpcywKICAgICAgICAgICBh cHBsaWVzOiBbJ2NvbnRleHQnXSwKICAgICAgICAgICBjYWxsYmFjazogJ3N0YXJ0X2dyYW50X3dp emFyZCcsCiAgICAgICAgICAgcHJpb3JpdHk6IDE0LAogICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0 KCdHcmFudCBXaXphcmQuLi4nKSwKICAgICAgICAgICBpY29uOiAnZmEgZmEtdW5sb2NrLWFsdCcs Ci0gICAgICAgICAgZW5hYmxlOiBtZW51X2VuYWJsZWQsCisgICAgICAgICAgZW5hYmxlOiBzdXBw b3J0ZWROb2Rlc01lbnUuZW5hYmxlZC5iaW5kKAorICAgICAgICAgICAgbnVsbCwgcGdCcm93c2Vy LnRyZWVNZW51LCBtZW51VXRpbHMuc3VwcG9ydGVkTm9kZXMKKyAgICAgICAgICApLAogICAgICAg ICB9KTsKICAgICAgIH0KICAgICAgIHBnQnJvd3Nlci5hZGRfbWVudXMobWVudXMpOwpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvZ3JhbnRfd2l6YXJkL3N0YXRpYy9qcy9tZW51X3V0aWxz LmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvZ3JhbnRfd2l6YXJkL3N0YXRpYy9qcy9tZW51X3V0aWxz LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi5iNTZjZTNjZAotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2dyYW50X3dpemFyZC9zdGF0aWMvanMvbWVu dV91dGlscy5qcwpAQCAtMCwwICsxLDE2IEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9z dGdyZVNRTCBUb29scworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0Fk bWluIERldmVsb3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIg dGhlIFBvc3RncmVTUUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2V4cG9ydCBjb25zdCBzdXBwb3J0 ZWROb2RlcyA9IFsKKyAgJ3NjaGVtYScsICdjb2xsLWZ1bmN0aW9uJywgJ2NvbGwtc2VxdWVuY2Un LAorICAnY29sbC10YWJsZScsICdjb2xsLXZpZXcnLCAnY29sbC1wcm9jZWR1cmUnLAorICAnY29s bC1tdmlldycsICdkYXRhYmFzZScsICdjb2xsLXRyaWdnZXJfZnVuY3Rpb24nLAorXTsKKworCmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9pbXBvcnRfZXhwb3J0L3N0YXRpYy9qcy9pbXBv cnRfZXhwb3J0LmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvaW1wb3J0X2V4cG9ydC9zdGF0aWMvanMv aW1wb3J0X2V4cG9ydC5qcwppbmRleCAzMDU4ZjEyMi4uMWVkZTg1MzYgMTAwNjQ0Ci0tLSBhL3dl Yi9wZ2FkbWluL3Rvb2xzL2ltcG9ydF9leHBvcnQvc3RhdGljL2pzL2ltcG9ydF9leHBvcnQuanMK KysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvaW1wb3J0X2V4cG9ydC9zdGF0aWMvanMvaW1wb3J0X2V4 cG9ydC5qcwpAQCAtMSwxMCArMSwxMiBAQAogZGVmaW5lKFsKICAgJ3NvdXJjZXMvZ2V0dGV4dCcs ICdzb3VyY2VzL3VybF9mb3InLCAnanF1ZXJ5JywgJ3VuZGVyc2NvcmUnLCAndW5kZXJzY29yZS5z dHJpbmcnLCAncGdhZG1pbi5hbGVydGlmeWpzJywKICAgJ3NvdXJjZXMvcGdhZG1pbicsICdwZ2Fk bWluLmJyb3dzZXInLCAnYmFja2JvbmUnLCAnYmFja2dyaWQnLCAnYmFja2Zvcm0nLAotICAnc291 cmNlcy91dGlscycsICdwZ2FkbWluLmJhY2tmb3JtJywgJ3BnYWRtaW4uYmFja2dyaWQnLCAncGdh ZG1pbi5icm93c2VyLm5vZGUudWknLAorICAnc291cmNlcy91dGlscycsCisgICdzb3VyY2VzL3Ry ZWUvc3VwcG9ydGVkX25vZGVzX21lbnUnLAorICAncGdhZG1pbi5iYWNrZm9ybScsICdwZ2FkbWlu LmJhY2tncmlkJywgJ3BnYWRtaW4uYnJvd3Nlci5ub2RlLnVpJywKIF0sIGZ1bmN0aW9uKAogICBn ZXR0ZXh0LCB1cmxfZm9yLCAkLCBfLCBTLCBBbGVydGlmeSwgcGdBZG1pbiwgcGdCcm93c2VyLCBC YWNrYm9uZSwgQmFja2dyaWQsCi1CYWNrZm9ybSwgY29tbW9uVXRpbHMKK0JhY2tmb3JtLCBjb21t b25VdGlscywgc3VwcG9ydGVkTm9kZXNNZW51CiApIHsKIAogICBwZ0FkbWluID0gcGdBZG1pbiB8 fCB3aW5kb3cucGdBZG1pbiB8fCB7fTsKQEAgLTM4MywyNSArMzg1LDYgQEAgQmFja2Zvcm0sIGNv bW1vblV0aWxzCiAKICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlOwogCi0gICAgICAvKgot ICAgICAgICogRW5hYmxlL2Rpc2FibGUgaW1wb3J0IG1lbnUgaW4gdG9vbHMgYmFzZWQgb24gbm9k ZSBzZWxlY3RlZC4gSW1wb3J0Ci0gICAgICAgKiBtZW51IHdpbGwgYmUgZW5hYmxlZCBvbmx5IHdo ZW4gdXNlciBzZWxlY3QgdGFibGUgbm9kZS4KLSAgICAgICAqLwotICAgICAgdmFyIG1lbnVfZW5h YmxlZCA9IGZ1bmN0aW9uKGl0ZW1EYXRhLCBpdGVtKSB7Ci0gICAgICAgIHZhciB0ID0gcGdCcm93 c2VyLnRyZWUsCi0gICAgICAgICAgaSA9IGl0ZW0sCi0gICAgICAgICAgZCA9IGl0ZW1EYXRhOwot ICAgICAgICB2YXIgcGFyZW50X2l0ZW0gPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDog bnVsbCwKLSAgICAgICAgICBwYXJlbnRfZGF0YSA9IHBhcmVudF9pdGVtID8gdC5pdGVtRGF0YShw YXJlbnRfaXRlbSkgOiBudWxsOwotICAgICAgICBpZiAoIV8uaXNVbmRlZmluZWQoZCkgJiYgIV8u aXNOdWxsKGQpICYmICFfLmlzTnVsbChwYXJlbnRfZGF0YSkpCi0gICAgICAgICAgcmV0dXJuICgK LSAgICAgICAgICAgIChfLmluZGV4T2YoWyd0YWJsZSddLCBkLl90eXBlKSAhPT0gLTEgJiYKLSAg ICAgICAgICAgICAgcGFyZW50X2RhdGEuX3R5cGUgIT0gJ2NhdGFsb2cnKSA/IHRydWUgOiBmYWxz ZQotICAgICAgICAgICk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g ICAgICB9OwotCiAgICAgICAvLyBJbml0aWFsaXplIHRoZSBjb250ZXh0IG1lbnUgdG8gZGlzcGxh eSB0aGUgaW1wb3J0IG9wdGlvbnMgd2hlbiB1c2VyIG9wZW4gdGhlIGNvbnRleHQgbWVudSBmb3Ig dGFibGUKICAgICAgIHBnQnJvd3Nlci5hZGRfbWVudXMoW3sKICAgICAgICAgbmFtZTogJ2ltcG9y dCcsCkBAIC00MTMsNyArMzk2LDkgQEAgQmFja2Zvcm0sIGNvbW1vblV0aWxzCiAgICAgICAgIHBy aW9yaXR5OiAxMCwKICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0ltcG9ydC9FeHBvcnQuLi4nKSwK ICAgICAgICAgaWNvbjogJ2ZhIGZhLXNob3BwaW5nLWNhcnQnLAotICAgICAgICBlbmFibGU6IG1l bnVfZW5hYmxlZCwKKyAgICAgICAgZW5hYmxlOiBzdXBwb3J0ZWROb2Rlc01lbnUuZW5hYmxlZC5i aW5kKAorICAgICAgICAgIG51bGwsIHBnQnJvd3Nlci50cmVlTWVudSwgWyd0YWJsZSddCisgICAg ICAgICksCiAgICAgICB9XSk7CiAgICAgfSwKIApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9v bHMvbWFpbnRlbmFuY2Uvc3RhdGljL2pzL21haW50ZW5hbmNlLmpzIGIvd2ViL3BnYWRtaW4vdG9v bHMvbWFpbnRlbmFuY2Uvc3RhdGljL2pzL21haW50ZW5hbmNlLmpzCmluZGV4IGYyMTAyNjAyLi41 ZjcwM2M2ZCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFuY2Uvc3RhdGlj L2pzL21haW50ZW5hbmNlLmpzCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL21haW50ZW5hbmNlL3N0 YXRpYy9qcy9tYWludGVuYW5jZS5qcwpAQCAtMiwxMSArMiwxNCBAQCBkZWZpbmUoWwogICAnc291 cmNlcy9nZXR0ZXh0JywgJ3NvdXJjZXMvdXJsX2ZvcicsICdqcXVlcnknLCAndW5kZXJzY29yZScs CiAgICd1bmRlcnNjb3JlLnN0cmluZycsICdwZ2FkbWluLmFsZXJ0aWZ5anMnLCAnc291cmNlcy9w Z2FkbWluJywgJ3BnYWRtaW4uYnJvd3NlcicsICdiYWNrYm9uZScsCiAgICdiYWNrZ3JpZCcsICdi YWNrZm9ybScsICdzb3VyY2VzL3V0aWxzJywKKyAgJ3Rvb2xzL21haW50ZW5hbmNlL3N0YXRpYy9q cy9tZW51X3V0aWxzJywKKyAgJ3NvdXJjZXMvdHJlZS9zdXBwb3J0ZWRfbm9kZXNfbWVudScsCiAg ICdwZ2FkbWluLmJhY2tmb3JtJywgJ3BnYWRtaW4uYmFja2dyaWQnLAogICAncGdhZG1pbi5icm93 c2VyLm5vZGUudWknLAogXSwgZnVuY3Rpb24oCiAgIGdldHRleHQsIHVybF9mb3IsICQsIF8sIFMs IEFsZXJ0aWZ5LCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIEJhY2tib25lLCBCYWNrZ3JpZCwKLSAgQmFj a2Zvcm0sIGNvbW1vblV0aWxzCisgIEJhY2tmb3JtLCBjb21tb25VdGlscywKKyAgbWVudVV0aWxz LCBzdXBwb3J0ZWROb2Rlc01lbnUKICkgewogCiAgIHBnQWRtaW4gPSBwZ0FkbWluIHx8IHdpbmRv dy5wZ0FkbWluIHx8IHt9OwpAQCAtMTY4LDM2ICsxNzEsNiBAQCBkZWZpbmUoWwogCiAgICAgICB0 aGlzLmluaXRpYWxpemVkID0gdHJ1ZTsKIAotICAgICAgdmFyIG1haW50ZW5hbmNlX3N1cHBvcnRl ZF9ub2RlcyA9IFsKLSAgICAgICAgJ2RhdGFiYXNlJywgJ3RhYmxlJywgJ3ByaW1hcnlfa2V5JywK LSAgICAgICAgJ3VuaXF1ZV9jb25zdHJhaW50JywgJ2luZGV4JywgJ3BhcnRpdGlvbicsCi0gICAg ICBdOwotCi0gICAgICAvKioKLSAgICAgICBFbmFibGUvZGlzYWJsZSBNYWludGVuYW5jZSBtZW51 IGluIHRvb2xzIGJhc2VkIG9uIG5vZGUgc2VsZWN0ZWQuCi0gICAgICAgTWFpbnRlbmFuY2UgbWVu dSB3aWxsIGJlIGVuYWJsZWQgb25seSB3aGVuIHVzZXIgc2VsZWN0IHRhYmxlIGFuZCBkYXRhYmFz ZSBub2RlLgotICAgICAgKi8KLSAgICAgIHZhciBtZW51X2VuYWJsZWQgPSBmdW5jdGlvbihpdGVt RGF0YSwgaXRlbSkgewotICAgICAgICB2YXIgdCA9IHBnQnJvd3Nlci50cmVlLAotICAgICAgICAg IGkgPSBpdGVtLAotICAgICAgICAgIGQgPSBpdGVtRGF0YTsKLSAgICAgICAgdmFyIHBhcmVudF9p dGVtID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGwsCi0gICAgICAgICAgcGFy ZW50X2RhdGEgPSBwYXJlbnRfaXRlbSA/IHQuaXRlbURhdGEocGFyZW50X2l0ZW0pIDogbnVsbDsK LSAgICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKGQpICYmICFfLmlzTnVsbChkKSAmJiAhXy5pc051 bGwocGFyZW50X2RhdGEpKSB7Ci0gICAgICAgICAgaWYgKF8uaW5kZXhPZihtYWludGVuYW5jZV9z dXBwb3J0ZWRfbm9kZXMsIGQuX3R5cGUpICE9PSAtMSAmJgotICAgICAgICAgICAgcGFyZW50X2Rh dGEuX3R5cGUgIT0gJ2NhdGFsb2cnKSB7Ci0gICAgICAgICAgICBpZiAoZC5fdHlwZSA9PSAnZGF0 YWJhc2UnICYmIGQuYWxsb3dDb25uKQotICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg ICAgICAgIGVsc2UgaWYgKGQuX3R5cGUgIT0gJ2RhdGFiYXNlJykKLSAgICAgICAgICAgICAgcmV0 dXJuIHRydWU7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK LSAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfSBl bHNlCi0gICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfTsKLQogICAgICAgdmFyIG1lbnVz ID0gW3sKICAgICAgICAgbmFtZTogJ21haW50ZW5hbmNlJywKICAgICAgICAgbW9kdWxlOiB0aGlz LApAQCAtMjA2LDIxICsxNzksMjUgQEAgZGVmaW5lKFsKICAgICAgICAgcHJpb3JpdHk6IDEwLAog ICAgICAgICBsYWJlbDogZ2V0dGV4dCgnTWFpbnRlbmFuY2UuLi4nKSwKICAgICAgICAgaWNvbjog J2ZhIGZhLXdyZW5jaCcsCi0gICAgICAgIGVuYWJsZTogbWVudV9lbmFibGVkLAorICAgICAgICBl bmFibGU6IHN1cHBvcnRlZE5vZGVzTWVudS5lbmFibGVkLmJpbmQoCisgICAgICAgICAgbnVsbCwg cGdCcm93c2VyLnRyZWVNZW51LCBtZW51VXRpbHMubWFpbnRlbmFuY2VTdXBwb3J0ZWROb2Rlcwor ICAgICAgICApLAogICAgICAgfV07CiAKICAgICAgIC8vIEFkZCBzdXBwb3J0ZWQgbWVudXMgaW50 byB0aGUgbWVudXMgbGlzdAotICAgICAgZm9yICh2YXIgaWR4ID0gMDsgaWR4IDwgbWFpbnRlbmFu Y2Vfc3VwcG9ydGVkX25vZGVzLmxlbmd0aDsgaWR4KyspIHsKKyAgICAgIGZvciAodmFyIGlkeCA9 IDA7IGlkeCA8IG1lbnVVdGlscy5tYWludGVuYW5jZVN1cHBvcnRlZE5vZGVzLmxlbmd0aDsgaWR4 KyspIHsKICAgICAgICAgbWVudXMucHVzaCh7Ci0gICAgICAgICAgbmFtZTogJ21haW50ZW5hbmNl X2NvbnRleHRfJyArIG1haW50ZW5hbmNlX3N1cHBvcnRlZF9ub2Rlc1tpZHhdLAotICAgICAgICAg IG5vZGU6IG1haW50ZW5hbmNlX3N1cHBvcnRlZF9ub2Rlc1tpZHhdLAorICAgICAgICAgIG5hbWU6 ICdtYWludGVuYW5jZV9jb250ZXh0XycgKyBtZW51VXRpbHMubWFpbnRlbmFuY2VTdXBwb3J0ZWRO b2Rlc1tpZHhdLAorICAgICAgICAgIG5vZGU6IG1lbnVVdGlscy5tYWludGVuYW5jZVN1cHBvcnRl ZE5vZGVzW2lkeF0sCiAgICAgICAgICAgbW9kdWxlOiB0aGlzLAogICAgICAgICAgIGFwcGxpZXM6 IFsnY29udGV4dCddLAogICAgICAgICAgIGNhbGxiYWNrOiAnY2FsbGJhY2tfbWFpbnRlbmFuY2Un LAogICAgICAgICAgIHByaW9yaXR5OiAxMCwKICAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnTWFp bnRlbmFuY2UuLi4nKSwKICAgICAgICAgICBpY29uOiAnZmEgZmEtd3JlbmNoJywKLSAgICAgICAg ICBlbmFibGU6IG1lbnVfZW5hYmxlZCwKKyAgICAgICAgICBlbmFibGU6IHN1cHBvcnRlZE5vZGVz TWVudS5lbmFibGVkLmJpbmQoCisgICAgICAgICAgICBudWxsLCBwZ0Jyb3dzZXIudHJlZU1lbnUs IG1lbnVVdGlscy5tYWludGVuYW5jZVN1cHBvcnRlZE5vZGVzCisgICAgICAgICAgKSwKICAgICAg ICAgfSk7CiAgICAgICB9CiAgICAgICBwZ0Jyb3dzZXIuYWRkX21lbnVzKG1lbnVzKTsKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL21haW50ZW5hbmNlL3N0YXRpYy9qcy9tZW51X3V0aWxz LmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFuY2Uvc3RhdGljL2pzL21lbnVfdXRpbHMu anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjhjZGUxYmFhCi0tLSAvZGV2 L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFuY2Uvc3RhdGljL2pzL21lbnVf dXRpbHMuanMKQEAgLTAsMCArMSwxMyBAQAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRtaW4gNCAtIFBvc3Rn cmVTUUwgVG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1p biBEZXZlbG9wbWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRo ZSBQb3N0Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCitleHBvcnQgY29uc3QgbWFpbnRlbmFu Y2VTdXBwb3J0ZWROb2RlcyA9IFsKKyAgJ2RhdGFiYXNlJywgJ3RhYmxlJywgJ3ByaW1hcnlfa2V5 JywKKyAgJ3VuaXF1ZV9jb25zdHJhaW50JywgJ2luZGV4JywgJ3BhcnRpdGlvbicsCitdOwpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS9zdGF0aWMvanMvbWVudV91dGlscy5q cyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvc3RhdGljL2pzL21lbnVfdXRpbHMuanMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjJkMzVjOTUxCi0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS9zdGF0aWMvanMvbWVudV91dGlscy5qcwpA QCAtMCwwICsxLDE4IEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29s cworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3Bt ZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVT UUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2V4cG9ydCBjb25zdCByZXN0b3JlU3VwcG9ydGVkTm9k ZXMgPSBbCisgICdkYXRhYmFzZScsCisgICdzY2hlbWEnLAorICAndGFibGUnLAorICAnZnVuY3Rp b24nLAorICAndHJpZ2dlcicsCisgICdpbmRleCcsCisgICdwYXJ0aXRpb24nLAorXTsKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvc3RhdGljL2pzL3Jlc3RvcmUuanMgYi93 ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL3N0YXRpYy9qcy9yZXN0b3JlLmpzCmluZGV4IDU4NWI5 NzI5Li5iZjRhMzRjYSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS9zdGF0 aWMvanMvcmVzdG9yZS5qcworKysgYi93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL3N0YXRpYy9q cy9yZXN0b3JlLmpzCkBAIC0xLDExICsxLDEzIEBACi0vLyBSZXN0b3JlIGRpYWxvZwogZGVmaW5l KCd0b29scy5yZXN0b3JlJywgWwogICAnc291cmNlcy9nZXR0ZXh0JywgJ3NvdXJjZXMvdXJsX2Zv cicsICdqcXVlcnknLCAndW5kZXJzY29yZScsICdiYWNrYm9uZScsCiAgICd1bmRlcnNjb3JlLnN0 cmluZycsICdwZ2FkbWluLmFsZXJ0aWZ5anMnLCAncGdhZG1pbi5icm93c2VyJywKICAgJ3BnYWRt aW4uYmFja2dyaWQnLCAncGdhZG1pbi5iYWNrZm9ybScsICdzb3VyY2VzL3V0aWxzJywKKyAgJ3Rv b2xzL3Jlc3RvcmUvc3RhdGljL2pzL21lbnVfdXRpbHMnLAorICAnc291cmNlcy90cmVlL3N1cHBv cnRlZF9ub2Rlc19tZW51JywKKyAgJ3Rvb2xzL3Jlc3RvcmUvc3RhdGljL2pzL3Jlc3RvcmVfZGlh bG9nJywKIF0sIGZ1bmN0aW9uKAogICBnZXR0ZXh0LCB1cmxfZm9yLCAkLCBfLCBCYWNrYm9uZSwg UywgYWxlcnRpZnksIHBnQnJvd3NlciwgQmFja2dyaWQsIEJhY2tmb3JtLAotY29tbW9uVXRpbHMK K2NvbW1vblV0aWxzLCBtZW51VXRpbHMsIHN1cHBvcnRlZE5vZGVzTWVudSwgcmVzdG9yZURpYWxv ZwogKSB7CiAKICAgLy8gaWYgbW9kdWxlIGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQsIHJlZmVyIHRv IHRoYXQuCkBAIC0zMDcsNTkgKzMwOSw2IEBAIGNvbW1vblV0aWxzCiAKICAgICAgIHRoaXMuaW5p dGlhbGl6ZWQgPSB0cnVlOwogCi0gICAgICAvLyBEZWZpbmUgbGlzdCBvZiBub2RlcyBvbiB3aGlj aCByZXN0b3JlIGNvbnRleHQgbWVudSBvcHRpb24gYXBwZWFycwotICAgICAgdmFyIHJlc3RvcmVf c3VwcG9ydGVkX25vZGVzID0gWwotICAgICAgICAnZGF0YWJhc2UnLCAnc2NoZW1hJywKLSAgICAg ICAgJ3RhYmxlJywgJ2Z1bmN0aW9uJywKLSAgICAgICAgJ3RyaWdnZXInLCAnaW5kZXgnLAotICAg ICAgICAncGFydGl0aW9uJywKLSAgICAgIF07Ci0KLSAgICAgIC8qKgotICAgICAgICBFbmFibGUv ZGlzYWJsZSByZXN0b3JlIG1lbnUgaW4gdG9vbHMgYmFzZWQKLSAgICAgICAgb24gbm9kZSBzZWxl Y3RlZAotICAgICAgICBpZiBzZWxlY3RlZCBub2RlIGlzIHByZXNlbnQgaW4gc3VwcG9ydGVkX25v ZGVzLAotICAgICAgICBtZW51IHdpbGwgYmUgZW5hYmxlZCBvdGhlcndpc2UgZGlzYWJsZWQuCi0g ICAgICAgIEFsc28sIGhpZGUgaXQgZm9yIHN5c3RlbSB2aWV3IGluIGNhdGFsb2dzCi0gICAgICAq LwotICAgICAgdmFyIG1lbnVfZW5hYmxlZCA9IGZ1bmN0aW9uKGl0ZW1EYXRhLCBpdGVtLCBkYXRh KSB7Ci0gICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRyZWUsCi0gICAgICAgICAgaSA9IGl0ZW0s Ci0gICAgICAgICAgZCA9IGl0ZW1EYXRhOwotICAgICAgICB2YXIgcGFyZW50X2l0ZW0gPSB0Lmhh c1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbCwKLSAgICAgICAgICBwYXJlbnRfZGF0YSA9 IHBhcmVudF9pdGVtID8gdC5pdGVtRGF0YShwYXJlbnRfaXRlbSkgOiBudWxsOwotICAgICAgICBp ZiAoIV8uaXNVbmRlZmluZWQoZCkgJiYgIV8uaXNOdWxsKGQpICYmICFfLmlzTnVsbChwYXJlbnRf ZGF0YSkpIHsKLSAgICAgICAgICBpZiAoXy5pbmRleE9mKHJlc3RvcmVfc3VwcG9ydGVkX25vZGVz LCBkLl90eXBlKSAhPT0gLTEgJiYKLSAgICAgICAgICAgIGlzX3BhcmVudF9jYXRhbG9nKGl0ZW1E YXRhLCBpdGVtLCBkYXRhKSkgewotICAgICAgICAgICAgaWYgKGQuX3R5cGUgPT0gJ2RhdGFiYXNl JyAmJiBkLmFsbG93Q29ubikKLSAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAg ICBlbHNlIGlmIChkLl90eXBlICE9ICdkYXRhYmFzZScpCi0gICAgICAgICAgICAgIHJldHVybiB0 cnVlOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg ICAgICAgfSBlbHNlCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0gZWxzZQot ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH07Ci0KLSAgICAgIHZhciBpc19wYXJlbnRf Y2F0YWxvZyA9IGZ1bmN0aW9uKGl0ZW1EYXRhLCBpdGVtKSB7Ci0gICAgICAgIHZhciB0ID0gcGdC cm93c2VyLnRyZWUsCi0gICAgICAgICAgaSA9IGl0ZW0sCi0gICAgICAgICAgZCA9IGl0ZW1EYXRh OwotCi0gICAgICAgIC8vIFRvIGl0ZXJhdGUgb3ZlciB0cmVlIHRvIGNoZWNrIHBhcmVudCBub2Rl Ci0gICAgICAgIHdoaWxlIChpKSB7Ci0gICAgICAgICAgLy8gSWYgaXQgaXMgc2NoZW1hIHRoZW4g YWxsb3cgdXNlciB0byByZXN0b3JlCi0gICAgICAgICAgaWYgKF8uaW5kZXhPZihbJ2NhdGFsb2cn XSwgZC5fdHlwZSkgPiAtMSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICBp ID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7Ci0gICAgICAgICAgZCA9IGkg PyB0Lml0ZW1EYXRhKGkpIDogbnVsbDsKLSAgICAgICAgfQotICAgICAgICAvLyBieSBkZWZhdWx0 IHdlIGRvIG5vdCB3YW50IHRvIGFsbG93IGNyZWF0ZSBtZW51Ci0gICAgICAgIHJldHVybiB0cnVl OwotICAgICAgfTsKLQogICAgICAgLy8gRGVmaW5lIHRoZSBub2RlcyBvbiB3aGljaCB0aGUgbWVu dXMgdG8gYmUgYXBwZWFyCiAgICAgICB2YXIgbWVudXMgPSBbewogICAgICAgICBuYW1lOiAncmVz dG9yZV9vYmplY3QnLApAQCAtMzY5LDIwICszMTgsMjQgQEAgY29tbW9uVXRpbHMKICAgICAgICAg cHJpb3JpdHk6IDEzLAogICAgICAgICBsYWJlbDogZ2V0dGV4dCgnUmVzdG9yZS4uLicpLAogICAg ICAgICBpY29uOiAnZmEgZmEtdXBsb2FkJywKLSAgICAgICAgZW5hYmxlOiBtZW51X2VuYWJsZWQs CisgICAgICAgIGVuYWJsZTogc3VwcG9ydGVkTm9kZXNNZW51LmVuYWJsZWQuYmluZCgKKyAgICAg ICAgICBudWxsLCBwZ0Jyb3dzZXIudHJlZU1lbnUsIG1lbnVVdGlscy5yZXN0b3JlU3VwcG9ydGVk Tm9kZXMKKyAgICAgICAgKSwKICAgICAgIH1dOwogCi0gICAgICBmb3IgKHZhciBpZHggPSAwOyBp ZHggPCByZXN0b3JlX3N1cHBvcnRlZF9ub2Rlcy5sZW5ndGg7IGlkeCsrKSB7CisgICAgICBmb3Ig KHZhciBpZHggPSAwOyBpZHggPCBtZW51VXRpbHMucmVzdG9yZVN1cHBvcnRlZE5vZGVzLmxlbmd0 aDsgaWR4KyspIHsKICAgICAgICAgbWVudXMucHVzaCh7Ci0gICAgICAgICAgbmFtZTogJ3Jlc3Rv cmVfJyArIHJlc3RvcmVfc3VwcG9ydGVkX25vZGVzW2lkeF0sCi0gICAgICAgICAgbm9kZTogcmVz dG9yZV9zdXBwb3J0ZWRfbm9kZXNbaWR4XSwKKyAgICAgICAgICBuYW1lOiAncmVzdG9yZV8nICsg bWVudVV0aWxzLnJlc3RvcmVTdXBwb3J0ZWROb2Rlc1tpZHhdLAorICAgICAgICAgIG5vZGU6IG1l bnVVdGlscy5yZXN0b3JlU3VwcG9ydGVkTm9kZXNbaWR4XSwKICAgICAgICAgICBtb2R1bGU6IHRo aXMsCiAgICAgICAgICAgYXBwbGllczogWydjb250ZXh0J10sCiAgICAgICAgICAgY2FsbGJhY2s6 ICdyZXN0b3JlX29iamVjdHMnLAogICAgICAgICAgIHByaW9yaXR5OiAxMywKICAgICAgICAgICBs YWJlbDogZ2V0dGV4dCgnUmVzdG9yZS4uLicpLAogICAgICAgICAgIGljb246ICdmYSBmYS11cGxv YWQnLAotICAgICAgICAgIGVuYWJsZTogbWVudV9lbmFibGVkLAorICAgICAgICAgIGVuYWJsZTog c3VwcG9ydGVkTm9kZXNNZW51LmVuYWJsZWQuYmluZCgKKyAgICAgICAgICAgIG51bGwsIHBnQnJv d3Nlci50cmVlTWVudSwgbWVudVV0aWxzLnJlc3RvcmVTdXBwb3J0ZWROb2RlcworICAgICAgICAg ICksCiAgICAgICAgIH0pOwogICAgICAgfQogCkBAIC0zOTEsMzE4ICszNDQsOCBAQCBjb21tb25V dGlscwogICAgIH0sCiAgICAgLy8gQ2FsbGJhY2sgdG8gZHJhdyBCYWNrdXAgRGlhbG9nIGZvciBv YmplY3RzCiAgICAgcmVzdG9yZV9vYmplY3RzOiBmdW5jdGlvbihhY3Rpb24sIHRyZWVJdGVtKSB7 Ci0KLSAgICAgIHZhciBpID0gdHJlZUl0ZW0gfHwgcGdCcm93c2VyLnRyZWUuc2VsZWN0ZWQoKSwK LSAgICAgICAgc2VydmVyX2RhdGEgPSBudWxsOwotCi0gICAgICB3aGlsZSAoaSkgewotICAgICAg ICB2YXIgbm9kZV9kYXRhID0gcGdCcm93c2VyLnRyZWUuaXRlbURhdGEoaSk7Ci0gICAgICAgIGlm IChub2RlX2RhdGEuX3R5cGUgPT0gJ3NlcnZlcicpIHsKLSAgICAgICAgICBzZXJ2ZXJfZGF0YSA9 IG5vZGVfZGF0YTsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChw Z0Jyb3dzZXIudHJlZS5oYXNQYXJlbnQoaSkpIHsKLSAgICAgICAgICBpID0gJChwZ0Jyb3dzZXIu dHJlZS5wYXJlbnQoaSkpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIGFsZXJ0aWZ5LmFs ZXJ0KAotICAgICAgICAgICAgZ2V0dGV4dCgnUmVzdG9yZSBFcnJvcicpLAotICAgICAgICAgICAg Z2V0dGV4dCgnUGxlYXNlIHNlbGVjdCBzZXJ2ZXIgb3IgY2hpbGQgbm9kZSBmcm9tIHRyZWUuJykK LSAgICAgICAgICApOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICB9Ci0KLSAg ICAgIGlmICghc2VydmVyX2RhdGEpIHsKLSAgICAgICAgcmV0dXJuOwotICAgICAgfQotCi0gICAg ICB2YXIgbW9kdWxlID0gJ3BhdGhzJywKLSAgICAgICAgcHJlZmVyZW5jZV9uYW1lID0gJ3BnX2Jp bl9kaXInLAotICAgICAgICBtc2cgPSBnZXR0ZXh0KCdQbGVhc2UgY29uZmlndXJlIHRoZSBQb3N0 Z3JlU1FMIEJpbmFyeSBQYXRoIGluIHRoZSBQcmVmZXJlbmNlcyBkaWFsb2cuJyk7Ci0KLSAgICAg IGlmICgoc2VydmVyX2RhdGEudHlwZSAmJiBzZXJ2ZXJfZGF0YS50eXBlID09ICdwcGFzJykgfHwK LSAgICAgICAgc2VydmVyX2RhdGEuc2VydmVyX3R5cGUgPT0gJ3BwYXMnKSB7Ci0gICAgICAgIHBy ZWZlcmVuY2VfbmFtZSA9ICdwcGFzX2Jpbl9kaXInOwotICAgICAgICBtc2cgPSBnZXR0ZXh0KCdQ bGVhc2UgY29uZmlndXJlIHRoZSBFREIgQWR2YW5jZWQgU2VydmVyIEJpbmFyeSBQYXRoIGluIHRo ZSBQcmVmZXJlbmNlcyBkaWFsb2cuJyk7Ci0gICAgICB9Ci0KLSAgICAgIHZhciBwcmVmZXJlbmNl ID0gcGdCcm93c2VyLmdldF9wcmVmZXJlbmNlKG1vZHVsZSwgcHJlZmVyZW5jZV9uYW1lKTsKLQot ICAgICAgaWYgKHByZWZlcmVuY2UpIHsKLSAgICAgICAgaWYgKCFwcmVmZXJlbmNlLnZhbHVlKSB7 Ci0gICAgICAgICAgYWxlcnRpZnkuYWxlcnQoZ2V0dGV4dCgnQ29uZmlndXJhdGlvbiByZXF1aXJl ZCcpLCBtc2cpOwotICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgfSBlbHNlIHsK LSAgICAgICAgYWxlcnRpZnkuYWxlcnQoCi0gICAgICAgICAgZ2V0dGV4dCgnUmVzdG9yZSBFcnJv cicpLAotICAgICAgICAgIFMoZ2V0dGV4dCgnRmFpbGVkIHRvIGxvYWQgcHJlZmVyZW5jZSAlcyBv ZiBtb2R1bGUgJXMnKSkuc3ByaW50ZihwcmVmZXJlbmNlX25hbWUsIG1vZHVsZSkudmFsdWUoKQot ICAgICAgICApOwotICAgICAgICByZXR1cm47Ci0gICAgICB9Ci0KLSAgICAgIHZhciB0aXRsZSA9 IFMoZ2V0dGV4dCgnUmVzdG9yZSAoJXM6ICVzKScpKSwKLSAgICAgICAgdHJlZSA9IHBnQnJvd3Nl ci50cmVlLAotICAgICAgICBpdGVtID0gdHJlZUl0ZW0gfHwgdHJlZS5zZWxlY3RlZCgpLAotICAg ICAgICBkYXRhID0gaXRlbSAmJiBpdGVtLmxlbmd0aCA9PSAxICYmIHRyZWUuaXRlbURhdGEoaXRl bSksCi0gICAgICAgIG5vZGUgPSBkYXRhICYmIGRhdGEuX3R5cGUgJiYgcGdCcm93c2VyLk5vZGVz W2RhdGEuX3R5cGVdOwotCi0gICAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVybjsKLQotICAg ICAgdmFyIHRyZWVJbmZvID0gbm9kZS5nZXRUcmVlTm9kZUhpZXJhcmNoeS5hcHBseShub2RlLCBb aXRlbV0pOwotCi0gICAgICBpZiAodHJlZUluZm8uZGF0YWJhc2UuX2xhYmVsLmluZGV4T2YoJz0n KSA+PSAwKSB7Ci0gICAgICAgIGFsZXJ0aWZ5LmFsZXJ0KAotICAgICAgICAgIGdldHRleHQoJ1Jl c3RvcmUgZXJyb3InKSwKLSAgICAgICAgICBnZXR0ZXh0KCdSZXN0b3JlIGpvYiBjcmVhdGlvbiBm YWlsZWQuICcrCi0gICAgICAgICAgJ0RhdGFiYXNlcyB3aXRoID0gc3ltYm9scyBpbiB0aGUgbmFt ZSBjYW5ub3QgYmUgcmVzdG9yZWQgdXNpbmcgdGhpcyB1dGlsaXR5LicpCi0gICAgICAgICk7Ci0g ICAgICAgIHJldHVybjsKLSAgICAgIH0KLQotICAgICAgdGl0bGUgPSB0aXRsZS5zcHJpbnRmKG5v ZGUubGFiZWwsIGRhdGEubGFiZWwpLnZhbHVlKCk7Ci0KLSAgICAgIGlmICghYWxlcnRpZnkucGdf cmVzdG9yZSkgewotICAgICAgICAvLyBDcmVhdGUgRGlhbG9nIHRpdGxlIG9uIHRoZSBmbHkgd2l0 aCBub2RlIGRldGFpbHMKLSAgICAgICAgYWxlcnRpZnkuZGlhbG9nKCdwZ19yZXN0b3JlJywgZnVu Y3Rpb24gZmFjdG9yeSgpIHsKLSAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgbWFpbjog ZnVuY3Rpb24odGl0bGUsIGl0ZW0sIGRhdGEsIG5vZGUpIHsKLSAgICAgICAgICAgICAgdGhpcy5z ZXQoJ3RpdGxlJywgdGl0bGUpOwotICAgICAgICAgICAgICB0aGlzLnNldHRpbmcoJ3BnX25vZGUn LCBub2RlKTsKLSAgICAgICAgICAgICAgdGhpcy5zZXR0aW5nKCdwZ19pdGVtJywgaXRlbSk7Ci0g ICAgICAgICAgICAgIHRoaXMuc2V0dGluZygncGdfaXRlbV9kYXRhJywgZGF0YSk7Ci0gICAgICAg ICAgICB9LAotICAgICAgICAgICAgYnVpbGQ6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICBh bGVydGlmeS5wZ0RpYWxvZ0J1aWxkLmFwcGx5KHRoaXMpOwotICAgICAgICAgICAgfSwKLSAgICAg ICAgICAgIHNldHVwOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAg ICAgICAgICAgICBidXR0b25zOiBbewotICAgICAgICAgICAgICAgICAgdGV4dDogJycsCi0gICAg ICAgICAgICAgICAgICBjbGFzc05hbWU6ICdidG4gYnRuLWRlZmF1bHQgcHVsbC1sZWZ0IGZhIGZh LWxnIGZhLWluZm8nLAotICAgICAgICAgICAgICAgICAgYXR0cnM6IHsKLSAgICAgICAgICAgICAg ICAgICAgbmFtZTogJ29iamVjdF9oZWxwJywKLSAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2J1 dHRvbicsCi0gICAgICAgICAgICAgICAgICAgIHVybDogJ2JhY2t1cC5odG1sJywKLSAgICAgICAg ICAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ1Jlc3RvcmUnKSwKLSAgICAgICAgICAgICAgICAg IH0sCi0gICAgICAgICAgICAgICAgfSwgewotICAgICAgICAgICAgICAgICAgdGV4dDogJycsCi0g ICAgICAgICAgICAgICAgICBrZXk6IDExMiwKLSAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTog J2J0biBidG4tZGVmYXVsdCBwdWxsLWxlZnQgZmEgZmEtbGcgZmEtcXVlc3Rpb24nLAotICAgICAg ICAgICAgICAgICAgYXR0cnM6IHsKLSAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2RpYWxvZ19o ZWxwJywKLSAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2J1dHRvbicsCi0gICAgICAgICAgICAg ICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdSZXN0b3JlJyksCi0gICAgICAgICAgICAgICAgICAgIHVy bDogdXJsX2ZvcignaGVscC5zdGF0aWMnLCB7Ci0gICAgICAgICAgICAgICAgICAgICAgJ2ZpbGVu YW1lJzogJ3Jlc3RvcmVfZGlhbG9nLmh0bWwnLAotICAgICAgICAgICAgICAgICAgICB9KSwKLSAg ICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgfSwgewotICAgICAgICAgICAgICAg ICAgdGV4dDogZ2V0dGV4dCgnUmVzdG9yZScpLAotICAgICAgICAgICAgICAgICAga2V5OiAxMywK LSAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2J0biBidG4tcHJpbWFyeSBmYSBmYS11cGxv YWQgcGctYWxlcnRpZnktYnV0dG9uJywKLSAgICAgICAgICAgICAgICAgIHJlc3RvcmU6IHRydWUs Ci0gICAgICAgICAgICAgICAgICAnZGF0YS1idG4tbmFtZSc6ICdyZXN0b3JlJywKLSAgICAgICAg ICAgICAgICB9LCB7Ci0gICAgICAgICAgICAgICAgICB0ZXh0OiBnZXR0ZXh0KCdDYW5jZWwnKSwK LSAgICAgICAgICAgICAgICAgIGtleTogMjcsCi0gICAgICAgICAgICAgICAgICBjbGFzc05hbWU6 ICdidG4gYnRuLWRhbmdlciBmYSBmYS1sZyBmYS10aW1lcyBwZy1hbGVydGlmeS1idXR0b24nLAot ICAgICAgICAgICAgICAgICAgcmVzdG9yZTogZmFsc2UsCi0gICAgICAgICAgICAgICAgICAnZGF0 YS1idG4tbmFtZSc6ICdjYW5jZWwnLAotICAgICAgICAgICAgICAgIH1dLAotICAgICAgICAgICAg ICAgIC8vIFNldCBvcHRpb25zIGZvciBkaWFsb2cKLSAgICAgICAgICAgICAgICBvcHRpb25zOiB7 Ci0gICAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGUsCi0gICAgICAgICAgICAgICAgICAvL2Rp c2FibGUgYm90aCBwYWRkaW5nIGFuZCBvdmVyZmxvdyBjb250cm9sLgotICAgICAgICAgICAgICAg ICAgcGFkZGluZzogITEsCi0gICAgICAgICAgICAgICAgICBvdmVyZmxvdzogITEsCi0gICAgICAg ICAgICAgICAgICBtb2RlbDogMCwKLSAgICAgICAgICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSwK LSAgICAgICAgICAgICAgICAgIG1heGltaXphYmxlOiB0cnVlLAotICAgICAgICAgICAgICAgICAg cGlubmFibGU6IGZhbHNlLAotICAgICAgICAgICAgICAgICAgY2xvc2FibGVCeURpbW1lcjogZmFs c2UsCi0gICAgICAgICAgICAgICAgICBtb2RhbDogZmFsc2UsCi0gICAgICAgICAgICAgICAgfSwK LSAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBob29rczogewot ICAgICAgICAgICAgICAvLyB0cmlnZ2VyZWQgd2hlbiB0aGUgZGlhbG9nIGlzIGNsb3NlZAotICAg ICAgICAgICAgICBvbmNsb3NlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBpZiAodGhp cy52aWV3KSB7Ci0gICAgICAgICAgICAgICAgICB0aGlzLnZpZXcucmVtb3ZlKHsKLSAgICAgICAg ICAgICAgICAgICAgZGF0YTogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWw6IHRy dWUsCi0gICAgICAgICAgICAgICAgICAgIHNpbGVudDogdHJ1ZSwKLSAgICAgICAgICAgICAgICAg IH0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIH0s Ci0gICAgICAgICAgICBzZXR0aW5nczogewotICAgICAgICAgICAgICBwZ19ub2RlOiBudWxsLAot ICAgICAgICAgICAgICBwZ19pdGVtOiBudWxsLAotICAgICAgICAgICAgICBwZ19pdGVtX2RhdGE6 IG51bGwsCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgcHJlcGFyZTogZnVuY3Rpb24oKSB7 Ci0KLSAgICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwotICAgICAgICAgICAgICAvLyBEaXNh YmxlIEJhY2t1cCBidXR0b24gdW50aWwgdXNlciBwcm92aWRlcyBGaWxlbmFtZQotICAgICAgICAg ICAgICB0aGlzLl9faW50ZXJuYWwuYnV0dG9uc1syXS5lbGVtZW50LmRpc2FibGVkID0gdHJ1ZTsK LSAgICAgICAgICAgICAgdmFyICRjb250YWluZXIgPSAkKCc8ZGl2IGNsYXNzPVwncmVzdG9yZV9k aWFsb2dcJz48L2Rpdj4nKTsKLSAgICAgICAgICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJlZSwK LSAgICAgICAgICAgICAgICBpID0gdC5zZWxlY3RlZCgpLAotICAgICAgICAgICAgICAgIGQgPSBp ICYmIGkubGVuZ3RoID09IDEgPyB0Lml0ZW1EYXRhKGkpIDogdW5kZWZpbmVkLAotICAgICAgICAg ICAgICAgIG5vZGUgPSBkICYmIHBnQnJvd3Nlci5Ob2Rlc1tkLl90eXBlXTsKLQotICAgICAgICAg ICAgICBpZiAoIWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICAgIHZh ciB0cmVlSW5mbyA9IG5vZGUuZ2V0VHJlZU5vZGVIaWVyYXJjaHkuYXBwbHkobm9kZSwgW2ldKTsK LQotICAgICAgICAgICAgICB2YXIgbmV3TW9kZWwgPSBuZXcgUmVzdG9yZU9iamVjdE1vZGVsKHsK LSAgICAgICAgICAgICAgICAgIG5vZGVfZGF0YTogbm9kZSwKLSAgICAgICAgICAgICAgICB9LCB7 Ci0gICAgICAgICAgICAgICAgICBub2RlX2luZm86IHRyZWVJbmZvLAotICAgICAgICAgICAgICAg IH0pLAotICAgICAgICAgICAgICAgIGZpZWxkcyA9IEJhY2tmb3JtLmdlbmVyYXRlVmlld1NjaGVt YSgKLSAgICAgICAgICAgICAgICAgIHRyZWVJbmZvLCBuZXdNb2RlbCwgJ2NyZWF0ZScsIG5vZGUs IHRyZWVJbmZvLnNlcnZlciwgdHJ1ZQotICAgICAgICAgICAgICAgICk7Ci0KLSAgICAgICAgICAg ICAgdmFyIHZpZXcgPSB0aGlzLnZpZXcgPSBuZXcgQmFja2Zvcm0uRGlhbG9nKHsKLSAgICAgICAg ICAgICAgICBlbDogJGNvbnRhaW5lciwKLSAgICAgICAgICAgICAgICBtb2RlbDogbmV3TW9kZWws Ci0gICAgICAgICAgICAgICAgc2NoZW1hOiBmaWVsZHMsCi0gICAgICAgICAgICAgIH0pOwotCi0g ICAgICAgICAgICAgICQodGhpcy5lbGVtZW50cy5ib2R5LmNoaWxkTm9kZXNbMF0pLmFkZENsYXNz KAotICAgICAgICAgICAgICAgICdhbGVydGlmeV90b29sc19kaWFsb2dfcHJvcGVydGllcyBvYmpf cHJvcGVydGllcycKLSAgICAgICAgICAgICAgKTsKLQotICAgICAgICAgICAgICB2aWV3LnJlbmRl cigpOwotCi0gICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuY29udGVudC5hcHBlbmRDaGlsZCgk Y29udGFpbmVyLmdldCgwKSk7Ci0KLSAgICAgICAgICAgICAgdmlldy4kZWwuYXR0cigndGFiaW5k ZXgnLCAtMSk7Ci0gICAgICAgICAgICAgIC8vIHZhciBkaWFsb2dUYWJOYXZpZ2F0b3IgPSBwZ0Jy b3dzZXIua2V5Ym9hcmROYXZpZ2F0aW9uLmdldERpYWxvZ1RhYk5hdmlnYXRvcih2aWV3KTsKLSAg ICAgICAgICAgICAgcGdCcm93c2VyLmtleWJvYXJkTmF2aWdhdGlvbi5nZXREaWFsb2dUYWJOYXZp Z2F0b3Iodmlldyk7Ci0gICAgICAgICAgICAgIHZhciBjb250YWluZXIgPSB2aWV3LiRlbC5maW5k KCcudGFiLWNvbnRlbnQ6Zmlyc3QgPiAudGFiLXBhbmUuYWN0aXZlOmZpcnN0Jyk7Ci0gICAgICAg ICAgICAgIGNvbW1vblV0aWxzLmZpbmRBbmRTZXRGb2N1cyhjb250YWluZXIpOwotCi0gICAgICAg ICAgICAgIC8vIExpc3RlbiB0byBtb2RlbCAmIGlmIGZpbGVuYW1lIGlzIHByb3ZpZGVkIHRoZW4g ZW5hYmxlIEJhY2t1cCBidXR0b24KLSAgICAgICAgICAgICAgdGhpcy52aWV3Lm1vZGVsLm9uKCdj aGFuZ2UnLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBpZiAoIV8uaXNVbmRlZmluZWQo dGhpcy5nZXQoJ2ZpbGUnKSkgJiYgdGhpcy5nZXQoJ2ZpbGUnKSAhPT0gJycpIHsKLSAgICAgICAg ICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5jbGVhcigpOwotICAgICAgICAgICAgICAgICAgc2Vs Zi5fX2ludGVybmFsLmJ1dHRvbnNbMl0uZWxlbWVudC5kaXNhYmxlZCA9IGZhbHNlOwotICAgICAg ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICBzZWxmLl9faW50ZXJuYWwuYnV0 dG9uc1syXS5lbGVtZW50LmRpc2FibGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgIHRoaXMu ZXJyb3JNb2RlbC5zZXQoJ2ZpbGUnLCBnZXR0ZXh0KCdQbGVhc2UgcHJvdmlkZSBmaWxlbmFtZScp KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICB9 LAotICAgICAgICAgICAgLy8gQ2FsbGJhY2sgZnVuY3Rpb25zIHdoZW4gY2xpY2sgb24gdGhlIGJ1 dHRvbnMgb2YgdGhlIEFsZXJ0aWZ5IGRpYWxvZ3MKLSAgICAgICAgICAgIGNhbGxiYWNrOiBmdW5j dGlvbihlKSB7Ci0gICAgICAgICAgICAgIC8vIEZldGNoIGN1cnJlbnQgc2VydmVyIGlkCi0gICAg ICAgICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRyZWUsCi0gICAgICAgICAgICAgICAgaSA9IHRo aXMuc2V0dGluZ3NbJ3BnX2l0ZW0nXSB8fCB0LnNlbGVjdGVkKCksCi0gICAgICAgICAgICAgICAg ZCA9IHRoaXMuc2V0dGluZ3NbJ3BnX2l0ZW1fZGF0YSddIHx8ICgKLSAgICAgICAgICAgICAgICAg IGkgJiYgaS5sZW5ndGggPT0gMSA/IHQuaXRlbURhdGEoaSkgOiB1bmRlZmluZWQKLSAgICAgICAg ICAgICAgICApLAotICAgICAgICAgICAgICAgIG5vZGUgPSB0aGlzLnNldHRpbmdzWydwZ19ub2Rl J10gfHwgKAotICAgICAgICAgICAgICAgICAgZCAmJiBwZ0Jyb3dzZXIuTm9kZXNbZC5fdHlwZV0K LSAgICAgICAgICAgICAgICApOwotCi0gICAgICAgICAgICAgIGlmIChlLmJ1dHRvbi5lbGVtZW50 Lm5hbWUgPT0gJ2RpYWxvZ19oZWxwJyB8fCBlLmJ1dHRvbi5lbGVtZW50Lm5hbWUgPT0gJ29iamVj dF9oZWxwJykgewotICAgICAgICAgICAgICAgIGUuY2FuY2VsID0gdHJ1ZTsKLSAgICAgICAgICAg ICAgICBwZ0Jyb3dzZXIuc2hvd0hlbHAoZS5idXR0b24uZWxlbWVudC5uYW1lLCBlLmJ1dHRvbi5l bGVtZW50LmdldEF0dHJpYnV0ZSgndXJsJyksCi0gICAgICAgICAgICAgICAgICBub2RlLCBpLCBl LmJ1dHRvbi5lbGVtZW50LmdldEF0dHJpYnV0ZSgnbGFiZWwnKSk7Ci0gICAgICAgICAgICAgICAg cmV0dXJuOwotICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgaWYgKGUuYnV0dG9uWydk YXRhLWJ0bi1uYW1lJ10gPT09ICdyZXN0b3JlJykgewotICAgICAgICAgICAgICAgIGlmICghZCkK LSAgICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICAgIHZhciBpbmZvID0g bm9kZS5nZXRUcmVlTm9kZUhpZXJhcmNoeS5hcHBseShub2RlLCBbaV0pLAotICAgICAgICAgICAg ICAgICAgbSA9IHRoaXMudmlldy5tb2RlbDsKLSAgICAgICAgICAgICAgICAvLyBTZXQgY3VycmVu dCBub2RlIGluZm8gaW50byBtb2RlbAotICAgICAgICAgICAgICAgIG0uc2V0KCdkYXRhYmFzZScs IGluZm8uZGF0YWJhc2UuX2xhYmVsKTsKLSAgICAgICAgICAgICAgICBpZiAoIW0uZ2V0KCdjdXN0 b20nKSkgewotICAgICAgICAgICAgICAgICAgc3dpdGNoIChkLl90eXBlKSB7Ci0gICAgICAgICAg ICAgICAgICBjYXNlICdzY2hlbWEnOgotICAgICAgICAgICAgICAgICAgICBtLnNldCgnc2NoZW1h cycsIFtkLl9sYWJlbF0pOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg ICAgICAgIGNhc2UgJ3RhYmxlJzoKLSAgICAgICAgICAgICAgICAgICAgbS5zZXQoJ3NjaGVtYXMn LCBbaW5mby5zY2hlbWEuX2xhYmVsXSk7Ci0gICAgICAgICAgICAgICAgICAgIG0uc2V0KCd0YWJs ZXMnLCBbZC5fbGFiZWxdKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg ICAgICAgICBjYXNlICdmdW5jdGlvbic6Ci0gICAgICAgICAgICAgICAgICAgIG0uc2V0KCdzY2hl bWFzJywgW2luZm8uc2NoZW1hLl9sYWJlbF0pOwotICAgICAgICAgICAgICAgICAgICBtLnNldCgn ZnVuY3Rpb25zJywgW2QuX2xhYmVsXSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg ICAgICAgICAgICAgICAgY2FzZSAnaW5kZXgnOgotICAgICAgICAgICAgICAgICAgICBtLnNldCgn c2NoZW1hcycsIFtpbmZvLnNjaGVtYS5fbGFiZWxdKTsKLSAgICAgICAgICAgICAgICAgICAgbS5z ZXQoJ2luZGV4ZXMnLCBbZC5fbGFiZWxdKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g ICAgICAgICAgICAgICAgICBjYXNlICd0cmlnZ2VyJzoKLSAgICAgICAgICAgICAgICAgICAgbS5z ZXQoJ3NjaGVtYXMnLCBbaW5mby5zY2hlbWEuX2xhYmVsXSk7Ci0gICAgICAgICAgICAgICAgICAg IG0uc2V0KCd0cmlnZ2VycycsIFtkLl9sYWJlbF0pOwotICAgICAgICAgICAgICAgICAgICBicmVh azsKLSAgICAgICAgICAgICAgICAgIGNhc2UgJ3RyaWdnZXJfZnVuYyc6Ci0gICAgICAgICAgICAg ICAgICAgIG0uc2V0KCdzY2hlbWFzJywgW2luZm8uc2NoZW1hLl9sYWJlbF0pOwotICAgICAgICAg ICAgICAgICAgICBtLnNldCgndHJpZ2dlcl9mdW5jcycsIFtkLl9sYWJlbF0pOwotICAgICAgICAg ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9 IGVsc2UgewotICAgICAgICAgICAgICAgICAgLy8gVE9ETzo6Ci0gICAgICAgICAgICAgICAgICAv LyBXaGVuIHdlIHdpbGwgaW1wbGVtZW50IHRoZSBvYmplY3Qgc2VsZWN0aW9uIGluIHRoZQotICAg ICAgICAgICAgICAgICAgLy8gaW1wb3J0IGRpYWxvZywgd2Ugd2lsbCBuZWVkIHRvIHNlbGVjdCB0 aGUgb2JqZWN0cyBmcm9tCi0gICAgICAgICAgICAgICAgICAvLyB0aGUgdHJlZSBzZWxlY3Rpb24g dGFiLgotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHZhciBzZWxmID0gdGhp cywKLSAgICAgICAgICAgICAgICAgIGJhc2VVcmwgPSB1cmxfZm9yKCdyZXN0b3JlLmNyZWF0ZV9q b2InLCB7Ci0gICAgICAgICAgICAgICAgICAgICdzaWQnOiBpbmZvLnNlcnZlci5faWQsCi0gICAg ICAgICAgICAgICAgICB9KSwKLSAgICAgICAgICAgICAgICAgIGFyZ3MgPSB0aGlzLnZpZXcubW9k ZWwudG9KU09OKCk7Ci0KLSAgICAgICAgICAgICAgICAkLmFqYXgoewotICAgICAgICAgICAgICAg ICAgdXJsOiBiYXNlVXJsLAotICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsCi0gICAg ICAgICAgICAgICAgICBkYXRhOiB7Ci0gICAgICAgICAgICAgICAgICAgICdkYXRhJzogSlNPTi5z dHJpbmdpZnkoYXJncyksCi0gICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAg c3VjY2VzczogZnVuY3Rpb24ocmVzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZXMuc3Vj Y2VzcykgewotICAgICAgICAgICAgICAgICAgICAgIGFsZXJ0aWZ5LnN1Y2Nlc3MoCi0gICAgICAg ICAgICAgICAgICAgICAgICBnZXR0ZXh0KCdSZXN0b3JlIGpvYiBjcmVhdGVkLicpLCA1Ci0gICAg ICAgICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgICAgICAgICAgICBwZ0Jyb3dzZXIuRXZl bnRzLnRyaWdnZXIoJ3BnYWRtaW4tYmdwcm9jZXNzOmNyZWF0ZWQnLCBzZWxmKTsKLSAgICAgICAg ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4o cmVzKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgfSwKLSAgICAg ICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbih4aHIpIHsKLSAgICAgICAgICAgICAgICAgICAg dHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICB2YXIgZXJyID0gJC5wYXJzZUpTT04oeGhyLnJl c3BvbnNlVGV4dCk7Ci0gICAgICAgICAgICAgICAgICAgICAgYWxlcnRpZnkuYWxlcnQoCi0gICAg ICAgICAgICAgICAgICAgICAgICBnZXR0ZXh0KCdSZXN0b3JlIGZhaWxlZC4nKSwKLSAgICAgICAg ICAgICAgICAgICAgICAgIGVyci5lcnJvcm1zZwotICAgICAgICAgICAgICAgICAgICAgICk7Ci0g ICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICBj b25zb2xlLndhcm4oZS5zdGFjayB8fCBlKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAg ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgfQotICAg ICAgICAgICAgfSwKLSAgICAgICAgICB9OwotICAgICAgICB9KTsKLSAgICAgIH0KLQotICAgICAg YWxlcnRpZnkucGdfcmVzdG9yZSh0aXRsZSwgaXRlbSwgZGF0YSwgbm9kZSkucmVzaXplVG8oJzY1 JScsICc2MCUnKTsKKyAgICAgIGxldCBkaWFsb2cgPSBuZXcgcmVzdG9yZURpYWxvZy5SZXN0b3Jl RGlhbG9nKHBnQnJvd3NlciwgJCwgYWxlcnRpZnksIFJlc3RvcmVPYmplY3RNb2RlbCk7CisgICAg ICBkaWFsb2cuZHJhdyhhY3Rpb24sIHRyZWVJdGVtKTsKICAgICB9LAogICB9OwogICByZXR1cm4g cGdCcm93c2VyLlJlc3RvcmU7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9yZXN0b3Jl L3N0YXRpYy9qcy9yZXN0b3JlX2RpYWxvZy5qcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUv c3RhdGljL2pzL3Jlc3RvcmVfZGlhbG9nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwLi40ODg0ZDkwMQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3Jl c3RvcmUvc3RhdGljL2pzL3Jlc3RvcmVfZGlhbG9nLmpzCkBAIC0wLDAgKzEsNTcgQEAKKy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K Ky8vCisvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChD KSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0 d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisvLworLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K KworaW1wb3J0IGdldHRleHQgZnJvbSAnLi4vLi4vLi4vLi4vc3RhdGljL2pzL2dldHRleHQnOwor aW1wb3J0IHtzcHJpbnRmfSBmcm9tICdzcHJpbnRmLWpzJzsKK2ltcG9ydCBCYWNrZm9ybSBmcm9t ICcuLi8uLi8uLi8uLi9zdGF0aWMvanMvYmFja2Zvcm0ucGdhZG1pbic7CitpbXBvcnQge0RpYWxv Z30gZnJvbSAnLi4vLi4vLi4vLi4vc3RhdGljL2pzL2FsZXJ0aWZ5L2RpYWxvZyc7CisKK2V4cG9y dCBjbGFzcyBSZXN0b3JlRGlhbG9nIGV4dGVuZHMgRGlhbG9nIHsKKyAgY29uc3RydWN0b3IocGdC cm93c2VyLCAkLCBhbGVydGlmeSwgUmVzdG9yZU1vZGVsLCBiYWNrZm9ybSA9IEJhY2tmb3JtKSB7 CisgICAgc3VwZXIoJ1Jlc3RvcmUgRXJyb3InLAorICAgICAgJzxkaXYgY2xhc3M9XCdyZXN0b3Jl X2RpYWxvZ1wnPjwvZGl2PicsCisgICAgICBwZ0Jyb3dzZXIsICQsIGFsZXJ0aWZ5LCBSZXN0b3Jl TW9kZWwsIGJhY2tmb3JtKTsKKyAgfQorCisgIGRyYXcoYWN0aW9uLCBhY2lUcmVlSXRlbSkgewor CisgICAgY29uc3Qgc2VydmVySW5mb3JtYXRpb24gPSB0aGlzLnJldHJpZXZlQW5jZXN0b3JPZlR5 cGVTZXJ2ZXIoYWNpVHJlZUl0ZW0pOworCisgICAgaWYgKCFzZXJ2ZXJJbmZvcm1hdGlvbikgewor ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghdGhpcy5oYXNCaW5hcmllc0NvbmZpZ3Vy YXRpb24oc2VydmVySW5mb3JtYXRpb24pKSB7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAg aWYgKCF0aGlzLmNhbkV4ZWN1dGVPbkN1cnJlbnREYXRhYmFzZShhY2lUcmVlSXRlbSkpIHsKKyAg ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBsZXQgYWNpVHJlZUl0ZW0xID0gYWNpVHJlZUl0ZW0g fHwgdGhpcy5wZ0Jyb3dzZXIudHJlZU1lbnUuc2VsZWN0ZWQoKTsKKyAgICBsZXQgaXRlbSA9IHRo aXMucGdCcm93c2VyLnRyZWVNZW51LmZpbmROb2RlQnlEb21FbGVtZW50KGFjaVRyZWVJdGVtMSk7 CisgICAgY29uc3QgZGF0YSA9IGl0ZW0uZ2V0RGF0YSgpOworICAgIGNvbnN0IG5vZGUgPSB0aGlz LnBnQnJvd3Nlci5Ob2Rlc1tkYXRhLl90eXBlXTsKKworICAgIGlmICghbm9kZSkKKyAgICAgIHJl dHVybjsKKworICAgIGxldCB0aXRsZSA9IHNwcmludGYoZ2V0dGV4dCgnUmVzdG9yZSAoJXM6ICVz KScpLCBub2RlLmxhYmVsLCBkYXRhLmxhYmVsKTsKKworICAgIHRoaXMuY3JlYXRlT3JHZXREaWFs b2codGl0bGUsICdyZXN0b3JlJyk7CisKKyAgICB0aGlzLmFsZXJ0aWZ5LnBnX3Jlc3RvcmUodGl0 bGUsIGFjaVRyZWVJdGVtMSwgZGF0YSwgbm9kZSkucmVzaXplVG8oJzY1JScsICc2MCUnKTsKKyAg fQorCisgIGRpYWxvZ05hbWUoKSB7CisgICAgcmV0dXJuICdwZ19yZXN0b3JlJzsKKyAgfQorfQor CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL3N0YXRpYy9qcy9yZXN0b3Jl X2RpYWxvZ193cmFwcGVyLmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS9zdGF0aWMvanMv cmVzdG9yZV9kaWFsb2dfd3JhcHBlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMC4uODQ1ZGE3YTMKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9yZXN0 b3JlL3N0YXRpYy9qcy9yZXN0b3JlX2RpYWxvZ193cmFwcGVyLmpzCkBAIC0wLDAgKzEsMjU1IEBA CitpbXBvcnQge2dldFRyZWVOb2RlSGllcmFyY2h5RnJvbUVsZW1lbnR9IGZyb20gJy4uLy4uLy4u Ly4uL3N0YXRpYy9qcy90cmVlL3BnYWRtaW5fdHJlZV9ub2RlJzsKK2ltcG9ydCBheGlvcyBmcm9t ICdheGlvcy9pbmRleCc7CitpbXBvcnQgXyBmcm9tICd1bmRlcnNjb3JlJzsKK2ltcG9ydCBnZXR0 ZXh0IGZyb20gJy4uLy4uLy4uLy4uL3N0YXRpYy9qcy9nZXR0ZXh0JzsKK2ltcG9ydCB1cmxfZm9y IGZyb20gJy4uLy4uLy4uLy4uL3N0YXRpYy9qcy91cmxfZm9yJzsKK2ltcG9ydCB7RGlhbG9nV3Jh cHBlcn0gZnJvbSAnLi4vLi4vLi4vLi4vc3RhdGljL2pzL2FsZXJ0aWZ5L2RpYWxvZ193cmFwcGVy JzsKKworZXhwb3J0IGNsYXNzIFJlc3RvcmVEaWFsb2dXcmFwcGVyIGV4dGVuZHMgRGlhbG9nV3Jh cHBlciB7CisgIGNvbnN0cnVjdG9yKGRpYWxvZ0NvbnRhaW5lclNlbGVjdG9yLCBkaWFsb2dUaXRs ZSwgdHlwZU9mRGlhbG9nLAorICAgICAgICAgICAgICBqcXVlcnksIHBnQnJvd3NlciwgYWxlcnRp ZnksIGRpYWxvZ01vZGVsLCBiYWNrZm9ybSkgeworICAgIHN1cGVyKGRpYWxvZ0NvbnRhaW5lclNl bGVjdG9yLCBkaWFsb2dUaXRsZSwganF1ZXJ5LAorICAgICAgcGdCcm93c2VyLCBhbGVydGlmeSwg ZGlhbG9nTW9kZWwsIGJhY2tmb3JtKTsKKyAgfQorCisgIG1haW4odGl0bGUsIGl0ZW0sIGRhdGEs IG5vZGUpIHsKKyAgICB0aGlzLnNldCgndGl0bGUnLCB0aXRsZSk7CisgICAgdGhpcy5zZXR0aW5n KCdwZ19ub2RlJywgbm9kZSk7CisgICAgdGhpcy5zZXR0aW5nKCdwZ19pdGVtJywgaXRlbSk7Cisg ICAgdGhpcy5zZXR0aW5nKCdwZ19pdGVtX2RhdGEnLCBkYXRhKTsKKyAgfQorCisgIHNldHVwKCkg eworICAgIHJldHVybiB7CisgICAgICBidXR0b25zOiBbeworICAgICAgICB0ZXh0OiAnJywKKyAg ICAgICAgY2xhc3NOYW1lOiAnYnRuIGJ0bi1kZWZhdWx0IHB1bGwtbGVmdCBmYSBmYS1sZyBmYS1p bmZvJywKKyAgICAgICAgYXR0cnM6IHsKKyAgICAgICAgICBuYW1lOiAnb2JqZWN0X2hlbHAnLAor ICAgICAgICAgIHR5cGU6ICdidXR0b24nLAorICAgICAgICAgIHVybDogJ2JhY2t1cC5odG1sJywK KyAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnUmVzdG9yZScpLAorICAgICAgICB9LAorICAgICAg fSwgeworICAgICAgICB0ZXh0OiAnJywKKyAgICAgICAga2V5OiAxMTIsCisgICAgICAgIGNsYXNz TmFtZTogJ2J0biBidG4tZGVmYXVsdCBwdWxsLWxlZnQgZmEgZmEtbGcgZmEtcXVlc3Rpb24nLAor ICAgICAgICBhdHRyczogeworICAgICAgICAgIG5hbWU6ICdkaWFsb2dfaGVscCcsCisgICAgICAg ICAgdHlwZTogJ2J1dHRvbicsCisgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ1Jlc3RvcmUnKSwK KyAgICAgICAgICB1cmw6IHVybF9mb3IoJ2hlbHAuc3RhdGljJywgeworICAgICAgICAgICAgJ2Zp bGVuYW1lJzogJ3Jlc3RvcmVfZGlhbG9nLmh0bWwnLAorICAgICAgICAgIH0pLAorICAgICAgICB9 LAorICAgICAgfSwgeworICAgICAgICB0ZXh0OiBnZXR0ZXh0KCdSZXN0b3JlJyksCisgICAgICAg IGtleTogMTMsCisgICAgICAgIGNsYXNzTmFtZTogJ2J0biBidG4tcHJpbWFyeSBmYSBmYS11cGxv YWQgcGctYWxlcnRpZnktYnV0dG9uJywKKyAgICAgICAgcmVzdG9yZTogdHJ1ZSwKKyAgICAgICAg J2RhdGEtYnRuLW5hbWUnOiAncmVzdG9yZScsCisgICAgICB9LCB7CisgICAgICAgIHRleHQ6IGdl dHRleHQoJ0NhbmNlbCcpLAorICAgICAgICBrZXk6IDI3LAorICAgICAgICBjbGFzc05hbWU6ICdi dG4gYnRuLWRhbmdlciBmYSBmYS1sZyBmYS10aW1lcyBwZy1hbGVydGlmeS1idXR0b24nLAorICAg ICAgICByZXN0b3JlOiBmYWxzZSwKKyAgICAgICAgJ2RhdGEtYnRuLW5hbWUnOiAnY2FuY2VsJywK KyAgICAgIH1dLAorICAgICAgLy8gU2V0IG9wdGlvbnMgZm9yIGRpYWxvZworICAgICAgb3B0aW9u czogeworICAgICAgICB0aXRsZTogdGhpcy5kaWFsb2dUaXRsZSwKKyAgICAgICAgLy9kaXNhYmxl IGJvdGggcGFkZGluZyBhbmQgb3ZlcmZsb3cgY29udHJvbC4KKyAgICAgICAgcGFkZGluZzogITEs CisgICAgICAgIG92ZXJmbG93OiAhMSwKKyAgICAgICAgbW9kZWw6IDAsCisgICAgICAgIHJlc2l6 YWJsZTogdHJ1ZSwKKyAgICAgICAgbWF4aW1pemFibGU6IHRydWUsCisgICAgICAgIHBpbm5hYmxl OiBmYWxzZSwKKyAgICAgICAgY2xvc2FibGVCeURpbW1lcjogZmFsc2UsCisgICAgICAgIG1vZGFs OiBmYWxzZSwKKyAgICAgIH0sCisgICAgfTsKKyAgfQorCisgIHByZXBhcmUoKSB7CisgICAgdGhp cy5kaXNhYmxlUmVzdG9yZUJ1dHRvbigpOworCisgICAgY29uc3QgJGNvbnRhaW5lciA9IHRoaXMu anF1ZXJ5KHRoaXMuZGlhbG9nQ29udGFpbmVyU2VsZWN0b3IpOworICAgIGNvbnN0IHNlbGVjdGVk VHJlZU5vZGUgPSB0aGlzLmdldFNlbGVjdGVkTm9kZSgpOworICAgIGNvbnN0IHNlbGVjdGVkVHJl ZU5vZGVEYXRhID0gdGhpcy5nZXRTZWxlY3RlZE5vZGVEYXRhKHNlbGVjdGVkVHJlZU5vZGUpOwor ICAgIGlmICghc2VsZWN0ZWRUcmVlTm9kZURhdGEpIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisK KyAgICBjb25zdCBub2RlID0gdGhpcy5wZ0Jyb3dzZXIuTm9kZXNbc2VsZWN0ZWRUcmVlTm9kZURh dGEuX3R5cGVdOworCisgICAgY29uc3QgdHJlZUluZm8gPSBnZXRUcmVlTm9kZUhpZXJhcmNoeUZy b21FbGVtZW50KHRoaXMucGdCcm93c2VyLCBzZWxlY3RlZFRyZWVOb2RlKTsKKyAgICBjb25zdCBk aWFsb2cgPSB0aGlzLmNyZWF0ZURpYWxvZyhub2RlLCB0cmVlSW5mbywgJGNvbnRhaW5lcik7Cisg ICAgdGhpcy5hZGRBbGVydGlmeUNsYXNzVG9SZXN0b3JlTm9kZUNoaWxkTm9kZXMoKTsKKyAgICBk aWFsb2cucmVuZGVyKCk7CisKKyAgICB0aGlzLmVsZW1lbnRzLmNvbnRlbnQuYXBwZW5kQ2hpbGQo JGNvbnRhaW5lci5nZXQoMCkpOworCisgICAgdGhpcy5mb2N1c09uRGlhbG9nKGRpYWxvZyk7Cisg ICAgdGhpcy5zZXRMaXN0ZW5lcnNGb3JGaWxlbmFtZUNoYW5nZXMoKTsKKyAgfQorCisgIGNhbGxi YWNrKGV2ZW50KSB7CisgICAgY29uc3Qgc2VsZWN0ZWRUcmVlTm9kZSA9IHRoaXMuZ2V0U2VsZWN0 ZWROb2RlKCk7CisgICAgY29uc3Qgc2VsZWN0ZWRUcmVlTm9kZURhdGEgPSB0aGlzLmdldFNlbGVj dGVkTm9kZURhdGEoc2VsZWN0ZWRUcmVlTm9kZSk7CisgICAgY29uc3Qgbm9kZSA9IHNlbGVjdGVk VHJlZU5vZGVEYXRhICYmIHRoaXMucGdCcm93c2VyLk5vZGVzW3NlbGVjdGVkVHJlZU5vZGVEYXRh Ll90eXBlXTsKKworICAgIGlmICh0aGlzLndhc0hlbHBCdXR0b25QcmVzc2VkKGV2ZW50KSkgewor ICAgICAgZXZlbnQuY2FuY2VsID0gdHJ1ZTsKKyAgICAgIHRoaXMucGdCcm93c2VyLnNob3dIZWxw KAorICAgICAgICBldmVudC5idXR0b24uZWxlbWVudC5uYW1lLAorICAgICAgICBldmVudC5idXR0 b24uZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3VybCcpLAorICAgICAgICBub2RlLAorICAgICAgICBz ZWxlY3RlZFRyZWVOb2RlLAorICAgICAgICBldmVudC5idXR0b24uZWxlbWVudC5nZXRBdHRyaWJ1 dGUoJ2xhYmVsJykKKyAgICAgICk7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHRo aXMud2FzUmVzdG9yZUJ1dHRvblByZXNzZWQoZXZlbnQpKSB7CisKKyAgICAgIGlmICghc2VsZWN0 ZWRUcmVlTm9kZURhdGEpCisgICAgICAgIHJldHVybjsKKworICAgICAgY29uc3Qgc2VydmVySWRl bnRpZmllciA9IHRoaXMucmV0cmlldmVTZXJ2ZXJJZGVudGlmaWVyKG5vZGUsIHNlbGVjdGVkVHJl ZU5vZGUpOworCisgICAgICBjb25zdCBkaWFsb2dXcmFwcGVyID0gdGhpczsKKyAgICAgIGxldCB1 cmxTaG9ydGN1dCA9ICdyZXN0b3JlLmNyZWF0ZV9qb2InOworCisgICAgICBjb25zdCBiYXNlVXJs ID0gdXJsX2Zvcih1cmxTaG9ydGN1dCwgeworICAgICAgICAnc2lkJzogc2VydmVySWRlbnRpZmll ciwKKyAgICAgIH0pOworCisgICAgICBjb25zdCB0cmVlSW5mbyA9IGdldFRyZWVOb2RlSGllcmFy Y2h5RnJvbUVsZW1lbnQoCisgICAgICAgIHRoaXMucGdCcm93c2VyLAorICAgICAgICBzZWxlY3Rl ZFRyZWVOb2RlCisgICAgICApOworCisgICAgICB0aGlzLnNldEV4dHJhUGFyYW1ldGVycyhzZWxl Y3RlZFRyZWVOb2RlLCB0cmVlSW5mbyk7CisKKyAgICAgIGxldCBzZXJ2aWNlID0gYXhpb3MuY3Jl YXRlKHt9KTsKKyAgICAgIHNlcnZpY2UucG9zdCgKKyAgICAgICAgYmFzZVVybCwKKyAgICAgICAg dGhpcy52aWV3Lm1vZGVsLnRvSlNPTigpCisgICAgICApLnRoZW4oZnVuY3Rpb24gKCkgeworICAg ICAgICBkaWFsb2dXcmFwcGVyLmFsZXJ0aWZ5LnN1Y2Nlc3MoZ2V0dGV4dCgnUmVzdG9yZSBqb2Ig Y3JlYXRlZC4nKSwgNSk7CisgICAgICAgIGRpYWxvZ1dyYXBwZXIucGdCcm93c2VyLkV2ZW50cy50 cmlnZ2VyKCdwZ2FkbWluLWJncHJvY2VzczpjcmVhdGVkJywgZGlhbG9nV3JhcHBlcik7CisgICAg ICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICBj b25zdCBlcnIgPSBlcnJvci5yZXNwb25zZS5kYXRhOworICAgICAgICAgIGRpYWxvZ1dyYXBwZXIu YWxlcnRpZnkuYWxlcnQoCisgICAgICAgICAgICBnZXR0ZXh0KCdSZXN0b3JlIGpvYiBmYWlsZWQu JyksCisgICAgICAgICAgICBlcnIuZXJyb3Jtc2cKKyAgICAgICAgICApOworICAgICAgICB9IGNh dGNoIChlKSB7CisgICAgICAgICAgY29uc29sZS53YXJuKGUuc3RhY2sgfHwgZSk7CisgICAgICAg IH0KKyAgICAgIH0pOworICAgIH0KKyAgfQorCisgIGFkZEFsZXJ0aWZ5Q2xhc3NUb1Jlc3RvcmVO b2RlQ2hpbGROb2RlcygpIHsKKyAgICB0aGlzLmpxdWVyeSh0aGlzLmVsZW1lbnRzLmJvZHkuY2hp bGROb2Rlc1swXSkuYWRkQ2xhc3MoCisgICAgICAnYWxlcnRpZnlfdG9vbHNfZGlhbG9nX3Byb3Bl cnRpZXMgb2JqX3Byb3BlcnRpZXMnCisgICAgKTsKKyAgfQorCisgIGdldFNlbGVjdGVkTm9kZSgp IHsKKyAgICBjb25zdCB0cmVlID0gdGhpcy5wZ0Jyb3dzZXIudHJlZU1lbnU7CisgICAgY29uc3Qg c2VsZWN0ZWROb2RlID0gdHJlZS5zZWxlY3RlZCgpOworICAgIGlmIChzZWxlY3RlZE5vZGUpIHsK KyAgICAgIHJldHVybiB0cmVlLmZpbmROb2RlQnlEb21FbGVtZW50KHNlbGVjdGVkTm9kZSk7Cisg ICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiB1bmRlZmluZWQ7CisgICAgfQorICB9CisKKyAgZGlz YWJsZVJlc3RvcmVCdXR0b24oKSB7CisgICAgdGhpcy5fX2ludGVybmFsLmJ1dHRvbnNbMl0uZWxl bWVudC5kaXNhYmxlZCA9IHRydWU7CisgIH0KKworICBlbmFibGVSZXN0b3JlQnV0dG9uKCkgewor ICAgIHRoaXMuX19pbnRlcm5hbC5idXR0b25zWzJdLmVsZW1lbnQuZGlzYWJsZWQgPSBmYWxzZTsK KyAgfQorCisgIGNyZWF0ZURpYWxvZyhub2RlLCB0cmVlSW5mbywgJGNvbnRhaW5lcikgeworICAg IGNvbnN0IG5ld01vZGVsID0gbmV3IHRoaXMuZGlhbG9nTW9kZWwoeworICAgICAgbm9kZV9kYXRh OiBub2RlLAorICAgIH0sIHsKKyAgICAgIG5vZGVfaW5mbzogdHJlZUluZm8sCisgICAgfSk7Cisg ICAgY29uc3QgZmllbGRzID0gdGhpcy5iYWNrZm9ybS5nZW5lcmF0ZVZpZXdTY2hlbWEoCisgICAg ICB0cmVlSW5mbywgbmV3TW9kZWwsICdjcmVhdGUnLCBub2RlLCB0cmVlSW5mby5zZXJ2ZXIsIHRy dWUKKyAgICApOworCisgICAgcmV0dXJuIHRoaXMudmlldyA9IG5ldyB0aGlzLmJhY2tmb3JtLkRp YWxvZyh7CisgICAgICBlbDogJGNvbnRhaW5lciwKKyAgICAgIG1vZGVsOiBuZXdNb2RlbCwKKyAg ICAgIHNjaGVtYTogZmllbGRzLAorICAgIH0pOworICB9CisKKyAgcmV0cmlldmVTZXJ2ZXJJZGVu dGlmaWVyKG5vZGUsIHNlbGVjdGVkVHJlZU5vZGUpIHsKKyAgICBjb25zdCB0cmVlSW5mbyA9IGdl dFRyZWVOb2RlSGllcmFyY2h5RnJvbUVsZW1lbnQoCisgICAgICB0aGlzLnBnQnJvd3NlciwKKyAg ICAgIHNlbGVjdGVkVHJlZU5vZGUKKyAgICApOworICAgIHJldHVybiB0cmVlSW5mby5zZXJ2ZXIu X2lkOworICB9CisKKyAgc2V0TGlzdGVuZXJzRm9yRmlsZW5hbWVDaGFuZ2VzKCkgeworICAgIGNv bnN0IHNlbGYgPSB0aGlzOworCisgICAgdGhpcy52aWV3Lm1vZGVsLm9uKCdjaGFuZ2UnLCBmdW5j dGlvbiAoKSB7CisgICAgICBpZiAoIV8uaXNVbmRlZmluZWQodGhpcy5nZXQoJ2ZpbGUnKSkgJiYg dGhpcy5nZXQoJ2ZpbGUnKSAhPT0gJycpIHsKKyAgICAgICAgdGhpcy5lcnJvck1vZGVsLmNsZWFy KCk7CisgICAgICAgIHNlbGYuZW5hYmxlUmVzdG9yZUJ1dHRvbigpOworICAgICAgfSBlbHNlIHsK KyAgICAgICAgc2VsZi5kaXNhYmxlUmVzdG9yZUJ1dHRvbigpOworICAgICAgICB0aGlzLmVycm9y TW9kZWwuc2V0KCdmaWxlJywgZ2V0dGV4dCgnUGxlYXNlIHByb3ZpZGUgYSBmaWxlbmFtZScpKTsK KyAgICAgIH0KKyAgICB9KTsKKyAgfQorCisgIHNldEV4dHJhUGFyYW1ldGVycyhzZWxlY3RlZFRy ZWVOb2RlLCB0cmVlSW5mbykgeworICAgIHRoaXMudmlldy5tb2RlbC5zZXQoJ2RhdGFiYXNlJywg dHJlZUluZm8uZGF0YWJhc2UuX2xhYmVsKTsKKyAgICBpZiAoIXRoaXMudmlldy5tb2RlbC5nZXQo J2N1c3RvbScpKSB7CisgICAgICBjb25zdCBub2RlRGF0YSA9IHNlbGVjdGVkVHJlZU5vZGUuZ2V0 RGF0YSgpOworCisgICAgICBzd2l0Y2ggKG5vZGVEYXRhLl90eXBlKSB7CisgICAgICBjYXNlICdz Y2hlbWEnOgorICAgICAgICB0aGlzLnZpZXcubW9kZWwuc2V0KCdzY2hlbWFzJywgW25vZGVEYXRh Ll9sYWJlbF0pOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ3RhYmxlJzoKKyAgICAgICAg dGhpcy52aWV3Lm1vZGVsLnNldCgnc2NoZW1hcycsIFt0cmVlSW5mby5zY2hlbWEuX2xhYmVsXSk7 CisgICAgICAgIHRoaXMudmlldy5tb2RlbC5zZXQoJ3RhYmxlcycsIFtub2RlRGF0YS5fbGFiZWxd KTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICdmdW5jdGlvbic6CisgICAgICAgIHRoaXMu dmlldy5tb2RlbC5zZXQoJ3NjaGVtYXMnLCBbdHJlZUluZm8uc2NoZW1hLl9sYWJlbF0pOworICAg ICAgICB0aGlzLnZpZXcubW9kZWwuc2V0KCdmdW5jdGlvbnMnLCBbbm9kZURhdGEuX2xhYmVsXSk7 CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnaW5kZXgnOgorICAgICAgICB0aGlzLnZpZXcu bW9kZWwuc2V0KCdzY2hlbWFzJywgW3RyZWVJbmZvLnNjaGVtYS5fbGFiZWxdKTsKKyAgICAgICAg dGhpcy52aWV3Lm1vZGVsLnNldCgnaW5kZXhlcycsIFtub2RlRGF0YS5fbGFiZWxdKTsKKyAgICAg ICAgYnJlYWs7CisgICAgICBjYXNlICd0cmlnZ2VyJzoKKyAgICAgICAgdGhpcy52aWV3Lm1vZGVs LnNldCgnc2NoZW1hcycsIFt0cmVlSW5mby5zY2hlbWEuX2xhYmVsXSk7CisgICAgICAgIHRoaXMu dmlldy5tb2RlbC5zZXQoJ3RyaWdnZXJzJywgW25vZGVEYXRhLl9sYWJlbF0pOworICAgICAgICBi cmVhazsKKyAgICAgIGNhc2UgJ3RyaWdnZXJfZnVuYyc6CisgICAgICAgIHRoaXMudmlldy5tb2Rl bC5zZXQoJ3NjaGVtYXMnLCBbdHJlZUluZm8uc2NoZW1hLl9sYWJlbF0pOworICAgICAgICB0aGlz LnZpZXcubW9kZWwuc2V0KCd0cmlnZ2VyX2Z1bmNzJywgW25vZGVEYXRhLl9sYWJlbF0pOworICAg ICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9CisgIH0KKworICB3YXNSZXN0b3JlQnV0dG9uUHJl c3NlZChldmVudCkgeworICAgIHJldHVybiBldmVudC5idXR0b25bJ2RhdGEtYnRuLW5hbWUnXSA9 PT0gJ3Jlc3RvcmUnOworICB9Cit9CmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lvbi9qYXZhc2Ny aXB0L2JhY2t1cC9iYWNrdXBfZGlhbG9nX3NwZWMuanMgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2Ny aXB0L2JhY2t1cC9iYWNrdXBfZGlhbG9nX3NwZWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAuLjI2NTUwNTlkCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3JlZ3Jlc3Npb24v amF2YXNjcmlwdC9iYWNrdXAvYmFja3VwX2RpYWxvZ19zcGVjLmpzCkBAIC0wLDAgKzEsMjA1IEBA CisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworLy8KKy8vIENvcHly aWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKy8vIFRo aXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorLy8K Ky8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vCitpbXBvcnQge0JhY2t1cERpYWxvZ30gZnJvbSAnLi4vLi4vLi4vcGdhZG1pbi90b29s cy9iYWNrdXAvc3RhdGljL2pzL2JhY2t1cF9kaWFsb2cnOworaW1wb3J0IHtUcmVlRmFrZX0gZnJv bSAnLi4vdHJlZS90cmVlX2Zha2UnOworCitjb25zdCBjb250ZXh0ID0gZGVzY3JpYmU7CisKK2Rl c2NyaWJlKCdCYWNrdXBEaWFsb2cnLCAoKSA9PiB7CisgIGxldCBiYWNrdXBEaWFsb2c7CisgIGxl dCBwZ0Jyb3dzZXI7CisgIGxldCBqcXVlcnlTcHk7CisgIGxldCBhbGVydGlmeVNweTsKKyAgbGV0 IGJhY2t1cE1vZGVsU3B5OworCisgIGJlZm9yZUVhY2goKCkgPT4geworICAgIHBnQnJvd3NlciA9 IHsKKyAgICAgIHRyZWVNZW51OiBuZXcgVHJlZUZha2UoKSwKKyAgICAgIE5vZGVzOiB7CisgICAg ICAgIHNlcnZlcjogeworICAgICAgICAgIGhhc0lkOiB0cnVlLAorICAgICAgICAgIGxhYmVsOiAn c2VydmVyJywKKyAgICAgICAgICBnZXRUcmVlTm9kZUhpZXJhcmNoeTogamFzbWluZS5jcmVhdGVT cHkoJ3NlcnZlci5nZXRUcmVlTm9kZUhpZXJhcmNoeScpLAorICAgICAgICB9LAorICAgICAgICBk YXRhYmFzZTogeworICAgICAgICAgIGhhc0lkOiB0cnVlLAorICAgICAgICAgIGxhYmVsOiAnZGF0 YWJhc2UnLAorICAgICAgICAgIGdldFRyZWVOb2RlSGllcmFyY2h5OiBqYXNtaW5lLmNyZWF0ZVNw eSgnZGIuZ2V0VHJlZU5vZGVIaWVyYXJjaHknKSwKKyAgICAgICAgfSwKKyAgICAgICAgc2NoZW1h OiB7CisgICAgICAgICAgaGFzSWQ6IHRydWUsCisgICAgICAgICAgbGFiZWw6ICdzY2hlbWEnLAor ICAgICAgICAgIGdldFRyZWVOb2RlSGllcmFyY2h5OiBqYXNtaW5lLmNyZWF0ZVNweSgnZGIuZ2V0 VHJlZU5vZGVIaWVyYXJjaHknKSwKKyAgICAgICAgfSwKKyAgICAgIH0sCisgICAgfTsKKyAgICBw Z0Jyb3dzZXIuTm9kZXMuc2VydmVyLmhhc0lkID0gdHJ1ZTsKKyAgICBwZ0Jyb3dzZXIuTm9kZXMu ZGF0YWJhc2UuaGFzSWQgPSB0cnVlOworICAgIGpxdWVyeVNweSA9IGphc21pbmUuY3JlYXRlU3B5 KCdqcXVlcnlTcHknKTsKKyAgICBiYWNrdXBNb2RlbFNweSA9IGphc21pbmUuY3JlYXRlU3B5KCdi YWNrdXBNb2RlbFNweScpOworCisgICAgY29uc3QgaGllcmFyY2h5ID0geworICAgICAgY2hpbGRy ZW46IFsKKyAgICAgICAgeworICAgICAgICAgIGlkOiAncm9vdCcsCisgICAgICAgICAgY2hpbGRy ZW46IFsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgaWQ6ICdzZXJ2ZXJUcmVlTm9kZScs CisgICAgICAgICAgICAgIGRhdGE6IHsKKyAgICAgICAgICAgICAgICBfaWQ6IDEwLAorICAgICAg ICAgICAgICAgIF90eXBlOiAnc2VydmVyJywKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg ICAgY2hpbGRyZW46IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICBpZDog J3NvbWVfZGF0YWJhc2UnLAorICAgICAgICAgICAgICAgICAgZGF0YTogeworICAgICAgICAgICAg ICAgICAgICBfdHlwZTogJ2RhdGFiYXNlJywKKyAgICAgICAgICAgICAgICAgICAgX2lkOiAxMSwK KyAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdzb21lX2RhdGFiYXNlJywKKyAgICAgICAgICAg ICAgICAgICAgX2xhYmVsOiAnc29tZV9kYXRhYmFzZV9sYWJlbCcsCisgICAgICAgICAgICAgICAg ICB9LAorICAgICAgICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICAgICAgIGlkOiAnZGF0YWJh c2Vfd2l0aF9lcXVhbF9pbl9uYW1lJywKKyAgICAgICAgICAgICAgICAgIGRhdGE6IHsKKyAgICAg ICAgICAgICAgICAgICAgX3R5cGU6ICdkYXRhYmFzZScsCisgICAgICAgICAgICAgICAgICAgIGxh YmVsOiAnc29tZV9kYXRhYmFzZScsCisgICAgICAgICAgICAgICAgICAgIF9sYWJlbDogJz1zb21l X2RhdGFiYXNlX2xhYmVsJywKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAg fSwKKyAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAg ICAgICAgICAgIGlkOiAncHBhc1NlcnZlcicsCisgICAgICAgICAgICAgIGRhdGE6IHsKKyAgICAg ICAgICAgICAgICBfdHlwZTogJ3NlcnZlcicsCisgICAgICAgICAgICAgICAgc2VydmVyX3R5cGU6 ICdwcGFzJywKKyAgICAgICAgICAgICAgICBjaGlsZHJlbjogWworICAgICAgICAgICAgICAgICAg e2lkOiAnc29tZU5vZGVVbmRlcm5lYXRoUFBBU1NlcnZlcid9LAorICAgICAgICAgICAgICAgIF0s CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICB9LAorICAgICAgICAgIF0sCisgICAgICAg IH0sCisgICAgICBdLAorICAgIH07CisKKyAgICBwZ0Jyb3dzZXIudHJlZU1lbnUgPSBUcmVlRmFr ZS5idWlsZChoaWVyYXJjaHkpOworICB9KTsKKworICBkZXNjcmliZSgnI2RyYXcnLCAoKSA9PiB7 CisgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICBhbGVydGlmeVNweSA9IGphc21pbmUuY3Jl YXRlU3B5T2JqKCdhbGVydGlmeScsIFsnYWxlcnQnLCAnZGlhbG9nJ10pOworICAgICAgYWxlcnRp ZnlTcHlbJ2JhY2t1cF9vYmplY3RzJ10gPSBqYXNtaW5lLmNyZWF0ZVNweSgnYmFja3VwX29iamVj dHMnKTsKKyAgICAgIGJhY2t1cERpYWxvZyA9IG5ldyBCYWNrdXBEaWFsb2coCisgICAgICAgIHBn QnJvd3NlciwKKyAgICAgICAganF1ZXJ5U3B5LAorICAgICAgICBhbGVydGlmeVNweSwKKyAgICAg ICAgYmFja3VwTW9kZWxTcHkKKyAgICAgICk7CisKKyAgICAgIHBnQnJvd3Nlci5nZXRfcHJlZmVy ZW5jZSA9IGphc21pbmUuY3JlYXRlU3B5KCdnZXRfcHJlZmVyZW5jZXMnKTsKKyAgICB9KTsKKwor ICAgIGNvbnRleHQoJ3RoZXJlIGFyZSBubyBhbmNlc3RvcnMgb2YgdGhlIHR5cGUgc2VydmVyJywg KCkgPT4geworICAgICAgaXQoJ2RvZXMgbm90IGNyZWF0ZSBhIGRpYWxvZycsICgpID0+IHsKKyAg ICAgICAgcGdCcm93c2VyLnRyZWVNZW51LnNlbGVjdE5vZGUoW3tpZDogJ3Jvb3QnfV0pOworICAg ICAgICBiYWNrdXBEaWFsb2cuZHJhdyhudWxsLCBudWxsLCBudWxsKTsKKyAgICAgICAgZXhwZWN0 KGFsZXJ0aWZ5U3B5WydiYWNrdXBfb2JqZWN0cyddKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpOwor ICAgICAgfSk7CisKKyAgICAgIGl0KCdkaXNwbGF5IGFuIGFsZXJ0IHdpdGggYSBCYWNrdXAgRXJy b3InLCAoKSA9PiB7CisgICAgICAgIGJhY2t1cERpYWxvZy5kcmF3KG51bGwsIFt7aWQ6ICdyb290 J31dLCBudWxsKTsKKyAgICAgICAgZXhwZWN0KGFsZXJ0aWZ5U3B5LmFsZXJ0KS50b0hhdmVCZWVu Q2FsbGVkV2l0aCgKKyAgICAgICAgICAnQmFja3VwIEVycm9yJywKKyAgICAgICAgICAnUGxlYXNl IHNlbGVjdCBzZXJ2ZXIgb3IgY2hpbGQgbm9kZSBmcm9tIHRoZSBicm93c2VyIHRyZWUuJworICAg ICAgICApOworICAgICAgfSk7CisgICAgfSk7CisKKyAgICBjb250ZXh0KCd0aGVyZSBpcyBhbiBh bmNlc3RvciBvZiB0aGUgdHlwZSBzZXJ2ZXInLCAoKSA9PiB7CisgICAgICBjb250ZXh0KCdubyBw cmVmZXJlbmNlIGNhbiBiZSBmb3VuZCcsICgpID0+IHsKKyAgICAgICAgYmVmb3JlRWFjaCgoKSA9 PiB7CisgICAgICAgICAgcGdCcm93c2VyLmdldF9wcmVmZXJlbmNlLmFuZC5yZXR1cm5WYWx1ZSh1 bmRlZmluZWQpOworICAgICAgICB9KTsKKworICAgICAgICBjb250ZXh0KCdzZXJ2ZXIgaXMgYSBw cGFzIHNlcnZlcicsICgpID0+IHsKKyAgICAgICAgICBpdCgnZGlzcGxheSBhbiBhbGVydCB3aXRo ICJCYWNrdXAgRXJyb3IiJywgKCkgPT4geworICAgICAgICAgICAgYmFja3VwRGlhbG9nLmRyYXco bnVsbCwgW3tpZDogJ3NvbWVfZGF0YWJhc2UnfV0sIG51bGwpOworICAgICAgICAgICAgZXhwZWN0 KGFsZXJ0aWZ5U3B5LmFsZXJ0KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgKKyAgICAgICAgICAgICAg J0JhY2t1cCBFcnJvcicsCisgICAgICAgICAgICAgICdGYWlsZWQgdG8gbG9hZCBwcmVmZXJlbmNl IHBnX2Jpbl9kaXIgb2YgbW9kdWxlIHBhdGhzJworICAgICAgICAgICAgKTsKKyAgICAgICAgICB9 KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgY29udGV4dCgnc2VydmVyIGlzIG5vdCBhIHBwYXMg c2VydmVyJywgKCkgPT4geworICAgICAgICAgIGl0KCdkaXNwbGF5IGFuIGFsZXJ0IHdpdGggIkJh Y2t1cCBFcnJvciInLCAoKSA9PiB7CisgICAgICAgICAgICBiYWNrdXBEaWFsb2cuZHJhdyhudWxs LCBbe2lkOiAncHBhc1NlcnZlcid9XSwgbnVsbCk7CisgICAgICAgICAgICBleHBlY3QoYWxlcnRp ZnlTcHkuYWxlcnQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAorICAgICAgICAgICAgICAnQmFja3Vw IEVycm9yJywKKyAgICAgICAgICAgICAgJ0ZhaWxlZCB0byBsb2FkIHByZWZlcmVuY2UgcHBhc19i aW5fZGlyIG9mIG1vZHVsZSBwYXRocycKKyAgICAgICAgICAgICk7CisgICAgICAgICAgfSk7Cisg ICAgICAgIH0pOworICAgICAgfSk7CisKKyAgICAgIGNvbnRleHQoJ3ByZWZlcmVuY2UgY2FuIGJl IGZvdW5kJywgKCkgPT4geworICAgICAgICBjb250ZXh0KCdiaW5hcnkgZm9sZGVyIGlzIG5vdCBj b25maWd1cmVkJywgKCkgPT4geworICAgICAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAg ICAgICAgcGdCcm93c2VyLmdldF9wcmVmZXJlbmNlLmFuZC5yZXR1cm5WYWx1ZSh7fSk7CisgICAg ICAgICAgfSk7CisKKyAgICAgICAgICBjb250ZXh0KCdzZXJ2ZXIgaXMgYSBwcGFzIHNlcnZlcics ICgpID0+IHsKKyAgICAgICAgICAgIGl0KCdkaXNwbGF5IGFuIGFsZXJ0IHdpdGggIkNvbmZpZ3Vy YXRpb24gcmVxdWlyZWQiJywgKCkgPT4geworICAgICAgICAgICAgICBiYWNrdXBEaWFsb2cuZHJh dyhudWxsLCBbe2lkOiAnc2VydmVyVHJlZU5vZGUnfV0sIG51bGwpOworICAgICAgICAgICAgICBl eHBlY3QoYWxlcnRpZnlTcHkuYWxlcnQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAorICAgICAgICAg ICAgICAgICdDb25maWd1cmF0aW9uIHJlcXVpcmVkJywKKyAgICAgICAgICAgICAgICAnUGxlYXNl IGNvbmZpZ3VyZSB0aGUgUG9zdGdyZVNRTCBCaW5hcnkgUGF0aCBpbiB0aGUgUHJlZmVyZW5jZXMg ZGlhbG9nLicKKyAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgIH0p OworCisgICAgICAgICAgY29udGV4dCgnc2VydmVyIGlzIG5vdCBhIHBwYXMgc2VydmVyJywgKCkg PT4geworICAgICAgICAgICAgaXQoJ2Rpc3BsYXkgYW4gYWxlcnQgd2l0aCAiQ29uZmlndXJhdGlv biByZXF1aXJlZCInLCAoKSA9PiB7CisgICAgICAgICAgICAgIGJhY2t1cERpYWxvZy5kcmF3KG51 bGwsIFt7aWQ6ICdwcGFzU2VydmVyJ31dLCBudWxsKTsKKyAgICAgICAgICAgICAgZXhwZWN0KGFs ZXJ0aWZ5U3B5LmFsZXJ0KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgKKyAgICAgICAgICAgICAgICAn Q29uZmlndXJhdGlvbiByZXF1aXJlZCcsCisgICAgICAgICAgICAgICAgJ1BsZWFzZSBjb25maWd1 cmUgdGhlIEVEQiBBZHZhbmNlZCBTZXJ2ZXIgQmluYXJ5IFBhdGggaW4gdGhlIFByZWZlcmVuY2Vz IGRpYWxvZy4nCisgICAgICAgICAgICAgICk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICB9 KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgY29udGV4dCgnYmluYXJ5IGZvbGRlciBpcyBjb25m aWd1cmVkJywgKCkgPT4geworICAgICAgICAgIGxldCBiYWNrdXBEaWFsb2dSZXNpemVUb1NweTsK KyAgICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgICAgIGJhY2t1cERpYWxvZ1Jl c2l6ZVRvU3B5ID0gamFzbWluZS5jcmVhdGVTcHlPYmooJ2JhY2t1cERpYWxvZ1Jlc2l6ZVRvU3B5 JywgWydyZXNpemVUbyddKTsKKyAgICAgICAgICAgIGFsZXJ0aWZ5U3B5WydiYWNrdXBfb2JqZWN0 cyddLmFuZAorICAgICAgICAgICAgICAucmV0dXJuVmFsdWUoYmFja3VwRGlhbG9nUmVzaXplVG9T cHkpOworICAgICAgICAgICAgcGdCcm93c2VyLmdldF9wcmVmZXJlbmNlLmFuZC5yZXR1cm5WYWx1 ZSh7dmFsdWU6ICcvc29tZS9wYXRoJ30pOworICAgICAgICAgIH0pOworCisgICAgICAgICAgaXQo J2Rpc3BsYXlzIHRoZSBkaWFsb2cnLCAoKSA9PiB7CisgICAgICAgICAgICBiYWNrdXBEaWFsb2cu ZHJhdyhudWxsLCBbe2lkOiAnc2VydmVyVHJlZU5vZGUnfV0sIG51bGwpOworICAgICAgICAgICAg ZXhwZWN0KGFsZXJ0aWZ5U3B5WydiYWNrdXBfb2JqZWN0cyddKS50b0hhdmVCZWVuQ2FsbGVkV2l0 aCh0cnVlKTsKKyAgICAgICAgICAgIGV4cGVjdChiYWNrdXBEaWFsb2dSZXNpemVUb1NweS5yZXNp emVUbykudG9IYXZlQmVlbkNhbGxlZFdpdGgoJzYwJScsICc1MCUnKTsKKyAgICAgICAgICB9KTsK KworICAgICAgICAgIGNvbnRleHQoJ2RhdGFiYXNlIGxhYmVsIGNvbnRhaW4gIj0iJywgKCkgPT4g eworICAgICAgICAgICAgaXQoJ3Nob3VsZCBjcmVhdGUgYWxlcnQgZGlhbG9nIHdpdGggYmFja3Vw IGVycm9yJywgKCkgPT4geworICAgICAgICAgICAgICBiYWNrdXBEaWFsb2cuZHJhdyhudWxsLCBb e2lkOiAnZGF0YWJhc2Vfd2l0aF9lcXVhbF9pbl9uYW1lJ31dLCBudWxsKTsKKyAgICAgICAgICAg ICAgZXhwZWN0KGFsZXJ0aWZ5U3B5LmFsZXJ0KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgnQmFja3Vw IEVycm9yJywKKyAgICAgICAgICAgICAgICAnRGF0YWJhc2VzIHdpdGggPSBzeW1ib2xzIGluIHRo ZSBuYW1lIGNhbm5vdCBiZSBiYWNrZWQgdXAgb3IgcmVzdG9yZWQgdXNpbmcgdGhpcyB1dGlsaXR5 LicpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgICAg fSk7CisgICAgfSk7CisgIH0pOworfSk7CmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lvbi9qYXZh c2NyaXB0L2JhY2t1cC9iYWNrdXBfZGlhbG9nX3dyYXBwZXJfc3BlYy5qcyBiL3dlYi9yZWdyZXNz aW9uL2phdmFzY3JpcHQvYmFja3VwL2JhY2t1cF9kaWFsb2dfd3JhcHBlcl9zcGVjLmpzCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi41ODcwNTMxOAotLS0gL2Rldi9udWxsCisr KyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvYmFja3VwL2JhY2t1cF9kaWFsb2dfd3JhcHBl cl9zcGVjLmpzCkBAIC0wLDAgKzEsNjc1IEBACitpbXBvcnQge1RyZWVGYWtlfSBmcm9tICcuLi90 cmVlL3RyZWVfZmFrZSc7CitpbXBvcnQge0JhY2t1cERpYWxvZ1dyYXBwZXJ9IGZyb20gJy4uLy4u Ly4uL3BnYWRtaW4vdG9vbHMvYmFja3VwL3N0YXRpYy9qcy9iYWNrdXBfZGlhbG9nX3dyYXBwZXIn OworaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zL2luZGV4JzsKK2ltcG9ydCBNb2NrQWRhcHRlciBm cm9tICdheGlvcy1tb2NrLWFkYXB0ZXInOworaW1wb3J0IHtGYWtlTW9kZWx9IGZyb20gJy4uL2Zh a2VfbW9kZWwnOworaW1wb3J0IHtUcmVlTm9kZX0gZnJvbSAnLi4vLi4vLi4vcGdhZG1pbi9zdGF0 aWMvanMvdHJlZS90cmVlJzsKKworbGV0IGNvbnRleHQgPSBkZXNjcmliZTsKKworZGVzY3JpYmUo J0JhY2t1cERpYWxvZ1dyYXBwZXInLCAoKSA9PiB7CisgIGxldCBqcXVlcnlTcHk7CisgIGxldCBw Z0Jyb3dzZXI7CisgIGxldCBhbGVydGlmeVNweTsKKyAgbGV0IGRpYWxvZ01vZGVsS2xhc3NTcHk7 CisgIGxldCBiYWNrZm9ybTsKKyAgbGV0IGdlbmVyYXRlZEJhY2t1cE1vZGVsOworICBsZXQgYmFj a3VwRGlhbG9nV3JhcHBlcjsKKyAgbGV0IG5vRGF0YU5vZGU7CisgIGxldCBzZXJ2ZXJUcmVlTm9k ZTsKKyAgbGV0IGRhdGFiYXNlVHJlZU5vZGU7CisgIGxldCB2aWV3U2NoZW1hOworICBsZXQgYmFj a3VwSlF1ZXJ5Q29udGFpbmVyU3B5OworICBsZXQgYmFja3VwTm9kZUNoaWxkTm9kZVNweTsKKyAg bGV0IGJhY2t1cE5vZGU7CisKKyAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgcGdCcm93c2VyID0g eworICAgICAgdHJlZU1lbnU6IG5ldyBUcmVlRmFrZSgpLAorICAgICAgTm9kZXM6IHsKKyAgICAg ICAgc2VydmVyOiB7CisgICAgICAgICAgaGFzSWQ6IHRydWUsCisgICAgICAgICAgZ2V0VHJlZU5v ZGVIaWVyYXJjaHk6IGphc21pbmUuY3JlYXRlU3B5KCdnZXRUcmVlTm9kZUhpZXJhcmNoeScpLAor ICAgICAgICB9LAorICAgICAgICBkYXRhYmFzZTogeworICAgICAgICAgIGhhc0lkOiB0cnVlLAor ICAgICAgICB9LAorICAgICAgfSwKKyAgICAgIGtleWJvYXJkTmF2aWdhdGlvbjogamFzbWluZS5j cmVhdGVTcHlPYmooJ2tleWJvYXJkTmF2aWdhdGlvbicsIFsnZ2V0RGlhbG9nVGFiTmF2aWdhdG9y J10pLAorICAgIH07CisgICAgbm9EYXRhTm9kZSA9IHBnQnJvd3Nlci50cmVlTWVudS5hZGROZXdO b2RlKCdsZXZlbDEuMScsIHVuZGVmaW5lZCwgW3tpZDogJ2xldmVsMSd9XSk7CisgICAgc2VydmVy VHJlZU5vZGUgPSBwZ0Jyb3dzZXIudHJlZU1lbnUuYWRkTmV3Tm9kZSgnbGV2ZWwyLjEnLCB7Cisg ICAgICBfdHlwZTogJ3NlcnZlcicsCisgICAgICBfaWQ6IDEwLAorICAgICAgbGFiZWw6ICdzb21l LXRyZWUtbGFiZWwnLAorICAgIH0sIFt7aWQ6ICdsZXZlbDIuMSd9XSk7CisgICAgZGF0YWJhc2VU cmVlTm9kZSA9IG5ldyBUcmVlTm9kZSgnZGF0YWJhc2UtdHJlZS1ub2RlJywgeworICAgICAgX3R5 cGU6ICdkYXRhYmFzZScsCisgICAgICBfbGFiZWw6ICdzb21lLWRhdGFiYXNlLWxhYmVsJywKKyAg ICB9LCBbe2lkOiAnZGF0YWJhc2UtdHJlZS1ub2RlJ31dKTsKKyAgICBwZ0Jyb3dzZXIudHJlZU1l bnUuYWRkQ2hpbGQoc2VydmVyVHJlZU5vZGUsIGRhdGFiYXNlVHJlZU5vZGUpOworCisgICAganF1 ZXJ5U3B5ID0gamFzbWluZS5jcmVhdGVTcHkoJ2pxdWVyeVNweScpOworICAgIGJhY2t1cE5vZGUg PSB7CisgICAgICBfX2ludGVybmFsOiB7CisgICAgICAgIGJ1dHRvbnM6IFt7fSwge30sIHsKKyAg ICAgICAgICBlbGVtZW50OiB7CisgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsCisgICAgICAg ICAgfSwKKyAgICAgICAgfV0sCisgICAgICB9LAorICAgICAgZWxlbWVudHM6IHsKKyAgICAgICAg Ym9keTogeworICAgICAgICAgIGNoaWxkTm9kZXM6IFsKKyAgICAgICAgICAgIHt9LAorICAgICAg ICAgIF0sCisgICAgICAgIH0sCisgICAgICAgIGNvbnRlbnQ6IGphc21pbmUuY3JlYXRlU3B5T2Jq KCdjb250ZW50JywgWydhcHBlbmRDaGlsZCcsICdhdHRyJ10pLAorICAgICAgfSwKKyAgICB9Owor CisgICAgYmFja3VwSlF1ZXJ5Q29udGFpbmVyU3B5ID0gamFzbWluZS5jcmVhdGVTcHlPYmooJ2Jh Y2t1cEpRdWVyeUNvbnRhaW5lcicsIFsnZ2V0JywgJ2F0dHInXSk7CisgICAgYmFja3VwSlF1ZXJ5 Q29udGFpbmVyU3B5LmdldC5hbmQucmV0dXJuVmFsdWUoYmFja3VwSlF1ZXJ5Q29udGFpbmVyU3B5 KTsKKworICAgIGdlbmVyYXRlZEJhY2t1cE1vZGVsID0ge307CisgICAgZGlhbG9nTW9kZWxLbGFz c1NweSA9IGphc21pbmUuY3JlYXRlU3B5KCdkaWFsb2dNb2RlbEtsYXNzJyk7CisgICAgZGlhbG9n TW9kZWxLbGFzc1NweS5hbmQucmV0dXJuVmFsdWUoZ2VuZXJhdGVkQmFja3VwTW9kZWwpOworCisg ICAgdmlld1NjaGVtYSA9IHt9OworICAgIGJhY2tmb3JtID0gamFzbWluZS5jcmVhdGVTcHlPYmoo J2JhY2tmb3JtJywgWydnZW5lcmF0ZVZpZXdTY2hlbWEnLCAnRGlhbG9nJ10pOworICAgIGJhY2tm b3JtLmdlbmVyYXRlVmlld1NjaGVtYS5hbmQucmV0dXJuVmFsdWUodmlld1NjaGVtYSk7CisKKyAg ICBiYWNrdXBOb2RlQ2hpbGROb2RlU3B5ID0gamFzbWluZS5jcmVhdGVTcHlPYmooJ3NvbWV0aGlu ZycsIFsnYWRkQ2xhc3MnXSk7CisgICAganF1ZXJ5U3B5LmFuZC5jYWxsRmFrZSgoc2VsZWN0b3Ip ID0+IHsKKyAgICAgIGlmIChzZWxlY3RvciA9PT0gJzxkaXYgY2xhc3M9XCdiYWNrdXBfZGlhbG9n XCc+PC9kaXY+JykgeworICAgICAgICByZXR1cm4gYmFja3VwSlF1ZXJ5Q29udGFpbmVyU3B5Owor ICAgICAgfSBlbHNlIGlmIChzZWxlY3RvciA9PT0gYmFja3VwTm9kZS5lbGVtZW50cy5ib2R5LmNo aWxkTm9kZXNbMF0pIHsKKyAgICAgICAgcmV0dXJuIGJhY2t1cE5vZGVDaGlsZE5vZGVTcHk7Cisg ICAgICB9CisgICAgfSk7CisKKyAgfSk7CisKKyAgZGVzY3JpYmUoJyNwcmVwYXJlJywgKCkgPT4g eworICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgYWxlcnRpZnlTcHkgPSBqYXNtaW5lLmNy ZWF0ZVNweU9iaignYWxlcnRpZnknLCBbJ2FsZXJ0JywgJ2RpYWxvZyddKTsKKyAgICAgIGJhY2t1 cERpYWxvZ1dyYXBwZXIgPSBuZXcgQmFja3VwRGlhbG9nV3JhcHBlcigKKyAgICAgICAgJzxkaXYg Y2xhc3M9XCdiYWNrdXBfZGlhbG9nXCc+PC9kaXY+JywKKyAgICAgICAgJ2JhY2t1cERpYWxvZ1Rp dGxlJywKKyAgICAgICAgJ2JhY2t1cCcsCisgICAgICAgIGpxdWVyeVNweSwKKyAgICAgICAgcGdC cm93c2VyLAorICAgICAgICBhbGVydGlmeVNweSwKKyAgICAgICAgZGlhbG9nTW9kZWxLbGFzc1Nw eSwKKyAgICAgICAgYmFja2Zvcm0KKyAgICAgICk7CisgICAgICBiYWNrdXBEaWFsb2dXcmFwcGVy ID0gT2JqZWN0LmFzc2lnbihiYWNrdXBEaWFsb2dXcmFwcGVyLCBiYWNrdXBOb2RlKTsKKyAgICB9 KTsKKworICAgIGNvbnRleHQoJ25vIHRyZWUgZWxlbWVudCBpcyBzZWxlY3RlZCcsICgpID0+IHsK KyAgICAgIGl0KCdkb2VzIG5vdCBjcmVhdGUgYSBiYWNrZm9ybSBkaWFsb2cnLCAoKSA9PiB7Cisg ICAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIucHJlcGFyZSgpOworICAgICAgICBleHBlY3QoYmFj a2Zvcm0uRGlhbG9nKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpOworICAgICAgfSk7CisKKyAgICAg IGl0KCdkaXNhYmxlcyB0aGUgYnV0dG9uICJzdWJtaXQgYnV0dG9uIiB1bnRpbCBhIGZpbGVuYW1l IGlzIHNlbGVjdGVkJywgKCkgPT4geworICAgICAgICBiYWNrdXBEaWFsb2dXcmFwcGVyLnByZXBh cmUoKTsKKyAgICAgICAgZXhwZWN0KGJhY2t1cERpYWxvZ1dyYXBwZXIuX19pbnRlcm5hbC5idXR0 b25zWzJdLmVsZW1lbnQuZGlzYWJsZWQpLnRvQmUodHJ1ZSk7CisgICAgICB9KTsKKyAgICB9KTsK KworICAgIGNvbnRleHQoJ3NlbGVjdGVkIHRyZWUgbm9kZSBoYXMgbm8gZGF0YScsICgpID0+IHsK KyAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICBwZ0Jyb3dzZXIudHJlZU1lbnUuc2Vs ZWN0Tm9kZShub0RhdGFOb2RlLmRvbU5vZGUpOworICAgICAgfSk7CisKKyAgICAgIGl0KCdkb2Vz IG5vdCBjcmVhdGUgYSBiYWNrZm9ybSBkaWFsb2cnLCAoKSA9PiB7CisgICAgICAgIGJhY2t1cERp YWxvZ1dyYXBwZXIucHJlcGFyZSgpOworICAgICAgICBleHBlY3QoYmFja2Zvcm0uRGlhbG9nKS5u b3QudG9IYXZlQmVlbkNhbGxlZCgpOworICAgICAgfSk7CisKKyAgICAgIGl0KCdkaXNhYmxlcyB0 aGUgYnV0dG9uICJzdWJtaXQgYnV0dG9uIiB1bnRpbCBhIGZpbGVuYW1lIGlzIHNlbGVjdGVkJywg KCkgPT4geworICAgICAgICBiYWNrdXBEaWFsb2dXcmFwcGVyLnByZXBhcmUoKTsKKyAgICAgICAg ZXhwZWN0KGJhY2t1cERpYWxvZ1dyYXBwZXIuX19pbnRlcm5hbC5idXR0b25zWzJdLmVsZW1lbnQu ZGlzYWJsZWQpLnRvQmUodHJ1ZSk7CisgICAgICB9KTsKKyAgICB9KTsKKworICAgIGNvbnRleHQo J3RyZWUgZWxlbWVudCBpcyBzZWxlY3RlZCcsICgpID0+IHsKKyAgICAgIGxldCB0cmVlSGllcmFy Y2h5SW5mb3JtYXRpb247CisgICAgICBsZXQgZGlhbG9nU3B5OworCisgICAgICBiZWZvcmVFYWNo KCgpID0+IHsKKyAgICAgICAgdHJlZUhpZXJhcmNoeUluZm9ybWF0aW9uID0geworICAgICAgICAg IHNlcnZlcjogeworICAgICAgICAgICAgX3R5cGU6ICdzZXJ2ZXInLAorICAgICAgICAgICAgX2lk OiAxMCwKKyAgICAgICAgICAgIHByaW9yaXR5OiAwLAorICAgICAgICAgICAgbGFiZWw6ICdzb21l LXRyZWUtbGFiZWwnLAorICAgICAgICAgIH0sCisgICAgICAgIH07CisgICAgICAgIHBnQnJvd3Nl ci50cmVlTWVudS5zZWxlY3ROb2RlKHNlcnZlclRyZWVOb2RlLmRvbU5vZGUpOworICAgICAgICBw Z0Jyb3dzZXIuTm9kZXNbJ3NlcnZlciddLmdldFRyZWVOb2RlSGllcmFyY2h5LmFuZAorICAgICAg ICAgIC5yZXR1cm5WYWx1ZSh0cmVlSGllcmFyY2h5SW5mb3JtYXRpb24pOworICAgICAgICBkaWFs b2dTcHkgPSBqYXNtaW5lLmNyZWF0ZVNweU9iaignbmV3VmlldycsIFsncmVuZGVyJ10pOworICAg ICAgICBkaWFsb2dTcHkuJGVsID0gamFzbWluZS5jcmVhdGVTcHlPYmooJyRlbCcsIFsnZmluZCcs ICdhdHRyJ10pOworICAgICAgICBkaWFsb2dTcHkubW9kZWwgPSBqYXNtaW5lLmNyZWF0ZVNweU9i aignbW9kZWwnLCBbJ29uJ10pOworICAgICAgICBkaWFsb2dTcHkuJGVsLmZpbmQuYW5kLnJldHVy blZhbHVlKFtdKTsKKworICAgICAgICBiYWNrZm9ybS5EaWFsb2cuYW5kLnJldHVyblZhbHVlKGRp YWxvZ1NweSk7CisgICAgICB9KTsKKworICAgICAgaXQoJ2NyZWF0ZXMgYSBiYWNrZm9ybSBkaWFs b2cgYW5kIGRpc3BsYXlzIGl0JywgKCkgPT4geworICAgICAgICBiYWNrdXBEaWFsb2dXcmFwcGVy LnByZXBhcmUoKTsKKyAgICAgICAgZXhwZWN0KGJhY2tmb3JtLkRpYWxvZykudG9IYXZlQmVlbkNh bGxlZFdpdGgoeworICAgICAgICAgIGVsOiBiYWNrdXBKUXVlcnlDb250YWluZXJTcHksCisgICAg ICAgICAgbW9kZWw6IGdlbmVyYXRlZEJhY2t1cE1vZGVsLAorICAgICAgICAgIHNjaGVtYTogdmll d1NjaGVtYSwKKyAgICAgICAgfSk7CisKKyAgICAgICAgZXhwZWN0KGRpYWxvZ1NweS5yZW5kZXIp LnRvSGF2ZUJlZW5DYWxsZWQoKTsKKyAgICAgIH0pOworCisKKyAgICAgIGl0KCdhZGQgYWxlcnRp ZnkgY2xhc3NlcyB0byByZXN0b3JlIG5vZGUgY2hpbGRub2RlJywgKCkgPT4geworICAgICAgICBi YWNrdXBEaWFsb2dXcmFwcGVyLnByZXBhcmUoKTsKKyAgICAgICAgZXhwZWN0KGJhY2t1cE5vZGVD aGlsZE5vZGVTcHkuYWRkQ2xhc3MpCisgICAgICAgICAgLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdh bGVydGlmeV90b29sc19kaWFsb2dfcHJvcGVydGllcyBvYmpfcHJvcGVydGllcycpOworICAgICAg fSk7CisKKyAgICAgIGl0KCdkaXNhYmxlcyB0aGUgYnV0dG9uIHN1Ym1pdCBidXR0b24gdW50aWwg YSBmaWxlbmFtZSBpcyBzZWxlY3RlZCcsICgpID0+IHsKKyAgICAgICAgYmFja3VwRGlhbG9nV3Jh cHBlci5wcmVwYXJlKCk7CisgICAgICAgIGV4cGVjdChiYWNrdXBOb2RlLl9faW50ZXJuYWwuYnV0 dG9uc1syXS5lbGVtZW50LmRpc2FibGVkKS50b0JlKHRydWUpOworICAgICAgfSk7CisKKyAgICAg IGl0KCdnZW5lcmF0ZXMgYSBuZXcgYmFja3VwIG1vZGVsJywgKCkgPT4geworICAgICAgICBiYWNr dXBEaWFsb2dXcmFwcGVyLnByZXBhcmUoKTsKKyAgICAgICAgZXhwZWN0KGRpYWxvZ01vZGVsS2xh c3NTcHkpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAorICAgICAgICAgIHt0eXBlOiAnYmFja3VwJ30s CisgICAgICAgICAge25vZGVfaW5mbzogdHJlZUhpZXJhcmNoeUluZm9ybWF0aW9ufQorICAgICAg ICApOworICAgICAgfSk7CisKKyAgICAgIGl0KCdhZGQgdGhlIG5ldyBkaWFsb2cgdG8gdGhlIGJh Y2t1cCBub2RlIEhUTUwnLCAoKSA9PiB7CisgICAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIucHJl cGFyZSgpOworICAgICAgICBleHBlY3QoYmFja3VwTm9kZS5lbGVtZW50cy5jb250ZW50LmFwcGVu ZENoaWxkKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChiYWNrdXBKUXVlcnlDb250YWluZXJTcHkpOwor ICAgICAgfSk7CisgICAgfSk7CisgIH0pOworCisgIGRlc2NyaWJlKCdvbkJ1dHRvbkNsaWNrZWQn LCAoKSA9PiB7CisgICAgbGV0IG5ldHdvcmtNb2NrOworICAgIGJlZm9yZUVhY2goKCkgPT4gewor ICAgICAgbmV0d29ya01vY2sgPSBuZXcgTW9ja0FkYXB0ZXIoYXhpb3MpOworICAgICAgYmFja3Vw RGlhbG9nV3JhcHBlciA9IG5ldyBCYWNrdXBEaWFsb2dXcmFwcGVyKAorICAgICAgICAnPGRpdiBj bGFzcz1cJ2JhY2t1cF9kaWFsb2dcJz48L2Rpdj4nLAorICAgICAgICAnYmFja3VwRGlhbG9nVGl0 bGUnLAorICAgICAgICAnYmFja3VwJywKKyAgICAgICAganF1ZXJ5U3B5LAorICAgICAgICBwZ0Jy b3dzZXIsCisgICAgICAgIGFsZXJ0aWZ5U3B5LAorICAgICAgICBkaWFsb2dNb2RlbEtsYXNzU3B5 LAorICAgICAgICBiYWNrZm9ybQorICAgICAgKTsKKworICAgICAgYmFja3VwRGlhbG9nV3JhcHBl ciA9IE9iamVjdC5hc3NpZ24oYmFja3VwRGlhbG9nV3JhcHBlciwgYmFja3VwTm9kZSk7CisgICAg fSk7CisKKyAgICBhZnRlckVhY2goKCkgPT4geworICAgICAgbmV0d29ya01vY2sucmVzdG9yZSgp OworICAgIH0pOworCisgICAgY29udGV4dCgnZGlhbG9nIGhlbHAgYnV0dG9uIHdhcyBwcmVzc2Vk JywgKCkgPT4geworICAgICAgbGV0IG5ldHdvcmtDYWxsZWQ7CisgICAgICBiZWZvcmVFYWNoKCgp ID0+IHsKKyAgICAgICAgbmV0d29ya0NhbGxlZCA9IGZhbHNlOworICAgICAgICBuZXR3b3JrTW9j ay5vbkFueSgvLiovKS5yZXBseSgoKSA9PiB7CisgICAgICAgICAgbmV0d29ya0NhbGxlZCA9IHRy dWU7CisgICAgICAgICAgcmV0dXJuIFsyMDAsIHt9XTsKKyAgICAgICAgfSk7CisgICAgICAgIHBn QnJvd3Nlci50cmVlTWVudS5zZWxlY3ROb2RlKHNlcnZlclRyZWVOb2RlLmRvbU5vZGUpOworICAg ICAgICBwZ0Jyb3dzZXIuc2hvd0hlbHAgPSBqYXNtaW5lLmNyZWF0ZVNweSgnc2hvd0hlbHAnKTsK KworICAgICAgICBjb25zdCBldmVudCA9IHsKKyAgICAgICAgICBidXR0b246IHsKKyAgICAgICAg ICAgIGVsZW1lbnQ6IHsKKyAgICAgICAgICAgICAgbmFtZTogJ2RpYWxvZ19oZWxwJywKKyAgICAg ICAgICAgICAgZ2V0QXR0cmlidXRlOiAoYXR0cmlidXRlTmFtZSkgPT4geworICAgICAgICAgICAg ICAgIGlmIChhdHRyaWJ1dGVOYW1lID09PSAndXJsJykgeworICAgICAgICAgICAgICAgICAgcmV0 dXJuICdodHRwOi8vc29tZXVybCc7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhdHRyaWJ1 dGVOYW1lID09PSAnbGFiZWwnKSB7CisgICAgICAgICAgICAgICAgICByZXR1cm4gJ3NvbWUgbGFi ZWwnOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIH0s CisgICAgICAgICAgfSwKKyAgICAgICAgfTsKKyAgICAgICAgYmFja3VwRGlhbG9nV3JhcHBlci5j YWxsYmFjayhldmVudCk7CisgICAgICB9KTsKKworICAgICAgaXQoJ2Rpc3BsYXlzIGhlbHAgZm9y IGRpYWxvZycsICgpID0+IHsKKyAgICAgICAgZXhwZWN0KHBnQnJvd3Nlci5zaG93SGVscCkudG9I YXZlQmVlbkNhbGxlZFdpdGgoCisgICAgICAgICAgJ2RpYWxvZ19oZWxwJywKKyAgICAgICAgICAn aHR0cDovL3NvbWV1cmwnLAorICAgICAgICAgIHBnQnJvd3Nlci5Ob2Rlc1snc2VydmVyJ10sCisg ICAgICAgICAgc2VydmVyVHJlZU5vZGUsCisgICAgICAgICAgJ3NvbWUgbGFiZWwnCisgICAgICAg ICk7CisgICAgICB9KTsKKworICAgICAgaXQoJ2RvZXMgbm90IHN0YXJ0IHRoZSBiYWNrdXAnLCAo KSA9PiB7CisgICAgICAgIGV4cGVjdChuZXR3b3JrQ2FsbGVkKS50b0JlKGZhbHNlKTsKKyAgICAg IH0pOworICAgIH0pOworCisgICAgY29udGV4dCgnb2JqZWN0IGhlbHAgYnV0dG9uIHdhcyBwcmVz c2VkJywgKCkgPT4geworICAgICAgbGV0IG5ldHdvcmtDYWxsZWQ7CisgICAgICBiZWZvcmVFYWNo KCgpID0+IHsKKyAgICAgICAgbmV0d29ya0NhbGxlZCA9IGZhbHNlOworICAgICAgICBuZXR3b3Jr TW9jay5vbkFueSgvLiovKS5yZXBseSgoKSA9PiB7CisgICAgICAgICAgbmV0d29ya0NhbGxlZCA9 IHRydWU7CisgICAgICAgICAgcmV0dXJuIFsyMDAsIHt9XTsKKyAgICAgICAgfSk7CisgICAgICAg IHBnQnJvd3Nlci50cmVlTWVudS5zZWxlY3ROb2RlKHNlcnZlclRyZWVOb2RlLmRvbU5vZGUpOwor ICAgICAgICBwZ0Jyb3dzZXIuc2hvd0hlbHAgPSBqYXNtaW5lLmNyZWF0ZVNweSgnc2hvd0hlbHAn KTsKKworICAgICAgICBjb25zdCBldmVudCA9IHsKKyAgICAgICAgICBidXR0b246IHsKKyAgICAg ICAgICAgIGVsZW1lbnQ6IHsKKyAgICAgICAgICAgICAgbmFtZTogJ29iamVjdF9oZWxwJywKKyAg ICAgICAgICAgICAgZ2V0QXR0cmlidXRlOiAoYXR0cmlidXRlTmFtZSkgPT4geworICAgICAgICAg ICAgICAgIGlmIChhdHRyaWJ1dGVOYW1lID09PSAndXJsJykgeworICAgICAgICAgICAgICAgICAg cmV0dXJuICdodHRwOi8vc29tZXVybCc7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhdHRy aWJ1dGVOYW1lID09PSAnbGFiZWwnKSB7CisgICAgICAgICAgICAgICAgICByZXR1cm4gJ3NvbWUg bGFiZWwnOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg IH0sCisgICAgICAgICAgfSwKKyAgICAgICAgfTsKKyAgICAgICAgYmFja3VwRGlhbG9nV3JhcHBl ci5jYWxsYmFjayhldmVudCk7CisgICAgICB9KTsKKworICAgICAgaXQoJ2Rpc3BsYXlzIGhlbHAg Zm9yIGRpYWxvZycsICgpID0+IHsKKyAgICAgICAgZXhwZWN0KHBnQnJvd3Nlci5zaG93SGVscCku dG9IYXZlQmVlbkNhbGxlZFdpdGgoCisgICAgICAgICAgJ29iamVjdF9oZWxwJywKKyAgICAgICAg ICAnaHR0cDovL3NvbWV1cmwnLAorICAgICAgICAgIHBnQnJvd3Nlci5Ob2Rlc1snc2VydmVyJ10s CisgICAgICAgICAgc2VydmVyVHJlZU5vZGUsCisgICAgICAgICAgJ3NvbWUgbGFiZWwnCisgICAg ICAgICk7CisgICAgICB9KTsKKworICAgICAgaXQoJ2RvZXMgbm90IHN0YXJ0IHRoZSBiYWNrdXAn LCAoKSA9PiB7CisgICAgICAgIGV4cGVjdChuZXR3b3JrQ2FsbGVkKS50b0JlKGZhbHNlKTsKKyAg ICAgIH0pOworICAgIH0pOworCisgICAgY29udGV4dCgnYmFja3VwIGJ1dHRvbiB3YXMgcHJlc3Nl ZCcsICgpID0+IHsKKyAgICAgIGNvbnRleHQoJ25vIHRyZWUgbm9kZSBpcyBzZWxlY3RlZCcsICgp ID0+IHsKKyAgICAgICAgaXQoJ2RvZXMgbm90IHN0YXJ0IHRoZSBiYWNrdXAnLCAoKSA9PiB7Cisg ICAgICAgICAgbGV0IG5ldHdvcmtDYWxsZWQgPSBmYWxzZTsKKyAgICAgICAgICBuZXR3b3JrTW9j ay5vbkFueSgvLiovKS5yZXBseSgoKSA9PiB7CisgICAgICAgICAgICBuZXR3b3JrQ2FsbGVkID0g dHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBbMjAwLCB7fV07CisgICAgICAgICAgfSk7CisKKyAg ICAgICAgICBsZXQgZXZlbnQgPSB7CisgICAgICAgICAgICBidXR0b246IHsKKyAgICAgICAgICAg ICAgJ2RhdGEtYnRuLW5hbWUnOiAnYmFja3VwJywKKyAgICAgICAgICAgICAgZWxlbWVudDogewor ICAgICAgICAgICAgICAgIGdldEF0dHJpYnV0ZTogKCkgPT4geworICAgICAgICAgICAgICAgICAg cmV0dXJuICdodHRwOi8vc29tZXVybCc7CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg ICAgfSwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgfTsKKworICAgICAgICAgIGJhY2t1cERp YWxvZ1dyYXBwZXIuY2FsbGJhY2soZXZlbnQpOworICAgICAgICAgIGV4cGVjdChuZXR3b3JrQ2Fs bGVkKS50b0JlKGZhbHNlKTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKworICAgICAgY29udGV4 dCgndHJlZSBub2RlIGhhcyBubyBkYXRhJywgKCkgPT4geworICAgICAgICBpdCgnZG9lcyBub3Qg c3RhcnQgdGhlIGJhY2t1cCcsICgpID0+IHsKKyAgICAgICAgICBwZ0Jyb3dzZXIudHJlZU1lbnUu c2VsZWN0Tm9kZShub0RhdGFOb2RlLmRvbU5vZGUpOworCisgICAgICAgICAgbGV0IG5ldHdvcmtD YWxsZWQgPSBmYWxzZTsKKyAgICAgICAgICBuZXR3b3JrTW9jay5vbkFueSgvLiovKS5yZXBseSgo KSA9PiB7CisgICAgICAgICAgICBuZXR3b3JrQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHJl dHVybiBbMjAwLCB7fV07CisgICAgICAgICAgfSk7CisKKyAgICAgICAgICBsZXQgZXZlbnQgPSB7 CisgICAgICAgICAgICBidXR0b246IHsKKyAgICAgICAgICAgICAgJ2RhdGEtYnRuLW5hbWUnOiAn YmFja3VwJywKKyAgICAgICAgICAgICAgZWxlbWVudDogeworICAgICAgICAgICAgICAgIGdldEF0 dHJpYnV0ZTogKCkgPT4geworICAgICAgICAgICAgICAgICAgcmV0dXJuICdodHRwOi8vc29tZXVy bCc7CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIH0s CisgICAgICAgICAgfTsKKworICAgICAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIuY2FsbGJhY2so ZXZlbnQpOworICAgICAgICAgIGV4cGVjdChuZXR3b3JrQ2FsbGVkKS50b0JlKGZhbHNlKTsKKyAg ICAgICAgfSk7CisgICAgICB9KTsKKworICAgICAgY29udGV4dCgndHJlZSBub2RlIGhhcyBkYXRh JywgKCkgPT4geworICAgICAgICBjb250ZXh0KCd3aGVuIGRpYWxvZyB0eXBlIGlzIGdsb2JhbCcs ICgpID0+IHsKKyAgICAgICAgICBsZXQgZXZlbnQ7CisgICAgICAgICAgYmVmb3JlRWFjaCgoKSA9 PiB7CisgICAgICAgICAgICBwZ0Jyb3dzZXIudHJlZU1lbnUuc2VsZWN0Tm9kZShzZXJ2ZXJUcmVl Tm9kZS5kb21Ob2RlKTsKKworICAgICAgICAgICAgYmFja3VwRGlhbG9nV3JhcHBlci52aWV3ID0g eworICAgICAgICAgICAgICBtb2RlbDogbmV3IEZha2VNb2RlbCgpLAorICAgICAgICAgICAgfTsK KworICAgICAgICAgICAgZXZlbnQgPSB7CisgICAgICAgICAgICAgIGJ1dHRvbjogeworICAgICAg ICAgICAgICAgICdkYXRhLWJ0bi1uYW1lJzogJ2JhY2t1cCcsCisgICAgICAgICAgICAgICAgZWxl bWVudDogeworICAgICAgICAgICAgICAgICAgZ2V0QXR0cmlidXRlOiAoKSA9PiB7CisgICAgICAg ICAgICAgICAgICAgIHJldHVybiAnaHR0cDovL3NvbWV1cmwnOworICAgICAgICAgICAgICAgICAg fSwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgfTsK KyAgICAgICAgICB9KTsKKworICAgICAgICAgIGNvbnRleHQoJ3doZW4gdGhlIGJhY2t1cCBqb2Ig aXMgY3JlYXRlZCBzdWNjZXNzZnVsbHknLCAoKSA9PiB7CisgICAgICAgICAgICBsZXQgZGF0YVNl bnRUb1NlcnZlcjsKKyAgICAgICAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICAgICAg ICBwZ0Jyb3dzZXIuRXZlbnRzID0gamFzbWluZS5jcmVhdGVTcHlPYmooJ0V2ZW50cycsIFsndHJp Z2dlciddKTsKKyAgICAgICAgICAgICAgYWxlcnRpZnlTcHkuc3VjY2VzcyA9IGphc21pbmUuY3Jl YXRlU3B5KCdzdWNjZXNzJyk7CisKKyAgICAgICAgICAgICAgbmV0d29ya01vY2sub25Qb3N0KCcv YmFja3VwL2pvYi8xMCcpLnJlcGx5KChyZXF1ZXN0KSA9PiB7CisgICAgICAgICAgICAgICAgZGF0 YVNlbnRUb1NlcnZlciA9IHJlcXVlc3QuZGF0YTsKKyAgICAgICAgICAgICAgICByZXR1cm4gWzIw MCwge31dOworICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAg ICBpdCgnY3JlYXRlcyBhIHN1Y2Nlc3MgYWxlcnQgYm94JywgKGRvbmUpID0+IHsKKyAgICAgICAg ICAgICAgYmFja3VwRGlhbG9nV3JhcHBlci5jYWxsYmFjayhldmVudCk7CisgICAgICAgICAgICAg IHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgICAgIGV4cGVjdChhbGVydGlmeVNweS5z dWNjZXNzKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgKKyAgICAgICAgICAgICAgICAgICdCYWNrdXAg am9iIGNyZWF0ZWQuJywKKyAgICAgICAgICAgICAgICAgIDUKKyAgICAgICAgICAgICAgICApOwor ICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAg ICB9KTsKKworICAgICAgICAgICAgaXQoJ3RyaWdnZXIgYW4gZXZlbnQgdG8gYmFja2dyb3VuZCBw cm9jZXNzJywgKGRvbmUpID0+IHsKKyAgICAgICAgICAgICAgYmFja3VwRGlhbG9nV3JhcHBlci5j YWxsYmFjayhldmVudCk7CisKKyAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAg ICAgICAgICAgICAgZXhwZWN0KHBnQnJvd3Nlci5FdmVudHMudHJpZ2dlcikudG9IYXZlQmVlbkNh bGxlZFdpdGgoCisgICAgICAgICAgICAgICAgICAncGdhZG1pbi1iZ3Byb2Nlc3M6Y3JlYXRlZCcs CisgICAgICAgICAgICAgICAgICBiYWNrdXBEaWFsb2dXcmFwcGVyCisgICAgICAgICAgICAgICAg KTsKKyAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgIH0sIDApOworICAgICAg ICAgICAgfSk7CisKKyAgICAgICAgICAgIGl0KCdzZW5kIHRoZSBjb3JyZWN0IHBhcmFtZW50ZXJz IHRvIHRoZSBiYWNrZW5kJywgKGRvbmUpID0+IHsKKyAgICAgICAgICAgICAgYmFja3VwRGlhbG9n V3JhcHBlci5jYWxsYmFjayhldmVudCk7CisgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4g eworICAgICAgICAgICAgICAgIGV4cGVjdChKU09OLnBhcnNlKGRhdGFTZW50VG9TZXJ2ZXIpKS50 b0VxdWFsKAorICAgICAgICAgICAgICAgICAge30KKyAgICAgICAgICAgICAgICApOworICAgICAg ICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgICB9KTsK KyAgICAgICAgICB9KTsKKworICAgICAgICAgIGNvbnRleHQoJ3doZW4gY3JlYXRpbmcgYmFja3Vw IGpvYiBmYWlscycsICgpID0+IHsKKyAgICAgICAgICAgIGl0KCdjcmVhdGVzIGFuIGFsZXJ0IGJv eCcsIChkb25lKSA9PiB7CisgICAgICAgICAgICAgIGFsZXJ0aWZ5U3B5LmFsZXJ0ID0gamFzbWlu ZS5jcmVhdGVTcHkoJ2FsZXJ0Jyk7CisgICAgICAgICAgICAgIG5ldHdvcmtNb2NrLm9uUG9zdCgn L2JhY2t1cC9qb2IvMTAnKS5yZXBseSgoKSA9PiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFs0 MDAsIHsKKyAgICAgICAgICAgICAgICAgIGVycm9ybXNnOiAnc29tZS1lcnJvci1tZXNzYWdlJywK KyAgICAgICAgICAgICAgICB9XTsKKyAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAg YmFja3VwRGlhbG9nV3JhcHBlci5jYWxsYmFjayhldmVudCk7CisgICAgICAgICAgICAgIHNldFRp bWVvdXQoKCkgPT4geworICAgICAgICAgICAgICAgIGV4cGVjdChhbGVydGlmeVNweS5hbGVydCku dG9IYXZlQmVlbkNhbGxlZFdpdGgoCisgICAgICAgICAgICAgICAgICAnQmFja3VwIGpvYiBmYWls ZWQuJywKKyAgICAgICAgICAgICAgICAgICdzb21lLWVycm9yLW1lc3NhZ2UnCisgICAgICAgICAg ICAgICAgKTsKKyAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgIH0sIDApOwor CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAg Y29udGV4dCgnd2hlbiBkaWFsb2cgdHlwZSBpcyBvYmplY3QnLCAoKSA9PiB7CisgICAgICAgICAg bGV0IGV2ZW50OworICAgICAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICAgICAgYmFj a3VwRGlhbG9nV3JhcHBlciA9IG5ldyBCYWNrdXBEaWFsb2dXcmFwcGVyKAorICAgICAgICAgICAg ICAnPGRpdiBjbGFzcz1cJ2JhY2t1cF9kaWFsb2dcJz48L2Rpdj4nLAorICAgICAgICAgICAgICAn YmFja3VwRGlhbG9nVGl0bGUnLAorICAgICAgICAgICAgICAnYmFja3VwX29iamVjdHMnLAorICAg ICAgICAgICAgICBqcXVlcnlTcHksCisgICAgICAgICAgICAgIHBnQnJvd3NlciwKKyAgICAgICAg ICAgICAgYWxlcnRpZnlTcHksCisgICAgICAgICAgICAgIGRpYWxvZ01vZGVsS2xhc3NTcHksCisg ICAgICAgICAgICAgIGJhY2tmb3JtCisgICAgICAgICAgICApOworCisgICAgICAgICAgICBwZ0Jy b3dzZXIudHJlZU1lbnUuc2VsZWN0Tm9kZShkYXRhYmFzZVRyZWVOb2RlLmRvbU5vZGUpOworCisg ICAgICAgICAgICBiYWNrdXBEaWFsb2dXcmFwcGVyLnZpZXcgPSB7CisgICAgICAgICAgICAgIG1v ZGVsOiBuZXcgRmFrZU1vZGVsKCksCisgICAgICAgICAgICB9OworCisgICAgICAgICAgICBldmVu dCA9IHsKKyAgICAgICAgICAgICAgYnV0dG9uOiB7CisgICAgICAgICAgICAgICAgJ2RhdGEtYnRu LW5hbWUnOiAnYmFja3VwJywKKyAgICAgICAgICAgICAgICBlbGVtZW50OiB7CisgICAgICAgICAg ICAgICAgICBnZXRBdHRyaWJ1dGU6ICgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu ICdodHRwOi8vc29tZXVybCc7CisgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAg IH0sCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICB9OworICAgICAgICAgIH0pOworCisg ICAgICAgICAgY29udGV4dCgnd2hlbiB0aGUgYmFja3VwIGpvYiBpcyBjcmVhdGVkIHN1Y2Nlc3Nm dWxseScsICgpID0+IHsKKyAgICAgICAgICAgIGxldCBkYXRhU2VudFRvU2VydmVyOworICAgICAg ICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgICAgICAgIHBnQnJvd3Nlci5FdmVudHMg PSBqYXNtaW5lLmNyZWF0ZVNweU9iaignRXZlbnRzJywgWyd0cmlnZ2VyJ10pOworICAgICAgICAg ICAgICBhbGVydGlmeVNweS5zdWNjZXNzID0gamFzbWluZS5jcmVhdGVTcHkoJ3N1Y2Nlc3MnKTsK KworICAgICAgICAgICAgICBuZXR3b3JrTW9jay5vblBvc3QoJy9iYWNrdXAvam9iLzEwL29iamVj dCcpLnJlcGx5KChyZXF1ZXN0KSA9PiB7CisgICAgICAgICAgICAgICAgZGF0YVNlbnRUb1NlcnZl ciA9IHJlcXVlc3QuZGF0YTsKKyAgICAgICAgICAgICAgICByZXR1cm4gWzIwMCwge31dOworICAg ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBpdCgnY3JlYXRl cyBhIHN1Y2Nlc3MgYWxlcnQgYm94JywgKGRvbmUpID0+IHsKKyAgICAgICAgICAgICAgYmFja3Vw RGlhbG9nV3JhcHBlci5jYWxsYmFjayhldmVudCk7CisgICAgICAgICAgICAgIHNldFRpbWVvdXQo KCkgPT4geworICAgICAgICAgICAgICAgIGV4cGVjdChhbGVydGlmeVNweS5zdWNjZXNzKS50b0hh dmVCZWVuQ2FsbGVkV2l0aCgKKyAgICAgICAgICAgICAgICAgICdCYWNrdXAgam9iIGNyZWF0ZWQu JywKKyAgICAgICAgICAgICAgICAgIDUKKyAgICAgICAgICAgICAgICApOworICAgICAgICAgICAg ICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgICB9KTsKKworICAg ICAgICAgICAgaXQoJ3RyaWdnZXIgYW4gZXZlbnQgdG8gYmFja2dyb3VuZCBwcm9jZXNzJywgKGRv bmUpID0+IHsKKyAgICAgICAgICAgICAgYmFja3VwRGlhbG9nV3JhcHBlci5jYWxsYmFjayhldmVu dCk7CisKKyAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICAgICAg ZXhwZWN0KHBnQnJvd3Nlci5FdmVudHMudHJpZ2dlcikudG9IYXZlQmVlbkNhbGxlZFdpdGgoCisg ICAgICAgICAgICAgICAgICAncGdhZG1pbi1iZ3Byb2Nlc3M6Y3JlYXRlZCcsCisgICAgICAgICAg ICAgICAgICBiYWNrdXBEaWFsb2dXcmFwcGVyCisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAg ICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgIH0sIDApOworICAgICAgICAgICAgfSk7CisK KyAgICAgICAgICAgIGl0KCdzZW5kIHRoZSBjb3JyZWN0IHBhcmFtZXRlcnMgdG8gdGhlIGJhY2tl bmQnLCAoZG9uZSkgPT4geworICAgICAgICAgICAgICBiYWNrdXBEaWFsb2dXcmFwcGVyLmNhbGxi YWNrKGV2ZW50KTsKKyAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAg ICAgICAgZXhwZWN0KEpTT04ucGFyc2UoZGF0YVNlbnRUb1NlcnZlcikpLnRvRXF1YWwoCisgICAg ICAgICAgICAgICAgICB7ZGF0YWJhc2U6ICdzb21lLWRhdGFiYXNlLWxhYmVsJ30KKyAgICAgICAg ICAgICAgICApOworICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgfSwgMCk7 CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICB9KTsKKworICAgICAgICAgIGNvbnRleHQoJ3do ZW4gY3JlYXRpbmcgYmFja3VwIGpvYiBmYWlscycsICgpID0+IHsKKyAgICAgICAgICAgIGl0KCdj cmVhdGVzIGFuIGFsZXJ0IGJveCcsIChkb25lKSA9PiB7CisgICAgICAgICAgICAgIGFsZXJ0aWZ5 U3B5LmFsZXJ0ID0gamFzbWluZS5jcmVhdGVTcHkoJ2FsZXJ0Jyk7CisgICAgICAgICAgICAgIG5l dHdvcmtNb2NrLm9uUG9zdCgnL2JhY2t1cC9qb2IvMTAvb2JqZWN0JykucmVwbHkoKCkgPT4gewor ICAgICAgICAgICAgICAgIHJldHVybiBbNDAwLCB7CisgICAgICAgICAgICAgICAgICBlcnJvcm1z ZzogJ3NvbWUtZXJyb3ItbWVzc2FnZScsCisgICAgICAgICAgICAgICAgfV07CisgICAgICAgICAg ICAgIH0pOworCisgICAgICAgICAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIuY2FsbGJhY2soZXZl bnQpOworICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAgICAgICBl eHBlY3QoYWxlcnRpZnlTcHkuYWxlcnQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAorICAgICAgICAg ICAgICAgICAgJ0JhY2t1cCBqb2IgZmFpbGVkLicsCisgICAgICAgICAgICAgICAgICAnc29tZS1l cnJvci1tZXNzYWdlJworICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgZG9uZSgp OworICAgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgIH0pOwor ICAgICAgICB9KTsKKyAgICAgIH0pOworICAgIH0pOworICB9KTsKKworICBkZXNjcmliZSgnI3Nl dEV4dHJhUGFyYW1ldGVycycsICgpID0+IHsKKyAgICBsZXQgc2VsZWN0ZWRUcmVlTm9kZTsKKyAg ICBsZXQgdHJlZUluZm87CisgICAgbGV0IG1vZGVsOworCisgICAgY29udGV4dCgnd2hlbiBkaWFs b2cgdHlwZSBpcyBnbG9iYWwnLCAoKSA9PiB7CisgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAg ICAgICAgYmFja3VwRGlhbG9nV3JhcHBlciA9IG5ldyBCYWNrdXBEaWFsb2dXcmFwcGVyKAorICAg ICAgICAgICc8ZGl2IGNsYXNzPVwnYmFja3VwX2RpYWxvZ1wnPjwvZGl2PicsCisgICAgICAgICAg J2JhY2t1cERpYWxvZ1RpdGxlJywKKyAgICAgICAgICAnYmFja3VwJywKKyAgICAgICAgICBqcXVl cnlTcHksCisgICAgICAgICAgcGdCcm93c2VyLAorICAgICAgICAgIGFsZXJ0aWZ5U3B5LAorICAg ICAgICAgIGRpYWxvZ01vZGVsS2xhc3NTcHksCisgICAgICAgICAgYmFja2Zvcm0KKyAgICAgICAg KTsKKworICAgICAgICB0cmVlSW5mbyA9IHt9OworICAgICAgICBtb2RlbCA9IG5ldyBGYWtlTW9k ZWwoKTsKKyAgICAgICAgYmFja3VwRGlhbG9nV3JhcHBlci52aWV3ID0geworICAgICAgICAgIG1v ZGVsOiBtb2RlbCwKKyAgICAgICAgfTsKKyAgICAgIH0pOworCisKKyAgICAgIGl0KCdzZXRzIG5v dGhpbmcgb24gdGhlIHZpZXcgbW9kZWwnLCAoKSA9PiB7CisgICAgICAgIGJhY2t1cERpYWxvZ1dy YXBwZXIuc2V0RXh0cmFQYXJhbWV0ZXJzKHNlbGVjdGVkVHJlZU5vZGUsIHRyZWVJbmZvKTsKKyAg ICAgICAgZXhwZWN0KG1vZGVsLnRvSlNPTigpKS50b0VxdWFsKHt9KTsKKyAgICAgIH0pOworICAg IH0pOworCisgICAgY29udGV4dCgnd2hlbiBkaWFsb2cgdHlwZSBpcyBvYmplY3QnLCAoKSA9PiB7 CisgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgYmFja3VwRGlhbG9nV3JhcHBlciA9 IG5ldyBCYWNrdXBEaWFsb2dXcmFwcGVyKAorICAgICAgICAgICc8ZGl2IGNsYXNzPVwnYmFja3Vw X2RpYWxvZ1wnPjwvZGl2PicsCisgICAgICAgICAgJ2JhY2t1cERpYWxvZ1RpdGxlJywKKyAgICAg ICAgICAnYmFja3VwX29iamVjdHMnLAorICAgICAgICAgIGpxdWVyeVNweSwKKyAgICAgICAgICBw Z0Jyb3dzZXIsCisgICAgICAgICAgYWxlcnRpZnlTcHksCisgICAgICAgICAgZGlhbG9nTW9kZWxL bGFzc1NweSwKKyAgICAgICAgICBiYWNrZm9ybQorICAgICAgICApOworCisgICAgICAgIHRyZWVJ bmZvID0geworICAgICAgICAgIGRhdGFiYXNlOiB7CisgICAgICAgICAgICBfbGFiZWw6ICdzb21l LWRhdGFiYXNlLWxhYmVsJywKKyAgICAgICAgICB9LAorICAgICAgICAgIHNjaGVtYTogeworICAg ICAgICAgICAgX2xhYmVsOiAnc29tZS10cmVlaW5mby1sYWJlbCcsCisgICAgICAgICAgfSwKKyAg ICAgICAgfTsKKworICAgICAgICBtb2RlbCA9IG5ldyBGYWtlTW9kZWwoKTsKKyAgICAgICAgc2Vs ZWN0ZWRUcmVlTm9kZSA9IG5ldyBUcmVlTm9kZSgnc29tZS1zZWxlY3RlZC1ub2RlJywKKyAgICAg ICAgICB7X3R5cGU6ICdzb21lLXR5cGUnLCBfbGFiZWw6ICdzb21lLXNlbGVjdGVkLWxhYmVsJ30s CisgICAgICAgICAgW10pOworICAgICAgICBiYWNrdXBEaWFsb2dXcmFwcGVyLnZpZXcgPSB7Cisg ICAgICAgICAgbW9kZWw6IG1vZGVsLAorICAgICAgICB9OworICAgICAgfSk7CisKKyAgICAgIGl0 KCdzZXRzIHRoZSBkYXRhYmFzZSBsYWJlbCBvbiB0aGUgbW9kZWwnLCAoKSA9PiB7CisgICAgICAg IGJhY2t1cERpYWxvZ1dyYXBwZXIuc2V0RXh0cmFQYXJhbWV0ZXJzKHNlbGVjdGVkVHJlZU5vZGUs IHRyZWVJbmZvKTsKKyAgICAgICAgZXhwZWN0KG1vZGVsLnRvSlNPTigpKS50b0VxdWFsKHsKKyAg ICAgICAgICAnZGF0YWJhc2UnOiAnc29tZS1kYXRhYmFzZS1sYWJlbCcsCisgICAgICAgIH0pOwor ICAgICAgfSk7CisKKyAgICAgIGNvbnRleHQoJ3doZW4gdGhlIHNlbGVjdGVkIGlzIGEgc2NoZW1h IHR5cGUnLCAoKSA9PiB7CisgICAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICAgIHNl bGVjdGVkVHJlZU5vZGUgPSBuZXcgVHJlZU5vZGUoJ3NvbWUtc2VsZWN0ZWQtbm9kZScsCisgICAg ICAgICAgICB7X3R5cGU6ICdzY2hlbWEnLCBfbGFiZWw6ICdzb21lLXNjaGVtYS1sYWJlbCd9LAor ICAgICAgICAgICAgW10pOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2V0cyB0aGUgc2No ZW1hIGxhYmVsIG9uIHRoZSBtb2RlbCcsICgpID0+IHsKKyAgICAgICAgICBiYWNrdXBEaWFsb2dX cmFwcGVyLnNldEV4dHJhUGFyYW1ldGVycyhzZWxlY3RlZFRyZWVOb2RlLCB0cmVlSW5mbyk7Cisg ICAgICAgICAgZXhwZWN0KG1vZGVsLnRvSlNPTigpKS50b0VxdWFsKHsKKyAgICAgICAgICAgICdk YXRhYmFzZSc6ICdzb21lLWRhdGFiYXNlLWxhYmVsJywKKyAgICAgICAgICAgICdzY2hlbWFzJzog Wydzb21lLXNjaGVtYS1sYWJlbCddLAorICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICAg IH0pOworCisgICAgICBjb250ZXh0KCd3aGVuIHRoZSBzZWxlY3RlZCBpcyBhIHRhYmxlIHR5cGUn LCAoKSA9PiB7CisgICAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICAgIHNlbGVjdGVk VHJlZU5vZGUgPSBuZXcgVHJlZU5vZGUoJ3NvbWUtc2VsZWN0ZWQtbm9kZScsCisgICAgICAgICAg ICB7X3R5cGU6ICd0YWJsZScsIF9sYWJlbDogJ3NvbWUtdGFibGUtbGFiZWwnfSwKKyAgICAgICAg ICAgIFtdKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3NldHMgdGhlIHNjaGVtYSBsYWJl bCBvbiB0aGUgbW9kZWwnLCAoKSA9PiB7CisgICAgICAgICAgYmFja3VwRGlhbG9nV3JhcHBlci5z ZXRFeHRyYVBhcmFtZXRlcnMoc2VsZWN0ZWRUcmVlTm9kZSwgdHJlZUluZm8pOworICAgICAgICAg IGV4cGVjdChtb2RlbC50b0pTT04oKSkudG9FcXVhbCh7CisgICAgICAgICAgICAnZGF0YWJhc2Un OiAnc29tZS1kYXRhYmFzZS1sYWJlbCcsCisgICAgICAgICAgICAndGFibGVzJzogW1snc29tZS10 cmVlaW5mby1sYWJlbCcsICdzb21lLXRhYmxlLWxhYmVsJ11dLAorICAgICAgICAgIH0pOworICAg ICAgICB9KTsKKyAgICAgIH0pOworCisgICAgICBjb250ZXh0KCd3aGVuIHRoZSBtb2RlbCBoYXMg bm8gcmF0aW8gdmFsdWUnLCAoKSA9PiB7CisgICAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAg ICAgICAgIG1vZGVsLnNldCgncmF0aW8nLCAnJyk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0 KCdzZXRzIGNsZWFycyB0aGUgcmF0aW8gdmFsdWUnLCAoKSA9PiB7CisgICAgICAgICAgYmFja3Vw RGlhbG9nV3JhcHBlci5zZXRFeHRyYVBhcmFtZXRlcnMoc2VsZWN0ZWRUcmVlTm9kZSwgdHJlZUlu Zm8pOworICAgICAgICAgIGV4cGVjdChtb2RlbC5nZXQoJ3JhdGlvJykpLnRvQmVVbmRlZmluZWQo KTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKworICAgICAgY29udGV4dCgnd2hlbiB0aGUgbW9k ZWwgaGFzIGEgdmFsaWQgcmF0aW8gdmFsdWUnLCAoKSA9PiB7CisgICAgICAgIGJlZm9yZUVhY2go KCkgPT4geworICAgICAgICAgIG1vZGVsLnNldCgncmF0aW8nLCAnMC4yNScpOworICAgICAgICB9 KTsKKworICAgICAgICBpdCgnc2V0cyBjbGVhcnMgdGhlIHJhdGlvIHZhbHVlJywgKCkgPT4gewor ICAgICAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIuc2V0RXh0cmFQYXJhbWV0ZXJzKHNlbGVjdGVk VHJlZU5vZGUsIHRyZWVJbmZvKTsKKyAgICAgICAgICBleHBlY3QobW9kZWwuZ2V0KCdyYXRpbycp KS50b0VxdWFsKCcwLjI1Jyk7CisgICAgICAgIH0pOworICAgICAgfSk7CisgICAgfSk7CisgIH0p OworfSk7CmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2JhY2t1cC9nbG9i YWxfc2VydmVyX2JhY2t1cF9kaWFsb2dfc3BlYy5qcyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3Jp cHQvYmFja3VwL2dsb2JhbF9zZXJ2ZXJfYmFja3VwX2RpYWxvZ19zcGVjLmpzCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi44NmRmNjcyZQotLS0gL2Rldi9udWxsCisrKyBiL3dl Yi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvYmFja3VwL2dsb2JhbF9zZXJ2ZXJfYmFja3VwX2RpYWxv Z19zcGVjLmpzCkBAIC0wLDAgKzEsMTY4IEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9z dGdyZVNRTCBUb29scworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0Fk bWluIERldmVsb3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIg dGhlIFBvc3RncmVTUUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCitpbXBvcnQge0JhY2t1cERpYWxvZ30g ZnJvbSAnLi4vLi4vLi4vcGdhZG1pbi90b29scy9iYWNrdXAvc3RhdGljL2pzL2JhY2t1cF9kaWFs b2cnOworaW1wb3J0IHtUcmVlRmFrZX0gZnJvbSAnLi4vdHJlZS90cmVlX2Zha2UnOworCitjb25z dCBjb250ZXh0ID0gZGVzY3JpYmU7CisKK2Rlc2NyaWJlKCdHbG9iYWxTZXJ2ZXJCYWNrdXBEaWFs b2cnLCAoKSA9PiB7CisgIGxldCBiYWNrdXBEaWFsb2c7CisgIGxldCBwZ0Jyb3dzZXI7CisgIGxl dCBqcXVlcnlTcHk7CisgIGxldCBhbGVydGlmeVNweTsKKyAgbGV0IGJhY2t1cE1vZGVsU3B5Owor CisKKyAgbGV0IHJvb3ROb2RlOworICBsZXQgc2VydmVyVHJlZU5vZGU7CisgIGxldCBwcGFzU2Vy dmVyVHJlZU5vZGU7CisKKyAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgcGdCcm93c2VyID0gewor ICAgICAgdHJlZU1lbnU6IG5ldyBUcmVlRmFrZSgpLAorICAgICAgTm9kZXM6IHsKKyAgICAgICAg c2VydmVyOiBqYXNtaW5lLmNyZWF0ZVNweU9iaignTm9kZVtzZXJ2ZXJdJywgWydnZXRUcmVlTm9k ZUhpZXJhcmNoeSddKSwKKyAgICAgIH0sCisgICAgfTsKKyAgICBwZ0Jyb3dzZXIuTm9kZXMuc2Vy dmVyLmhhc0lkID0gdHJ1ZTsKKyAgICBqcXVlcnlTcHkgPSBqYXNtaW5lLmNyZWF0ZVNweSgnanF1 ZXJ5U3B5Jyk7CisgICAgYmFja3VwTW9kZWxTcHkgPSBqYXNtaW5lLmNyZWF0ZVNweSgnYmFja3Vw TW9kZWxTcHknKTsKKworICAgIHJvb3ROb2RlID0gcGdCcm93c2VyLnRyZWVNZW51LmFkZE5ld05v ZGUoJ2xldmVsMScsIHt9LCB1bmRlZmluZWQsIFtdKTsKKyAgICBzZXJ2ZXJUcmVlTm9kZSA9IHBn QnJvd3Nlci50cmVlTWVudS5hZGROZXdOb2RlKCdsZXZlbDEuMScsIHsKKyAgICAgIF90eXBlOiAn c2VydmVyJywKKyAgICAgIF9pZDogMTAsCisgICAgfSwgdW5kZWZpbmVkLCBbJ2xldmVsMSddKTsK KyAgICBwcGFzU2VydmVyVHJlZU5vZGUgPSBwZ0Jyb3dzZXIudHJlZU1lbnUuYWRkTmV3Tm9kZSgn bGV2ZWwxLjInLCB7CisgICAgICBfdHlwZTogJ3NlcnZlcicsCisgICAgICBzZXJ2ZXJfdHlwZTog J3BwYXMnLAorICAgIH0sIHVuZGVmaW5lZCwgWydsZXZlbDEnXSk7CisgICAgcGdCcm93c2VyLnRy ZWVNZW51LmFkZE5ld05vZGUoJ2xldmVsMycsIHt9LCB1bmRlZmluZWQsIFsnbGV2ZWwxJywgJ2xl dmVsMS4yJ10pOworICAgIHBnQnJvd3Nlci50cmVlTWVudS5hZGROZXdOb2RlKCdsZXZlbDMuMScs IHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBbJ2xldmVsMScsICdsZXZlbDEuMicsICdsZXZlbDMnXSk7 CisgIH0pOworCisgIGRlc2NyaWJlKCcjZHJhdycsICgpID0+IHsKKyAgICBiZWZvcmVFYWNoKCgp ID0+IHsKKyAgICAgIGFsZXJ0aWZ5U3B5ID0gamFzbWluZS5jcmVhdGVTcHlPYmooJ2FsZXJ0aWZ5 JywgWydhbGVydCcsICdkaWFsb2cnXSk7CisgICAgICBhbGVydGlmeVNweVsnQmFja3VwRGlhbG9n X2dsb2JhbHMnXSA9IGphc21pbmUuY3JlYXRlU3B5KCdCYWNrdXBEaWFsb2dfZ2xvYmFscycpOwor ICAgICAgYWxlcnRpZnlTcHlbJ0JhY2t1cERpYWxvZ19zZXJ2ZXInXSA9IGphc21pbmUuY3JlYXRl U3B5KCdCYWNrdXBEaWFsb2dfc2VydmVyJyk7CisgICAgICBiYWNrdXBEaWFsb2cgPSBuZXcgQmFj a3VwRGlhbG9nKAorICAgICAgICBwZ0Jyb3dzZXIsCisgICAgICAgIGpxdWVyeVNweSwKKyAgICAg ICAgYWxlcnRpZnlTcHksCisgICAgICAgIGJhY2t1cE1vZGVsU3B5CisgICAgICApOworCisgICAg ICBwZ0Jyb3dzZXIuZ2V0X3ByZWZlcmVuY2UgPSBqYXNtaW5lLmNyZWF0ZVNweSgnZ2V0X3ByZWZl cmVuY2VzJyk7CisgICAgfSk7CisKKyAgICBjb250ZXh0KCd0aGVyZSBhcmUgbm8gYW5jZXN0b3Jz IG9mIHRoZSB0eXBlIHNlcnZlcicsICgpID0+IHsKKyAgICAgIGl0KCdkb2VzIG5vdCBjcmVhdGUg YSBkaWFsb2cnLCAoKSA9PiB7CisgICAgICAgIHBnQnJvd3Nlci50cmVlTWVudS5zZWxlY3ROb2Rl KFt7aWQ6ICdsZXZlbDEnfV0pOworICAgICAgICBiYWNrdXBEaWFsb2cuZHJhdyhudWxsLCBudWxs LCBudWxsKTsKKyAgICAgICAgZXhwZWN0KGFsZXJ0aWZ5U3B5WydCYWNrdXBEaWFsb2dfZ2xvYmFs cyddKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpOworICAgICAgICBleHBlY3QoYWxlcnRpZnlTcHlb J0JhY2t1cERpYWxvZ19zZXJ2ZXInXSkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTsKKyAgICAgIH0p OworCisgICAgICBpdCgnZGlzcGxheSBhbiBhbGVydCB3aXRoIGEgQmFja3VwIEVycm9yJywgKCkg PT4geworICAgICAgICBiYWNrdXBEaWFsb2cuZHJhdyhudWxsLCBbcm9vdE5vZGVdLCBudWxsKTsK KyAgICAgICAgZXhwZWN0KGFsZXJ0aWZ5U3B5LmFsZXJ0KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgK KyAgICAgICAgICAnQmFja3VwIEVycm9yJywKKyAgICAgICAgICAnUGxlYXNlIHNlbGVjdCBzZXJ2 ZXIgb3IgY2hpbGQgbm9kZSBmcm9tIHRoZSBicm93c2VyIHRyZWUuJworICAgICAgICApOworICAg ICAgfSk7CisgICAgfSk7CisKKyAgICBjb250ZXh0KCd0aGVyZSBpcyBhbiBhbmNlc3RvciBvZiB0 aGUgdHlwZSBzZXJ2ZXInLCAoKSA9PiB7CisgICAgICBjb250ZXh0KCdubyBwcmVmZXJlbmNlIGNh biBiZSBmb3VuZCcsICgpID0+IHsKKyAgICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAg ICAgcGdCcm93c2VyLmdldF9wcmVmZXJlbmNlLmFuZC5yZXR1cm5WYWx1ZSh1bmRlZmluZWQpOwor ICAgICAgICB9KTsKKworICAgICAgICBjb250ZXh0KCdzZXJ2ZXIgaXMgYSBwcGFzIHNlcnZlcics ICgpID0+IHsKKyAgICAgICAgICBpdCgnZGlzcGxheSBhbiBhbGVydCB3aXRoICJCYWNrdXAgRXJy b3IiJywgKCkgPT4geworICAgICAgICAgICAgYmFja3VwRGlhbG9nLmRyYXcobnVsbCwgW3NlcnZl clRyZWVOb2RlXSwgbnVsbCk7CisgICAgICAgICAgICBleHBlY3QoYWxlcnRpZnlTcHkuYWxlcnQp LnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAorICAgICAgICAgICAgICAnQmFja3VwIEVycm9yJywKKyAg ICAgICAgICAgICAgJ0ZhaWxlZCB0byBsb2FkIHByZWZlcmVuY2UgcGdfYmluX2RpciBvZiBtb2R1 bGUgcGF0aHMnCisgICAgICAgICAgICApOworICAgICAgICAgIH0pOworICAgICAgICB9KTsKKwor ICAgICAgICBjb250ZXh0KCdzZXJ2ZXIgaXMgbm90IGEgcHBhcyBzZXJ2ZXInLCAoKSA9PiB7Cisg ICAgICAgICAgaXQoJ2Rpc3BsYXkgYW4gYWxlcnQgd2l0aCAiQmFja3VwIEVycm9yIicsICgpID0+ IHsKKyAgICAgICAgICAgIGJhY2t1cERpYWxvZy5kcmF3KG51bGwsIFtwcGFzU2VydmVyVHJlZU5v ZGVdLCBudWxsKTsKKyAgICAgICAgICAgIGV4cGVjdChhbGVydGlmeVNweS5hbGVydCkudG9IYXZl QmVlbkNhbGxlZFdpdGgoCisgICAgICAgICAgICAgICdCYWNrdXAgRXJyb3InLAorICAgICAgICAg ICAgICAnRmFpbGVkIHRvIGxvYWQgcHJlZmVyZW5jZSBwcGFzX2Jpbl9kaXIgb2YgbW9kdWxlIHBh dGhzJworICAgICAgICAgICAgKTsKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgICB9 KTsKKworICAgICAgY29udGV4dCgncHJlZmVyZW5jZSBjYW4gYmUgZm91bmQnLCAoKSA9PiB7Cisg ICAgICAgIGNvbnRleHQoJ2JpbmFyeSBmb2xkZXIgaXMgbm90IGNvbmZpZ3VyZWQnLCAoKSA9PiB7 CisgICAgICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgICAgICBwZ0Jyb3dzZXIuZ2V0 X3ByZWZlcmVuY2UuYW5kLnJldHVyblZhbHVlKHt9KTsKKyAgICAgICAgICB9KTsKKworICAgICAg ICAgIGNvbnRleHQoJ3NlcnZlciBpcyBhIHBwYXMgc2VydmVyJywgKCkgPT4geworICAgICAgICAg ICAgaXQoJ2Rpc3BsYXkgYW4gYWxlcnQgd2l0aCAiQ29uZmlndXJhdGlvbiByZXF1aXJlZCInLCAo KSA9PiB7CisgICAgICAgICAgICAgIGJhY2t1cERpYWxvZy5kcmF3KG51bGwsIFtzZXJ2ZXJUcmVl Tm9kZV0sIG51bGwpOworICAgICAgICAgICAgICBleHBlY3QoYWxlcnRpZnlTcHkuYWxlcnQpLnRv SGF2ZUJlZW5DYWxsZWRXaXRoKAorICAgICAgICAgICAgICAgICdDb25maWd1cmF0aW9uIHJlcXVp cmVkJywKKyAgICAgICAgICAgICAgICAnUGxlYXNlIGNvbmZpZ3VyZSB0aGUgUG9zdGdyZVNRTCBC aW5hcnkgUGF0aCBpbiB0aGUgUHJlZmVyZW5jZXMgZGlhbG9nLicKKyAgICAgICAgICAgICAgKTsK KyAgICAgICAgICAgIH0pOworICAgICAgICAgIH0pOworCisgICAgICAgICAgY29udGV4dCgnc2Vy dmVyIGlzIG5vdCBhIHBwYXMgc2VydmVyJywgKCkgPT4geworICAgICAgICAgICAgaXQoJ2Rpc3Bs YXkgYW4gYWxlcnQgd2l0aCAiQ29uZmlndXJhdGlvbiByZXF1aXJlZCInLCAoKSA9PiB7CisgICAg ICAgICAgICAgIGJhY2t1cERpYWxvZy5kcmF3KG51bGwsIFtwcGFzU2VydmVyVHJlZU5vZGVdLCBu dWxsKTsKKyAgICAgICAgICAgICAgZXhwZWN0KGFsZXJ0aWZ5U3B5LmFsZXJ0KS50b0hhdmVCZWVu Q2FsbGVkV2l0aCgKKyAgICAgICAgICAgICAgICAnQ29uZmlndXJhdGlvbiByZXF1aXJlZCcsCisg ICAgICAgICAgICAgICAgJ1BsZWFzZSBjb25maWd1cmUgdGhlIEVEQiBBZHZhbmNlZCBTZXJ2ZXIg QmluYXJ5IFBhdGggaW4gdGhlIFByZWZlcmVuY2VzIGRpYWxvZy4nCisgICAgICAgICAgICAgICk7 CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAg Y29udGV4dCgnYmluYXJ5IGZvbGRlciBpcyBjb25maWd1cmVkJywgKCkgPT4geworICAgICAgICAg IGxldCBnbG9iYWxSZXNpemVUb1NweTsKKyAgICAgICAgICBsZXQgc2VydmVyUmVzaXplVG9TcHk7 CisgICAgICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgICAgICBnbG9iYWxSZXNpemVU b1NweSA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCdnbG9iYWxzJywgWydyZXNpemVUbyddKTsKKyAg ICAgICAgICAgIGFsZXJ0aWZ5U3B5WydCYWNrdXBEaWFsb2dfZ2xvYmFscyddLmFuZAorICAgICAg ICAgICAgICAucmV0dXJuVmFsdWUoZ2xvYmFsUmVzaXplVG9TcHkpOworICAgICAgICAgICAgc2Vy dmVyUmVzaXplVG9TcHkgPSBqYXNtaW5lLmNyZWF0ZVNweU9iaignc2VydmVyJywgWydyZXNpemVU byddKTsKKyAgICAgICAgICAgIGFsZXJ0aWZ5U3B5WydCYWNrdXBEaWFsb2dfc2VydmVyJ10uYW5k CisgICAgICAgICAgICAgIC5yZXR1cm5WYWx1ZShzZXJ2ZXJSZXNpemVUb1NweSk7CisgICAgICAg ICAgICBwZ0Jyb3dzZXIuZ2V0X3ByZWZlcmVuY2UuYW5kLnJldHVyblZhbHVlKHt2YWx1ZTogJy9z b21lL3BhdGgnfSk7CisgICAgICAgICAgfSk7CisKKyAgICAgICAgICBjb250ZXh0KCdkaWFsb2cg Zm9yIGdsb2JhbCBiYWNrdXAnLCAoKSA9PiB7CisgICAgICAgICAgICBpdCgnZGlzcGxheXMgdGhl IGRpYWxvZycsICgpID0+IHsKKyAgICAgICAgICAgICAgYmFja3VwRGlhbG9nLmRyYXcobnVsbCwg W3NlcnZlclRyZWVOb2RlXSwge2dsb2JhbHM6IHRydWV9KTsKKyAgICAgICAgICAgICAgZXhwZWN0 KGFsZXJ0aWZ5U3B5WydCYWNrdXBEaWFsb2dfZ2xvYmFscyddKS50b0hhdmVCZWVuQ2FsbGVkV2l0 aCh0cnVlKTsKKyAgICAgICAgICAgICAgZXhwZWN0KGdsb2JhbFJlc2l6ZVRvU3B5LnJlc2l6ZVRv KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgnNjAlJywgJzUwJScpOworICAgICAgICAgICAgfSk7Cisg ICAgICAgICAgfSk7CisKKyAgICAgICAgICBjb250ZXh0KCdkaWFsb2cgZm9yIHNlcnZlciBiYWNr dXAnLCAoKSA9PiB7CisgICAgICAgICAgICBpdCgnZGlzcGxheXMgdGhlIGRpYWxvZycsICgpID0+ IHsKKyAgICAgICAgICAgICAgYmFja3VwRGlhbG9nLmRyYXcobnVsbCwgW3NlcnZlclRyZWVOb2Rl XSwge3NlcnZlcjogdHJ1ZX0pOworICAgICAgICAgICAgICBleHBlY3QoYWxlcnRpZnlTcHlbJ0Jh Y2t1cERpYWxvZ19zZXJ2ZXInXSkudG9IYXZlQmVlbkNhbGxlZFdpdGgodHJ1ZSk7CisgICAgICAg ICAgICAgIGV4cGVjdChzZXJ2ZXJSZXNpemVUb1NweS5yZXNpemVUbykudG9IYXZlQmVlbkNhbGxl ZFdpdGgoJzYwJScsICc1MCUnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgIH0pOworICAg ICAgICB9KTsKKyAgICAgIH0pOworICAgIH0pOworICB9KTsKK30pOwpkaWZmIC0tZ2l0IGEvd2Vi L3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9iYWNrdXAvbWVudV91dGlsc19zcGVjLmpzIGIvd2ViL3Jl Z3Jlc3Npb24vamF2YXNjcmlwdC9iYWNrdXAvbWVudV91dGlsc19zcGVjLmpzCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi45NDM1ZDY5OQotLS0gL2Rldi9udWxsCisrKyBiL3dl Yi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvYmFja3VwL21lbnVfdXRpbHNfc3BlYy5qcwpAQCAtMCww ICsxLDU1IEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworLy8K Ky8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRl YW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGlj ZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vCisKKworaW1wb3J0IHttZW51RW5hYmxlZFNlcnZlcn0gZnJvbSAnLi4v Li4vLi4vcGdhZG1pbi90b29scy9iYWNrdXAvc3RhdGljL2pzL21lbnVfdXRpbHMnOworCitjb25z dCBjb250ZXh0ID0gZGVzY3JpYmU7CisKK2Rlc2NyaWJlKCdiYWNrdXAubWVudVV0aWxzJywgKCkg PT4geworICBkZXNjcmliZSgnI21lbnVFbmFibGVkU2VydmVyJywgKCkgPT4geworICAgIGNvbnRl eHQoJ3Byb3ZpZGVkIG5vZGUgZGF0YSBpcyB1bmRlZmluZWQnLCAoKSA9PiB7CisgICAgICBpdCgn cmV0dXJucyBmYWxzZScsICgpID0+IHsKKyAgICAgICAgZXhwZWN0KG1lbnVFbmFibGVkU2VydmVy KHVuZGVmaW5lZCkpLnRvQmUoZmFsc2UpOworICAgICAgfSk7CisgICAgfSk7CisKKyAgICBjb250 ZXh0KCdwcm92aWRlZCBub2RlIGRhdGEgaXMgbnVsbCcsICgpID0+IHsKKyAgICAgIGl0KCdyZXR1 cm5zIGZhbHNlJywgKCkgPT4geworICAgICAgICBleHBlY3QobWVudUVuYWJsZWRTZXJ2ZXIobnVs bCkpLnRvQmUoZmFsc2UpOworICAgICAgfSk7CisgICAgfSk7CisKKyAgICBjb250ZXh0KCdjdXJy ZW50IG5vZGUgdHlwZSBpcyBub3Qgb2YgdGhlIHR5cGUgc2VydmVyJywgKCkgPT4geworICAgICAg aXQoJ3JldHVybnMgZmFsc2UnLCAoKSA9PiB7CisgICAgICAgIGV4cGVjdChtZW51RW5hYmxlZFNl cnZlcih7X3R5cGU6ICdzY2hlbWEnfSkpLnRvQmUoZmFsc2UpOworICAgICAgfSk7CisgICAgfSk7 CisKKyAgICBjb250ZXh0KCdjdXJyZW50IG5vZGUgdHlwZSBpcyBvZiB0aGUgdHlwZSBzZXJ2ZXIn LCAoKSA9PiB7CisgICAgICBjb250ZXh0KCdpcyBjb25uZWN0ZWQnLCAoKSA9PiB7CisgICAgICAg IGl0KCdyZXR1cm5zIHRydWUnLCAoKSA9PiB7CisgICAgICAgICAgZXhwZWN0KG1lbnVFbmFibGVk U2VydmVyKHsKKyAgICAgICAgICAgIF90eXBlOiAnc2VydmVyJywKKyAgICAgICAgICAgIGNvbm5l Y3RlZDogdHJ1ZSwKKyAgICAgICAgICB9KSkudG9CZSh0cnVlKTsKKyAgICAgICAgfSk7CisgICAg ICB9KTsKKyAgICAgIGNvbnRleHQoJ2lzIG5vdCBjb25uZWN0ZWQnLCAoKSA9PiB7CisgICAgICAg IGl0KCdyZXR1cm5zIGZhbHNlJywgKCkgPT4geworICAgICAgICAgIGV4cGVjdChtZW51RW5hYmxl ZFNlcnZlcih7CisgICAgICAgICAgICBfdHlwZTogJ3NlcnZlcicsCisgICAgICAgICAgICBjb25u ZWN0ZWQ6IGZhbHNlLAorICAgICAgICAgIH0pKS50b0JlKGZhbHNlKTsKKyAgICAgICAgfSk7Cisg ICAgICB9KTsKKyAgICB9KTsKKyAgfSk7Cit9KTsKKwpkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Np b24vamF2YXNjcmlwdC9jb21tb25fa2V5Ym9hcmRfc2hvcnRjdXRzX3NwZWMuanMgYi93ZWIvcmVn cmVzc2lvbi9qYXZhc2NyaXB0L2NvbW1vbl9rZXlib2FyZF9zaG9ydGN1dHNfc3BlYy5qcwppbmRl eCA5ZWEzMWVmZC4uZTI3OTI5YmYgMTAwNjQ0Ci0tLSBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3Jp cHQvY29tbW9uX2tleWJvYXJkX3Nob3J0Y3V0c19zcGVjLmpzCisrKyBiL3dlYi9yZWdyZXNzaW9u L2phdmFzY3JpcHQvY29tbW9uX2tleWJvYXJkX3Nob3J0Y3V0c19zcGVjLmpzCkBAIC0xMSwxMCAr MTEsNiBAQCBpbXBvcnQga2V5Ym9hcmRTaG9ydGN1dHMgZnJvbSAnc291cmNlcy9rZXlib2FyZF9z aG9ydGN1dHMnOwogCiBkZXNjcmliZSgndGhlIGtleWJvYXJkIHNob3J0Y3V0cycsICgpID0+IHsK ICAgY29uc3QgRjFfS0VZID0gMTEyOwotICAvLyBjb25zdCBFRElUX0tFWSA9IDcxOyAgLy8gS2V5 OiBHIC0+IEdyaWQgdmFsdWVzCi0gIC8vIGNvbnN0IExFRlRfQVJST1dfS0VZID0gMzc7Ci0gIC8v IGNvbnN0IFJJR0hUX0FSUk9XX0tFWSA9IDM5OwotICAvLyBjb25zdCBNT1ZFX05FWFQgPSAncmln aHQnOwogCiAgIGxldCBkZWJ1Z2dlckVsZW1lbnRTcHksIGV2ZW50LCBkZWJ1Z2dlclVzZXJTaG9y dGN1dFNweTsKICAgZGVidWdnZXJVc2VyU2hvcnRjdXRTcHkgPSBqYXNtaW5lLmNyZWF0ZVNweU9i aigKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvZGF0YWdyaWQvZ2V0X3Bh bmVsX3RpdGxlX3NwZWMuanMgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2RhdGFncmlkL2dl dF9wYW5lbF90aXRsZV9zcGVjLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw Li44YTM0NGE4NAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQv ZGF0YWdyaWQvZ2V0X3BhbmVsX3RpdGxlX3NwZWMuanMKQEAgLTAsMCArMSw4MiBAQAorLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwor Ly8KKy8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMp IDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisvLyBUaGlzIHNvZnR3 YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwor CitpbXBvcnQge2dldFBhbmVsVGl0bGV9IGZyb20gJy4uLy4uLy4uL3BnYWRtaW4vdG9vbHMvZGF0 YWdyaWQvc3RhdGljL2pzL2dldF9wYW5lbF90aXRsZSc7CitpbXBvcnQge1RyZWVGYWtlfSBmcm9t ICcuLi90cmVlL3RyZWVfZmFrZSc7CitpbXBvcnQge1RyZWVOb2RlfSBmcm9tICcuLi8uLi8uLi9w Z2FkbWluL3N0YXRpYy9qcy90cmVlL3RyZWUnOworCitjb25zdCBjb250ZXh0ID0gZGVzY3JpYmU7 CisKK2Rlc2NyaWJlKCcjZ2V0UGFuZWxUaXRsZScsICgpID0+IHsKKyAgbGV0IHBnQnJvd3NlcjsK KyAgbGV0IHRyZWU7CisgIGJlZm9yZUVhY2goKCkgPT4geworICAgIHRyZWUgPSBuZXcgVHJlZUZh a2UoKTsKKyAgICBwZ0Jyb3dzZXIgPSB7CisgICAgICB0cmVlTWVudTogdHJlZSwKKyAgICAgIE5v ZGVzOiB7CisgICAgICAgIHNlcnZlcjogeworICAgICAgICAgIGhhc0lkOiB0cnVlLAorICAgICAg ICAgIF90eXBlOiAnc2VydmVyJywKKyAgICAgICAgfSwKKyAgICAgICAgZGF0YWJhc2U6IHsKKyAg ICAgICAgICBoYXNJZDogdHJ1ZSwKKyAgICAgICAgICBfdHlwZTogJ2RhdGFiYXNlJywKKyAgICAg ICAgfSwKKyAgICAgIH0sCisgICAgfTsKKyAgfSk7CisKKyAgY29udGV4dCgnc2VsZWN0ZWQgbm9k ZSBkb2VzIG5vdCBiZWxvbmcgdG8gYSBzZXJ2ZXInLCAoKSA9PiB7CisgICAgaXQoJ3JldHVybnMg dW5kZWZpbmVkJywgKCkgPT4geworICAgICAgY29uc3Qgcm9vdCA9IHRyZWUuYWRkTmV3Tm9kZSgn bGV2ZWwxJywge190eXBlOiAnc2VydmVyX2dyb3Vwcyd9KTsKKyAgICAgIHRyZWUuYWRkQ2hpbGQo cm9vdCwgbmV3IFRyZWVOb2RlKCdsZXZlbDEuMScsIHtfdHlwZTogJ290aGVyJ30pKTsKKyAgICAg IHRyZWUuc2VsZWN0Tm9kZShbe2lkOiAnbGV2ZWwxJ31dKTsKKyAgICAgIGV4cGVjdChnZXRQYW5l bFRpdGxlKHBnQnJvd3NlcikpLnRvQmVVbmRlZmluZWQoKTsKKyAgICB9KTsKKyAgfSk7CisKKyAg Y29udGV4dCgnc2VsZWN0ZWQgbm9kZSBiZWxvbmcgdG8gYSBzZXJ2ZXInLCAoKSA9PiB7CisgICAg Y29udGV4dCgnc2VsZWN0ZWQgbm9kZSBkb2VzIG5vdCBiZWxvbmcgdG8gYSBkYXRhYmFzZScsICgp ID0+IHsKKyAgICAgIGl0KCdyZXR1cm5zIHRoZSBzZXJ2ZXIgbGFiZWwgYW5kIHRoZSB1c2VybmFt ZScsICgpID0+IHsKKyAgICAgICAgdHJlZS5hZGROZXdOb2RlKCdsZXZlbDEnLCB7CisgICAgICAg ICAgX3R5cGU6ICdzZXJ2ZXInLAorICAgICAgICAgIGRiOiAnb3RoZXIgZGIgbGFiZWwnLAorICAg ICAgICAgIHVzZXI6IHtuYW1lOiAnc29tZSB1c2VyIG5hbWUnfSwKKyAgICAgICAgICBsYWJlbDog J3NlcnZlciBsYWJlbCcsCisgICAgICAgIH0sIFtdKTsKKworICAgICAgICB0cmVlLnNlbGVjdE5v ZGUoW3tpZDogJ2xldmVsMSd9XSk7CisgICAgICAgIGV4cGVjdChnZXRQYW5lbFRpdGxlKHBnQnJv d3NlcikpCisgICAgICAgICAgLnRvQmUoJ290aGVyIGRiIGxhYmVsIG9uIHNvbWUgdXNlciBuYW1l QHNlcnZlciBsYWJlbCcpOworICAgICAgfSk7CisgICAgfSk7CisKKyAgICBjb250ZXh0KCdzZWxl Y3RlZCBub2RlIGJlbG9uZ3MgdG8gYSBkYXRhYmFzZScsICgpID0+IHsKKyAgICAgIGl0KCdyZXR1 cm5zIHRoZSBkYXRhYmFzZSBsYWJlbCBhbmQgdGhlIHVzZXJuYW1lJywgKCkgPT4geworICAgICAg ICBjb25zdCByb290ID0gdHJlZS5hZGROZXdOb2RlKCdsZXZlbDEnLCB7CisgICAgICAgICAgX3R5 cGU6ICdzZXJ2ZXInLAorICAgICAgICAgIGRiOiAnb3RoZXIgZGIgbGFiZWwnLAorICAgICAgICAg IHVzZXI6IHtuYW1lOiAnc29tZSB1c2VyIG5hbWUnfSwKKyAgICAgICAgICBsYWJlbDogJ3NlcnZl ciBsYWJlbCcsCisgICAgICAgIH0pOworICAgICAgICBjb25zdCBsZXZlbDEgPSBuZXcgVHJlZU5v ZGUoJ2xldmVsMS4xJywgeworICAgICAgICAgIF90eXBlOiAnZGF0YWJhc2UnLAorICAgICAgICAg IGxhYmVsOiAnZGIgbGFiZWwnLAorICAgICAgICB9KTsKKyAgICAgICAgdHJlZS5hZGRDaGlsZChy b290LCBsZXZlbDEpOworICAgICAgICB0cmVlLmFkZENoaWxkKGxldmVsMSwKKyAgICAgICAgICBu ZXcgVHJlZU5vZGUoJ2xldmVsMS4xLjEnLCB7X3R5cGU6ICd0YWJsZSd9KSk7CisgICAgICAgIHRy ZWUuc2VsZWN0Tm9kZShbe2lkOiAnbGV2ZWwxLjEuMSd9XSk7CisgICAgICAgIGV4cGVjdChnZXRQ YW5lbFRpdGxlKHBnQnJvd3NlcikpCisgICAgICAgICAgLnRvQmUoJ2RiIGxhYmVsIG9uIHNvbWUg dXNlciBuYW1lQHNlcnZlciBsYWJlbCcpOworICAgICAgfSk7CisgICAgfSk7CisgIH0pOworfSk7 CmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2RhdGFncmlkL3Nob3dfZGF0 YV9zcGVjLmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9kYXRhZ3JpZC9zaG93X2RhdGFf c3BlYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uODBkMjVlYjMKLS0t IC9kZXYvbnVsbAorKysgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2RhdGFncmlkL3Nob3df ZGF0YV9zcGVjLmpzCkBAIC0wLDAgKzEsMTcxIEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0g UG9zdGdyZVNRTCBUb29scworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBw Z0FkbWluIERldmVsb3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5k ZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2ltcG9ydCB7c2hvd0RhdGFH cmlkfSBmcm9tICcuLi8uLi8uLi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9qcy9zaG93 X2RhdGEnOworaW1wb3J0IHtUcmVlRmFrZX0gZnJvbSAnLi4vdHJlZS90cmVlX2Zha2UnOworaW1w b3J0IHtUcmVlTm9kZX0gZnJvbSAnLi4vLi4vLi4vcGdhZG1pbi9zdGF0aWMvanMvdHJlZS90cmVl JzsKKworY29uc3QgY29udGV4dCA9IGRlc2NyaWJlOworCitkZXNjcmliZSgnI3Nob3dfZGF0YScs ICgpID0+IHsKKyAgbGV0IGRhdGFncmlkOworICBsZXQgcGdCcm93c2VyOworICBsZXQgYWxlcnRp Znk7CisgIGJlZm9yZUVhY2goKCkgPT4geworICAgIGFsZXJ0aWZ5ID0gamFzbWluZS5jcmVhdGVT cHlPYmooJ2FsZXJ0aWZ5JywgWydhbGVydCddKTsKKyAgICBkYXRhZ3JpZCA9IHsKKyAgICAgIGNy ZWF0ZV90cmFuc2FjdGlvbjogamFzbWluZS5jcmVhdGVTcHkoJ2NyZWF0ZV90cmFuc2FjdGlvbicp LAorICAgIH07CisgICAgcGdCcm93c2VyID0geworICAgICAgdHJlZU1lbnU6IG5ldyBUcmVlRmFr ZSgpLAorICAgICAgTm9kZXM6IHsKKyAgICAgICAgc2VydmVyX2dyb3VwOiB7CisgICAgICAgICAg X3R5cGU6ICdzZXJ2ZXJfZ3JvdXAnLAorICAgICAgICAgIGhhc0lkOiB0cnVlLAorICAgICAgICB9 LAorICAgICAgICBzZXJ2ZXI6IHsKKyAgICAgICAgICBfdHlwZTogJ3NlcnZlcicsCisgICAgICAg ICAgaGFzSWQ6IHRydWUsCisgICAgICAgIH0sCisgICAgICAgIGRhdGFiYXNlOiB7CisgICAgICAg ICAgX3R5cGU6ICdkYXRhYmFzZScsCisgICAgICAgICAgaGFzSWQ6IHRydWUsCisgICAgICAgIH0s CisgICAgICAgIHNjaGVtYTogeworICAgICAgICAgIF90eXBlOiAnc2NoZW1hJywKKyAgICAgICAg ICBoYXNJZDogdHJ1ZSwKKyAgICAgICAgfSwKKyAgICAgICAgdmlldzogeworICAgICAgICAgIF90 eXBlOiAndmlldycsCisgICAgICAgICAgaGFzSWQ6IHRydWUsCisgICAgICAgIH0sCisgICAgICAg IGNhdGFsb2c6IHsKKyAgICAgICAgICBfdHlwZTogJ2NhdGFsb2cnLAorICAgICAgICAgIGhhc0lk OiB0cnVlLAorICAgICAgICB9LAorICAgICAgfSwKKyAgICB9OworICAgIGNvbnN0IHBhcmVudCA9 IHBnQnJvd3Nlci50cmVlTWVudS5hZGROZXdOb2RlKCdwYXJlbnQnLCB7X3R5cGU6ICdwYXJlbnQn fSwgW10pOworICAgIGNvbnN0IHNlcnZlckdyb3VwMSA9IG5ldyBUcmVlTm9kZSgnc2VydmVyX2dy b3VwMScsIHsKKyAgICAgIF90eXBlOiAnc2VydmVyX2dyb3VwJywKKyAgICAgIF9pZDogMSwKKyAg ICB9KTsKKyAgICBwZ0Jyb3dzZXIudHJlZU1lbnUuYWRkQ2hpbGQocGFyZW50LCBzZXJ2ZXJHcm91 cDEpOworCisgICAgY29uc3Qgc2VydmVyMSA9IG5ldyBUcmVlTm9kZSgnc2VydmVyMScsIHsKKyAg ICAgIF90eXBlOiAnc2VydmVyJywKKyAgICAgIGxhYmVsOiAnc2VydmVyMScsCisgICAgICBzZXJ2 ZXJfdHlwZTogJ3BnJywKKyAgICAgIF9pZDogMiwKKyAgICB9LCBbJ3BhcmVudCcsICdzZXJ2ZXJf Z3JvdXAxJ10pOworICAgIHBnQnJvd3Nlci50cmVlTWVudS5hZGRDaGlsZChzZXJ2ZXJHcm91cDEs IHNlcnZlcjEpOworCisgICAgY29uc3QgZGF0YWJhc2UxID0gbmV3IFRyZWVOb2RlKCdkYXRhYmFz ZTEnLCB7CisgICAgICBfdHlwZTogJ2RhdGFiYXNlJywKKyAgICAgIGxhYmVsOiAnZGF0YWJhc2Ux JywKKyAgICAgIF9pZDogMywKKyAgICB9LCBbJ3BhcmVudCcsICdzZXJ2ZXJfZ3JvdXAxJywgJ3Nl cnZlcjEnXSk7CisgICAgcGdCcm93c2VyLnRyZWVNZW51LmFkZENoaWxkKHNlcnZlcjEsIGRhdGFi YXNlMSk7CisKKyAgICBjb25zdCBzY2hlbWExID0gbmV3IFRyZWVOb2RlKCdzY2hlbWExJywgewor ICAgICAgX3R5cGU6ICdzY2hlbWEnLAorICAgICAgbGFiZWw6ICdzY2hlbWExJywKKyAgICAgIF9p ZDogNCwKKyAgICB9KTsKKyAgICBwZ0Jyb3dzZXIudHJlZU1lbnUuYWRkQ2hpbGQoZGF0YWJhc2Ux LCBzY2hlbWExKTsKKworICAgIGNvbnN0IHZpZXcxID0gbmV3IFRyZWVOb2RlKCd2aWV3MScsIHsK KyAgICAgIF90eXBlOiAndmlldycsCisgICAgICBsYWJlbDogJ3ZpZXcxJywKKyAgICAgIF9pZDog NSwKKyAgICB9LCBbJ3BhcmVudCcsICdzZXJ2ZXJfZ3JvdXAxJywgJ3NlcnZlcjEnLCAnZGF0YWJh c2UxJ10pOworICAgIHBnQnJvd3Nlci50cmVlTWVudS5hZGRDaGlsZChkYXRhYmFzZTEsIHZpZXcx KTsKKworICAgIGNvbnN0IGNhdGFsb2cxID0gbmV3IFRyZWVOb2RlKCdjYXRhbG9nMScsIHsKKyAg ICAgIF90eXBlOiAnY2F0YWxvZycsCisgICAgICBsYWJlbDogJ2NhdGFsb2cxJywKKyAgICAgIF9p ZDogNiwKKyAgICB9LCBbJ3BhcmVudCcsICdzZXJ2ZXJfZ3JvdXAxJywgJ3NlcnZlcjEnLCAnZGF0 YWJhc2UxJ10pOworICAgIHBnQnJvd3Nlci50cmVlTWVudS5hZGRDaGlsZChkYXRhYmFzZTEsIGNh dGFsb2cxKTsKKyAgfSk7CisKKyAgY29udGV4dCgnY2Fubm90IGZpbmQgdGhlIHRyZWUgbm9kZScs ICgpID0+IHsKKyAgICBpdCgnZG9lcyBub3QgY3JlYXRlIGEgdHJhbnNhY3Rpb24nLCAoKSA9PiB7 CisgICAgICBzaG93RGF0YUdyaWQoZGF0YWdyaWQsIHBnQnJvd3NlciwgYWxlcnRpZnksIHt9LCBb e2lkOiAnMTAnfV0pOworICAgICAgZXhwZWN0KGRhdGFncmlkLmNyZWF0ZV90cmFuc2FjdGlvbiku bm90LnRvSGF2ZUJlZW5DYWxsZWQoKTsKKyAgICB9KTsKKworICAgIGl0KCdkaXNwbGF5IGFsZXJ0 JywgKCkgPT4geworICAgICAgc2hvd0RhdGFHcmlkKGRhdGFncmlkLCBwZ0Jyb3dzZXIsIGFsZXJ0 aWZ5LCB7fSwgW3tpZDogJzEwJ31dKTsKKyAgICAgIGV4cGVjdChhbGVydGlmeS5hbGVydCkudG9I YXZlQmVlbkNhbGxlZFdpdGgoCisgICAgICAgICdEYXRhIEdyaWQgRXJyb3InLAorICAgICAgICAn Tm8gb2JqZWN0IHNlbGVjdGVkLicKKyAgICAgICk7CisgICAgfSk7CisgIH0pOworCisgIGNvbnRl eHQoJ2N1cnJlbnQgbm9kZSBpcyBub3QgdW5kZXJuZWF0aCBhIHNlcnZlcicsICgpID0+IHsKKyAg ICBpdCgnZG9lcyBub3QgY3JlYXRlIGEgdHJhbnNhY3Rpb24nLCAoKSA9PiB7CisgICAgICBzaG93 RGF0YUdyaWQoZGF0YWdyaWQsIHBnQnJvd3NlciwgYWxlcnRpZnksIHt9LCBbe2lkOiAncGFyZW50 J31dKTsKKyAgICAgIGV4cGVjdChkYXRhZ3JpZC5jcmVhdGVfdHJhbnNhY3Rpb24pLm5vdC50b0hh dmVCZWVuQ2FsbGVkKCk7CisgICAgfSk7CisgIH0pOworCisgIGNvbnRleHQoJ2N1cnJlbnQgbm9k ZSBpcyBub3QgdW5kZXJuZWF0aCBhIHNjaGVtYSBvciB2aWV3IG9yIGNhdGFsb2cnLCAoKSA9PiB7 CisgICAgaXQoJ2RvZXMgbm90IGNyZWF0ZSBhIHRyYW5zYWN0aW9uJywgKCkgPT4geworICAgICAg c2hvd0RhdGFHcmlkKGRhdGFncmlkLCBwZ0Jyb3dzZXIsIGFsZXJ0aWZ5LCB7fSwgW3tpZDogJ2Rh dGFiYXNlMSd9XSk7CisgICAgICBleHBlY3QoZGF0YWdyaWQuY3JlYXRlX3RyYW5zYWN0aW9uKS5u b3QudG9IYXZlQmVlbkNhbGxlZCgpOworICAgIH0pOworICB9KTsKKworICBjb250ZXh0KCdjdXJy ZW50IG5vZGUgaXMgdW5kZXJuZWF0aCBhIHNjaGVtYScsICgpID0+IHsKKyAgICBpdCgnZG9lcyBu b3QgY3JlYXRlIGEgdHJhbnNhY3Rpb24nLCAoKSA9PiB7CisgICAgICBzaG93RGF0YUdyaWQoZGF0 YWdyaWQsIHBnQnJvd3NlciwgYWxlcnRpZnksIHttbnVpZDogMTF9LCBbe2lkOiAnc2NoZW1hMSd9 XSk7CisgICAgICBleHBlY3QoZGF0YWdyaWQuY3JlYXRlX3RyYW5zYWN0aW9uKS50b0hhdmVCZWVu Q2FsbGVkV2l0aCgKKyAgICAgICAgJy9pbml0aWFsaXplL2RhdGFncmlkLzExL3NjaGVtYS8xLzIv My80JywKKyAgICAgICAgbnVsbCwKKyAgICAgICAgJ2ZhbHNlJywKKyAgICAgICAgJ3BnJywKKyAg ICAgICAgJycsCisgICAgICAgICdzZXJ2ZXIxIC0gZGF0YWJhc2UxIC0gc2NoZW1hMS5zY2hlbWEx JywKKyAgICAgICAgJycKKyAgICAgICk7CisgICAgfSk7CisgIH0pOworCisgIGNvbnRleHQoJ2N1 cnJlbnQgbm9kZSBpcyB1bmRlcm5lYXRoIGEgdmlldycsICgpID0+IHsKKyAgICBpdCgnZG9lcyBu b3QgY3JlYXRlIGEgdHJhbnNhY3Rpb24nLCAoKSA9PiB7CisgICAgICBzaG93RGF0YUdyaWQoZGF0 YWdyaWQsIHBnQnJvd3NlciwgYWxlcnRpZnksIHttbnVpZDogMTF9LCBbe2lkOiAndmlldzEnfV0p OworICAgICAgZXhwZWN0KGRhdGFncmlkLmNyZWF0ZV90cmFuc2FjdGlvbikudG9IYXZlQmVlbkNh bGxlZFdpdGgoCisgICAgICAgICcvaW5pdGlhbGl6ZS9kYXRhZ3JpZC8xMS92aWV3LzEvMi8zLzUn LAorICAgICAgICBudWxsLAorICAgICAgICAnZmFsc2UnLAorICAgICAgICAncGcnLAorICAgICAg ICAnJywKKyAgICAgICAgJ3NlcnZlcjEgLSBkYXRhYmFzZTEgLSB2aWV3MS52aWV3MScsCisgICAg ICAgICcnCisgICAgICApOworICAgIH0pOworICB9KTsKKworICBjb250ZXh0KCdjdXJyZW50IG5v ZGUgaXMgdW5kZXJuZWF0aCBhIGNhdGFsb2cnLCAoKSA9PiB7CisgICAgaXQoJ2RvZXMgbm90IGNy ZWF0ZSBhIHRyYW5zYWN0aW9uJywgKCkgPT4geworICAgICAgc2hvd0RhdGFHcmlkKGRhdGFncmlk LCBwZ0Jyb3dzZXIsIGFsZXJ0aWZ5LCB7bW51aWQ6IDExfSwgW3tpZDogJ2NhdGFsb2cxJ31dKTsK KyAgICAgIGV4cGVjdChkYXRhZ3JpZC5jcmVhdGVfdHJhbnNhY3Rpb24pLnRvSGF2ZUJlZW5DYWxs ZWRXaXRoKAorICAgICAgICAnL2luaXRpYWxpemUvZGF0YWdyaWQvMTEvY2F0YWxvZy8xLzIvMy82 JywKKyAgICAgICAgbnVsbCwKKyAgICAgICAgJ2ZhbHNlJywKKyAgICAgICAgJ3BnJywKKyAgICAg ICAgJycsCisgICAgICAgICdzZXJ2ZXIxIC0gZGF0YWJhc2UxIC0gY2F0YWxvZzEuY2F0YWxvZzEn LAorICAgICAgICAnJworICAgICAgKTsKKyAgICB9KTsKKyAgfSk7Cit9KTsKZGlmZiAtLWdpdCBh L3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvZGF0YWdyaWQvc2hvd19xdWVyeV90b29sX3NwZWMu anMgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2RhdGFncmlkL3Nob3dfcXVlcnlfdG9vbF9z cGVjLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi42NmJkMzdjZQotLS0g L2Rldi9udWxsCisrKyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvZGF0YWdyaWQvc2hvd19x dWVyeV90b29sX3NwZWMuanMKQEAgLTAsMCArMSwxMjUgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0FkbWlu IDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwg VGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNl ZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworaW1wb3J0IHtUcmVl RmFrZX0gZnJvbSAnLi4vdHJlZS90cmVlX2Zha2UnOworaW1wb3J0IHtzaG93UXVlcnlUb29sfSBm cm9tICcuLi8uLi8uLi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9qcy9zaG93X3F1ZXJ5 X3Rvb2wnOworaW1wb3J0IHtUcmVlTm9kZX0gZnJvbSAnLi4vLi4vLi4vcGdhZG1pbi9zdGF0aWMv anMvdHJlZS90cmVlJzsKKworY29uc3QgY29udGV4dCA9IGRlc2NyaWJlOworCitkZXNjcmliZSgn I3Nob3dRdWVyeVRvb2wnLCAoKSA9PiB7CisgIGxldCBxdWVyeVRvb2w7CisgIGxldCBwZ0Jyb3dz ZXI7CisgIGxldCBhbGVydGlmeTsKKyAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgYWxlcnRpZnkg PSBqYXNtaW5lLmNyZWF0ZVNweU9iaignYWxlcnRpZnknLCBbJ2FsZXJ0J10pOworICAgIHF1ZXJ5 VG9vbCA9IHsKKyAgICAgIGNyZWF0ZV90cmFuc2FjdGlvbjogamFzbWluZS5jcmVhdGVTcHkoJ2Ny ZWF0ZV90cmFuc2FjdGlvbicpLAorICAgIH07CisgICAgcGdCcm93c2VyID0geworICAgICAgdHJl ZU1lbnU6IG5ldyBUcmVlRmFrZSgpLAorICAgICAgTm9kZXM6IHsKKyAgICAgICAgc2VydmVyX2dy b3VwOiB7CisgICAgICAgICAgX3R5cGU6ICdzZXJ2ZXJfZ3JvdXAnLAorICAgICAgICAgIGhhc0lk OiB0cnVlLAorICAgICAgICB9LAorICAgICAgICBzZXJ2ZXI6IHsKKyAgICAgICAgICBfdHlwZTog J3NlcnZlcicsCisgICAgICAgICAgaGFzSWQ6IHRydWUsCisgICAgICAgIH0sCisgICAgICAgIGRh dGFiYXNlOiB7CisgICAgICAgICAgX3R5cGU6ICdkYXRhYmFzZScsCisgICAgICAgICAgaGFzSWQ6 IHRydWUsCisgICAgICAgIH0sCisgICAgICB9LAorICAgIH07CisgICAgY29uc3QgcGFyZW50ID0g cGdCcm93c2VyLnRyZWVNZW51LmFkZE5ld05vZGUoJ3BhcmVudCcsIHtfdHlwZTogJ3BhcmVudCd9 KTsKKyAgICBjb25zdCBzZXJ2ZXJHcm91cDEgPSAgbmV3IFRyZWVOb2RlKCdzZXJ2ZXJfZ3JvdXAx JywgeworICAgICAgX3R5cGU6ICdzZXJ2ZXJfZ3JvdXAnLAorICAgICAgX2lkOiAxLAorICAgIH0s IFsncGFyZW50J10pOworICAgIHBnQnJvd3Nlci50cmVlTWVudS5hZGRDaGlsZChwYXJlbnQsIHNl cnZlckdyb3VwMSk7CisKKyAgICBjb25zdCBzZXJ2ZXIxID0gbmV3IFRyZWVOb2RlKCdzZXJ2ZXIx JywgeworICAgICAgX3R5cGU6ICdzZXJ2ZXInLAorICAgICAgbGFiZWw6ICdzZXJ2ZXIxJywKKyAg ICAgIHNlcnZlcl90eXBlOiAncGcnLAorICAgICAgX2lkOiAyLAorICAgIH0pOworICAgIHBnQnJv d3Nlci50cmVlTWVudS5hZGRDaGlsZChzZXJ2ZXJHcm91cDEsIHNlcnZlcjEpOworCisgICAgY29u c3QgZGF0YWJhc2UxID0gbmV3ICBUcmVlTm9kZSgnZGF0YWJhc2UxJywgeworICAgICAgX3R5cGU6 ICdkYXRhYmFzZScsCisgICAgICBsYWJlbDogJ2RhdGFiYXNlMScsCisgICAgICBfaWQ6IDMsCisg ICAgfSk7CisgICAgcGdCcm93c2VyLnRyZWVNZW51LmFkZENoaWxkKHNlcnZlcjEsIGRhdGFiYXNl MSk7CisgIH0pOworCisgIGNvbnRleHQoJ2Nhbm5vdCBmaW5kIHRoZSB0cmVlIG5vZGUnLCAoKSA9 PiB7CisgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICBzaG93UXVlcnlUb29sKHF1ZXJ5VG9v bCwgcGdCcm93c2VyLCBhbGVydGlmeSwgJycsIFt7aWQ6ICcxMCd9XSwgJ3RpdGxlJyk7CisgICAg fSk7CisgICAgaXQoJ2RvZXMgbm90IGNyZWF0ZSBhIHRyYW5zYWN0aW9uJywgKCkgPT4geworICAg ICAgZXhwZWN0KHF1ZXJ5VG9vbC5jcmVhdGVfdHJhbnNhY3Rpb24pLm5vdC50b0hhdmVCZWVuQ2Fs bGVkKCk7CisgICAgfSk7CisKKyAgICBpdCgnZGlzcGxheSBhbGVydCcsICgpID0+IHsKKyAgICAg IGV4cGVjdChhbGVydGlmeS5hbGVydCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoCisgICAgICAgICdR dWVyeSBUb29sIEVycm9yJywKKyAgICAgICAgJ05vIG9iamVjdCBzZWxlY3RlZC4nCisgICAgICAp OworICAgIH0pOworICB9KTsKKworICBjb250ZXh0KCdjdXJyZW50IG5vZGUgaXMgbm90IHVuZGVy bmVhdGggYSBzZXJ2ZXInLCAoKSA9PiB7CisgICAgaXQoJ2RvZXMgbm90IGNyZWF0ZSBhIHRyYW5z YWN0aW9uJywgKCkgPT4geworICAgICAgc2hvd1F1ZXJ5VG9vbChxdWVyeVRvb2wsIHBnQnJvd3Nl ciwgYWxlcnRpZnksICcnLCBbe2lkOiAncGFyZW50J31dLCAndGl0bGUnKTsKKyAgICAgIGV4cGVj dChxdWVyeVRvb2wuY3JlYXRlX3RyYW5zYWN0aW9uKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpOwor ICAgIH0pOworCisgICAgaXQoJ25vIGFsZXJ0IGlzIGRpc3BsYXllZCcsICgpID0+IHsKKyAgICAg IGV4cGVjdChhbGVydGlmeS5hbGVydCkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTsKKyAgICB9KTsK KyAgfSk7CisKKyAgY29udGV4dCgnY3VycmVudCBub2RlIGlzIHVuZGVybmVhdGggYSBzZXJ2ZXIn LCAoKSA9PiB7CisgICAgY29udGV4dCgnY3VycmVudCBub2RlIGlzIG5vdCB1bmRlcm5lYXRoIGEg ZGF0YWJhc2UnLCAoKSA9PiB7CisgICAgICBpdCgnY3JlYXRlcyBhIHRyYW5zYWN0aW9uJywgKCkg PT4geworICAgICAgICBzaG93UXVlcnlUb29sKHF1ZXJ5VG9vbCwgcGdCcm93c2VyLCBhbGVydGlm eSwgJ2h0dHA6Ly9zb21ldXJsJywgW3tpZDogJ3NlcnZlcjEnfV0sICd0aXRsZScpOworICAgICAg ICBleHBlY3QocXVlcnlUb29sLmNyZWF0ZV90cmFuc2FjdGlvbikudG9IYXZlQmVlbkNhbGxlZFdp dGgoCisgICAgICAgICAgJy9pbml0aWFsaXplL3F1ZXJ5X3Rvb2wvMS8yJywKKyAgICAgICAgICBu dWxsLAorICAgICAgICAgICd0cnVlJywKKyAgICAgICAgICAncGcnLAorICAgICAgICAgICdodHRw Oi8vc29tZXVybCcsCisgICAgICAgICAgJ3RpdGxlJywKKyAgICAgICAgICAnJywKKyAgICAgICAg ICBmYWxzZQorICAgICAgICApOworICAgICAgfSk7CisgICAgfSk7CisKKyAgICBjb250ZXh0KCdj dXJyZW50IG5vZGUgaXMgdW5kZXJuZWF0aCBhIGRhdGFiYXNlJywgKCkgPT4geworICAgICAgaXQo J2NyZWF0ZXMgYSB0cmFuc2FjdGlvbicsICgpID0+IHsKKyAgICAgICAgc2hvd1F1ZXJ5VG9vbChx dWVyeVRvb2wsIHBnQnJvd3NlciwgYWxlcnRpZnksICdodHRwOi8vc29tZXVybCcsIFt7aWQ6ICdk YXRhYmFzZTEnfV0sICd0aXRsZScpOworICAgICAgICBleHBlY3QocXVlcnlUb29sLmNyZWF0ZV90 cmFuc2FjdGlvbikudG9IYXZlQmVlbkNhbGxlZFdpdGgoCisgICAgICAgICAgJy9pbml0aWFsaXpl L3F1ZXJ5X3Rvb2wvMS8yLzMnLAorICAgICAgICAgIG51bGwsCisgICAgICAgICAgJ3RydWUnLAor ICAgICAgICAgICdwZycsCisgICAgICAgICAgJ2h0dHA6Ly9zb21ldXJsJywKKyAgICAgICAgICAn dGl0bGUnLAorICAgICAgICAgICcnLAorICAgICAgICAgIGZhbHNlCisgICAgICAgICk7CisgICAg ICB9KTsKKyAgICB9KTsKKyAgfSk7Cit9KTsKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2ph dmFzY3JpcHQvZmFrZV9lbmRwb2ludHMuanMgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2Zh a2VfZW5kcG9pbnRzLmpzCmluZGV4IDU0Yjg2YTk0Li5jMDYwYmE3OCAxMDA2NDQKLS0tIGEvd2Vi L3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9mYWtlX2VuZHBvaW50cy5qcworKysgYi93ZWIvcmVncmVz c2lvbi9qYXZhc2NyaXB0L2Zha2VfZW5kcG9pbnRzLmpzCkBAIC0xMiw1ICsxMiwxMSBAQCBkZWZp bmUoZnVuY3Rpb24gKCkgewogICAgICdzdGF0aWMnOiAnL2Jhc2UvcGdhZG1pbi9zdGF0aWMvPHBh dGg6ZmlsZW5hbWU+JywKICAgICAnc3FsZWRpdG9yLnBvbGwnOiAnL3NxbGVkaXRvci9xdWVyeV90 b29sL3BvbGwvPHBhdGg6dHJhbnNfaWQ+JywKICAgICAnc3FsZWRpdG9yLnF1ZXJ5X3Rvb2xfc3Rh cnQnOiAnL3NxbGVkaXRvci9xdWVyeV90b29sL3N0YXJ0LzxwYXRoOnRyYW5zX2lkPicsCisgICAg J2JhY2t1cC5jcmVhdGVfc2VydmVyX2pvYic6ICAnL2JhY2t1cC9qb2IvPGludDpzaWQ+JywKKyAg ICAnYmFja3VwLmNyZWF0ZV9vYmplY3Rfam9iJzogICcvYmFja3VwL2pvYi88aW50OnNpZD4vb2Jq ZWN0JywKKyAgICAnZGF0YWdyaWQuaW5pdGlhbGl6ZV9kYXRhZ3JpZCc6ICcvaW5pdGlhbGl6ZS9k YXRhZ3JpZC88aW50OmNtZF90eXBlPi88b2JqX3R5cGU+LzxpbnQ6c2dpZD4vPGludDpzaWQ+Lzxp bnQ6ZGlkPi88aW50Om9ial9pZD4nLAorICAgICdkYXRhZ3JpZC5pbml0aWFsaXplX3F1ZXJ5X3Rv b2wnOiAnL2luaXRpYWxpemUvcXVlcnlfdG9vbC88aW50OnNnaWQ+LzxpbnQ6c2lkPicsCisgICAg J2RhdGFncmlkLmluaXRpYWxpemVfcXVlcnlfdG9vbF93aXRoX2RpZCc6ICcvaW5pdGlhbGl6ZS9x dWVyeV90b29sLzxpbnQ6c2dpZD4vPGludDpzaWQ+LzxpbnQ6ZGlkPicsCisgICAgJ3Jlc3RvcmUu Y3JlYXRlX2pvYic6ICcvcmVzdG9yZS9qb2IvPGludDpzaWQ+JywKICAgfTsKIH0pOwpkaWZmIC0t Z2l0IGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9mYWtlX21vZGVsLmpzIGIvd2ViL3JlZ3Jl c3Npb24vamF2YXNjcmlwdC9mYWtlX21vZGVsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwLi5hY2ZhYTUzMgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9yZWdyZXNzaW9uL2ph dmFzY3JpcHQvZmFrZV9tb2RlbC5qcwpAQCAtMCwwICsxLDIxIEBACitleHBvcnQgY2xhc3MgRmFr ZU1vZGVsIHsKKyAgY29uc3RydWN0b3IoKSB7CisgICAgdGhpcy52YWx1ZXMgPSB7fTsKKyAgfQor CisgIHNldChrZXksIHZhbHVlKSB7CisgICAgdGhpcy52YWx1ZXNba2V5XSA9IHZhbHVlOworICB9 CisKKyAgZ2V0KGtleSkgeworICAgIHJldHVybiB0aGlzLnZhbHVlc1trZXldOworICB9CisKKyAg dW5zZXQoa2V5KSB7CisgICAgZGVsZXRlIHRoaXMudmFsdWVzW2tleV07CisgIH0KKworICB0b0pT T04oKSB7CisgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHRoaXMudmFsdWVzKTsKKyAgfQor fQpkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9yZXN0b3JlL3Jlc3RvcmVf ZGlhbG9nX3NwZWMuanMgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3Jlc3RvcmUvcmVzdG9y ZV9kaWFsb2dfc3BlYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uMTU2 ZjU2YmIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3Jlc3Rv cmUvcmVzdG9yZV9kaWFsb2dfc3BlYy5qcwpAQCAtMCwwICsxLDIwMyBAQAorLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8v IHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMTMg LSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlz IHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworaW1wb3J0 IHtUcmVlRmFrZX0gZnJvbSAnLi4vdHJlZS90cmVlX2Zha2UnOworaW1wb3J0IHtSZXN0b3JlRGlh bG9nfSBmcm9tICcuLi8uLi8uLi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvc3RhdGljL2pzL3Jlc3Rv cmVfZGlhbG9nJzsKKworY29uc3QgY29udGV4dCA9IGRlc2NyaWJlOworCitkZXNjcmliZSgnUmVz dG9yZURpYWxvZycsICgpID0+IHsKKyAgbGV0IHJlc3RvcmVEaWFsb2c7CisgIGxldCBwZ0Jyb3dz ZXI7CisgIGxldCBqcXVlcnlTcHk7CisgIGxldCBhbGVydGlmeVNweTsKKyAgbGV0IHJlc3RvcmVN b2RlbFNweTsKKworICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICBwZ0Jyb3dzZXIgPSB7CisgICAg ICB0cmVlTWVudTogbmV3IFRyZWVGYWtlKCksCisgICAgICBOb2RlczogeworICAgICAgICBzZXJ2 ZXI6IGphc21pbmUuY3JlYXRlU3B5T2JqKCdOb2RlW3NlcnZlcl0nLCBbJ2dldFRyZWVOb2RlSGll cmFyY2h5J10pLAorICAgICAgICBkYXRhYmFzZTogamFzbWluZS5jcmVhdGVTcHlPYmooJ05vZGVb ZGF0YWJhc2VdJywgWydnZXRUcmVlTm9kZUhpZXJhcmNoeSddKSwKKyAgICAgIH0sCisgICAgfTsK KyAgICBwZ0Jyb3dzZXIuTm9kZXMuc2VydmVyLmhhc0lkID0gdHJ1ZTsKKyAgICBwZ0Jyb3dzZXIu Tm9kZXMuZGF0YWJhc2UuaGFzSWQgPSB0cnVlOworICAgIGpxdWVyeVNweSA9IGphc21pbmUuY3Jl YXRlU3B5KCdqcXVlcnlTcHknKTsKKyAgICByZXN0b3JlTW9kZWxTcHkgPSBqYXNtaW5lLmNyZWF0 ZVNweSgncmVzdG9yZU1vZGVsU3B5Jyk7CisKKyAgICBjb25zdCBoaWVyYXJjaHkgPSB7CisgICAg ICBjaGlsZHJlbjogWworICAgICAgICB7CisgICAgICAgICAgaWQ6ICdyb290JywKKyAgICAgICAg ICBjaGlsZHJlbjogWworICAgICAgICAgICAgeworICAgICAgICAgICAgICBpZDogJ3NlcnZlclRy ZWVOb2RlJywKKyAgICAgICAgICAgICAgZGF0YTogeworICAgICAgICAgICAgICAgIF9pZDogMTAs CisgICAgICAgICAgICAgICAgX3R5cGU6ICdzZXJ2ZXInLAorICAgICAgICAgICAgICAgIGxhYmVs OiAnc29tZS10cmVlLWxhYmVsJywKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgY2hp bGRyZW46IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICBpZDogJ3NvbWVf ZGF0YWJhc2UnLAorICAgICAgICAgICAgICAgICAgZGF0YTogeworICAgICAgICAgICAgICAgICAg ICBfdHlwZTogJ2RhdGFiYXNlJywKKyAgICAgICAgICAgICAgICAgICAgX2lkOiAxMSwKKyAgICAg ICAgICAgICAgICAgICAgbGFiZWw6ICdzb21lX2RhdGFiYXNlJywKKyAgICAgICAgICAgICAgICAg ICAgX2xhYmVsOiAnc29tZV9kYXRhYmFzZV9sYWJlbCcsCisgICAgICAgICAgICAgICAgICB9LAor ICAgICAgICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICAgICAgIGlkOiAnZGF0YWJhc2Vfd2l0 aF9lcXVhbF9pbl9uYW1lJywKKyAgICAgICAgICAgICAgICAgIGRhdGE6IHsKKyAgICAgICAgICAg ICAgICAgICAgX3R5cGU6ICdkYXRhYmFzZScsCisgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAn c29tZV9kYXRhYmFzZScsCisgICAgICAgICAgICAgICAgICAgIF9sYWJlbDogJz1zb21lX2RhdGFi YXNlX2xhYmVsJywKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgfSwKKyAg ICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAg ICAgIGlkOiAncHBhc1NlcnZlcicsCisgICAgICAgICAgICAgIGRhdGE6IHsKKyAgICAgICAgICAg ICAgICBfdHlwZTogJ3NlcnZlcicsCisgICAgICAgICAgICAgICAgc2VydmVyX3R5cGU6ICdwcGFz JywKKyAgICAgICAgICAgICAgICBjaGlsZHJlbjogWworICAgICAgICAgICAgICAgICAge2lkOiAn c29tZU5vZGVVbmRlcm5lYXRoUFBBU1NlcnZlcid9LAorICAgICAgICAgICAgICAgIF0sCisgICAg ICAgICAgICAgIH0sCisgICAgICAgICAgICB9LAorICAgICAgICAgIF0sCisgICAgICAgIH0sCisg ICAgICBdLAorICAgIH07CisKKyAgICBwZ0Jyb3dzZXIudHJlZU1lbnUgPSBUcmVlRmFrZS5idWls ZChoaWVyYXJjaHkpOworICB9KTsKKworICBkZXNjcmliZSgnI2RyYXcnLCAoKSA9PiB7CisgICAg YmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICBhbGVydGlmeVNweSA9IGphc21pbmUuY3JlYXRlU3B5 T2JqKCdhbGVydGlmeScsIFsnYWxlcnQnLCAnZGlhbG9nJ10pOworICAgICAgYWxlcnRpZnlTcHlb J3BnX3Jlc3RvcmUnXSA9IGphc21pbmUuY3JlYXRlU3B5KCdwZ19yZXN0b3JlJyk7CisgICAgICBy ZXN0b3JlRGlhbG9nID0gbmV3IFJlc3RvcmVEaWFsb2coCisgICAgICAgIHBnQnJvd3NlciwKKyAg ICAgICAganF1ZXJ5U3B5LAorICAgICAgICBhbGVydGlmeVNweSwKKyAgICAgICAgcmVzdG9yZU1v ZGVsU3B5CisgICAgICApOworCisgICAgICBwZ0Jyb3dzZXIuZ2V0X3ByZWZlcmVuY2UgPSBqYXNt aW5lLmNyZWF0ZVNweSgnZ2V0X3ByZWZlcmVuY2VzJyk7CisgICAgfSk7CisKKyAgICBjb250ZXh0 KCd0aGVyZSBhcmUgbm8gYW5jZXN0b3JzIG9mIHRoZSB0eXBlIHNlcnZlcicsICgpID0+IHsKKyAg ICAgIGl0KCdkb2VzIG5vdCBjcmVhdGUgYSBkaWFsb2cnLCAoKSA9PiB7CisgICAgICAgIHBnQnJv d3Nlci50cmVlTWVudS5zZWxlY3ROb2RlKFt7aWQ6ICdyb290J31dKTsKKyAgICAgICAgcmVzdG9y ZURpYWxvZy5kcmF3KG51bGwsIG51bGwsIG51bGwpOworICAgICAgICBleHBlY3QoYWxlcnRpZnlT cHlbJ3BnX3Jlc3RvcmUnXSkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTsKKyAgICAgIH0pOworCisg ICAgICBpdCgnZGlzcGxheSBhbiBhbGVydCB3aXRoIGEgUmVzdG9yZSBFcnJvcicsICgpID0+IHsK KyAgICAgICAgcmVzdG9yZURpYWxvZy5kcmF3KG51bGwsIFt7aWQ6ICdyb290J31dLCBudWxsKTsK KyAgICAgICAgZXhwZWN0KGFsZXJ0aWZ5U3B5LmFsZXJ0KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgK KyAgICAgICAgICAnUmVzdG9yZSBFcnJvcicsCisgICAgICAgICAgJ1BsZWFzZSBzZWxlY3Qgc2Vy dmVyIG9yIGNoaWxkIG5vZGUgZnJvbSB0aGUgYnJvd3NlciB0cmVlLicKKyAgICAgICAgKTsKKyAg ICAgIH0pOworICAgIH0pOworCisgICAgY29udGV4dCgndGhlcmUgaXMgYW4gYW5jZXN0b3Igb2Yg dGhlIHR5cGUgc2VydmVyJywgKCkgPT4geworICAgICAgY29udGV4dCgnbm8gcHJlZmVyZW5jZSBj YW4gYmUgZm91bmQnLCAoKSA9PiB7CisgICAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAg ICAgIHBnQnJvd3Nlci5nZXRfcHJlZmVyZW5jZS5hbmQucmV0dXJuVmFsdWUodW5kZWZpbmVkKTsK KyAgICAgICAgfSk7CisKKyAgICAgICAgY29udGV4dCgnc2VydmVyIGlzIGEgcHBhcyBzZXJ2ZXIn LCAoKSA9PiB7CisgICAgICAgICAgaXQoJ2Rpc3BsYXkgYW4gYWxlcnQgd2l0aCAiUmVzdG9yZSBF cnJvciInLCAoKSA9PiB7CisgICAgICAgICAgICByZXN0b3JlRGlhbG9nLmRyYXcobnVsbCwgW3tp ZDogJ3NlcnZlclRyZWVOb2RlJ31dLCBudWxsKTsKKyAgICAgICAgICAgIGV4cGVjdChhbGVydGlm eVNweS5hbGVydCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoCisgICAgICAgICAgICAgICdSZXN0b3Jl IEVycm9yJywKKyAgICAgICAgICAgICAgJ0ZhaWxlZCB0byBsb2FkIHByZWZlcmVuY2UgcGdfYmlu X2RpciBvZiBtb2R1bGUgcGF0aHMnCisgICAgICAgICAgICApOworICAgICAgICAgIH0pOworICAg ICAgICB9KTsKKworICAgICAgICBjb250ZXh0KCdzZXJ2ZXIgaXMgbm90IGEgcHBhcyBzZXJ2ZXIn LCAoKSA9PiB7CisgICAgICAgICAgaXQoJ2Rpc3BsYXkgYW4gYWxlcnQgd2l0aCAiUmVzdG9yZSBF cnJvciInLCAoKSA9PiB7CisgICAgICAgICAgICByZXN0b3JlRGlhbG9nLmRyYXcobnVsbCwgW3tp ZDogJ3BwYXNTZXJ2ZXInfV0sIG51bGwpOworICAgICAgICAgICAgZXhwZWN0KGFsZXJ0aWZ5U3B5 LmFsZXJ0KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgKKyAgICAgICAgICAgICAgJ1Jlc3RvcmUgRXJy b3InLAorICAgICAgICAgICAgICAnRmFpbGVkIHRvIGxvYWQgcHJlZmVyZW5jZSBwcGFzX2Jpbl9k aXIgb2YgbW9kdWxlIHBhdGhzJworICAgICAgICAgICAgKTsKKyAgICAgICAgICB9KTsKKyAgICAg ICAgfSk7CisgICAgICB9KTsKKworICAgICAgY29udGV4dCgncHJlZmVyZW5jZSBjYW4gYmUgZm91 bmQnLCAoKSA9PiB7CisgICAgICAgIGNvbnRleHQoJ2JpbmFyeSBmb2xkZXIgaXMgbm90IGNvbmZp Z3VyZWQnLCAoKSA9PiB7CisgICAgICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgICAg ICBwZ0Jyb3dzZXIuZ2V0X3ByZWZlcmVuY2UuYW5kLnJldHVyblZhbHVlKHt9KTsKKyAgICAgICAg ICB9KTsKKworICAgICAgICAgIGNvbnRleHQoJ3NlcnZlciBpcyBhIHBwYXMgc2VydmVyJywgKCkg PT4geworICAgICAgICAgICAgaXQoJ2Rpc3BsYXkgYW4gYWxlcnQgd2l0aCAiQ29uZmlndXJhdGlv biByZXF1aXJlZCInLCAoKSA9PiB7CisgICAgICAgICAgICAgIHJlc3RvcmVEaWFsb2cuZHJhdyhu dWxsLCBbe2lkOiAnc2VydmVyVHJlZU5vZGUnfV0sIG51bGwpOworICAgICAgICAgICAgICBleHBl Y3QoYWxlcnRpZnlTcHkuYWxlcnQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAorICAgICAgICAgICAg ICAgICdDb25maWd1cmF0aW9uIHJlcXVpcmVkJywKKyAgICAgICAgICAgICAgICAnUGxlYXNlIGNv bmZpZ3VyZSB0aGUgUG9zdGdyZVNRTCBCaW5hcnkgUGF0aCBpbiB0aGUgUHJlZmVyZW5jZXMgZGlh bG9nLicKKyAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgIH0pOwor CisgICAgICAgICAgY29udGV4dCgnc2VydmVyIGlzIG5vdCBhIHBwYXMgc2VydmVyJywgKCkgPT4g eworICAgICAgICAgICAgaXQoJ2Rpc3BsYXkgYW4gYWxlcnQgd2l0aCAiQ29uZmlndXJhdGlvbiBy ZXF1aXJlZCInLCAoKSA9PiB7CisgICAgICAgICAgICAgIHJlc3RvcmVEaWFsb2cuZHJhdyhudWxs LCBbe2lkOiAncHBhc1NlcnZlcid9XSwgbnVsbCk7CisgICAgICAgICAgICAgIGV4cGVjdChhbGVy dGlmeVNweS5hbGVydCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoCisgICAgICAgICAgICAgICAgJ0Nv bmZpZ3VyYXRpb24gcmVxdWlyZWQnLAorICAgICAgICAgICAgICAgICdQbGVhc2UgY29uZmlndXJl IHRoZSBFREIgQWR2YW5jZWQgU2VydmVyIEJpbmFyeSBQYXRoIGluIHRoZSBQcmVmZXJlbmNlcyBk aWFsb2cuJworICAgICAgICAgICAgICApOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgfSk7 CisgICAgICAgIH0pOworCisgICAgICAgIGNvbnRleHQoJ2JpbmFyeSBmb2xkZXIgaXMgY29uZmln dXJlZCcsICgpID0+IHsKKyAgICAgICAgICBsZXQgc3B5OworICAgICAgICAgIGJlZm9yZUVhY2go KCkgPT4geworICAgICAgICAgICAgc3B5ID0gamFzbWluZS5jcmVhdGVTcHlPYmooJ2dsb2JhbHMn LCBbJ3Jlc2l6ZVRvJ10pOworICAgICAgICAgICAgYWxlcnRpZnlTcHlbJ3BnX3Jlc3RvcmUnXS5h bmQKKyAgICAgICAgICAgICAgLnJldHVyblZhbHVlKHNweSk7CisgICAgICAgICAgICBwZ0Jyb3dz ZXIuZ2V0X3ByZWZlcmVuY2UuYW5kLnJldHVyblZhbHVlKHt2YWx1ZTogJy9zb21lL3BhdGgnfSk7 CisgICAgICAgICAgICBwZ0Jyb3dzZXIuTm9kZXMuc2VydmVyLmxhYmVsID0gJ3NvbWUtc2VydmVy LWxhYmVsJzsKKyAgICAgICAgICB9KTsKKworICAgICAgICAgIGl0KCdkaXNwbGF5cyB0aGUgZGlh bG9nJywgKCkgPT4geworICAgICAgICAgICAgcmVzdG9yZURpYWxvZy5kcmF3KG51bGwsIFt7aWQ6 ICdzZXJ2ZXJUcmVlTm9kZSd9XSwge3NlcnZlcjogdHJ1ZX0pOworICAgICAgICAgICAgZXhwZWN0 KGFsZXJ0aWZ5U3B5WydwZ19yZXN0b3JlJ10pLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAorICAgICAg ICAgICAgICAnUmVzdG9yZSAoc29tZS1zZXJ2ZXItbGFiZWw6IHNvbWUtdHJlZS1sYWJlbCknLAor ICAgICAgICAgICAgICBbe2lkOiAnc2VydmVyVHJlZU5vZGUnfV0sCisgICAgICAgICAgICAgIHsK KyAgICAgICAgICAgICAgICBfaWQ6IDEwLAorICAgICAgICAgICAgICAgIF90eXBlOiAnc2VydmVy JywKKyAgICAgICAgICAgICAgICBsYWJlbDogJ3NvbWUtdHJlZS1sYWJlbCcsCisgICAgICAgICAg ICAgIH0sCisgICAgICAgICAgICAgIHBnQnJvd3Nlci5Ob2Rlcy5zZXJ2ZXIKKyAgICAgICAgICAg ICk7CisgICAgICAgICAgICBleHBlY3Qoc3B5LnJlc2l6ZVRvKS50b0hhdmVCZWVuQ2FsbGVkV2l0 aCgnNjUlJywgJzYwJScpOworICAgICAgICAgIH0pOworCisgICAgICAgICAgY29udGV4dCgnZGF0 YWJhc2UgbGFiZWwgY29udGFpbiAiPSInLCAoKSA9PiB7CisgICAgICAgICAgICBpdCgnc2hvdWxk IGNyZWF0ZSBhbGVydCBkaWFsb2cgd2l0aCByZXN0b3JlIGVycm9yJywgKCkgPT4geworICAgICAg ICAgICAgICByZXN0b3JlRGlhbG9nLmRyYXcobnVsbCwgW3tpZDogJ2RhdGFiYXNlX3dpdGhfZXF1 YWxfaW5fbmFtZSd9XSwgbnVsbCk7CisgICAgICAgICAgICAgIGV4cGVjdChhbGVydGlmeVNweS5h bGVydCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoJ1Jlc3RvcmUgRXJyb3InLAorICAgICAgICAgICAg ICAgICdEYXRhYmFzZXMgd2l0aCA9IHN5bWJvbHMgaW4gdGhlIG5hbWUgY2Fubm90IGJlIGJhY2tl ZCB1cCBvciByZXN0b3JlZCB1c2luZyB0aGlzIHV0aWxpdHkuJyk7CisgICAgICAgICAgICB9KTsK KyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKyAgICB9KTsKKyAgfSk7Cit9 KTsKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvcmVzdG9yZS9yZXN0b3Jl X2RpYWxvZ193cmFwcGVyX3NwZWMuanMgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3Jlc3Rv cmUvcmVzdG9yZV9kaWFsb2dfd3JhcHBlcl9zcGVjLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwLi5jMmEzMWQ1NQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9yZWdyZXNzaW9u L2phdmFzY3JpcHQvcmVzdG9yZS9yZXN0b3JlX2RpYWxvZ193cmFwcGVyX3NwZWMuanMKQEAgLTAs MCArMSw1OTMgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisv LworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQg VGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBM aWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8KK2ltcG9ydCB7VHJlZUZha2V9IGZyb20gJy4uL3RyZWUvdHJlZV9m YWtlJzsKK2ltcG9ydCB7UmVzdG9yZURpYWxvZ1dyYXBwZXJ9IGZyb20gJy4uLy4uLy4uL3BnYWRt aW4vdG9vbHMvcmVzdG9yZS9zdGF0aWMvanMvcmVzdG9yZV9kaWFsb2dfd3JhcHBlcic7CitpbXBv cnQgTW9ja0FkYXB0ZXIgZnJvbSAnYXhpb3MtbW9jay1hZGFwdGVyJzsKK2ltcG9ydCBheGlvcyBm cm9tICdheGlvcy9pbmRleCc7CitpbXBvcnQge0Zha2VNb2RlbH0gZnJvbSAnLi4vZmFrZV9tb2Rl bCc7CitpbXBvcnQge1RyZWVOb2RlfSBmcm9tICcuLi8uLi8uLi9wZ2FkbWluL3N0YXRpYy9qcy90 cmVlL3RyZWUnOworCitsZXQgY29udGV4dCA9IGRlc2NyaWJlOworCitkZXNjcmliZSgnUmVzdG9y ZURpYWxvZ1dyYXBwZXInLCAoKSA9PiB7CisgIGxldCBqcXVlcnlTcHk7CisgIGxldCBwZ0Jyb3dz ZXI7CisgIGxldCBhbGVydGlmeVNweTsKKyAgbGV0IGRpYWxvZ01vZGVsS2xhc3NTcHk7CisgIGxl dCBiYWNrZm9ybTsKKyAgbGV0IGdlbmVyYXRlZFJlc3RvcmVNb2RlbDsKKyAgbGV0IHJlc3RvcmVE aWFsb2dXcmFwcGVyOworICBsZXQgbm9EYXRhTm9kZTsKKyAgbGV0IHNlcnZlclRyZWVOb2RlOwor ICBsZXQgdmlld1NjaGVtYTsKKyAgbGV0IHJlc3RvcmVKUXVlcnlDb250YWluZXJTcHk7CisgIGxl dCByZXN0b3JlTm9kZUNoaWxkTm9kZVNweTsKKyAgbGV0IHJlc3RvcmVOb2RlOworCisgIGJlZm9y ZUVhY2goKCkgPT4geworICAgIHBnQnJvd3NlciA9IHsKKyAgICAgIHRyZWVNZW51OiBuZXcgVHJl ZUZha2UoKSwKKyAgICAgIE5vZGVzOiB7CisgICAgICAgIHNlcnZlcjogeworICAgICAgICAgIGhh c0lkOiB0cnVlLAorICAgICAgICAgIGdldFRyZWVOb2RlSGllcmFyY2h5OiBqYXNtaW5lLmNyZWF0 ZVNweSgnZ2V0VHJlZU5vZGVIaWVyYXJjaHknKSwKKyAgICAgICAgfSwKKyAgICAgIH0sCisgICAg ICBrZXlib2FyZE5hdmlnYXRpb246IGphc21pbmUuY3JlYXRlU3B5T2JqKCdrZXlib2FyZE5hdmln YXRpb24nLCBbJ2dldERpYWxvZ1RhYk5hdmlnYXRvciddKSwKKyAgICB9OworCisgICAgbm9EYXRh Tm9kZSA9IHBnQnJvd3Nlci50cmVlTWVudS5hZGROZXdOb2RlKCdsZXZlbDEuMScsIHVuZGVmaW5l ZCwgW3tpZDogJ2xldmVsMSd9XSk7CisgICAgc2VydmVyVHJlZU5vZGUgPSBwZ0Jyb3dzZXIudHJl ZU1lbnUuYWRkTmV3Tm9kZSgnbGV2ZWwyLjEnLCB7CisgICAgICBfdHlwZTogJ3NlcnZlcicsCisg ICAgICBfaWQ6IDEwLAorICAgICAgbGFiZWw6ICdzb21lLXRyZWUtbGFiZWwnLAorICAgIH0sIFt7 aWQ6ICdsZXZlbDIuMSd9XSk7CisgICAganF1ZXJ5U3B5ID0gamFzbWluZS5jcmVhdGVTcHkoJ2px dWVyeVNweScpOworICAgIGRpYWxvZ01vZGVsS2xhc3NTcHkgPSBqYXNtaW5lLmNyZWF0ZVNweSgn ZGlhbG9nTW9kZWxLbGFzcycpOworICAgIGdlbmVyYXRlZFJlc3RvcmVNb2RlbCA9IHt9OworICAg IHZpZXdTY2hlbWEgPSB7fTsKKyAgICBiYWNrZm9ybSA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCdi YWNrZm9ybScsIFsnZ2VuZXJhdGVWaWV3U2NoZW1hJywgJ0RpYWxvZyddKTsKKyAgICBiYWNrZm9y bS5nZW5lcmF0ZVZpZXdTY2hlbWEuYW5kLnJldHVyblZhbHVlKHZpZXdTY2hlbWEpOworICAgIGRp YWxvZ01vZGVsS2xhc3NTcHkuYW5kLnJldHVyblZhbHVlKGdlbmVyYXRlZFJlc3RvcmVNb2RlbCk7 CisgICAgcmVzdG9yZUpRdWVyeUNvbnRhaW5lclNweSA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCdy ZXN0b3JlSlF1ZXJ5Q29udGFpbmVyJywgWydnZXQnLCAnYXR0ciddKTsKKyAgICByZXN0b3JlSlF1 ZXJ5Q29udGFpbmVyU3B5LmdldC5hbmQucmV0dXJuVmFsdWUocmVzdG9yZUpRdWVyeUNvbnRhaW5l clNweSk7CisKKyAgICByZXN0b3JlTm9kZSA9IHsKKyAgICAgIF9faW50ZXJuYWw6IHsKKyAgICAg ICAgYnV0dG9uczogWworICAgICAgICAgIHt9LCB7fSwKKyAgICAgICAgICB7CisgICAgICAgICAg ICBlbGVtZW50OiB7CisgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwKKyAgICAgICAgICAg IH0sCisgICAgICAgICAgfSwKKyAgICAgICAgXSwKKyAgICAgIH0sCisgICAgICBlbGVtZW50czog eworICAgICAgICBib2R5OiB7CisgICAgICAgICAgY2hpbGROb2RlczogWworICAgICAgICAgICAg e30sCisgICAgICAgICAgXSwKKyAgICAgICAgfSwKKyAgICAgICAgY29udGVudDogamFzbWluZS5j cmVhdGVTcHlPYmooJ2NvbnRlbnQnLCBbJ2FwcGVuZENoaWxkJywgJ2F0dHInXSksCisgICAgICB9 LAorICAgIH07CisKKworICAgIHJlc3RvcmVOb2RlQ2hpbGROb2RlU3B5ID0gamFzbWluZS5jcmVh dGVTcHlPYmooJ3NvbWV0aGluZycsIFsnYWRkQ2xhc3MnXSk7CisKKyAgICBqcXVlcnlTcHkuYW5k LmNhbGxGYWtlKChzZWxlY3RvcikgPT4geworICAgICAgaWYgKHNlbGVjdG9yID09PSAnPGRpdiBj bGFzcz1cJ3Jlc3RvcmVfZGlhbG9nXCc+PC9kaXY+JykgeworICAgICAgICByZXR1cm4gcmVzdG9y ZUpRdWVyeUNvbnRhaW5lclNweTsKKyAgICAgIH0gZWxzZSBpZiAoc2VsZWN0b3IgPT09IHJlc3Rv cmVOb2RlLmVsZW1lbnRzLmJvZHkuY2hpbGROb2Rlc1swXSkgeworICAgICAgICByZXR1cm4gcmVz dG9yZU5vZGVDaGlsZE5vZGVTcHk7CisgICAgICB9CisgICAgfSk7CisgIH0pOworCisgIGRlc2Ny aWJlKCcjcHJlcGFyZScsICgpID0+IHsKKworICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAg YWxlcnRpZnlTcHkgPSBqYXNtaW5lLmNyZWF0ZVNweU9iaignYWxlcnRpZnknLCBbJ2FsZXJ0Jywg J2RpYWxvZyddKTsKKyAgICAgIHJlc3RvcmVEaWFsb2dXcmFwcGVyID0gbmV3IFJlc3RvcmVEaWFs b2dXcmFwcGVyKAorICAgICAgICAnPGRpdiBjbGFzcz1cJ3Jlc3RvcmVfZGlhbG9nXCc+PC9kaXY+ JywKKyAgICAgICAgJ3Jlc3RvcmVEaWFsb2dUaXRsZScsCisgICAgICAgICdyZXN0b3JlJywKKyAg ICAgICAganF1ZXJ5U3B5LAorICAgICAgICBwZ0Jyb3dzZXIsCisgICAgICAgIGFsZXJ0aWZ5U3B5 LAorICAgICAgICBkaWFsb2dNb2RlbEtsYXNzU3B5LAorICAgICAgICBiYWNrZm9ybQorICAgICAg KTsKKyAgICAgIHJlc3RvcmVEaWFsb2dXcmFwcGVyID0gT2JqZWN0LmFzc2lnbihyZXN0b3JlRGlh bG9nV3JhcHBlciwgcmVzdG9yZU5vZGUpOworICAgIH0pOworICAgIGNvbnRleHQoJ25vIHRyZWUg ZWxlbWVudCBpcyBzZWxlY3RlZCcsICgpID0+IHsKKyAgICAgIGl0KCdkb2VzIG5vdCBjcmVhdGUg YSBiYWNrZm9ybSBkaWFsb2cnLCAoKSA9PiB7CisgICAgICAgIHJlc3RvcmVEaWFsb2dXcmFwcGVy LnByZXBhcmUoKTsKKyAgICAgICAgZXhwZWN0KGJhY2tmb3JtLkRpYWxvZykubm90LnRvSGF2ZUJl ZW5DYWxsZWQoKTsKKyAgICAgIH0pOworCisgICAgICBpdCgnZGlzYWJsZXMgdGhlIGJ1dHRvbiAi c3VibWl0IGJ1dHRvbiIgdW50aWwgYSBmaWxlbmFtZSBpcyBzZWxlY3RlZCcsICgpID0+IHsKKyAg ICAgICAgcmVzdG9yZURpYWxvZ1dyYXBwZXIucHJlcGFyZSgpOworICAgICAgICBleHBlY3QocmVz dG9yZURpYWxvZ1dyYXBwZXIuX19pbnRlcm5hbC5idXR0b25zWzJdLmVsZW1lbnQuZGlzYWJsZWQp LnRvQmUodHJ1ZSk7CisgICAgICB9KTsKKyAgICB9KTsKKworICAgIGNvbnRleHQoJ3NlbGVjdGVk IHRyZWUgbm9kZSBoYXMgbm8gZGF0YScsICgpID0+IHsKKyAgICAgIGJlZm9yZUVhY2goKCkgPT4g eworICAgICAgICBwZ0Jyb3dzZXIudHJlZU1lbnUuc2VsZWN0Tm9kZShub0RhdGFOb2RlLmRvbU5v ZGUpOworICAgICAgfSk7CisKKyAgICAgIGl0KCdkb2VzIG5vdCBjcmVhdGUgYSBiYWNrZm9ybSBk aWFsb2cnLCAoKSA9PiB7CisgICAgICAgIHJlc3RvcmVEaWFsb2dXcmFwcGVyLnByZXBhcmUoKTsK KyAgICAgICAgZXhwZWN0KGJhY2tmb3JtLkRpYWxvZykubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTsK KyAgICAgIH0pOworCisgICAgICBpdCgnZGlzYWJsZXMgdGhlIGJ1dHRvbiAic3VibWl0IGJ1dHRv biIgdW50aWwgYSBmaWxlbmFtZSBpcyBzZWxlY3RlZCcsICgpID0+IHsKKyAgICAgICAgcmVzdG9y ZURpYWxvZ1dyYXBwZXIucHJlcGFyZSgpOworICAgICAgICBleHBlY3QocmVzdG9yZURpYWxvZ1dy YXBwZXIuX19pbnRlcm5hbC5idXR0b25zWzJdLmVsZW1lbnQuZGlzYWJsZWQpLnRvQmUodHJ1ZSk7 CisgICAgICB9KTsKKyAgICB9KTsKKworICAgIGNvbnRleHQoJ3RyZWUgZWxlbWVudCBpcyBzZWxl Y3RlZCcsICgpID0+IHsKKyAgICAgIGxldCB0cmVlSGllcmFyY2h5SW5mb3JtYXRpb247CisgICAg ICBsZXQgZGlhbG9nU3B5OworICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgIHRyZWVI aWVyYXJjaHlJbmZvcm1hdGlvbiA9IHsKKyAgICAgICAgICBzZXJ2ZXI6IHsKKyAgICAgICAgICAg IF90eXBlOiAnc2VydmVyJywKKyAgICAgICAgICAgIF9pZDogMTAsCisgICAgICAgICAgICBwcmlv cml0eTogMCwKKyAgICAgICAgICAgIGxhYmVsOiAnc29tZS10cmVlLWxhYmVsJywKKyAgICAgICAg ICB9LAorICAgICAgICB9OworICAgICAgICBwZ0Jyb3dzZXIudHJlZU1lbnUuc2VsZWN0Tm9kZShz ZXJ2ZXJUcmVlTm9kZS5kb21Ob2RlKTsKKyAgICAgICAgcGdCcm93c2VyLk5vZGVzWydzZXJ2ZXIn XS5nZXRUcmVlTm9kZUhpZXJhcmNoeS5hbmQKKyAgICAgICAgICAucmV0dXJuVmFsdWUodHJlZUhp ZXJhcmNoeUluZm9ybWF0aW9uKTsKKyAgICAgICAgZGlhbG9nU3B5ID0gamFzbWluZS5jcmVhdGVT cHlPYmooJ25ld1ZpZXcnLCBbJ3JlbmRlciddKTsKKyAgICAgICAgZGlhbG9nU3B5LiRlbCA9IGph c21pbmUuY3JlYXRlU3B5T2JqKCckZWwnLCBbJ2ZpbmQnLCAnYXR0ciddKTsKKyAgICAgICAgZGlh bG9nU3B5Lm1vZGVsID0gamFzbWluZS5jcmVhdGVTcHlPYmooJ21vZGVsJywgWydvbiddKTsKKyAg ICAgICAgZGlhbG9nU3B5LiRlbC5maW5kLmFuZC5yZXR1cm5WYWx1ZShbXSk7CisKKyAgICAgICAg YmFja2Zvcm0uRGlhbG9nLmFuZC5yZXR1cm5WYWx1ZShkaWFsb2dTcHkpOworICAgICAgfSk7CisK KyAgICAgIGl0KCdjcmVhdGVzIGEgYmFja2Zvcm0gZGlhbG9nIGFuZCBkaXNwbGF5cyBpdCcsICgp ID0+IHsKKyAgICAgICAgcmVzdG9yZURpYWxvZ1dyYXBwZXIucHJlcGFyZSgpOworICAgICAgICBl eHBlY3QoYmFja2Zvcm0uRGlhbG9nKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7CisgICAgICAgICAg ZWw6IHJlc3RvcmVKUXVlcnlDb250YWluZXJTcHksCisgICAgICAgICAgbW9kZWw6IGdlbmVyYXRl ZFJlc3RvcmVNb2RlbCwKKyAgICAgICAgICBzY2hlbWE6IHZpZXdTY2hlbWEsCisgICAgICAgIH0p OworCisgICAgICAgIGV4cGVjdChkaWFsb2dTcHkucmVuZGVyKS50b0hhdmVCZWVuQ2FsbGVkKCk7 CisgICAgICB9KTsKKworICAgICAgaXQoJ2FkZCBhbGVydGlmeSBjbGFzc2VzIHRvIHJlc3RvcmUg bm9kZSBjaGlsZG5vZGUnLCAoKSA9PiB7CisgICAgICAgIHJlc3RvcmVEaWFsb2dXcmFwcGVyLnBy ZXBhcmUoKTsKKyAgICAgICAgZXhwZWN0KHJlc3RvcmVOb2RlQ2hpbGROb2RlU3B5LmFkZENsYXNz KQorICAgICAgICAgIC50b0hhdmVCZWVuQ2FsbGVkV2l0aCgnYWxlcnRpZnlfdG9vbHNfZGlhbG9n X3Byb3BlcnRpZXMgb2JqX3Byb3BlcnRpZXMnKTsKKyAgICAgIH0pOworCisgICAgICBpdCgnZGlz YWJsZXMgdGhlIGJ1dHRvbiBzdWJtaXQgYnV0dG9uIHVudGlsIGEgZmlsZW5hbWUgaXMgc2VsZWN0 ZWQnLCAoKSA9PiB7CisgICAgICAgIHJlc3RvcmVEaWFsb2dXcmFwcGVyLnByZXBhcmUoKTsKKyAg ICAgICAgZXhwZWN0KHJlc3RvcmVOb2RlLl9faW50ZXJuYWwuYnV0dG9uc1syXS5lbGVtZW50LmRp c2FibGVkKS50b0JlKHRydWUpOworICAgICAgfSk7CisKKyAgICAgIGl0KCdnZW5lcmF0ZXMgYSBu ZXcgcmVzdG9yZSBtb2RlbCcsICgpID0+IHsKKyAgICAgICAgcmVzdG9yZURpYWxvZ1dyYXBwZXIu cHJlcGFyZSgpOworICAgICAgICBleHBlY3QoZGlhbG9nTW9kZWxLbGFzc1NweSkudG9IYXZlQmVl bkNhbGxlZFdpdGgoCisgICAgICAgICAge25vZGVfZGF0YTogcGdCcm93c2VyLk5vZGVzWydzZXJ2 ZXInXX0sCisgICAgICAgICAge25vZGVfaW5mbzogdHJlZUhpZXJhcmNoeUluZm9ybWF0aW9ufQor ICAgICAgICApOworICAgICAgfSk7CisKKyAgICAgIGl0KCdhZGQgdGhlIG5ldyBkaWFsb2cgdG8g dGhlIHJlc3RvcmUgbm9kZSBIVE1MJywgKCkgPT4geworICAgICAgICByZXN0b3JlRGlhbG9nV3Jh cHBlci5wcmVwYXJlKCk7CisgICAgICAgIGV4cGVjdChyZXN0b3JlTm9kZS5lbGVtZW50cy5jb250 ZW50LmFwcGVuZENoaWxkKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChyZXN0b3JlSlF1ZXJ5Q29udGFp bmVyU3B5KTsKKyAgICAgIH0pOworICAgIH0pOworICB9KTsKKworICBkZXNjcmliZSgnb25CdXR0 b25DbGlja2VkJywgKCkgPT4geworICAgIGxldCBuZXR3b3JrTW9jazsKKworICAgIGJlZm9yZUVh Y2goKCkgPT4geworICAgICAgcGdCcm93c2VyLnNob3dIZWxwID0gamFzbWluZS5jcmVhdGVTcHko J3Nob3dIZWxwJyk7CisgICAgICBuZXR3b3JrTW9jayA9IG5ldyBNb2NrQWRhcHRlcihheGlvcyk7 CisgICAgICBhbGVydGlmeVNweSA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCdhbGVydGlmeScsIFsn c3VjY2VzcycsICdhbGVydCddKTsKKyAgICAgIHJlc3RvcmVEaWFsb2dXcmFwcGVyID0gbmV3IFJl c3RvcmVEaWFsb2dXcmFwcGVyKAorICAgICAgICAnPGRpdiBjbGFzcz1cJ3Jlc3RvcmVfZGlhbG9n XCc+PC9kaXY+JywKKyAgICAgICAgJ3Jlc3RvcmVEaWFsb2dUaXRsZScsCisgICAgICAgICdyZXN0 b3JlJywKKyAgICAgICAganF1ZXJ5U3B5LAorICAgICAgICBwZ0Jyb3dzZXIsCisgICAgICAgIGFs ZXJ0aWZ5U3B5LAorICAgICAgICBkaWFsb2dNb2RlbEtsYXNzU3B5LAorICAgICAgICBiYWNrZm9y bQorICAgICAgKTsKKyAgICAgIHJlc3RvcmVEaWFsb2dXcmFwcGVyID0gT2JqZWN0LmFzc2lnbihy ZXN0b3JlRGlhbG9nV3JhcHBlciwgcmVzdG9yZU5vZGUpOworCisgICAgfSk7CisKKyAgICBhZnRl ckVhY2goZnVuY3Rpb24gKCkgeworICAgICAgbmV0d29ya01vY2sucmVzdG9yZSgpOworICAgIH0p OworCisgICAgY29udGV4dCgnZGlhbG9nIGhlbHAgYnV0dG9uIHdhcyBwcmVzc2VkJywgKCkgPT4g eworICAgICAgbGV0IG5ldHdvcmtDYWxsZWQ7CisgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAg ICAgICAgbmV0d29ya0NhbGxlZCA9IGZhbHNlOworICAgICAgICBwZ0Jyb3dzZXIudHJlZU1lbnUu c2VsZWN0Tm9kZShzZXJ2ZXJUcmVlTm9kZS5kb21Ob2RlKTsKKyAgICAgICAgbmV0d29ya01vY2su b25BbnkoLy4rLykucmVwbHkoKCkgPT4geworICAgICAgICAgIG5ldHdvcmtDYWxsZWQgPSB0cnVl OworICAgICAgICAgIHJldHVybiBbMjAwLCB7fV07CisgICAgICAgIH0pOworCisgICAgICAgIGNv bnN0IGV2ZW50ID0geworICAgICAgICAgIGJ1dHRvbjogeworICAgICAgICAgICAgZWxlbWVudDog eworICAgICAgICAgICAgICBuYW1lOiAnZGlhbG9nX2hlbHAnLAorICAgICAgICAgICAgICBnZXRB dHRyaWJ1dGU6IChhdHRyaWJ1dGVOYW1lKSA9PiB7CisgICAgICAgICAgICAgICAgaWYgKGF0dHJp YnV0ZU5hbWUgPT09ICd1cmwnKSB7CisgICAgICAgICAgICAgICAgICByZXR1cm4gJ2h0dHA6Ly9z b21ldXJsJzsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGF0dHJpYnV0ZU5hbWUgPT09ICds YWJlbCcpIHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiAnc29tZSBsYWJlbCc7CisgICAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgfSwKKyAgICAgICAgICB9 LAorICAgICAgICB9OworICAgICAgICByZXN0b3JlRGlhbG9nV3JhcHBlci5jYWxsYmFjayhldmVu dCk7CisgICAgICB9KTsKKworICAgICAgaXQoJ2Rpc3BsYXlzIGhlbHAgZm9yIGRpYWxvZycsICgp ID0+IHsKKyAgICAgICAgZXhwZWN0KHBnQnJvd3Nlci5zaG93SGVscCkudG9IYXZlQmVlbkNhbGxl ZFdpdGgoCisgICAgICAgICAgJ2RpYWxvZ19oZWxwJywKKyAgICAgICAgICAnaHR0cDovL3NvbWV1 cmwnLAorICAgICAgICAgIHBnQnJvd3Nlci5Ob2Rlc1snc2VydmVyJ10sCisgICAgICAgICAgc2Vy dmVyVHJlZU5vZGUsCisgICAgICAgICAgJ3NvbWUgbGFiZWwnCisgICAgICAgICk7CisgICAgICB9 KTsKKworICAgICAgaXQoJ2RvZXMgbm90IHN0YXJ0IHRoZSByZXN0b3JlJywgKCkgPT4geworICAg ICAgICBleHBlY3QobmV0d29ya0NhbGxlZCkudG9CZShmYWxzZSk7CisgICAgICB9KTsKKyAgICB9 KTsKKworICAgIGNvbnRleHQoJ29iamVjdCBoZWxwIGJ1dHRvbiB3YXMgcHJlc3NlZCcsICgpID0+ IHsKKyAgICAgIGxldCBuZXR3b3JrQ2FsbGVkOworICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7Cisg ICAgICAgIG5ldHdvcmtDYWxsZWQgPSBmYWxzZTsKKyAgICAgICAgcGdCcm93c2VyLnRyZWVNZW51 LnNlbGVjdE5vZGUoc2VydmVyVHJlZU5vZGUuZG9tTm9kZSk7CisgICAgICAgIG5ldHdvcmtNb2Nr Lm9uQW55KC8uKy8pLnJlcGx5KCgpID0+IHsKKyAgICAgICAgICBuZXR3b3JrQ2FsbGVkID0gdHJ1 ZTsKKyAgICAgICAgICByZXR1cm4gWzIwMCwge31dOworICAgICAgICB9KTsKKworICAgICAgICBj b25zdCBldmVudCA9IHsKKyAgICAgICAgICBidXR0b246IHsKKyAgICAgICAgICAgIGVsZW1lbnQ6 IHsKKyAgICAgICAgICAgICAgbmFtZTogJ29iamVjdF9oZWxwJywKKyAgICAgICAgICAgICAgZ2V0 QXR0cmlidXRlOiAoYXR0cmlidXRlTmFtZSkgPT4geworICAgICAgICAgICAgICAgIGlmIChhdHRy aWJ1dGVOYW1lID09PSAndXJsJykgeworICAgICAgICAgICAgICAgICAgcmV0dXJuICdodHRwOi8v c29tZXVybCc7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhdHRyaWJ1dGVOYW1lID09PSAn bGFiZWwnKSB7CisgICAgICAgICAgICAgICAgICByZXR1cm4gJ3NvbWUgbGFiZWwnOworICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAg fSwKKyAgICAgICAgfTsKKyAgICAgICAgcmVzdG9yZURpYWxvZ1dyYXBwZXIuY2FsbGJhY2soZXZl bnQpOworICAgICAgfSk7CisKKyAgICAgIGl0KCdkaXNwbGF5cyBoZWxwIGZvciBkaWFsb2cnLCAo KSA9PiB7CisgICAgICAgIGV4cGVjdChwZ0Jyb3dzZXIuc2hvd0hlbHApLnRvSGF2ZUJlZW5DYWxs ZWRXaXRoKAorICAgICAgICAgICdvYmplY3RfaGVscCcsCisgICAgICAgICAgJ2h0dHA6Ly9zb21l dXJsJywKKyAgICAgICAgICBwZ0Jyb3dzZXIuTm9kZXNbJ3NlcnZlciddLAorICAgICAgICAgIHNl cnZlclRyZWVOb2RlLAorICAgICAgICAgICdzb21lIGxhYmVsJworICAgICAgICApOworICAgICAg fSk7CisKKyAgICAgIGl0KCdkb2VzIG5vdCBzdGFydCB0aGUgcmVzdG9yZScsICgpID0+IHsKKyAg ICAgICAgZXhwZWN0KG5ldHdvcmtDYWxsZWQpLnRvQmUoZmFsc2UpOworICAgICAgfSk7CisgICAg fSk7CisKKyAgICBjb250ZXh0KCdyZXN0b3JlIGJ1dHRvbiB3YXMgcHJlc3NlZCcsICgpID0+IHsK KyAgICAgIGxldCBuZXR3b3JrQ2FsbGVkOworICAgICAgbGV0IGV2ZW50OworCisgICAgICBjb250 ZXh0KCdubyB0cmVlIG5vZGUgaXMgc2VsZWN0ZWQnLCAoKSA9PiB7CisgICAgICAgIGJlZm9yZUVh Y2goKCkgPT4geworICAgICAgICAgIG5ldHdvcmtDYWxsZWQgPSBmYWxzZTsKKyAgICAgICAgICBu ZXR3b3JrTW9jay5vbkFueSgvLisvKS5yZXBseSgoKSA9PiB7CisgICAgICAgICAgICBuZXR3b3Jr Q2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBbMjAwLCB7fV07CisgICAgICAgICAg fSk7CisgICAgICAgICAgZXZlbnQgPSB7CisgICAgICAgICAgICBidXR0b246IHsKKyAgICAgICAg ICAgICAgJ2RhdGEtYnRuLW5hbWUnOiAncmVzdG9yZScsCisgICAgICAgICAgICAgIGVsZW1lbnQ6 IHsKKyAgICAgICAgICAgICAgICBnZXRBdHRyaWJ1dGU6ICgpID0+IHsKKyAgICAgICAgICAgICAg ICAgIHJldHVybiAnaHR0cDovL3NvbWV1cmwnOworICAgICAgICAgICAgICAgIH0sCisgICAgICAg ICAgICAgIH0sCisgICAgICAgICAgICB9LAorICAgICAgICAgIH07CisgICAgICAgIH0pOworCisg ICAgICAgIGl0KCdkb2VzIG5vdCBzdGFydCB0aGUgcmVzdG9yZScsICgpID0+IHsKKyAgICAgICAg ICByZXN0b3JlRGlhbG9nV3JhcHBlci5jYWxsYmFjayhldmVudCk7CisgICAgICAgICAgZXhwZWN0 KG5ldHdvcmtDYWxsZWQpLnRvQmUoZmFsc2UpOworICAgICAgICB9KTsKKyAgICAgIH0pOworCisg ICAgICBjb250ZXh0KCd0cmVlIG5vZGUgc2VsZWN0ZWQgaGFzIG5vIGRhdGEnLCAoKSA9PiB7Cisg ICAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICAgIG5ldHdvcmtDYWxsZWQgPSBmYWxz ZTsKKyAgICAgICAgICBuZXR3b3JrTW9jay5vbkFueSgvLisvKS5yZXBseSgoKSA9PiB7CisgICAg ICAgICAgICBuZXR3b3JrQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBbMjAwLCB7 fV07CisgICAgICAgICAgfSk7CisgICAgICAgICAgZXZlbnQgPSB7CisgICAgICAgICAgICBidXR0 b246IHsKKyAgICAgICAgICAgICAgJ2RhdGEtYnRuLW5hbWUnOiAncmVzdG9yZScsCisgICAgICAg ICAgICAgIGVsZW1lbnQ6IHsKKyAgICAgICAgICAgICAgICBnZXRBdHRyaWJ1dGU6ICgpID0+IHsK KyAgICAgICAgICAgICAgICAgIHJldHVybiAnaHR0cDovL3NvbWV1cmwnOworICAgICAgICAgICAg ICAgIH0sCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICB9LAorICAgICAgICAgIH07Cisg ICAgICAgICAgcGdCcm93c2VyLnRyZWVNZW51LnNlbGVjdE5vZGUobm9EYXRhTm9kZS5kb21Ob2Rl KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ2RvZXMgbm90IHN0YXJ0IHRoZSByZXN0b3Jl JywgKCkgPT4geworICAgICAgICAgIHJlc3RvcmVEaWFsb2dXcmFwcGVyLmNhbGxiYWNrKGV2ZW50 KTsKKyAgICAgICAgICBleHBlY3QobmV0d29ya0NhbGxlZCkudG9CZShmYWxzZSk7CisgICAgICAg IH0pOworICAgICAgfSk7CisKKyAgICAgIGNvbnRleHQoJ3RyZWUgbm9kZSBzZWxlY3QgaGFzIGRh dGEnLCAoKSA9PiB7CisKKyAgICAgICAgbGV0IGRhdGFiYXNlVHJlZU5vZGU7CisKKyAgICAgICAg YmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgICAgZGF0YWJhc2VUcmVlTm9kZSA9IHBnQnJvd3Nl ci50cmVlTWVudS5hZGROZXdOb2RlKCdsZXZlbDMuMScsIHsKKyAgICAgICAgICAgIF90eXBlOiAn ZGF0YWJhc2UnLAorICAgICAgICAgICAgX2lkOiAxMCwKKyAgICAgICAgICAgIF9sYWJlbDogJ3Nv bWUtZGF0YWJhc2UtbGFiZWwnLAorICAgICAgICAgIH0sIFt7aWQ6ICdsZXZlbDMuMSd9XSk7Cisg ICAgICAgICAgcGdCcm93c2VyLnRyZWVNZW51LmFkZENoaWxkKHNlcnZlclRyZWVOb2RlLCBkYXRh YmFzZVRyZWVOb2RlKTsKKyAgICAgICAgICBwZ0Jyb3dzZXIuTm9kZXMuZGF0YWJhc2UgPSB7Cisg ICAgICAgICAgICBoYXNJZDogdHJ1ZSwKKyAgICAgICAgICAgIF9sYWJlbDogJ3NvbWUtZGF0YWJh c2UtbGFiZWwnLAorICAgICAgICAgIH07CisgICAgICAgICAgbGV0IGZha2VNb2RlbCA9IG5ldyBG YWtlTW9kZWwoKTsKKyAgICAgICAgICBmYWtlTW9kZWwuc2V0KCdzb21lLWtleScsICdzb21lLXZh bHVlJyk7CisgICAgICAgICAgcmVzdG9yZURpYWxvZ1dyYXBwZXIudmlldyA9IHsKKyAgICAgICAg ICAgIG1vZGVsOiBmYWtlTW9kZWwsCisgICAgICAgICAgfTsKKyAgICAgICAgICBwZ0Jyb3dzZXIu dHJlZU1lbnUuc2VsZWN0Tm9kZShkYXRhYmFzZVRyZWVOb2RlLmRvbU5vZGUpOworICAgICAgICAg IHBnQnJvd3Nlci5FdmVudHMgPSBqYXNtaW5lLmNyZWF0ZVNweU9iaigncGdCcm93c2VyRXZlbnRz U3B5JywgWyd0cmlnZ2VyJ10pOworICAgICAgICAgIGV2ZW50ID0geworICAgICAgICAgICAgYnV0 dG9uOiB7CisgICAgICAgICAgICAgICdkYXRhLWJ0bi1uYW1lJzogJ3Jlc3RvcmUnLAorICAgICAg ICAgICAgICBlbGVtZW50OiB7CisgICAgICAgICAgICAgICAgZ2V0QXR0cmlidXRlOiAoKSA9PiB7 CisgICAgICAgICAgICAgICAgICByZXR1cm4gJ2h0dHA6Ly9zb21ldXJsJzsKKyAgICAgICAgICAg ICAgICB9LAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgfSwKKyAgICAgICAgICB9Owor ICAgICAgICB9KTsKKyAgICAgICAgY29udGV4dCgncmVzdG9yZSBqb2IgY3JlYXRlZCBzdWNjZXNz ZnVsbHknLCAoKSA9PiB7CisgICAgICAgICAgbGV0IGRhdGFTZW50VG9TZXJ2ZXI7CisgICAgICAg ICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgICAgICBuZXR3b3JrTW9jay5vblBvc3QoJy9y ZXN0b3JlL2pvYi8xMCcpLnJlcGx5KChyZXF1ZXN0KSA9PiB7CisgICAgICAgICAgICAgIGRhdGFT ZW50VG9TZXJ2ZXIgPSByZXF1ZXN0LmRhdGE7CisgICAgICAgICAgICAgIHJldHVybiBbMjAwLCB7 fV07CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICB9KTsKKworICAgICAgICAgIGl0KCdjcmVh dGUgYW4gc3VjY2VzcyBhbGVydCBib3gnLCAoZG9uZSkgPT4geworICAgICAgICAgICAgcmVzdG9y ZURpYWxvZ1dyYXBwZXIuY2FsbGJhY2soZXZlbnQpOworICAgICAgICAgICAgc2V0VGltZW91dCgo KSA9PiB7CisgICAgICAgICAgICAgIGV4cGVjdChhbGVydGlmeVNweS5zdWNjZXNzKS50b0hhdmVC ZWVuQ2FsbGVkV2l0aCgKKyAgICAgICAgICAgICAgICAnUmVzdG9yZSBqb2IgY3JlYXRlZC4nLAor ICAgICAgICAgICAgICAgIDUKKyAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgZG9uZSgp OworICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgfSk7CisKKyAgICAgICAgICBpdCgndHJp Z2dlciBiYWNrZ3JvdW5kIHByb2Nlc3MnLCAoZG9uZSkgPT4geworICAgICAgICAgICAgcmVzdG9y ZURpYWxvZ1dyYXBwZXIuY2FsbGJhY2soZXZlbnQpOworICAgICAgICAgICAgc2V0VGltZW91dCgo KSA9PiB7CisgICAgICAgICAgICAgIGV4cGVjdChwZ0Jyb3dzZXIuRXZlbnRzLnRyaWdnZXIpLnRv SGF2ZUJlZW5DYWxsZWRXaXRoKAorICAgICAgICAgICAgICAgICdwZ2FkbWluLWJncHJvY2Vzczpj cmVhdGVkJywKKyAgICAgICAgICAgICAgICByZXN0b3JlRGlhbG9nV3JhcHBlcgorICAgICAgICAg ICAgICApOworICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICB9LCAwKTsKKyAgICAg ICAgICB9KTsKKworICAgICAgICAgIGl0KCdzZW5kIGNvcnJlY3QgZGF0YSB0byBzZXJ2ZXInLCAo ZG9uZSkgPT4geworICAgICAgICAgICAgcmVzdG9yZURpYWxvZ1dyYXBwZXIuY2FsbGJhY2soZXZl bnQpOworICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICAgIGV4cGVj dChKU09OLnBhcnNlKGRhdGFTZW50VG9TZXJ2ZXIpKS50b0VxdWFsKHsKKyAgICAgICAgICAgICAg ICAnc29tZS1rZXknOiAnc29tZS12YWx1ZScsCisgICAgICAgICAgICAgICAgJ2RhdGFiYXNlJzog J3NvbWUtZGF0YWJhc2UtbGFiZWwnLAorICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAg ZG9uZSgpOworICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgfSk7CisgICAgICAgIH0pOwor CisgICAgICAgIGNvbnRleHQoJ2Vycm9yIGNyZWF0aW5nIHJlc3RvcmUgam9iJywgKCkgPT4gewor ICAgICAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICAgICAgbmV0d29ya01vY2sub25Q b3N0KCcvcmVzdG9yZS9qb2IvMTAnKS5yZXBseSgoKSA9PiB7CisgICAgICAgICAgICAgIHJldHVy biBbNDAwLCB7fV07CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICB9KTsKKworICAgICAgICAg IGl0KCdjcmVhdGVzIGFuIGFsZXJ0IGJveCcsIChkb25lKSA9PiB7CisgICAgICAgICAgICByZXN0 b3JlRGlhbG9nV3JhcHBlci5jYWxsYmFjayhldmVudCk7CisgICAgICAgICAgICBzZXRUaW1lb3V0 KCgpID0+IHsKKyAgICAgICAgICAgICAgZXhwZWN0KGFsZXJ0aWZ5U3B5LmFsZXJ0KS50b0hhdmVC ZWVuQ2FsbGVkV2l0aCgKKyAgICAgICAgICAgICAgICAnUmVzdG9yZSBqb2IgZmFpbGVkLicsCisg ICAgICAgICAgICAgICAgdW5kZWZpbmVkCisgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAg IGRvbmUoKTsKKyAgICAgICAgICAgIH0sIDApOworICAgICAgICAgIH0pOworICAgICAgICB9KTsK KyAgICAgIH0pOworICAgIH0pOworICB9KTsKKworICBkZXNjcmliZSgnc2V0RXh0cmFQYXJhbWV0 ZXJzJywgKCkgPT4geworICAgIGxldCBzZWxlY3RlZE5vZGU7CisgICAgbGV0IHRyZWVJbmZvOwor ICAgIGxldCBtb2RlbDsKKworICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgcmVzdG9yZURp YWxvZ1dyYXBwZXIgPSBuZXcgUmVzdG9yZURpYWxvZ1dyYXBwZXIoCisgICAgICAgICc8ZGl2IGNs YXNzPVwncmVzdG9yZV9kaWFsb2dcJz48L2Rpdj4nLAorICAgICAgICAncmVzdG9yZURpYWxvZ1Rp dGxlJywKKyAgICAgICAgJ3Jlc3RvcmUnLAorICAgICAgICBqcXVlcnlTcHksCisgICAgICAgIHBn QnJvd3NlciwKKyAgICAgICAgYWxlcnRpZnlTcHksCisgICAgICAgIGRpYWxvZ01vZGVsS2xhc3NT cHksCisgICAgICAgIGJhY2tmb3JtCisgICAgICApOworCisgICAgICBtb2RlbCA9IG5ldyBGYWtl TW9kZWwoKTsKKyAgICAgIHJlc3RvcmVEaWFsb2dXcmFwcGVyLnZpZXcgPSB7CisgICAgICAgIG1v ZGVsOiBtb2RlbCwKKyAgICAgIH07CisgICAgfSk7CisKKyAgICBjb250ZXh0KCd3aGVuIGl0IGlz IGEgY3VzdG9tIG1vZGVsJywgKCkgPT4geworICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAg ICAgIG1vZGVsLnNldCgnY3VzdG9tJywgdHJ1ZSk7CisgICAgICAgIHRyZWVJbmZvID0geworICAg ICAgICAgICdkYXRhYmFzZSc6IHsKKyAgICAgICAgICAgICdfbGFiZWwnOiAnc29tZS1kYXRhYmFz ZS1sYWJlbCcsCisgICAgICAgICAgfSwKKyAgICAgICAgfTsKKyAgICAgIH0pOworCisgICAgICBp dCgnb25seSBzZXRzIHRoZSBkYXRhYmFzZScsICgpID0+IHsKKyAgICAgICAgcmVzdG9yZURpYWxv Z1dyYXBwZXIuc2V0RXh0cmFQYXJhbWV0ZXJzKHNlbGVjdGVkTm9kZSwgdHJlZUluZm8pOworICAg ICAgICBleHBlY3QobW9kZWwudG9KU09OKCkpLnRvRXF1YWwoeworICAgICAgICAgICdjdXN0b20n OiB0cnVlLAorICAgICAgICAgICdkYXRhYmFzZSc6ICdzb21lLWRhdGFiYXNlLWxhYmVsJywKKyAg ICAgICAgfSk7CisgICAgICB9KTsKKyAgICB9KTsKKworICAgIGNvbnRleHQoJ3doZW4gaXQgaXMg bm90IGEgY3VzdG9tIG1vZGVsJywgKCkgPT4geworICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7Cisg ICAgICAgIG1vZGVsLnNldCgnY3VzdG9tJywgZmFsc2UpOworICAgICAgICB0cmVlSW5mbyA9IHsK KyAgICAgICAgICAnZGF0YWJhc2UnOiB7CisgICAgICAgICAgICAnX2xhYmVsJzogJ3NvbWUtZGF0 YWJhc2UtbGFiZWwnLAorICAgICAgICAgIH0sCisgICAgICAgICAgJ3NjaGVtYSc6IHsKKyAgICAg ICAgICAgICdfbGFiZWwnOiAnc29tZS1zY2hlbWEtbGFiZWwnLAorICAgICAgICAgIH0sCisgICAg ICAgIH07CisgICAgICB9KTsKKworICAgICAgY29udGV4dCgnd2hlbiBzZWxlY3RlZCBub2RlIGlz IGEgc2NoZW1hJywgKCkgPT4geworICAgICAgICBpdCgnc2V0cyBzY2hlbWFzIG9uIHRoZSBtb2Rl bCcsICgpID0+IHsKKyAgICAgICAgICBzZWxlY3RlZE5vZGUgPSBuZXcgVHJlZU5vZGUoJ3NjaGVt YScsIHtfdHlwZTogJ3NjaGVtYScsIF9sYWJlbDogJ3NvbWUtc2NoZW1hLWxhYmVsJ30sICcnKTsK KyAgICAgICAgICByZXN0b3JlRGlhbG9nV3JhcHBlci5zZXRFeHRyYVBhcmFtZXRlcnMoc2VsZWN0 ZWROb2RlLCB0cmVlSW5mbyk7CisgICAgICAgICAgZXhwZWN0KG1vZGVsLnRvSlNPTigpKS50b0Vx dWFsKHsKKyAgICAgICAgICAgIGN1c3RvbTogZmFsc2UsCisgICAgICAgICAgICBkYXRhYmFzZTog J3NvbWUtZGF0YWJhc2UtbGFiZWwnLAorICAgICAgICAgICAgc2NoZW1hczogWydzb21lLXNjaGVt YS1sYWJlbCddLAorICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICAgIH0pOworCisgICAg ICBjb250ZXh0KCd3aGVuIHNlbGVjdGVkIG5vZGUgaXMgYSB0YWJsZScsICgpID0+IHsKKyAgICAg ICAgaXQoJ3NldHMgc2NoZW1hcyBhbmQgdGFibGUgb24gdGhlIG1vZGVsJywgKCkgPT4geworICAg ICAgICAgIHNlbGVjdGVkTm9kZSA9IG5ldyBUcmVlTm9kZSgndGFibGUnLCB7X3R5cGU6ICd0YWJs ZScsIF9sYWJlbDogJ3NvbWUtdGFibGUtbGFiZWwnfSwgJycpOworICAgICAgICAgIHJlc3RvcmVE aWFsb2dXcmFwcGVyLnNldEV4dHJhUGFyYW1ldGVycyhzZWxlY3RlZE5vZGUsIHRyZWVJbmZvKTsK KyAgICAgICAgICBleHBlY3QobW9kZWwudG9KU09OKCkpLnRvRXF1YWwoeworICAgICAgICAgICAg Y3VzdG9tOiBmYWxzZSwKKyAgICAgICAgICAgIGRhdGFiYXNlOiAnc29tZS1kYXRhYmFzZS1sYWJl bCcsCisgICAgICAgICAgICBzY2hlbWFzOiBbJ3NvbWUtc2NoZW1hLWxhYmVsJ10sCisgICAgICAg ICAgICB0YWJsZXM6IFsnc29tZS10YWJsZS1sYWJlbCddLAorICAgICAgICAgIH0pOworICAgICAg ICB9KTsKKyAgICAgIH0pOworCisgICAgICBjb250ZXh0KCd3aGVuIHNlbGVjdGVkIG5vZGUgaXMg YSBmdW5jdGlvbicsICgpID0+IHsKKyAgICAgICAgaXQoJ3NldHMgc2NoZW1hcyBhbmQgZnVuY3Rp b24gb24gdGhlIG1vZGVsJywgKCkgPT4geworICAgICAgICAgIHNlbGVjdGVkTm9kZSA9IG5ldyBU cmVlTm9kZSgnZnVuY3Rpb24nLCB7X3R5cGU6ICdmdW5jdGlvbicsIF9sYWJlbDogJ3NvbWUtZnVu Y3Rpb24tbGFiZWwnfSwgJycpOworICAgICAgICAgIHJlc3RvcmVEaWFsb2dXcmFwcGVyLnNldEV4 dHJhUGFyYW1ldGVycyhzZWxlY3RlZE5vZGUsIHRyZWVJbmZvKTsKKyAgICAgICAgICBleHBlY3Qo bW9kZWwudG9KU09OKCkpLnRvRXF1YWwoeworICAgICAgICAgICAgY3VzdG9tOiBmYWxzZSwKKyAg ICAgICAgICAgIGRhdGFiYXNlOiAnc29tZS1kYXRhYmFzZS1sYWJlbCcsCisgICAgICAgICAgICBz Y2hlbWFzOiBbJ3NvbWUtc2NoZW1hLWxhYmVsJ10sCisgICAgICAgICAgICBmdW5jdGlvbnM6IFsn c29tZS1mdW5jdGlvbi1sYWJlbCddLAorICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICAg IH0pOworCisgICAgICBjb250ZXh0KCd3aGVuIHNlbGVjdGVkIG5vZGUgaXMgYW4gaW5kZXgnLCAo KSA9PiB7CisgICAgICAgIGl0KCdzZXRzIHNjaGVtYXMgYW5kIGluZGV4IG9uIHRoZSBtb2RlbCcs ICgpID0+IHsKKyAgICAgICAgICBzZWxlY3RlZE5vZGUgPSBuZXcgVHJlZU5vZGUoJ2luZGV4Jywg e190eXBlOiAnaW5kZXgnLCBfbGFiZWw6ICdzb21lLWluZGV4LWxhYmVsJ30sICcnKTsKKyAgICAg ICAgICByZXN0b3JlRGlhbG9nV3JhcHBlci5zZXRFeHRyYVBhcmFtZXRlcnMoc2VsZWN0ZWROb2Rl LCB0cmVlSW5mbyk7CisgICAgICAgICAgZXhwZWN0KG1vZGVsLnRvSlNPTigpKS50b0VxdWFsKHsK KyAgICAgICAgICAgIGN1c3RvbTogZmFsc2UsCisgICAgICAgICAgICBkYXRhYmFzZTogJ3NvbWUt ZGF0YWJhc2UtbGFiZWwnLAorICAgICAgICAgICAgc2NoZW1hczogWydzb21lLXNjaGVtYS1sYWJl bCddLAorICAgICAgICAgICAgaW5kZXhlczogWydzb21lLWluZGV4LWxhYmVsJ10sCisgICAgICAg ICAgfSk7CisgICAgICAgIH0pOworICAgICAgfSk7CisKKyAgICAgIGNvbnRleHQoJ3doZW4gc2Vs ZWN0ZWQgbm9kZSBpcyBhIHRyaWdnZXInLCAoKSA9PiB7CisgICAgICAgIGl0KCdzZXRzIHNjaGVt YXMgYW5kIHRyaWdnZXIgb24gdGhlIG1vZGVsJywgKCkgPT4geworICAgICAgICAgIHNlbGVjdGVk Tm9kZSA9IG5ldyBUcmVlTm9kZSgndHJpZ2dlcicsIHtfdHlwZTogJ3RyaWdnZXInLCBfbGFiZWw6 ICdzb21lLXRyaWdnZXItbGFiZWwnfSwgJycpOworICAgICAgICAgIHJlc3RvcmVEaWFsb2dXcmFw cGVyLnNldEV4dHJhUGFyYW1ldGVycyhzZWxlY3RlZE5vZGUsIHRyZWVJbmZvKTsKKyAgICAgICAg ICBleHBlY3QobW9kZWwudG9KU09OKCkpLnRvRXF1YWwoeworICAgICAgICAgICAgY3VzdG9tOiBm YWxzZSwKKyAgICAgICAgICAgIGRhdGFiYXNlOiAnc29tZS1kYXRhYmFzZS1sYWJlbCcsCisgICAg ICAgICAgICBzY2hlbWFzOiBbJ3NvbWUtc2NoZW1hLWxhYmVsJ10sCisgICAgICAgICAgICB0cmln Z2VyczogWydzb21lLXRyaWdnZXItbGFiZWwnXSwKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7 CisgICAgICB9KTsKKworICAgICAgY29udGV4dCgnd2hlbiBzZWxlY3RlZCBub2RlIGlzIGEgdHJp Z2dlcl9mdW5jJywgKCkgPT4geworICAgICAgICBpdCgnc2V0cyBzY2hlbWFzIGFuZCB0cmlnZ2Vy X2Z1bmMgb24gdGhlIG1vZGVsJywgKCkgPT4geworICAgICAgICAgIHNlbGVjdGVkTm9kZSA9IG5l dyBUcmVlTm9kZSgndHJpZ2dlcl9mdW5jJywge190eXBlOiAndHJpZ2dlcl9mdW5jJywgX2xhYmVs OiAnc29tZS10cmlnZ2VyX2Z1bmMtbGFiZWwnfSwgJycpOworICAgICAgICAgIHJlc3RvcmVEaWFs b2dXcmFwcGVyLnNldEV4dHJhUGFyYW1ldGVycyhzZWxlY3RlZE5vZGUsIHRyZWVJbmZvKTsKKyAg ICAgICAgICBleHBlY3QobW9kZWwudG9KU09OKCkpLnRvRXF1YWwoeworICAgICAgICAgICAgY3Vz dG9tOiBmYWxzZSwKKyAgICAgICAgICAgIGRhdGFiYXNlOiAnc29tZS1kYXRhYmFzZS1sYWJlbCcs CisgICAgICAgICAgICBzY2hlbWFzOiBbJ3NvbWUtc2NoZW1hLWxhYmVsJ10sCisgICAgICAgICAg ICB0cmlnZ2VyX2Z1bmNzOiBbJ3NvbWUtdHJpZ2dlcl9mdW5jLWxhYmVsJ10sCisgICAgICAgICAg fSk7CisgICAgICAgIH0pOworICAgICAgfSk7CisgICAgfSk7CisgIH0pOworfSk7CmRpZmYgLS1n aXQgYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3NjaGVtYS9jYW5fZHJvcF9jaGlsZF9zcGVj LmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zY2hlbWEvY2FuX2Ryb3BfY2hpbGRfc3Bl Yy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uNDQwM2IyNzQKLS0tIC9k ZXYvbnVsbAorKysgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3NjaGVtYS9jYW5fZHJvcF9j aGlsZF9zcGVjLmpzCkBAIC0wLDAgKzEsODIgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0FkbWluIDQgLSBQ b3N0Z3JlU1FMIFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBn QWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRl ciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworaW1wb3J0IHtjYW5Ecm9wQ2hp bGR9IGZyb20gJy4uLy4uLy4uL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvc3RhdGljL2pzL2Nhbl9kcm9wX2NoaWxkJzsKK2ltcG9ydCB7VHJl ZUZha2V9IGZyb20gJy4uL3RyZWUvdHJlZV9mYWtlJzsKKworbGV0IGNvbnRleHQgPSBkZXNjcmli ZTsKKworZGVzY3JpYmUoJ2Nhbl9kcm9wX2NoaWxkJywgKCkgPT4geworCisgIGxldCBicm93c2Vy OworICBsZXQgaXRlbURhdGE7CisgIGxldCBpdGVtOworCisgIGJlZm9yZUVhY2goKCkgPT4gewor ICAgIGJyb3dzZXIgPSB7CisgICAgICB0cmVlTWVudTogbmV3IFRyZWVGYWtlKCksCisgICAgfTsK KyAgICBpdGVtID0gW107CisgICAgYnJvd3Nlci50cmVlTWVudS5hZGROZXdOb2RlKCdub2RlMScs IHtfdHlwZTogJ3NjaGVtYSd9LCBbe2lkOiAnbm9kZTEnfV0sIFtdKTsKKyAgICBicm93c2VyLnRy ZWVNZW51LmFkZE5ld05vZGUoJ25vZGUxLjEnLCB7X3R5cGU6ICdkYXRhYmFzZSd9LCBbe2lkOiAn bm9kZTEuMSd9XSwgWydub2RlMSddKTsKKyAgICBicm93c2VyLnRyZWVNZW51LmFkZE5ld05vZGUo J25vZGUyJywge190eXBlOiAnY2F0YWxvZyd9LCBbe2lkOiAnbm9kZTInfV0sIFtdKTsKKyAgICBi cm93c2VyLnRyZWVNZW51LmFkZE5ld05vZGUoJ25vZGUyLjEnLCB7X3R5cGU6ICd0YWJsZSd9LCBb e2lkOiAnbm9kZTIuMSd9XSwgWydub2RlMiddKTsKKyAgICBicm93c2VyLnRyZWVNZW51LmFkZE5l d05vZGUoJ25vZGUzJywge190eXBlOiAnZnVuY3Rpb24nfSwgW3tpZDogJ25vZGUzJ31dLCBbXSk7 CisgICAgYnJvd3Nlci50cmVlTWVudS5hZGROZXdOb2RlKCdub2RlMy4xJywge190eXBlOiAncHJv Y2VkdXJlJ30sIFt7aWQ6ICdub2RlMy4xJ31dLCBbJ25vZGUzJ10pOworICB9KTsKKworICBjb250 ZXh0KCd3aGVuIGN1cnJlbnQgbm9kZSBpcyBvZiB0aGUgdHlwZSBzY2hlbWEnLCAoKSA9PiB7Cisg ICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICBpdGVtRGF0YSA9IHsKKyAgICAgICAgX3R5cGU6 ICdzY2hlbWEnLAorICAgICAgfTsKKyAgICAgIGl0ZW0gPSBbe2lkOiAnbm9kZTEnfV07CisgICAg fSk7CisKKyAgICBpdCgncmV0dXJucyB0cnVlJywgKCkgPT4geworICAgICAgbGV0IGJvb2wgPSBj YW5Ecm9wQ2hpbGQoYnJvd3NlciwgaXRlbURhdGEsIGl0ZW0pOworICAgICAgZXhwZWN0KGJvb2wp LnRvQmUodHJ1ZSk7CisgICAgfSk7CisgIH0pOworCisgIGNvbnRleHQoJ3doZW4gYSBwYXJlbnQg b2YgdGhlIGN1cnJlbnQgbm9kZSBpcyBhIHNjaGVtYScsICgpID0+IHsKKyAgICBpdCgncmV0dXJu cyB0cnVlJywgKCkgPT4geworICAgICAgaXRlbURhdGEgPSB7CisgICAgICAgIF90eXBlOiAnZGF0 YWJhc2UnLAorICAgICAgfTsKKyAgICAgIGl0ZW0gPSBbe2lkOiAnbm9kZTEuMSd9XTsKKyAgICAg IGxldCBib29sID0gY2FuRHJvcENoaWxkKGJyb3dzZXIsIGl0ZW1EYXRhLCBpdGVtKTsKKyAgICAg IGV4cGVjdChib29sKS50b0JlKHRydWUpOworICAgIH0pOworICB9KTsKKworICBjb250ZXh0KCd3 aGVuIGEgcGFyZW50IG9mIHRoZSBjdXJyZW50IG5vZGUgaXMgYSBjYXRhbG9nJywgKCkgPT4gewor ICAgIGl0KCdyZXR1cm5zIGZhbHNlJywgKCkgPT4geworICAgICAgaXRlbURhdGE9IHsKKyAgICAg ICAgX3R5cGU6ICd0YWJsZScsCisgICAgICB9OworICAgICAgaXRlbSA9IFt7aWQ6ICdub2RlMi4x J31dOworCisgICAgICBsZXQgYm9vbCA9IGNhbkRyb3BDaGlsZChicm93c2VyLCBpdGVtRGF0YSwg aXRlbSk7CisgICAgICBleHBlY3QoYm9vbCkudG9CZShmYWxzZSk7CisgICAgfSk7CisgIH0pOwor CisgIGNvbnRleHQoJ3doZW4gYSBwYXJlbnQgb2YgdGhlIGN1cnJlbnQgbm9kZSBpcyBub3QgY2F0 YWxvZyBub3Igc2NoZW1hJywgKCkgPT4geworICAgIGl0KCdyZXR1cm5zIHRydWUnLCAoKSA9PiB7 CisgICAgICBpdGVtRGF0YSA9IHsKKyAgICAgICAgX3R5cGU6ICdwcm9jZWR1cmUnLAorICAgICAg fTsKKyAgICAgIGl0ZW0gPSBbe2lkOiAnbm9kZTMuMSd9XTsKKworICAgICAgbGV0IGJvb2wgPSBj YW5Ecm9wQ2hpbGQoYnJvd3NlciwgaXRlbURhdGEsIGl0ZW0pOworICAgICAgZXhwZWN0KGJvb2wp LnRvQmUodHJ1ZSk7CisgICAgfSk7CisgIH0pOworfSk7CmRpZmYgLS1naXQgYS93ZWIvcmVncmVz c2lvbi9qYXZhc2NyaXB0L3NxbGVkaXRvci9maWx0ZXJfZGlhbG9nX3NwZWNzLmpzIGIvd2ViL3Jl Z3Jlc3Npb24vamF2YXNjcmlwdC9zcWxlZGl0b3IvZmlsdGVyX2RpYWxvZ19zcGVjcy5qcwppbmRl eCBlZDc3ZGZmNS4uY2VhNzVlNmIgMTAwNjQ0Ci0tLSBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3Jp cHQvc3FsZWRpdG9yL2ZpbHRlcl9kaWFsb2dfc3BlY3MuanMKKysrIGIvd2ViL3JlZ3Jlc3Npb24v amF2YXNjcmlwdC9zcWxlZGl0b3IvZmlsdGVyX2RpYWxvZ19zcGVjcy5qcwpAQCAtNywxMCArNyw4 IEBACiAvLwogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIGltcG9ydCBmaWx0ZXJEaWFsb2cgZnJvbSAnc291 cmNlcy9zcWxlZGl0b3IvZmlsdGVyX2RpYWxvZyc7Ci0vLyBpbXBvcnQgZmlsdGVyRGlhbG9nTW9k ZWwgZnJvbSAnc291cmNlcy9zcWxlZGl0b3IvZmlsdGVyX2RpYWxvZ19tb2RlbCc7CiAKIGRlc2Ny aWJlKCdmaWx0ZXJEaWFsb2cnLCAoKSA9PiB7Ci0gIGphc21pbmUuY3JlYXRlU3B5KCdzcWxFZGl0 b3JDb250cm9sbGVyJyk7CiAgIGRlc2NyaWJlKCdmaWx0ZXJEaWFsb2cnLCAoKSA9PiB7CiAgICAg ZGVzY3JpYmUoJ3doZW4gdXNpbmcgZmlsdGVyIGRpYWxvZycsICgpID0+IHsKICAgICAgIGJlZm9y ZUVhY2goKCkgPT4gewpkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC90YWJs ZS9lbmFibGVfZGlzYWJsZV90cmlnZ2Vyc19zcGVjLmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNj cmlwdC90YWJsZS9lbmFibGVfZGlzYWJsZV90cmlnZ2Vyc19zcGVjLmpzCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwLi43YmRkMjg0ZQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9y ZWdyZXNzaW9uL2phdmFzY3JpcHQvdGFibGUvZW5hYmxlX2Rpc2FibGVfdHJpZ2dlcnNfc3BlYy5q cwpAQCAtMCwwICsxLDI3MSBAQAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwg VG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZl bG9wbWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0 Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCitpbXBvcnQgTW9ja0FkYXB0ZXIgZnJvbSAnYXhp b3MtbW9jay1hZGFwdGVyJzsKK2ltcG9ydCBheGlvcyBmcm9tICdheGlvcy9pbmRleCc7CitpbXBv cnQgeworICBlbmFibGVUcmlnZ2VycywKKyAgZGlzYWJsZVRyaWdnZXJzLAorfSBmcm9tICcuLi8u Li8uLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3RhYmxlcy9zdGF0aWMvanMvZW5hYmxlX2Rpc2FibGVfdHJpZ2dlcnMnOworaW1wb3J0IHtU cmVlRmFrZX0gZnJvbSAnLi4vdHJlZS90cmVlX2Zha2UnOworaW1wb3J0IHtUcmVlTm9kZX0gZnJv bSAnLi4vLi4vLi4vcGdhZG1pbi9zdGF0aWMvanMvdHJlZS90cmVlJzsKKworZGVzY3JpYmUoJyNl bmFibGVUcmlnZ2VycycsICgpID0+IHsKKyAgbGV0IG5ldHdvcmtNb2NrOworICBsZXQgdHJlZTsK KyAgbGV0IGFsZXJ0aWZ5OworICBsZXQgZ2VuZXJhdGVVcmxTcHk7CisgIGJlZm9yZUVhY2goKCkg PT4geworICAgIG5ldHdvcmtNb2NrID0gbmV3IE1vY2tBZGFwdGVyKGF4aW9zKTsKKyAgICB0cmVl ID0gbmV3IFRyZWVGYWtlKCk7CisgICAgY29uc3Qgc2VydmVyMSA9IHRyZWUuYWRkTmV3Tm9kZSgn c2VydmVyMScsIHtfaWQ6IDF9LCBbJzxsaT5zZXJ2ZXIxPC9saT4nXSk7CisgICAgY29uc3QgZGF0 YWJhc2UxID0gdHJlZS5hZGROZXdOb2RlKCdkYXRhYmFzZTEnLCB7X3R5cGU6ICdkYXRhYmFzZSd9 LCBbJzxsaT5kYXRhYmFzZTE8L2xpPiddKTsKKyAgICB0cmVlLmFkZENoaWxkKHNlcnZlcjEsIGRh dGFiYXNlMSk7CisKKyAgICBjb25zdCBzY2hlbWExID0gdHJlZS5hZGROZXdOb2RlKCdzY2hlbWEx Jywge190eXBlOiAnc2NoZW1hJ30sIFsnPGxpPnNjaGVtYTE8L2xpPiddKTsKKyAgICB0cmVlLmFk ZENoaWxkKGRhdGFiYXNlMSwgc2NoZW1hMSk7CisKKyAgICBjb25zdCB0YWJsZTEgPSB0cmVlLmFk ZE5ld05vZGUoJ3RhYmxlMScsIHtfdHlwZTogJ3RhYmxlJ30sIFsnPGxpPnRhYmxlMTwvbGk+J10p OworICAgIHRyZWUuYWRkQ2hpbGQoc2NoZW1hMSwgdGFibGUxKTsKKworICAgIGNvbnN0IGNvbHVt bjEgPSB0cmVlLmFkZE5ld05vZGUoJ2NvbHVtbjEnLCB7X3R5cGU6ICdjb2x1bW4nfSwgWyc8bGk+ Y29sdW1uMTwvbGk+J10pOworICAgIHRyZWUuYWRkQ2hpbGQodGFibGUxLCBjb2x1bW4xKTsKKwor ICAgIGNvbnN0IHRhYmxlTm9EYXRhID0gdHJlZS5hZGROZXdOb2RlKCd0YWJsZS1uby1kYXRhJywg dW5kZWZpbmVkLCBbJzxsaT50YWJsZS1uby1kYXRhPC9saT4nXSk7CisgICAgdHJlZS5hZGRDaGls ZChzY2hlbWExLCB0YWJsZU5vRGF0YSk7CisKKyAgICBhbGVydGlmeSA9IGphc21pbmUuY3JlYXRl U3B5T2JqKCdhbGVydGlmeScsIFsnc3VjY2VzcycsICdlcnJvciddKTsKKyAgICBnZW5lcmF0ZVVy bFNweSA9IGphc21pbmUuY3JlYXRlU3B5KCdnZW5lcmF0ZVVybCcpOworICAgIGdlbmVyYXRlVXJs U3B5LmFuZC5yZXR1cm5WYWx1ZSgnL3NvbWUvcGxhY2UnKTsKKyAgfSk7CisKKyAgZGVzY3JpYmUo J25vIG5vZGUgaXMgc2VsZWN0ZWQnLCAoKSA9PiB7CisgICAgaXQoJ2RvZXMgbm90IHNlbmQgdGhl IHJlcXVlc3QgdG8gdGhlIGJhY2tlbmQnLCAoZG9uZSkgPT4geworICAgICAgbmV0d29ya01vY2su b25BbnkoJy4qJykucmVwbHkoMjAwLCAoKSA9PiB7CisgICAgICB9KTsKKworICAgICAgc2V0VGlt ZW91dCgoKSA9PiB7CisgICAgICAgIGV4cGVjdChlbmFibGVUcmlnZ2Vycyh0cmVlLCBhbGVydGlm eSwgZ2VuZXJhdGVVcmxTcHksIHt9KSkudG9CZShmYWxzZSk7CisgICAgICAgIGRvbmUoKTsKKyAg ICAgIH0sIDApOworICAgIH0pOworICB9KTsKKworICBkZXNjcmliZSgnYSBub2RlIGlzIHNlbGVj dGVkJywgKCkgPT4geworICAgIGRlc2NyaWJlKCdub2RlIGFzIG5vIGRhdGEnLCAoKSA9PiB7Cisg ICAgICBpdCgnZG9lcyBub3Qgc2VuZCB0aGUgcmVxdWVzdCB0byB0aGUgYmFja2VuZCcsICgpID0+ IHsKKyAgICAgICAgdHJlZS5zZWxlY3ROb2RlKFt7aWQ6ICd0YWJsZS1uby1kYXRhJ31dKTsKKwor ICAgICAgICBuZXR3b3JrTW9jay5vbkFueSgnLionKS5yZXBseSgyMDAsICgpID0+IHsKKyAgICAg ICAgfSk7CisKKyAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgZXhwZWN0KGVu YWJsZVRyaWdnZXJzKHRyZWUsIGFsZXJ0aWZ5LCBnZW5lcmF0ZVVybFNweSwge30pKS50b0JlKGZh bHNlKTsKKyAgICAgICAgfSwgMCk7CisgICAgICB9KTsKKyAgICB9KTsKKworICAgIGRlc2NyaWJl KCdub2RlIGFzICBkYXRhJywgKCkgPT4geworICAgICAgZGVzY3JpYmUoJ2JhY2tlbmQgcmVzcG9u ZHMgd2l0aCBzdWNjZXNzJywgKCkgPT4geworICAgICAgICBsZXQgbmV0d29ya01vY2tDYWxsZWRX aXRoOworICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgICBuZXR3b3JrTW9ja0Nh bGxlZFdpdGggPSBmYWxzZTsKKyAgICAgICAgICBuZXR3b3JrTW9jay5vblB1dCgvLiovKS5yZXBs eSgoY29uZmlndXJhdGlvbikgPT4geworICAgICAgICAgICAgbmV0d29ya01vY2tDYWxsZWRXaXRo ID0gY29uZmlndXJhdGlvbjsKKyAgICAgICAgICAgIHJldHVybiBbMjAwLCB7CisgICAgICAgICAg ICAgIHN1Y2Nlc3M6IDEsCisgICAgICAgICAgICAgIGluZm86ICdzb21lIGluZm9ybWF0aW9uJywK KyAgICAgICAgICAgIH1dOworICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICBp dCgnZGlzcGxheXMgYW4gYWxlcnQgYm94IHdpdGggc3VjY2VzcycsIChkb25lKSA9PiB7CisgICAg ICAgICAgdHJlZS5zZWxlY3ROb2RlKFt7aWQ6ICd0YWJsZTEnfV0pOworICAgICAgICAgIGVuYWJs ZVRyaWdnZXJzKHRyZWUsIGFsZXJ0aWZ5LCBnZW5lcmF0ZVVybFNweSwge30pOworICAgICAgICAg IHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgZXhwZWN0KGFsZXJ0aWZ5LnN1Y2Nlc3Mp LnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdzb21lIGluZm9ybWF0aW9uJyk7CisgICAgICAgICAgICBk b25lKCk7CisgICAgICAgICAgfSwgMCk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdyZWxv YWRzIHRoZSBub2RlJywgKGRvbmUpID0+IHsKKyAgICAgICAgICBlbmFibGVUcmlnZ2Vycyh0cmVl LCBhbGVydGlmeSwgZ2VuZXJhdGVVcmxTcHksIHtpdGVtOiBbe2lkOiAndGFibGUxJ31dfSk7Cisg ICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICBleHBlY3QodHJlZS5zZWxl Y3RlZCgpKS50b0VxdWFsKFsnPGxpPnRhYmxlMTwvbGk+J10pOworICAgICAgICAgICAgZG9uZSgp OworICAgICAgICAgIH0sIDIwKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ2NhbGwgYmFj a2VuZCB3aXRoIHRoZSBjb3JyZWN0IHBhcmFtZXRlcnMnLCAoZG9uZSkgPT4geworICAgICAgICAg IGVuYWJsZVRyaWdnZXJzKHRyZWUsIGFsZXJ0aWZ5LCBnZW5lcmF0ZVVybFNweSwge2l0ZW06IFt7 aWQ6ICd0YWJsZTEnfV19KTsKKyAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAg ICAgIGV4cGVjdChuZXR3b3JrTW9ja0NhbGxlZFdpdGguZGF0YSkudG9FcXVhbChKU09OLnN0cmlu Z2lmeSh7ZW5hYmxlOiAndHJ1ZSd9KSk7CisgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAg fSwgMCk7CisgICAgICAgIH0pOworICAgICAgfSk7CisKKyAgICAgIGRlc2NyaWJlKCdiYWNrZW5k IHJlc3BvbmRzIHdpdGggZXJyb3InLCAoKSA9PiB7CisgICAgICAgIGJlZm9yZUVhY2goKCkgPT4g eworICAgICAgICAgIG5ldHdvcmtNb2NrLm9uUHV0KC8uKi8pLnJlcGx5KCgpID0+IHsKKyAgICAg ICAgICAgIHJldHVybiBbNTAwLCB7CisgICAgICAgICAgICAgIHN1Y2Nlc3M6IDAsCisgICAgICAg ICAgICAgIGVycm9ybXNnOiAnc29tZSBlcnJvciBtZXNzYWdlJywKKyAgICAgICAgICAgIH1dOwor ICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnZGlzcGxheXMgYW4gZXJy b3IgYWxlcnQnLCAoZG9uZSkgPT4geworICAgICAgICAgIHRyZWUuc2VsZWN0Tm9kZShbe2lkOiAn dGFibGUxJ31dKTsKKyAgICAgICAgICBlbmFibGVUcmlnZ2Vycyh0cmVlLCBhbGVydGlmeSwgZ2Vu ZXJhdGVVcmxTcHksIHt9KTsKKyAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAg ICAgIGV4cGVjdChhbGVydGlmeS5lcnJvcikudG9IYXZlQmVlbkNhbGxlZFdpdGgoJ3NvbWUgZXJy b3IgbWVzc2FnZScpOworICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgIH0sIDApOworICAg ICAgICB9KTsKKworICAgICAgICBpdCgndW5sb2FkIHRoZSBub2RlJywgKGRvbmUpID0+IHsKKyAg ICAgICAgICBlbmFibGVUcmlnZ2Vycyh0cmVlLCBhbGVydGlmeSwgZ2VuZXJhdGVVcmxTcHksIHtp dGVtOiBbe2lkOiAndGFibGUxJ31dfSk7CisKKyAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsK KyAgICAgICAgICAgIGV4cGVjdCh0cmVlLmZpbmROb2RlQnlEb21FbGVtZW50KFt7aWQ6ICd0YWJs ZTEnfV0pLmNoaWxkcmVuLmxlbmd0aCkudG9CZSgwKTsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAg ICAgICAgICB9LCAyMCk7CisgICAgICAgIH0pOworICAgICAgfSk7CisgICAgfSk7CisgIH0pOwor fSk7CisKK2Rlc2NyaWJlKCcjZGlzYWJsZVRyaWdnZXJzJywgKCkgPT4geworICBsZXQgbmV0d29y a01vY2s7CisgIGxldCB0cmVlOworICBsZXQgYWxlcnRpZnk7CisgIGxldCBnZW5lcmF0ZVVybFNw eTsKKyAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgbmV0d29ya01vY2sgPSBuZXcgTW9ja0FkYXB0 ZXIoYXhpb3MpOworICAgIHRyZWUgPSBuZXcgVHJlZUZha2UoKTsKKyAgICBjb25zdCBzZXJ2ZXIx ID0gdHJlZS5hZGROZXdOb2RlKCdzZXJ2ZXIxJywge19pZDogMX0sIFsnPGxpPnNlcnZlcjE8L2xp PiddKTsKKyAgICBjb25zdCBkYXRhYmFzZTEgPSBuZXcgVHJlZU5vZGUoJ2RhdGFiYXNlMScsIHtf dHlwZTogJ2RhdGFiYXNlJ30sIFsnPGxpPmRhdGFiYXNlMTwvbGk+J10pOworICAgIHRyZWUuYWRk Q2hpbGQoc2VydmVyMSwgZGF0YWJhc2UxKTsKKworICAgIGNvbnN0IHNjaGVtYTEgPSBuZXcgVHJl ZU5vZGUoJ3NjaGVtYTEnLCB7X3R5cGU6ICdzY2hlbWEnfSwgWyc8bGk+c2NoZW1hMTwvbGk+J10p OworICAgIHRyZWUuYWRkQ2hpbGQoZGF0YWJhc2UxLCBzY2hlbWExKTsKKworICAgIGNvbnN0IHRh YmxlMSA9IG5ldyBUcmVlTm9kZSgndGFibGUxJywge190eXBlOiAndGFibGUnfSwgWyc8bGk+dGFi bGUxPC9saT4nXSk7CisgICAgdHJlZS5hZGRDaGlsZChzY2hlbWExLCB0YWJsZTEpOworCisgICAg Y29uc3QgY29sdW1uMSA9IG5ldyBUcmVlTm9kZSgnY29sdW1uMScsIHtfdHlwZTogJ2NvbHVtbid9 LCBbJzxsaT5jb2x1bW4xPC9saT4nXSk7CisgICAgdHJlZS5hZGRDaGlsZCh0YWJsZTEsIGNvbHVt bjEpOworCisgICAgY29uc3QgdGFibGVOb0RhdGEgPSBuZXcgVHJlZU5vZGUoJ3RhYmxlLW5vLWRh dGEnLCB1bmRlZmluZWQsIFsnPGxpPnRhYmxlLW5vLWRhdGE8L2xpPiddKTsKKyAgICB0cmVlLmFk ZENoaWxkKHNjaGVtYTEsIHRhYmxlTm9EYXRhKTsKKworICAgIGFsZXJ0aWZ5ID0gamFzbWluZS5j cmVhdGVTcHlPYmooJ2FsZXJ0aWZ5JywgWydzdWNjZXNzJywgJ2Vycm9yJ10pOworICAgIGdlbmVy YXRlVXJsU3B5ID0gamFzbWluZS5jcmVhdGVTcHkoJ2dlbmVyYXRlVXJsJyk7CisgICAgZ2VuZXJh dGVVcmxTcHkuYW5kLnJldHVyblZhbHVlKCcvc29tZS9wbGFjZScpOworICB9KTsKKworICBkZXNj cmliZSgnbm8gbm9kZSBpcyBzZWxlY3RlZCcsICgpID0+IHsKKyAgICBpdCgnZG9lcyBub3Qgc2Vu ZCB0aGUgcmVxdWVzdCB0byB0aGUgYmFja2VuZCcsIChkb25lKSA9PiB7CisgICAgICBuZXR3b3Jr TW9jay5vbkFueSgnLionKS5yZXBseSgyMDAsICgpID0+IHsKKyAgICAgIH0pOworCisgICAgICBz ZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgZXhwZWN0KGRpc2FibGVUcmlnZ2Vycyh0cmVlLCBh bGVydGlmeSwgZ2VuZXJhdGVVcmxTcHksIHt9KSkudG9CZShmYWxzZSk7CisgICAgICAgIGRvbmUo KTsKKyAgICAgIH0sIDApOworICAgIH0pOworICB9KTsKKworICBkZXNjcmliZSgnYSBub2RlIGlz IHNlbGVjdGVkJywgKCkgPT4geworICAgIGRlc2NyaWJlKCdub2RlIGFzIG5vIGRhdGEnLCAoKSA9 PiB7CisgICAgICBpdCgnZG9lcyBub3Qgc2VuZCB0aGUgcmVxdWVzdCB0byB0aGUgYmFja2VuZCcs ICgpID0+IHsKKyAgICAgICAgdHJlZS5zZWxlY3ROb2RlKFt7aWQ6ICd0YWJsZS1uby1kYXRhJ31d KTsKKworICAgICAgICBuZXR3b3JrTW9jay5vbkFueSgnLionKS5yZXBseSgyMDAsICgpID0+IHsK KyAgICAgICAgfSk7CisKKyAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgZXhw ZWN0KGRpc2FibGVUcmlnZ2Vycyh0cmVlLCBhbGVydGlmeSwgZ2VuZXJhdGVVcmxTcHksIHt9KSku dG9CZShmYWxzZSk7CisgICAgICAgIH0sIDApOworICAgICAgfSk7CisgICAgfSk7CisKKyAgICBk ZXNjcmliZSgnbm9kZSBhcyAgZGF0YScsICgpID0+IHsKKyAgICAgIGRlc2NyaWJlKCdiYWNrZW5k IHJlc3BvbmRzIHdpdGggc3VjY2VzcycsICgpID0+IHsKKyAgICAgICAgbGV0IG5ldHdvcmtNb2Nr Q2FsbGVkV2l0aDsKKyAgICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgICAgbmV0d29y a01vY2tDYWxsZWRXaXRoID0gZmFsc2U7CisgICAgICAgICAgbmV0d29ya01vY2sub25QdXQoLy4q LykucmVwbHkoKGNvbmZpZ3VyYXRpb24pID0+IHsKKyAgICAgICAgICAgIG5ldHdvcmtNb2NrQ2Fs bGVkV2l0aCA9IGNvbmZpZ3VyYXRpb247CisgICAgICAgICAgICByZXR1cm4gWzIwMCwgeworICAg ICAgICAgICAgICBzdWNjZXNzOiAxLAorICAgICAgICAgICAgICBpbmZvOiAnc29tZSBpbmZvcm1h dGlvbicsCisgICAgICAgICAgICB9XTsKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAg ICAgICAgaXQoJ2Rpc3BsYXlzIGFuIGFsZXJ0IGJveCB3aXRoIHN1Y2Nlc3MnLCAoZG9uZSkgPT4g eworICAgICAgICAgIHRyZWUuc2VsZWN0Tm9kZShbe2lkOiAndGFibGUxJ31dKTsKKyAgICAgICAg ICBkaXNhYmxlVHJpZ2dlcnModHJlZSwgYWxlcnRpZnksIGdlbmVyYXRlVXJsU3B5LCB7fSk7Cisg ICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICBleHBlY3QoYWxlcnRpZnku c3VjY2VzcykudG9IYXZlQmVlbkNhbGxlZFdpdGgoJ3NvbWUgaW5mb3JtYXRpb24nKTsKKyAgICAg ICAgICAgIGRvbmUoKTsKKyAgICAgICAgICB9LCAwKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAg aXQoJ3JlbG9hZHMgdGhlIG5vZGUnLCAoZG9uZSkgPT4geworICAgICAgICAgIGRpc2FibGVUcmln Z2Vycyh0cmVlLCBhbGVydGlmeSwgZ2VuZXJhdGVVcmxTcHksIHtpdGVtOiBbe2lkOiAndGFibGUx J31dfSk7CisgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICBleHBlY3Qo dHJlZS5zZWxlY3RlZCgpKS50b0VxdWFsKFsnPGxpPnRhYmxlMTwvbGk+J10pOworICAgICAgICAg ICAgZG9uZSgpOworICAgICAgICAgIH0sIDIwKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQo J2NhbGwgYmFja2VuZCB3aXRoIHRoZSBjb3JyZWN0IHBhcmFtZXRlcnMnLCAoZG9uZSkgPT4gewor ICAgICAgICAgIGRpc2FibGVUcmlnZ2Vycyh0cmVlLCBhbGVydGlmeSwgZ2VuZXJhdGVVcmxTcHks IHtpdGVtOiBbe2lkOiAndGFibGUxJ31dfSk7CisgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7 CisgICAgICAgICAgICBleHBlY3QobmV0d29ya01vY2tDYWxsZWRXaXRoLmRhdGEpLnRvRXF1YWwo SlNPTi5zdHJpbmdpZnkoe2VuYWJsZTogJ2ZhbHNlJ30pKTsKKyAgICAgICAgICAgIGRvbmUoKTsK KyAgICAgICAgICB9LCAwKTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKworICAgICAgZGVzY3Jp YmUoJ2JhY2tlbmQgcmVzcG9uZHMgd2l0aCBlcnJvcicsICgpID0+IHsKKyAgICAgICAgYmVmb3Jl RWFjaCgoKSA9PiB7CisgICAgICAgICAgbmV0d29ya01vY2sub25QdXQoLy4qLykucmVwbHkoKCkg PT4geworICAgICAgICAgICAgcmV0dXJuIFs1MDAsIHsKKyAgICAgICAgICAgICAgc3VjY2Vzczog MCwKKyAgICAgICAgICAgICAgZXJyb3Jtc2c6ICdzb21lIGVycm9yIG1lc3NhZ2UnLAorICAgICAg ICAgICAgfV07CisgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdkaXNw bGF5cyBhbiBlcnJvciBhbGVydCcsIChkb25lKSA9PiB7CisgICAgICAgICAgdHJlZS5zZWxlY3RO b2RlKFt7aWQ6ICd0YWJsZTEnfV0pOworICAgICAgICAgIGRpc2FibGVUcmlnZ2Vycyh0cmVlLCBh bGVydGlmeSwgZ2VuZXJhdGVVcmxTcHksIHt9KTsKKyAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+ IHsKKyAgICAgICAgICAgIGV4cGVjdChhbGVydGlmeS5lcnJvcikudG9IYXZlQmVlbkNhbGxlZFdp dGgoJ3NvbWUgZXJyb3IgbWVzc2FnZScpOworICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAg IH0sIDApOworICAgICAgICB9KTsKKworICAgICAgICBpdCgndW5sb2FkIHRoZSBub2RlJywgKGRv bmUpID0+IHsKKyAgICAgICAgICBkaXNhYmxlVHJpZ2dlcnModHJlZSwgYWxlcnRpZnksIGdlbmVy YXRlVXJsU3B5LCB7aXRlbTogW3tpZDogJ3RhYmxlMSd9XX0pOworCisgICAgICAgICAgc2V0VGlt ZW91dCgoKSA9PiB7CisgICAgICAgICAgICBleHBlY3QodHJlZS5maW5kTm9kZUJ5RG9tRWxlbWVu dChbe2lkOiAndGFibGUxJ31dKS5jaGlsZHJlbi5sZW5ndGgpLnRvQmUoMCk7CisgICAgICAgICAg ICBkb25lKCk7CisgICAgICAgICAgfSwgMjApOworICAgICAgICB9KTsKKyAgICAgIH0pOworICAg IH0pOworICB9KTsKK30pOwpkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC90 cmVlL2Nhbl9jcmVhdGVfc3BlYy5qcyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvdHJlZS9j YW5fY3JlYXRlX3NwZWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjMw MDhkOGZmCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC90cmVl L2Nhbl9jcmVhdGVfc3BlYy5qcwpAQCAtMCwwICsxLDE2NyBAQAorLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRt aW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4 LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVh c2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2ltcG9ydCB7Y2Fu Q3JlYXRlfSBmcm9tICcuLi8uLi8uLi9wZ2FkbWluL3N0YXRpYy9qcy90cmVlL25vZGVfbWVudSc7 CitpbXBvcnQge1RyZWVGYWtlfSBmcm9tICcuLi90cmVlL3RyZWVfZmFrZSc7CisKK2NvbnN0IGNv bnRleHQgPSBkZXNjcmliZTsKKworZGVzY3JpYmUoJyNjYW5DcmVhdGUnLCAoKSA9PiB7CisgIGxl dCBvdXJCcm93c2VyOworICBsZXQgZGF0YTsKKyAgbGV0IHRyZWU7CisgIGxldCBjcmVhdGVDaGVj azsKKworICBjb250ZXh0KCdkYXRhIGlzIG5vdCBudWxsIGFuZCBjaGVjayBpcyBmYWxzZSAnLCAo KSA9PiB7CisgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICBkYXRhID0ge2FjdGlvbjogJ2Ny ZWF0ZScsIGNoZWNrOiBmYWxzZX07CisgICAgfSk7CisgICAgaXQoJ3JldHVybnMgdHJ1ZScsICgp ID0+IHsKKyAgICAgIGNyZWF0ZUNoZWNrID0gY2FuQ3JlYXRlKHt9LCB7fSk7CisgICAgICBleHBl Y3QoY3JlYXRlQ2hlY2soe30sIHt9LCBkYXRhKSkudG9CZSh0cnVlKTsKKyAgICB9KTsKKyAgfSk7 CisKKyAgY29udGV4dCgnZGF0YSBpcyBub3QgbnVsbCBhbmQgY2hlY2sgaXMgdHJ1ZScsICgpID0+ IHsKKyAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgIGRhdGEgPSB7YWN0aW9uOiAnY3JlYXRl JywgY2hlY2s6IHRydWV9OworICAgIH0pOworCisgICAgY29udGV4dCgnaXMgbm9kZSB3aXRoIHR5 cGUgc2NoZW1hJywgKCkgPT4geworICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgIGxl dCBoaWVyYXJjaHkgPSB7CisgICAgICAgICAgaWQ6ICdyb290JywKKyAgICAgICAgICBjaGlsZHJl bjogWworICAgICAgICAgICAgeworICAgICAgICAgICAgICBpZDogJ2xldmVsMicsCisgICAgICAg ICAgICAgIGRhdGE6IHtfdHlwZTogJ3NjaGVtYSd9LAorICAgICAgICAgICAgfSwKKyAgICAgICAg ICBdLAorICAgICAgICB9OworCisgICAgICAgIHRyZWUgPSBUcmVlRmFrZS5idWlsZChoaWVyYXJj aHkpOworICAgICAgICBvdXJCcm93c2VyID0ge3RyZWVNZW51OiB0cmVlfTsKKyAgICAgIH0pOwor CisgICAgICBpdCgncmV0dXJucyB0cnVlJywgKCkgPT4geworICAgICAgICBjcmVhdGVDaGVjayA9 IGNhbkNyZWF0ZShvdXJCcm93c2VyLCAnY29sbC10YWJsZScpOworICAgICAgICBleHBlY3QoY3Jl YXRlQ2hlY2soe30sIFt7aWQ6ICdsZXZlbDInfV0sIGRhdGEpKS50b0JlKHRydWUpOworICAgICAg fSk7CisgICAgfSk7CisKKyAgICBjb250ZXh0KCdoYXMgYW5jZXN0b3Igd2l0aCB0eXBlIHNjaGVt YScsICgpID0+IHsKKyAgICAgIGJlZm9yZUVhY2goKCkgPT4geworCisgICAgICAgIGxldCBoaWVy YXJjaHkgPSB7CisgICAgICAgICAgaWQ6ICdyb290JywKKyAgICAgICAgICBjaGlsZHJlbjogWwor ICAgICAgICAgICAgeworICAgICAgICAgICAgICBpZDogJ2xldmVsMicsCisgICAgICAgICAgICAg IGRhdGE6IHtfdHlwZTogJ3NjaGVtYSd9LAorICAgICAgICAgICAgICBjaGlsZHJlbjogWworICAg ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIGlkOiAnbGV2ZWwzJywKKyAgICAgICAg ICAgICAgICAgIGRhdGE6IHtfdHlwZTogJ2RhdGFiYXNlJ30sCisgICAgICAgICAgICAgICAgfSwK KyAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgXSwKKyAgICAgICAg fTsKKworICAgICAgICB0cmVlID0gVHJlZUZha2UuYnVpbGQoaGllcmFyY2h5KTsKKyAgICAgICAg b3VyQnJvd3NlciA9IHt0cmVlTWVudTogdHJlZX07CisgICAgICB9KTsKKworICAgICAgaXQoJ3Jl dHVybnMgdHJ1ZScsICgpID0+IHsKKyAgICAgICAgY3JlYXRlQ2hlY2sgPSBjYW5DcmVhdGUob3Vy QnJvd3NlciwgJ2NvbGwtdGFibGUnKTsKKyAgICAgICAgZXhwZWN0KGNyZWF0ZUNoZWNrKG51bGws IFt7aWQ6ICdsZXZlbDMnfV0sIGRhdGEpKS50b0JlKHRydWUpOworICAgICAgfSk7CisgICAgfSk7 CisKKyAgICBjb250ZXh0KCd3aGVuIHR5cGUgaXMgbm90ICJjb2xsLXRhYmxlIicsICgpID0+IHsK KyAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICBsZXQgaGllcmFyY2h5ID0geworICAg ICAgICAgIGlkOiAncm9vdCcsCisgICAgICAgICAgY2hpbGRyZW46IFsKKyAgICAgICAgICAgIHsK KyAgICAgICAgICAgICAgaWQ6ICdsZXZlbDInLAorICAgICAgICAgICAgICBkYXRhOiB7X3R5cGU6 ICdkYXRhYmFzZSd9LAorICAgICAgICAgICAgfSwKKyAgICAgICAgICBdLAorICAgICAgICB9Owor CisgICAgICAgIHRyZWUgPSBUcmVlRmFrZS5idWlsZChoaWVyYXJjaHkpOworICAgICAgICBvdXJC cm93c2VyID0ge3RyZWVNZW51OiB0cmVlfTsKKyAgICAgIH0pOworCisgICAgICBpdCgncmV0dXJu cyB0cnVlJywgKCkgPT4geworICAgICAgICBjcmVhdGVDaGVjayA9IGNhbkNyZWF0ZShvdXJCcm93 c2VyLCAnY29sbC10YWJsZScpOworICAgICAgICBleHBlY3QoY3JlYXRlQ2hlY2sobnVsbCwgW3tp ZDogJ2xldmVsMid9XSwgZGF0YSkpLnRvQmUodHJ1ZSk7CisgICAgICB9KTsKKyAgICB9KTsKKwor ICAgIGNvbnRleHQoJ3doZW4gdHlwZSBpcyAiY29sbC10YWJsZSInLCAoKSA9PiB7CisgICAgICBj b250ZXh0KCd3aGVuIHBhcmVudCB0eXBlIGlzICJjYXRhbG9nIicsICgpID0+IHsKKyAgICAgICAg YmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgICAgbGV0IGhpZXJhcmNoeSA9IHsKKyAgICAgICAg ICAgIGlkOiAncm9vdCcsCisgICAgICAgICAgICBjaGlsZHJlbjogWworICAgICAgICAgICAgICB7 CisgICAgICAgICAgICAgICAgaWQ6ICdsZXZlbDInLAorICAgICAgICAgICAgICAgIGRhdGE6IHtf dHlwZTogJ2NhdGFsb2cnfSwKKyAgICAgICAgICAgICAgICBjaGlsZHJlbjogWworICAgICAgICAg ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBpZDogJ2xldmVsMycsCisgICAgICAgICAg ICAgICAgICAgIGRhdGE6IHtfdHlwZTogJ2NvbGwtdGFibGUnfSwKKyAgICAgICAgICAgICAgICAg IH0sCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIF0s CisgICAgICAgICAgfTsKKworICAgICAgICAgIHRyZWUgPSBUcmVlRmFrZS5idWlsZChoaWVyYXJj aHkpOworICAgICAgICAgIG91ckJyb3dzZXIgPSB7dHJlZU1lbnU6IHRyZWV9OworICAgICAgICB9 KTsKKworICAgICAgICBpdCgncmV0dXJucyBmYWxzZScsICgpID0+IHsKKyAgICAgICAgICBjcmVh dGVDaGVjayA9IGNhbkNyZWF0ZShvdXJCcm93c2VyLCAnY29sbC10YWJsZScpOworICAgICAgICAg IGV4cGVjdChjcmVhdGVDaGVjayhudWxsLCBbe2lkOiAnbGV2ZWwzJ31dLCBkYXRhKSkudG9CZShm YWxzZSk7CisgICAgICAgIH0pOworICAgICAgfSk7CisKKyAgICAgIGNvbnRleHQoJ3doZW4gcGFy ZW50IHR5cGUgaXMgbm90ICJjYXRhbG9nIicsICgpID0+IHsKKyAgICAgICAgYmVmb3JlRWFjaCgo KSA9PiB7CisgICAgICAgICAgbGV0IGhpZXJhcmNoeSA9IHsKKyAgICAgICAgICAgIGlkOiAncm9v dCcsCisgICAgICAgICAgICBjaGlsZHJlbjogWworICAgICAgICAgICAgICB7CisgICAgICAgICAg ICAgICAgaWQ6ICdsZXZlbDInLAorICAgICAgICAgICAgICAgIGRhdGE6IHtfdHlwZTogJ2RhdGFi YXNlJ30sCisgICAgICAgICAgICAgICAgY2hpbGRyZW46IFsKKyAgICAgICAgICAgICAgICAgIHsK KyAgICAgICAgICAgICAgICAgICAgaWQ6ICdsZXZlbDMnLAorICAgICAgICAgICAgICAgICAgICBk YXRhOiB7X3R5cGU6ICdjb2xsLXRhYmxlJ30sCisgICAgICAgICAgICAgICAgICB9LAorICAgICAg ICAgICAgICAgIF0sCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICBdLAorICAgICAgICAg IH07CisKKyAgICAgICAgICB0cmVlID0gVHJlZUZha2UuYnVpbGQoaGllcmFyY2h5KTsKKyAgICAg ICAgICBvdXJCcm93c2VyID0ge3RyZWVNZW51OiB0cmVlfTsKKyAgICAgICAgfSk7CisKKyAgICAg ICAgaXQoJ3JldHVybnMgZmFsc2UnLCAoKSA9PiB7CisgICAgICAgICAgY3JlYXRlQ2hlY2sgPSBj YW5DcmVhdGUob3VyQnJvd3NlciwgJ2NvbGwtdGFibGUnKTsKKyAgICAgICAgICBleHBlY3QoY3Jl YXRlQ2hlY2sobnVsbCwgW3tpZDogJ2xldmVsMyd9XSwgZGF0YSkpLnRvQmUodHJ1ZSk7CisgICAg ICAgIH0pOworICAgICAgfSk7CisgICAgfSk7CisgIH0pOworfSk7CmRpZmYgLS1naXQgYS93ZWIv cmVncmVzc2lvbi9qYXZhc2NyaXB0L3RyZWUvbWVudV9lbmFibGVkX3NwZWMuanMgYi93ZWIvcmVn cmVzc2lvbi9qYXZhc2NyaXB0L3RyZWUvbWVudV9lbmFibGVkX3NwZWMuanMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmFjMGFmOGU3Ci0tLSAvZGV2L251bGwKKysrIGIvd2Vi L3JlZ3Jlc3Npb24vamF2YXNjcmlwdC90cmVlL21lbnVfZW5hYmxlZF9zcGVjLmpzCkBAIC0wLDAg KzEsMTMxIEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworLy8K Ky8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRl YW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGlj ZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vCitpbXBvcnQge1RyZWVGYWtlfSBmcm9tICcuLi90cmVlL3RyZWVfZmFr ZSc7CitpbXBvcnQge2VuYWJsZWQgYXMgbWVudUVuYWJsZWR9IGZyb20gJy4uLy4uLy4uL3BnYWRt aW4vc3RhdGljL2pzL3RyZWUvc3VwcG9ydGVkX25vZGVzX21lbnUnOworCitjb25zdCBjb250ZXh0 ID0gZGVzY3JpYmU7CitkZXNjcmliZSgnI21lbnVFbmFibGVkJywgKCkgPT4geworICBsZXQgb3Vy QnJvd3NlcjsKKyAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgY29uc3QgdHJlZSA9IG5ldyBUcmVl RmFrZSgpOworICAgIG91ckJyb3dzZXIgPSB7CisgICAgICB0cmVlTWVudTogdHJlZSwKKyAgICB9 OworICAgIHRyZWUuYWRkTmV3Tm9kZSgnbGV2ZWwxJywge30sIHVuZGVmaW5lZCwgW10pOworICAg IHRyZWUuYWRkTmV3Tm9kZSgnbGV2ZWwxLjEnLCB7X3R5cGU6ICdjYXRhbG9nJ30sIHVuZGVmaW5l ZCwgWydsZXZlbDEnXSk7CisgICAgdHJlZS5hZGROZXdOb2RlKCdsZXZlbDEuMS4xJywge190eXBl OiAnZGF0YWJhc2UnfSwgdW5kZWZpbmVkLCBbJ2xldmVsMScsICdsZXZlbDEuMSddKTsKKyAgICB0 cmVlLmFkZE5ld05vZGUoJ2xldmVsMS4yJywge190eXBlOiAnYmFtbSd9LCB1bmRlZmluZWQsIFsn bGV2ZWwxJ10pOworICAgIHRyZWUuYWRkTmV3Tm9kZSgnbGV2ZWwxLjIuMScsIHsKKyAgICAgIF90 eXBlOiAnZGF0YWJhc2UnLAorICAgICAgYWxsb3dDb25uOiB0cnVlLAorICAgIH0sIHVuZGVmaW5l ZCwgWydsZXZlbDEnLCAnbGV2ZWwxLjInXSk7CisgICAgdHJlZS5hZGROZXdOb2RlKCdsZXZlbDEu Mi4yJywgeworICAgICAgX3R5cGU6ICdkYXRhYmFzZScsCisgICAgICBhbGxvd0Nvbm46IGZhbHNl LAorICAgIH0sIHVuZGVmaW5lZCwgWydsZXZlbDEnLCAnbGV2ZWwxLjInXSk7CisgICAgdHJlZS5h ZGROZXdOb2RlKCdsZXZlbDEuMi4zJywgeworICAgICAgX3R5cGU6ICd0YWJsZScsCisgICAgfSwg dW5kZWZpbmVkLCBbJ2xldmVsMScsICdsZXZlbDEuMiddKTsKKworICAgIHRyZWUuYWRkTmV3Tm9k ZSgnbGV2ZWwyJywge30sIHVuZGVmaW5lZCwgW10pOworICAgIHRyZWUuYWRkTmV3Tm9kZSgnbGV2 ZWwyLjEnLCBudWxsLCB1bmRlZmluZWQsIFsnbGV2ZWwyJ10pOworICAgIHRyZWUuYWRkTmV3Tm9k ZSgnbGV2ZWwyLjEuMScsIHt9LCB1bmRlZmluZWQsIFsnbGV2ZWwyJywgJ2xldmVsMi4xJ10pOwor ICB9KTsKKworICBjb250ZXh0KCdXaGVuIHRoZSBjdXJyZW50IG5vZGUgaXMgYSByb290IG5vZGUn LCAoKSA9PiB7CisgICAgaXQoJ3JldHVybiBmYWxzZScsICgpID0+IHsKKyAgICAgIGV4cGVjdCht ZW51RW5hYmxlZChvdXJCcm93c2VyLnRyZWVNZW51LCBbXSwge30sIFt7aWQ6ICdsZXZlbDEnfV0p KS50b0JlKGZhbHNlKTsKKyAgICB9KTsKKyAgfSk7CisKKyAgY29udGV4dCgnd2hlbiBjdXJyZW50 IG5vZGUgZG9lcyBub3QgZXhpc3QnLCAoKSA9PiB7CisgICAgaXQoJ3JldHVybiBmYWxzZScsICgp ID0+IHsKKyAgICAgIGV4cGVjdChtZW51RW5hYmxlZChvdXJCcm93c2VyLnRyZWVNZW51LCBbXSwg e30sIFt7aWQ6ICdiYW1tJ31dKSkudG9CZShmYWxzZSk7CisgICAgfSk7CisgIH0pOworCisgIGNv bnRleHQoJ3Byb3ZpZGVkIG5vZGUgZGF0YSBpcyB1bmRlZmluZWQnLCAoKSA9PiB7CisgICAgaXQo J3JldHVybnMgZmFsc2UnLCAoKSA9PiB7CisgICAgICBleHBlY3QobWVudUVuYWJsZWQob3VyQnJv d3Nlci50cmVlTWVudSwgW10sIHVuZGVmaW5lZCwgW3tpZDogJ2xldmVsMSd9XSkpLnRvQmUoZmFs c2UpOworICAgIH0pOworICB9KTsKKworICBjb250ZXh0KCdwcm92aWRlZCBub2RlIGRhdGEgaXMg bnVsbCcsICgpID0+IHsKKyAgICBpdCgncmV0dXJucyBmYWxzZScsICgpID0+IHsKKyAgICAgIGV4 cGVjdChtZW51RW5hYmxlZChvdXJCcm93c2VyLnRyZWVNZW51LCBbXSwgbnVsbCwgW3tpZDogJ2xl dmVsMSd9XSkpLnRvQmUoZmFsc2UpOworICAgIH0pOworICB9KTsKKworICBjb250ZXh0KCdXaGVu IHRoZSBjdXJyZW50IG5vZGUgaXMgbm90IGEgcm9vdCBub2RlJywgKCkgPT4geworICAgIGNvbnRl eHQoJ3BhcmVudCBkYXRhIGRvZXMgbm90IGV4aXN0JywgKCkgPT4geworICAgICAgaXQoJ3JldHVy bnMgZmFsc2UnLCAoKSA9PiB7CisgICAgICAgIGV4cGVjdChtZW51RW5hYmxlZChvdXJCcm93c2Vy LnRyZWVNZW51LCBbXSwge30sIFt7aWQ6ICdsZXZlbDIuMS4xJ31dKSkudG9CZShmYWxzZSk7Cisg ICAgICB9KTsKKyAgICB9KTsKKworICAgIGNvbnRleHQoJ3BhcmVudCBhcyBkYXRhJywgKCkgPT4g eworICAgICAgY29udGV4dCgndGhlIGN1cnJlbnQgbm9kZSB0eXBlIGlzIGluIHRoZSBzdXBwb3J0 ZWQgbm9kZSB0eXBlcycsICgpID0+IHsKKyAgICAgICAgY29udGV4dCgndGhlIHBhcmVudCBpcyBv ZiB0aGUgdHlwZSBjYXRhbG9nJywgKCkgPT4geworICAgICAgICAgIGl0KCdyZXR1cm5zIGZhbHNl JywgKCkgPT4geworICAgICAgICAgICAgZXhwZWN0KG1lbnVFbmFibGVkKG91ckJyb3dzZXIudHJl ZU1lbnUsCisgICAgICAgICAgICAgIFsnc2NoZW1hJ10sCisgICAgICAgICAgICAgIHtfdHlwZTog J3NjaGVtYSd9LAorICAgICAgICAgICAgICBbe2lkOiAnbGV2ZWwxLjEuMSd9XQorICAgICAgICAg ICAgKSkudG9CZShmYWxzZSk7CisgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgICAgICBj b250ZXh0KCdhbiBhbmNlc3RvciB3aXRoIHR5cGUgY2F0YWxvZyBleGlzdHMnLCAoKSA9PiB7Cisg ICAgICAgICAgaXQoJ3JldHVybnMgZmFsc2UnLCAoKSA9PiB7CisgICAgICAgICAgICBleHBlY3Qo bWVudUVuYWJsZWQob3VyQnJvd3Nlci50cmVlTWVudSwKKyAgICAgICAgICAgICAgWyd0YWJsZSdd LAorICAgICAgICAgICAgICB7X3R5cGU6ICd0YWJsZSd9LAorICAgICAgICAgICAgICBbe2lkOiAn bGV2ZWwxLjEuMS4xJ31dCisgICAgICAgICAgICApKS50b0JlKGZhbHNlKTsKKyAgICAgICAgICB9 KTsKKyAgICAgICAgfSk7CisgICAgICAgIGNvbnRleHQoJ3RoZSBwYXJlbnQgaXMgbm90IG9mIHRo ZSB0eXBlIGNhdGFsb2cnLCAoKSA9PiB7CisgICAgICAgICAgY29udGV4dCgnY3VycmVudCBub2Rl IGlzIG9mIHRoZSB0eXBlIGRhdGFiYXNlJywgKCkgPT4geworICAgICAgICAgICAgY29udGV4dCgn Y3VycmVudCBub2RlIGFsbG93cyBjb25uZWN0aW9uJywgKCkgPT4geworICAgICAgICAgICAgICBp dCgncmV0dXJucyB0cnVlJywgKCkgPT4geworICAgICAgICAgICAgICAgIGV4cGVjdChtZW51RW5h YmxlZChvdXJCcm93c2VyLnRyZWVNZW51LAorICAgICAgICAgICAgICAgICAgICBbJ2RhdGFiYXNl J10sCisgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIF90eXBlOiAnZGF0 YWJhc2UnLAorICAgICAgICAgICAgICAgICAgICBhbGxvd0Nvbm46IHRydWUsCisgICAgICAgICAg ICAgICAgICB9LCBbe2lkOiAnbGV2ZWwxLjIuMSd9XSkpLnRvQmUodHJ1ZSk7CisgICAgICAgICAg ICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBjb250ZXh0KCdjdXJyZW50IG5v ZGUgZG8gbm90IGFsbG93IGNvbm5lY3Rpb24nLCAoKSA9PiB7CisgICAgICAgICAgICAgIGl0KCdy ZXR1cm5zIGZhbHNlJywgKCkgPT4geworICAgICAgICAgICAgICAgIGV4cGVjdChtZW51RW5hYmxl ZChvdXJCcm93c2VyLnRyZWVNZW51LAorICAgICAgICAgICAgICAgICAgICBbJ2RhdGFiYXNlJ10s IHsKKyAgICAgICAgICAgICAgICAgICAgICBfdHlwZTogJ2RhdGFiYXNlJywKKyAgICAgICAgICAg ICAgICAgICAgICBhbGxvd0Nvbm46IGZhbHNlLAorICAgICAgICAgICAgICAgICAgICB9LCBbe2lk OiAnbGV2ZWwxLjIuMid9XSkpLnRvQmUoZmFsc2UpOworICAgICAgICAgICAgICB9KTsKKyAgICAg ICAgICAgIH0pOworICAgICAgICAgIH0pOworICAgICAgICAgIGNvbnRleHQoJ2N1cnJlbnQgbm9k ZSBpcyBub3Qgb2YgdGhlIHR5cGUgZGF0YWJhc2UnLCAoKSA9PiB7CisgICAgICAgICAgICBpdCgn cmV0dXJucyB0cnVlJywgKCkgPT4geworICAgICAgICAgICAgICBleHBlY3QobWVudUVuYWJsZWQo b3VyQnJvd3Nlci50cmVlTWVudSwKKyAgICAgICAgICAgICAgICAgIFsnc2NoZW1hJ10sIHsKKyAg ICAgICAgICAgICAgICAgICAgX3R5cGU6ICdzY2hlbWEnLAorICAgICAgICAgICAgICAgICAgfSwg W3tpZDogJ2xldmVsMS4yLjMnfV0pKS50b0JlKHRydWUpOworICAgICAgICAgICAgfSk7CisgICAg ICAgICAgfSk7CisgICAgICAgIH0pOworICAgICAgfSk7CisgICAgICBjb250ZXh0KCd0aGUgY3Vy cmVudCBub2RlIHR5cGUgaXMgbm90IGluIHRoZSBzdXBwb3J0ZWQgbm9kZSB0eXBlcycsICgpID0+ IHsKKyAgICAgICAgaXQoJ3JldHVybnMgZmFsc2UnLCAoKSA9PiB7CisgICAgICAgICAgZXhwZWN0 KG1lbnVFbmFibGVkKG91ckJyb3dzZXIudHJlZU1lbnUsIFtdLCB7X3R5cGU6ICdjYXRhbG9nJ30s IFt7aWQ6ICdsZXZlbDEuMSd9XSkpLnRvQmUoZmFsc2UpOworICAgICAgICB9KTsKKyAgICAgIH0p OworICAgIH0pOworICB9KTsKK30pOwpkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNj cmlwdC90cmVlL3BnYWRtaW5fdHJlZV9ub2RlX3NwZWMuanMgYi93ZWIvcmVncmVzc2lvbi9qYXZh c2NyaXB0L3RyZWUvcGdhZG1pbl90cmVlX25vZGVfc3BlYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMC4uNDc5ZTUxNWMKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcmVncmVz c2lvbi9qYXZhc2NyaXB0L3RyZWUvcGdhZG1pbl90cmVlX25vZGVfc3BlYy5qcwpAQCAtMCwwICsx LDM1MyBAQAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FM IFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2 ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9z dGdyZVNRTCBMaWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworaW1wb3J0IHsKKyAgZ2V0 VHJlZU5vZGVIaWVyYXJjaHlGcm9tRWxlbWVudCwKKyAgZ2V0VHJlZU5vZGVIaWVyYXJjaHlGcm9t SWRlbnRpZmllciwKK30gZnJvbSAnLi4vLi4vLi4vcGdhZG1pbi9zdGF0aWMvanMvdHJlZS9wZ2Fk bWluX3RyZWVfbm9kZSc7CitpbXBvcnQge1RyZWVOb2RlfSBmcm9tICcuLi8uLi8uLi9wZ2FkbWlu L3N0YXRpYy9qcy90cmVlL3RyZWUnOworaW1wb3J0IHtUcmVlRmFrZX0gZnJvbSAnLi90cmVlX2Zh a2UnOworCitjb25zdCBjb250ZXh0ID0gZGVzY3JpYmU7CisKK2Rlc2NyaWJlKCd0cmVlI25vZGUj Z2V0VHJlZU5vZGVIaWVyYXJjaHknLCAoKSA9PiB7CisgIGxldCBicm93c2VyOworICBsZXQgbmV3 VHJlZTsKKyAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgbmV3VHJlZSA9IG5ldyBUcmVlRmFrZSgp OworICAgIGJyb3dzZXIgPSB7CisgICAgICBOb2RlczogeworICAgICAgICAnc3BlY2lhbCBvbmUn OiB7aGFzSWQ6IHRydWV9LAorICAgICAgICAnY2hpbGQgc3BlY2lhbCc6IHtoYXNJZDogdHJ1ZX0s CisgICAgICAgICdvdGhlciB0eXBlJzoge2hhc0lkOiB0cnVlfSwKKyAgICAgICAgJ3RhYmxlJzog e2hhc0lkOiB0cnVlfSwKKyAgICAgICAgJ3BhcnRpdGlvbic6IHtoYXNJZDogdHJ1ZX0sCisgICAg ICAgICdubyBpZCc6IHtoYXNJZDogZmFsc2V9LAorICAgICAgfSwKKyAgICB9OworICAgIGJyb3dz ZXIudHJlZU1lbnUgPSBuZXdUcmVlOworICB9KTsKKworICBjb250ZXh0KCdnZXRUcmVlTm9kZUhp ZXJhcmNoeSBpcyBjYWxsZWQgd2l0aCBhY2lUcmVlTm9kZSBvYmplY3QnLCAoKSA9PiB7CisgICAg ZGVzY3JpYmUoJ1doZW4gdGhlIGN1cnJlbnQgbm9kZSBpcyByb290IGVsZW1lbnQnLCAoKSA9PiB7 CisgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgbmV3VHJlZS5hZGROZXdOb2RlKCdy b290JywgeworICAgICAgICAgICdzb21lIGtleSc6ICdzb21lIHZhbHVlJywKKyAgICAgICAgICAn X3R5cGUnOiAnc3BlY2lhbCBvbmUnLAorICAgICAgICB9KTsKKyAgICAgIH0pOworCisgICAgICBp dCgncmV0dXJucyBhIG9iamVjdCB3aXRoIHRoZSBlbGVtZW50IHR5cGUgcGFzc2VkIGRhdGEgYW5k IHByaW9yaXR5ID09IDAnLCAoKSA9PiB7CisgICAgICAgIGNvbnN0IHJlc3VsdCA9IGdldFRyZWVO b2RlSGllcmFyY2h5RnJvbUlkZW50aWZpZXIuYmluZChicm93c2VyKShbe2lkOiAncm9vdCd9XSk7 CisgICAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoeworICAgICAgICAgICdzcGVjaWFsIG9u ZSc6IHsKKyAgICAgICAgICAgICdzb21lIGtleSc6ICdzb21lIHZhbHVlJywKKyAgICAgICAgICAg ICdfdHlwZSc6ICdzcGVjaWFsIG9uZScsCisgICAgICAgICAgICAncHJpb3JpdHknOiAwLAorICAg ICAgICAgIH0sCisgICAgICAgIH0pOworICAgICAgfSk7CisgICAgfSk7CisKKyAgICBkZXNjcmli ZSgnV2hlbiB0aGUgY3VycmVudCBub2RlIGlzIG5vdCBvZiBhIGtub3duIHR5cGUnLCAoKSA9PiB7 CisgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgbmV3VHJlZS5hZGROZXdOb2RlKCdy b290JywgeworICAgICAgICAgICdzb21lIGtleSc6ICdzb21lIHZhbHVlJywKKyAgICAgICAgICAn X3R5cGUnOiAnZG8gbm90IGV4aXN0JywKKyAgICAgICAgfSwgW10pOworICAgICAgfSk7CisKKyAg ICAgIGl0KCdyZXR1cm5zIGEgZW1wdHkgb2JqZWN0JywgKCkgPT4geworICAgICAgICBjb25zdCBy ZXN1bHQgPSBnZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21JZGVudGlmaWVyLmJpbmQoYnJvd3Nlciko J3Jvb3QnKTsKKyAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbCh7fSk7CisgICAgICB9KTsK KyAgICB9KTsKKworICAgIGRlc2NyaWJlKCdXaGVuIHRoZSBjdXJyZW50IG5vZGUgdHlwZSBoYXMg bm8gaWQnLCAoKSA9PiB7CisgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgbmV3VHJl ZS5hZGROZXdOb2RlKCdyb290JywgeworICAgICAgICAgICdzb21lIGtleSc6ICdzb21lIHZhbHVl JywKKyAgICAgICAgICAnX3R5cGUnOiAnbm8gaWQnLAorICAgICAgICB9LCBbXSk7CisgICAgICB9 KTsKKworICAgICAgaXQoJ3JldHVybnMgYSBlbXB0eSBvYmplY3QnLCAoKSA9PiB7CisgICAgICAg IGNvbnN0IHJlc3VsdCA9IGdldFRyZWVOb2RlSGllcmFyY2h5RnJvbUlkZW50aWZpZXIuYmluZChi cm93c2VyKSgncm9vdCcpOworICAgICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKHt9KTsKKyAg ICAgIH0pOworICAgIH0pOworCisgICAgZGVzY3JpYmUoJ1doZW4gdGhlIGN1cnJlbnQgbm9kZSBp cyBhdCB0aGUgc2Vjb25kIGxldmVsJywgKCkgPT4geworICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7 CisgICAgICAgIGNvbnN0IHJvb3QgPSBuZXdUcmVlLmFkZE5ld05vZGUoJ3Jvb3QnLCB7CisgICAg ICAgICAgJ3NvbWUga2V5JzogJ3NvbWUgdmFsdWUnLAorICAgICAgICAgICdfdHlwZSc6ICdzcGVj aWFsIG9uZScsCisgICAgICAgIH0pOworICAgICAgICBjb25zdCBmaXJzdENoaWxkID0gbmV3IFRy ZWVOb2RlKCdmaXJzdCBjaGlsZCcsIHsKKyAgICAgICAgICAnc29tZSBrZXknOiAnc29tZSBvdGhl ciB2YWx1ZScsCisgICAgICAgICAgJ190eXBlJzogJ2NoaWxkIHNwZWNpYWwnLAorICAgICAgICB9 LCBbJ3Jvb3QnXSk7CisgICAgICAgIG5ld1RyZWUuYWRkQ2hpbGQocm9vdCwgZmlyc3RDaGlsZCk7 CisgICAgICB9KTsKKworICAgICAgaXQoJ3JldHVybnMgYSBlbXB0eSBvYmplY3QnLCAoKSA9PiB7 CisgICAgICAgIGNvbnN0IHJlc3VsdCA9IGdldFRyZWVOb2RlSGllcmFyY2h5RnJvbUlkZW50aWZp ZXIuYmluZChicm93c2VyKShbe2lkOiAnZmlyc3QgY2hpbGQnfV0pOworICAgICAgICBleHBlY3Qo cmVzdWx0KS50b0VxdWFsKHsKKyAgICAgICAgICAnY2hpbGQgc3BlY2lhbCc6IHsKKyAgICAgICAg ICAgICdzb21lIGtleSc6ICdzb21lIG90aGVyIHZhbHVlJywKKyAgICAgICAgICAgICdfdHlwZSc6 ICdjaGlsZCBzcGVjaWFsJywKKyAgICAgICAgICAgICdwcmlvcml0eSc6IDAsCisgICAgICAgICAg fSwKKyAgICAgICAgICAnc3BlY2lhbCBvbmUnOiB7CisgICAgICAgICAgICAnc29tZSBrZXknOiAn c29tZSB2YWx1ZScsCisgICAgICAgICAgICAnX3R5cGUnOiAnc3BlY2lhbCBvbmUnLAorICAgICAg ICAgICAgJ3ByaW9yaXR5JzogLTEsCisgICAgICAgICAgfSwKKyAgICAgICAgfSk7CisgICAgICB9 KTsKKyAgICB9KTsKKworICAgIGNvbnRleHQoJ1doZW4gdHJlZSBhcyAic3BlY2lhbCB0eXBlIics ICgpID0+IHsKKyAgICAgIGNvbnRleHQoJ1doZW4gInNwZWNpYWwgdHlwZSIgaGF2ZSAib3RoZXIg dHlwZSInLCAoKSA9PiB7CisgICAgICAgIGNvbnRleHQoJ1doZW4gIm90aGVyIHR5cGUiIGhhdmUg InNwZWNpYWwgdHlwZSInLCAoKSA9PiB7CisgICAgICAgICAgZGVzY3JpYmUoJ1doZW4gcmV0cmll dmluZyBsZWFkIG5vZGUnLCAoKSA9PiB7CisgICAgICAgICAgICBpdCgnZG9lcyBub3Qgb3ZlcnJp ZGUgcHJldmlvdXMgbm9kZSB0eXBlIGRhdGEnLCAoKSA9PiB7CisgICAgICAgICAgICAgIGNvbnN0 IHJvb3ROb2RlID0gbmV3VHJlZS5hZGROZXdOb2RlKCdyb290JywgeworICAgICAgICAgICAgICAg ICdzb21lIGtleSc6ICdzb21lIHZhbHVlJywKKyAgICAgICAgICAgICAgICAnX3R5cGUnOiAnc3Bl Y2lhbCBvbmUnLAorICAgICAgICAgICAgICB9LCBbXSk7CisKKyAgICAgICAgICAgICAgY29uc3Qg bGV2ZWwxID0gbmV3IFRyZWVOb2RlKCdsZXZlbCAxJywgeworICAgICAgICAgICAgICAgICdzb21l IGtleSc6ICdzb21lIHZhbHVlJywKKyAgICAgICAgICAgICAgICAnX3R5cGUnOiAnb3RoZXIgdHlw ZScsCisgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICBuZXdUcmVlLmFkZENoaWxkKHJv b3ROb2RlLCBsZXZlbDEpOworCisgICAgICAgICAgICAgIG5ld1RyZWUuYWRkQ2hpbGQobGV2ZWwx LCBuZXcgVHJlZU5vZGUoJ2xldmVsIDInLCB7CisgICAgICAgICAgICAgICAgJ3NvbWUga2V5Jzog J2V4cGVjdGVkIHZhbHVlJywKKyAgICAgICAgICAgICAgICAnX3R5cGUnOiAnc3BlY2lhbCBvbmUn LAorICAgICAgICAgICAgICAgICdzb21lIG90aGVyIGtleSc6ICdzb21lIG90aGVyIHZhbHVlJywK KyAgICAgICAgICAgICAgfSkpOworCisgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGdldFRy ZWVOb2RlSGllcmFyY2h5RnJvbUlkZW50aWZpZXIuYmluZChicm93c2VyKShbe2lkOiAnbGV2ZWwg Mid9XSk7CisgICAgICAgICAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoeworICAgICAgICAg ICAgICAgICdzcGVjaWFsIG9uZSc6IHsKKyAgICAgICAgICAgICAgICAgICdzb21lIGtleSc6ICdl eHBlY3RlZCB2YWx1ZScsCisgICAgICAgICAgICAgICAgICAnX3R5cGUnOiAnc3BlY2lhbCBvbmUn LAorICAgICAgICAgICAgICAgICAgJ3NvbWUgb3RoZXIga2V5JzogJ3NvbWUgb3RoZXIgdmFsdWUn LAorICAgICAgICAgICAgICAgICAgJ3ByaW9yaXR5JzogMCwKKyAgICAgICAgICAgICAgICB9LAor ICAgICAgICAgICAgICAgICdvdGhlciB0eXBlJzogeworICAgICAgICAgICAgICAgICAgJ3NvbWUg a2V5JzogJ3NvbWUgdmFsdWUnLAorICAgICAgICAgICAgICAgICAgJ190eXBlJzogJ290aGVyIHR5 cGUnLAorICAgICAgICAgICAgICAgICAgJ3ByaW9yaXR5JzogLTEsCisgICAgICAgICAgICAgICAg fSwKKyAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICB9KTsKKyAg ICAgICAgfSk7CisgICAgICB9KTsKKyAgICB9KTsKKworICAgIGNvbnRleHQoJ1doZW4gdHJlZSBo YXMgdGFibGUnLCAoKSA9PiB7CisgICAgICBjb250ZXh0KCd3aGVuIHRhYmxlIGhhcyBwYXJ0aXRp b24nLCAoKSA9PiB7CisgICAgICAgIGl0KCdyZXR1cm5zIHRhYmxlIHdpdGggcGFydGl0aW9uIHBh cmFtZXRlcnMnLCAoKSA9PiB7CisgICAgICAgICAgY29uc3Qgcm9vdCA9IG5ld1RyZWUuYWRkTmV3 Tm9kZSgncm9vdCcsIHsKKyAgICAgICAgICAgICdzb21lIGtleSc6ICdzb21lIHZhbHVlJywKKyAg ICAgICAgICAgICdfdHlwZSc6ICdzcGVjaWFsIG9uZScsCisgICAgICAgICAgfSwgW10pOworICAg ICAgICAgIGNvbnN0IGxldmVsMSA9IG5ldyBUcmVlTm9kZSgnbGV2ZWwgMScsIHsKKyAgICAgICAg ICAgICdzb21lIGtleSc6ICdzb21lIHZhbHVlJywKKyAgICAgICAgICAgICdfdHlwZSc6ICd0YWJs ZScsCisgICAgICAgICAgfSk7CisgICAgICAgICAgbmV3VHJlZS5hZGRDaGlsZChyb290LCBsZXZl bDEpOworICAgICAgICAgIG5ld1RyZWUuYWRkQ2hpbGQobGV2ZWwxLCBuZXcgVHJlZU5vZGUoJ2xl dmVsIDInLCB7CisgICAgICAgICAgICAnc29tZSBrZXknOiAnZXhwZWN0ZWQgdmFsdWUnLAorICAg ICAgICAgICAgJ190eXBlJzogJ3BhcnRpdGlvbicsCisgICAgICAgICAgICAnc29tZSBvdGhlciBr ZXknOiAnc29tZSBvdGhlciB2YWx1ZScsCisgICAgICAgICAgfSkpOworCisgICAgICAgICAgY29u c3QgcmVzdWx0ID0gZ2V0VHJlZU5vZGVIaWVyYXJjaHlGcm9tSWRlbnRpZmllci5iaW5kKGJyb3dz ZXIpKFt7aWQ6J2xldmVsIDInfV0pOworICAgICAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwo eworICAgICAgICAgICAgJ3NwZWNpYWwgb25lJzogeworICAgICAgICAgICAgICAnc29tZSBrZXkn OiAnc29tZSB2YWx1ZScsCisgICAgICAgICAgICAgICdfdHlwZSc6ICdzcGVjaWFsIG9uZScsCisg ICAgICAgICAgICAgICdwcmlvcml0eSc6IC0xLAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAg ICd0YWJsZSc6IHsKKyAgICAgICAgICAgICAgJ3NvbWUga2V5JzogJ2V4cGVjdGVkIHZhbHVlJywK KyAgICAgICAgICAgICAgJ3NvbWUgb3RoZXIga2V5JzogJ3NvbWUgb3RoZXIgdmFsdWUnLAorICAg ICAgICAgICAgICAnX3R5cGUnOiAncGFydGl0aW9uJywKKyAgICAgICAgICAgICAgJ3ByaW9yaXR5 JzogMCwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgICAg fSk7CisgICAgfSk7CisgIH0pOworCisgIGNvbnRleHQoJ2dldFRyZWVOb2RlSGllcmFyY2h5IGlz IGNhbGxlZCB3aXRoIFRyZWVOb2RlIG9iamVjdCcsICgpID0+IHsKKyAgICBsZXQgdHJlZU5vZGU7 CisgICAgZGVzY3JpYmUoJ1doZW4gdGhlIGN1cnJlbnQgbm9kZSBpcyByb290IGVsZW1lbnQnLCAo KSA9PiB7CisgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgdHJlZU5vZGUgPSBuZXdU cmVlLmFkZE5ld05vZGUoJ3Jvb3QnLCB7CisgICAgICAgICAgJ3NvbWUga2V5JzogJ3NvbWUgdmFs dWUnLAorICAgICAgICAgICdfdHlwZSc6ICdzcGVjaWFsIG9uZScsCisgICAgICAgIH0sIFtdKTsK KyAgICAgIH0pOworCisgICAgICBpdCgncmV0dXJucyBhIG9iamVjdCB3aXRoIHRoZSBlbGVtZW50 IHR5cGUgcGFzc2VkIGRhdGEgYW5kIHByaW9yaXR5ID09IDAnLCAoKSA9PiB7CisgICAgICAgIGNv bnN0IHJlc3VsdCA9IGdldFRyZWVOb2RlSGllcmFyY2h5RnJvbUVsZW1lbnQoYnJvd3NlciwgdHJl ZU5vZGUpOworICAgICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKHsKKyAgICAgICAgICAnc3Bl Y2lhbCBvbmUnOiB7CisgICAgICAgICAgICAnc29tZSBrZXknOiAnc29tZSB2YWx1ZScsCisgICAg ICAgICAgICAnX3R5cGUnOiAnc3BlY2lhbCBvbmUnLAorICAgICAgICAgICAgJ3ByaW9yaXR5Jzog MCwKKyAgICAgICAgICB9LAorICAgICAgICB9KTsKKyAgICAgIH0pOworICAgIH0pOworCisgICAg ZGVzY3JpYmUoJ1doZW4gdGhlIGN1cnJlbnQgbm9kZSBpcyBub3Qgb2YgYSBrbm93biB0eXBlJywg KCkgPT4geworICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgIHRyZWVOb2RlID0gbmV3 VHJlZS5hZGROZXdOb2RlKCdyb290JywgeworICAgICAgICAgICdzb21lIGtleSc6ICdzb21lIHZh bHVlJywKKyAgICAgICAgICAnX3R5cGUnOiAnZG8gbm90IGV4aXN0JywKKyAgICAgICAgfSwgW10p OworICAgICAgfSk7CisKKyAgICAgIGl0KCdyZXR1cm5zIGEgZW1wdHkgb2JqZWN0JywgKCkgPT4g eworICAgICAgICBjb25zdCByZXN1bHQgPSBnZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21FbGVtZW50 KGJyb3dzZXIsIHRyZWVOb2RlKTsKKyAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbCh7fSk7 CisgICAgICB9KTsKKyAgICB9KTsKKworICAgIGRlc2NyaWJlKCdXaGVuIHRoZSBjdXJyZW50IG5v ZGUgdHlwZSBoYXMgbm8gaWQnLCAoKSA9PiB7CisgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAg ICAgICAgdHJlZU5vZGUgPSBuZXdUcmVlLmFkZE5ld05vZGUoJ3Jvb3QnLCB7CisgICAgICAgICAg J3NvbWUga2V5JzogJ3NvbWUgdmFsdWUnLAorICAgICAgICAgICdfdHlwZSc6ICdubyBpZCcsCisg ICAgICAgIH0sIFtdKTsKKyAgICAgIH0pOworCisgICAgICBpdCgncmV0dXJucyBhIGVtcHR5IG9i amVjdCcsICgpID0+IHsKKyAgICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0VHJlZU5vZGVIaWVyYXJj aHlGcm9tRWxlbWVudChicm93c2VyLCB0cmVlTm9kZSk7CisgICAgICAgIGV4cGVjdChyZXN1bHQp LnRvRXF1YWwoe30pOworICAgICAgfSk7CisgICAgfSk7CisKKyAgICBkZXNjcmliZSgnV2hlbiB0 aGUgY3VycmVudCBub2RlIGlzIGF0IHRoZSBzZWNvbmQgbGV2ZWwnLCAoKSA9PiB7CisgICAgICBi ZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgY29uc3Qgcm9vdCA9IG5ld1RyZWUuYWRkTmV3Tm9k ZSgncm9vdCcsIHsKKyAgICAgICAgICAnc29tZSBrZXknOiAnc29tZSB2YWx1ZScsCisgICAgICAg ICAgJ190eXBlJzogJ3NwZWNpYWwgb25lJywKKyAgICAgICAgfSwgW10pOworICAgICAgICB0cmVl Tm9kZSA9IG5ldyBUcmVlTm9kZSgnZmlyc3QgY2hpbGQnLCB7CisgICAgICAgICAgJ3NvbWUga2V5 JzogJ3NvbWUgb3RoZXIgdmFsdWUnLAorICAgICAgICAgICdfdHlwZSc6ICdjaGlsZCBzcGVjaWFs JywKKyAgICAgICAgfSk7CisgICAgICAgIG5ld1RyZWUuYWRkQ2hpbGQocm9vdCwgdHJlZU5vZGUp OworICAgICAgfSk7CisKKyAgICAgIGl0KCdyZXR1cm5zIGEgZW1wdHkgb2JqZWN0JywgKCkgPT4g eworICAgICAgICBjb25zdCByZXN1bHQgPSBnZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21FbGVtZW50 KGJyb3dzZXIsIHRyZWVOb2RlKTsKKyAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbCh7Cisg ICAgICAgICAgJ2NoaWxkIHNwZWNpYWwnOiB7CisgICAgICAgICAgICAnc29tZSBrZXknOiAnc29t ZSBvdGhlciB2YWx1ZScsCisgICAgICAgICAgICAnX3R5cGUnOiAnY2hpbGQgc3BlY2lhbCcsCisg ICAgICAgICAgICAncHJpb3JpdHknOiAwLAorICAgICAgICAgIH0sCisgICAgICAgICAgJ3NwZWNp YWwgb25lJzogeworICAgICAgICAgICAgJ3NvbWUga2V5JzogJ3NvbWUgdmFsdWUnLAorICAgICAg ICAgICAgJ190eXBlJzogJ3NwZWNpYWwgb25lJywKKyAgICAgICAgICAgICdwcmlvcml0eSc6IC0x LAorICAgICAgICAgIH0sCisgICAgICAgIH0pOworICAgICAgfSk7CisgICAgfSk7CisKKyAgICBj b250ZXh0KCdXaGVuIHRyZWUgYXMgInNwZWNpYWwgdHlwZSInLCAoKSA9PiB7CisgICAgICBjb250 ZXh0KCdXaGVuICJzcGVjaWFsIHR5cGUiIGhhdmUgIm90aGVyIHR5cGUiJywgKCkgPT4geworICAg ICAgICBjb250ZXh0KCdXaGVuICJvdGhlciB0eXBlIiBoYXZlICJzcGVjaWFsIHR5cGUiJywgKCkg PT4geworICAgICAgICAgIGRlc2NyaWJlKCdXaGVuIHJldHJpZXZpbmcgbGVhZCBub2RlJywgKCkg PT4geworICAgICAgICAgICAgaXQoJ2RvZXMgbm90IG92ZXJyaWRlIHByZXZpb3VzIG5vZGUgdHlw ZSBkYXRhJywgKCkgPT4geworICAgICAgICAgICAgICBjb25zdCByb290ID0gbmV3VHJlZS5hZGRO ZXdOb2RlKCdyb290JywgeworICAgICAgICAgICAgICAgICdzb21lIGtleSc6ICdzb21lIHZhbHVl JywKKyAgICAgICAgICAgICAgICAnX3R5cGUnOiAnc3BlY2lhbCBvbmUnLAorICAgICAgICAgICAg ICB9LCBbXSk7CisgICAgICAgICAgICAgIGNvbnN0IGxldmVsMSA9IG5ldyBUcmVlTm9kZSgnbGV2 ZWwgMScsIHsKKyAgICAgICAgICAgICAgICAnc29tZSBrZXknOiAnc29tZSB2YWx1ZScsCisgICAg ICAgICAgICAgICAgJ190eXBlJzogJ290aGVyIHR5cGUnLAorICAgICAgICAgICAgICB9KTsKKyAg ICAgICAgICAgICAgbmV3VHJlZS5hZGRDaGlsZChyb290LCBsZXZlbDEpOworICAgICAgICAgICAg ICB0cmVlTm9kZSA9IG5ldyBUcmVlTm9kZSgnbGV2ZWwgMicsIHsKKyAgICAgICAgICAgICAgICAn c29tZSBrZXknOiAnZXhwZWN0ZWQgdmFsdWUnLAorICAgICAgICAgICAgICAgICdfdHlwZSc6ICdz cGVjaWFsIG9uZScsCisgICAgICAgICAgICAgICAgJ3NvbWUgb3RoZXIga2V5JzogJ3NvbWUgb3Ro ZXIgdmFsdWUnLAorICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgbmV3VHJlZS5hZGRD aGlsZChsZXZlbDEsIHRyZWVOb2RlKTsKKworICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBn ZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21FbGVtZW50KGJyb3dzZXIsIHRyZWVOb2RlKTsKKyAgICAg ICAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbCh7CisgICAgICAgICAgICAgICAgJ3NwZWNp YWwgb25lJzogeworICAgICAgICAgICAgICAgICAgJ3NvbWUga2V5JzogJ2V4cGVjdGVkIHZhbHVl JywKKyAgICAgICAgICAgICAgICAgICdfdHlwZSc6ICdzcGVjaWFsIG9uZScsCisgICAgICAgICAg ICAgICAgICAnc29tZSBvdGhlciBrZXknOiAnc29tZSBvdGhlciB2YWx1ZScsCisgICAgICAgICAg ICAgICAgICAncHJpb3JpdHknOiAwLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg ICAgJ290aGVyIHR5cGUnOiB7CisgICAgICAgICAgICAgICAgICAnc29tZSBrZXknOiAnc29tZSB2 YWx1ZScsCisgICAgICAgICAgICAgICAgICAnX3R5cGUnOiAnb3RoZXIgdHlwZScsCisgICAgICAg ICAgICAgICAgICAncHJpb3JpdHknOiAtMSwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAg ICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAg ICAgIH0pOworICAgIH0pOworCisgICAgY29udGV4dCgnV2hlbiB0cmVlIGhhcyB0YWJsZScsICgp ID0+IHsKKyAgICAgIGNvbnRleHQoJ3doZW4gdGFibGUgaGFzIHBhcnRpdGlvbicsICgpID0+IHsK KyAgICAgICAgaXQoJ3JldHVybnMgdGFibGUgd2l0aCBwYXJ0aXRpb24gcGFyYW1ldGVycycsICgp ID0+IHsKKyAgICAgICAgICBjb25zdCByb290ID0gbmV3VHJlZS5hZGROZXdOb2RlKCdyb290Jywg eworICAgICAgICAgICAgJ3NvbWUga2V5JzogJ3NvbWUgdmFsdWUnLAorICAgICAgICAgICAgJ190 eXBlJzogJ3NwZWNpYWwgb25lJywKKyAgICAgICAgICB9KTsKKyAgICAgICAgICBjb25zdCBsZXZl bDEgPSBuZXdUcmVlLmFkZE5ld05vZGUoJ2xldmVsIDEnLCB7CisgICAgICAgICAgICAnc29tZSBr ZXknOiAnc29tZSB2YWx1ZScsCisgICAgICAgICAgICAnX3R5cGUnOiAndGFibGUnLAorICAgICAg ICAgIH0pOworICAgICAgICAgIG5ld1RyZWUuYWRkQ2hpbGQocm9vdCwgbGV2ZWwxKTsKKyAgICAg ICAgICB0cmVlTm9kZSA9IG5ldyBUcmVlTm9kZSgnbGV2ZWwgMicsIHsKKyAgICAgICAgICAgICdz b21lIGtleSc6ICdleHBlY3RlZCB2YWx1ZScsCisgICAgICAgICAgICAnX3R5cGUnOiAncGFydGl0 aW9uJywKKyAgICAgICAgICAgICdzb21lIG90aGVyIGtleSc6ICdzb21lIG90aGVyIHZhbHVlJywK KyAgICAgICAgICB9KTsKKyAgICAgICAgICBuZXdUcmVlLmFkZENoaWxkKGxldmVsMSwgdHJlZU5v ZGUpOworCisgICAgICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0VHJlZU5vZGVIaWVyYXJjaHlGcm9t RWxlbWVudChicm93c2VyLCB0cmVlTm9kZSk7CisgICAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9F cXVhbCh7CisgICAgICAgICAgICAnc3BlY2lhbCBvbmUnOiB7CisgICAgICAgICAgICAgICdzb21l IGtleSc6ICdzb21lIHZhbHVlJywKKyAgICAgICAgICAgICAgJ190eXBlJzogJ3NwZWNpYWwgb25l JywKKyAgICAgICAgICAgICAgJ3ByaW9yaXR5JzogLTEsCisgICAgICAgICAgICB9LAorICAgICAg ICAgICAgJ3RhYmxlJzogeworICAgICAgICAgICAgICAnc29tZSBrZXknOiAnZXhwZWN0ZWQgdmFs dWUnLAorICAgICAgICAgICAgICAnc29tZSBvdGhlciBrZXknOiAnc29tZSBvdGhlciB2YWx1ZScs CisgICAgICAgICAgICAgICdfdHlwZSc6ICdwYXJ0aXRpb24nLAorICAgICAgICAgICAgICAncHJp b3JpdHknOiAwLAorICAgICAgICAgICAgfSwKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7Cisg ICAgICB9KTsKKyAgICB9KTsKKyAgfSk7Cit9KTsKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9u L2phdmFzY3JpcHQvdHJlZS90cmVlX2Zha2UuanMgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0 L3RyZWUvdHJlZV9mYWtlLmpzCmluZGV4IGIyODVhNDVmLi5lMDNkNzFmYiAxMDA2NDQKLS0tIGEv d2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC90cmVlL3RyZWVfZmFrZS5qcworKysgYi93ZWIvcmVn cmVzc2lvbi9qYXZhc2NyaXB0L3RyZWUvdHJlZV9mYWtlLmpzCkBAIC0xMCw2ICsxMCwzMiBAQAog aW1wb3J0IHtUcmVlfSBmcm9tICcuLi8uLi8uLi9wZ2FkbWluL3N0YXRpYy9qcy90cmVlL3RyZWUn OwogCiBleHBvcnQgY2xhc3MgVHJlZUZha2UgZXh0ZW5kcyBUcmVlIHsKKyAgc3RhdGljIGJ1aWxk KHN0cnVjdHVyZSkgeworICAgIGxldCB0cmVlID0gbmV3IFRyZWVGYWtlKCk7CisgICAgbGV0IHJv b3ROb2RlID0gdHJlZS5yb290Tm9kZTsKKworICAgIGlmIChzdHJ1Y3R1cmUuY2hpbGRyZW4gIT09 IHVuZGVmaW5lZCkgeworICAgICAgc3RydWN0dXJlLmNoaWxkcmVuLmZvckVhY2goKGNoaWxkKSA9 PiB7CisgICAgICAgIFRyZWVGYWtlLnJlY3Vyc2l2ZWx5QWRkTm9kZXModHJlZSwgY2hpbGQsIHJv b3ROb2RlKTsKKyAgICAgIH0pOworICAgIH0KKworICAgIHJldHVybiB0cmVlOworICB9CisKKyAg c3RhdGljIHJlY3Vyc2l2ZWx5QWRkTm9kZXModHJlZSwgbmV3Tm9kZSwgcGFyZW50KSB7CisgICAg bGV0IGlkID0gbmV3Tm9kZS5pZDsKKyAgICBsZXQgZGF0YSA9IG5ld05vZGUuZGF0YSA/IG5ld05v ZGUuZGF0YSA6IHt9OworICAgIGxldCBkb21Ob2RlID0gbmV3Tm9kZS5kb21Ob2RlID8gbmV3Tm9k ZS5kb21Ob2RlIDogW3tpZDogaWR9XTsKKyAgICB0cmVlLmFkZE5ld05vZGUoaWQsIGRhdGEsIGRv bU5vZGUsIHRyZWUudHJhbnNsYXRlVHJlZU5vZGVJZEZyb21BQ0lUcmVlKFtwYXJlbnRdKSk7CisK KyAgICBpZiAobmV3Tm9kZS5jaGlsZHJlbiAhPT0gdW5kZWZpbmVkKSB7CisgICAgICBuZXdOb2Rl LmNoaWxkcmVuLmZvckVhY2goKGNoaWxkKSA9PiB7CisgICAgICAgIFRyZWVGYWtlLnJlY3Vyc2l2 ZWx5QWRkTm9kZXModHJlZSwgY2hpbGQsIG5ld05vZGUpOworICAgICAgfSk7CisgICAgfQorICB9 CisKICAgY29uc3RydWN0b3IoKSB7CiAgICAgc3VwZXIoKTsKICAgICB0aGlzLmFjaVRyZWVUb091 clRyZWVUcmFuc2xhdG9yID0ge307CkBAIC00NSw3ICs3MSw3IEBAIGV4cG9ydCBjbGFzcyBUcmVl RmFrZSBleHRlbmRzIFRyZWUgewogICB9CiAKICAgdHJhbnNsYXRlVHJlZU5vZGVJZEZyb21BQ0lU cmVlKGFjaVRyZWVOb2RlKSB7Ci0gICAgaWYoYWNpVHJlZU5vZGUgPT09IHVuZGVmaW5lZCB8fCBh Y2lUcmVlTm9kZVswXSA9PT0gdW5kZWZpbmVkKSB7CisgICAgaWYgKGFjaVRyZWVOb2RlID09PSB1 bmRlZmluZWQgfHwgYWNpVHJlZU5vZGVbMF0gPT09IHVuZGVmaW5lZCkgewogICAgICAgcmV0dXJu IG51bGw7CiAgICAgfQogICAgIHJldHVybiB0aGlzLmFjaVRyZWVUb091clRyZWVUcmFuc2xhdG9y W2FjaVRyZWVOb2RlWzBdLmlkXTsK --00000000000060568d056c3c3096--