From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40690) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dALWO-0005ve-Gy for guix-patches@gnu.org; Mon, 15 May 2017 15:19:13 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dALWJ-0005Uh-5N for guix-patches@gnu.org; Mon, 15 May 2017 15:19:08 -0400 Received: from debbugs.gnu.org ([208.118.235.43]:44234) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dALWI-0005UQ-Ra for guix-patches@gnu.org; Mon, 15 May 2017 15:19:03 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1dALWI-0006Ci-I7 for guix-patches@gnu.org; Mon, 15 May 2017 15:19:02 -0400 Subject: bug#26401: [PATCH] python-tryton (with no modules) Resent-Message-ID: MIME-Version: 1.0 In-Reply-To: <285e9165.AEMAKF1MYlQAAAAAAAAAAAO8YckAAAACwQwAAAAAAAW9WABZEIIR@mailjet.com> References: <285e9165.AEMAKF1MYlQAAAAAAAAAAAO8YckAAAACwQwAAAAAAAW9WABZEIIR@mailjet.com> From: Catonano Date: Mon, 15 May 2017 21:17:46 +0200 Message-ID: Content-Type: multipart/mixed; boundary="f403045c2d4c09602f054f94e94f" List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+kyle=kyleam.com@gnu.org Sender: "Guix-patches" To: Arun Isaac Cc: 26401@debbugs.gnu.org --f403045c2d4c09602f054f94e94f Content-Type: multipart/alternative; boundary="f403045c2d4c096029054f94e94d" --f403045c2d4c096029054f94e94d Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable 2017-05-08 16:33 GMT+02:00 Arun Isaac : > > Thanks for the patch set! > > I haven't properly tested the package yet. The following are just my > initial reactions and questions. This patch review will take a few > iterations. Do bear with me. > :-) > > > Tryton has modules and without any module packaged, it will do nothing > > > > But at least you can launch it and test it, you can use it for packkagi= ng > > the missing modules. > > > > Also a service would be useful. But in order to write a service, the > server > > packkage has to be in already. > > Agreed. > > > This is supposedly the basis for GNUealth, a notable GNU project > > GNU Health usually lags behind the latest Tryon, and currently runs on > Tryton 3.8. We will have to create a package for Tryton 3.8 as > well. This can just inherit from the latest tryton package, and modify > only the `version' and `source' fields. Could you do this? > Yes, I think I could do it. Bt if you don't mind I'd liie to delay this. When and if we'll have the current Tryton thhen we'll see. > > > From e42a727312a454aeb19e07cfec6cbb03fe18e183 Mon Sep 17 00:00:00 2001 > > From: humanitiesNerd > > Date: Tue, 28 Mar 2017 12:25:06 +0200 > > Subject: [PATCH 1/5] gnu: Add python-sql python2-sql. > > It is enough to mention only python-sql here. > done > > > * gnu/packages/python.scm (python-sql python2-sql): New variables. > > Please put a comma between python-sql and python2-sql. > done > > > +(define-public python-sql > > + (package > > + (name "python-sql") > > + (version "0.8") > > The latest version of python-sql is 0.9. > updated > > > + (uri (pypi-uri > > + "python-sql" > > + version)) > > Could you put these on the same line? > done > > > +(define-public python-genshi > > + (package > > + (name "python-genshi") > > + (version "0.7") > > + (source > > + (origin > > + (method url-fetch) > > + (uri (string-append > > + "https://ftp.edgewall.org/pub/genshi/Genshi-" > > + version > > + ".tar.gz")) > > Please put version ".tar.gz" on the same line. > done > > > + (patches > > + (search-patches > > + ;; The first 4 patches are in the master branch upstream. > > + ;; see this as a reference https://genshi.edgewall.org/ti > cket/582 > > + ;; The last 2 are NOT in any branch. > > + ;; They were sent as attachments to a ticket opened at > > + ;; https://genshi.edgewall.org/ticket/602#no1 > > + "python-genshi-stripping-of-unsafe-script-tags-Python-3.4.p > atch" > > + "python-genshi-Disable-the-speedups-C-extension-on-CPython- > 3.3-sinc.patch" > > + "python-genshi-isstring-helper.patch" > > + "python-genshi-Add-support-for-Python-3.4-AST-support-for- > NameConst.patch" > > + "python-genshi-fixing-the-tests-on-python35.patch" > > + "python-genshi-buildable-on-python27-too.patch")) > > Why do we need these patches? Is the release tarball not sufficient? > No, the current tarball is not suficient. Genshi builds with python 3.3 only. With python 3.4 and 3.5 it doesn't build. This is mainly due to a change in thhe C API so a part of Genshi tat was written in C has to be re-written adgering to the new API The authors claim to need more time to do this. The Genshi issue tracker reports all this infomration, I linked the relevant issues in the comments Admittedly I don't understand what these patches do. They're too entrenched in the Genshi code base I shamelessly copied them from the Fedora package definition See here http://pkgs.fedoraproject.org/cgit/rpms/python-genshi.git/snapshot/python-g= enshi-f25.tar.gz I understand that they made an effort to make their Genshi package compatible with pythhon 3.4 too and that is not necessary or Guix But it's too complicated for me to excise the support for python 3.4 > > > + (propagated-inputs > > + `(("lxml" ,python2-lxml) > > + ("genshi" ,python2-genshi))) > > Please put the full names of these inputs -- I mean "python-lxml" > instead of "lxml", "python-genshi" instead of "genshi", and so on. > done > > > +(define-public python-trytond > > + (package > > + (name "python-trytond") > > As far as I understand, trytond is an application, not a python > library. Only python libraries should have the "python-" prefix. Oh, I didn't know this. Thanks > So, > this package would just be called "trytond". > done > > > + (version "4.2.3") > > The latest version of tryton is 4.4. > updated > > > + (source > > + (origin > > + (method url-fetch) > > + (uri (pypi-uri > > + "trytond" > > + version > > + ".tar.gz")) > > We should use the tarballs available on the tryton website. > https://downloads.tryton.org/4.4/ done > > > > + (arguments > > + `(#:phases > > + (modify-phases %standard-phases > > + (add-before 'check 'preparations > > + (lambda* _ > > + ;; this is used in the tests > > + (setenv "DB_NAME" ":memory:")))))) > > Though this is shorter, I think it would be clearer to replace the > `check' phase altogether. > mmm I'm not sure I can do this. I don't know much about setuptools, eggs and the such The check phase of the python build system is quite articulated, I don't feel like messing with it Feel free to rearrange this yourself as you see fit. > > > + (propagated-inputs > > + `(("polib" ,python-polib) > > + ("dateutil" ,python-dateutil) > > + ("werkzeug" ,python-werkzeug) > > + ("wrapt" ,python-wrapt) > > + ("python-sql" ,python-sql) > > + ("genshi" ,python-genshi) > > + ("relatorio" ,python-relatorio) > > + ("lxml" ,python-lxml) > > + ;; there's no pyton-mysql in Guix right now > > + ;; so psycopg (postgresql) only for now > > + ("psycopg" ,python-psycopg2))) > > If trytond is only an application, these can just be `inputs', not > `propagated-inputs'. For applications, the python build system wraps the > executables with the correct PYTHONPATH environment variable. > Right, thanks. Done > > > + (license license:lgpl3))) > > Tryton is GPL3. > fixed > > > +(define-public python2-trytond > > + (package-with-python2 python-trytond)) > > No need for python2-trytond if trytond is just an application. > erased > > > +;; this depends on pygtk that is available or python@2 only > > +(define-public python2-tryton > > + (package > > + (name "python2-tryton") > > + (version "4.2.4") > > Latest version if 4.4 > updated > > > + (uri (pypi-uri > > + "tryton" > > + version > > + ".tar.gz")) > > We should use the tarballs available on the tryton website. > https://downloads.tryton.org/4.4/ done > > > > + (propagated-inputs > > + `(("chardet" ,python2-chardet) > > + ("dateutil" ,python2-dateutil) > > + ("pygtk" ,python2-pygtk))) > > For an application, these can just be `inputs'. > done Ok, so this is the first iteration. I'm ready or the next one =F0=9F=98=8E --f403045c2d4c096029054f94e94d Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
2017-05-08 16:33 GMT+02:00 Arun Isaac &l= t;arunisaac= @systemreboot.net>:

Thanks for the patch set!

I haven't properly tested the package yet. The following are just my initial reactions and questions. This patch review will take a few
iterations. Do bear with me.

:-)
=C2=A0

> Tryton has modules and without any module packaged, it will do nothing=
>
> But at least you can launch it and test it, you can use it for packkag= ing
> the missing modules.
>
> Also a service would be useful. But in order to write a service, the s= erver
> packkage has to be in already.

Agreed.

> This is supposedly the basis for GNUealth, a notable GNU project

GNU Health usually lags behind the latest Tryon, and currently runs = on
Tryton 3.8. We will have to create a package for Tryton 3.8 as
well. This can just inherit from the latest tryton package, and modify
only the `version' and `source' fields. Could you do this?

Yes, I think I could do it.

= Bt if you don't mind I'd liie to delay this.

When= and if we'll have the current Tryton thhen we'll see.
=C2=A0

> From e42a727312a454aeb19e07cfec6cbb03fe18e183 Mon Sep 17 00:00:00= 2001
> From: humanitiesNerd <catonano@gmail.com>
> Date: Tue, 28 Mar 2017 12:25:06 +0200
> Subject: [PATCH 1/5] gnu: Add python-sql python2-sql.

It is enough to mention only python-sql here.

done
=C2=A0

> * gnu/packages/python.scm (python-sql python2-sql): New variables.

Please put a comma between python-sql and python2-sql.

done
=C2=A0

> +(define-public python-sql
> +=C2=A0 (package
> +=C2=A0 =C2=A0 (name "python-sql")
> +=C2=A0 =C2=A0 (version "0.8")

The latest version of python-sql is 0.9.

updated
=C2=A0

> +=C2=A0 =C2=A0 =C2=A0 =C2=A0(uri (pypi-uri
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0"python-sql"= ;
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0version))

Could you put these on the same line?

d= one
=C2=A0

> +(define-public python-genshi
> +=C2=A0 (package
> +=C2=A0 =C2=A0 (name "python-genshi")
> +=C2=A0 =C2=A0 (version "0.7")
> +=C2=A0 =C2=A0 (source
> +=C2=A0 =C2=A0 =C2=A0(origin
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0(method url-fetch)
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0(uri (string-append
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0"https://ftp.edgewall.org/pub/genshi/Genshi-"
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0version
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0".tar.gz"))=

Please put version ".tar.gz" on the same line.

done
=C2=A0

> +=C2=A0 =C2=A0 =C2=A0 =C2=A0(patches
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 (search-patches
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0;; The first 4 patches are in the m= aster branch upstream.
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0;; see this as a reference https://genshi.edgewall.org/ticket/582
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0;; The last 2 are NOT in any branch= .
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0;; They were sent as attachments to= a ticket opened at
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0;; https://genshi.= edgewall.org/ticket/602#no1
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0"python-genshi-stripping-of-u<= wbr>nsafe-script-tags-Python-3.4.patch"
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0"python-genshi-Disable-the-sp<= wbr>eedups-C-extension-on-CPython-3.3-sinc.patch"
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0"python-genshi-isstring-helpe<= wbr>r.patch"
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0"python-genshi-Add-support-fo<= wbr>r-Python-3.4-AST-support-for-NameConst.patch"
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0"python-genshi-fixing-the-tes<= wbr>ts-on-python35.patch"
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0"python-genshi-buildable-on-p<= wbr>ython27-too.patch"))

Why do we need these patches? Is the release tarball not sufficient?

No, the current tarball is not suficient.
=
Genshi builds with python 3.3 only. With python 3.4 and 3.5 it d= oesn't build.

This is mainly due to a change in thhe = C API so a part of Genshi tat was written in C has to be re-written adgerin= g to the new API

The authors claim to need more time to d= o this.

The Genshi issue tracker reports all this infomra= tion, I linked the relevant issues in the comments

=
Admittedly I don't understand what these patches do. They're t= oo entrenched in the Genshi code base

I shamelessly copie= d them from the Fedora package definition

I = understand that they made an effort to make their Genshi package compatible= with pythhon 3.4 too and that is not necessary or Guix

B= ut it's too complicated for me to excise the support for python 3.4
=
=C2=A0

> +=C2=A0 =C2=A0 (propagated-inputs
> +=C2=A0 =C2=A0 =C2=A0`(("lxml" ,python2-lxml)
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0("genshi" ,python2-genshi)))

Please put the full names of these inputs -- I mean "python-lxml"=
instead of "lxml", "python-genshi" instead of "gen= shi", and so on.

done
=C2=A0

> +(define-public python-trytond
> +=C2=A0 (package
> +=C2=A0 =C2=A0 (name "python-trytond")

As far as I understand, trytond is an application, not a python
library. Only python libraries should have the "python-" prefix. =

Oh, I didn't know this. Thanks
=C2=A0
So,
this package would just be called "trytond".

done
=C2=A0

> +=C2=A0 =C2=A0 (version "4.2.3")

The latest version of tryton is 4.4.

up= dated
=C2=A0

> +=C2=A0 =C2=A0 (source
> +=C2=A0 =C2=A0 =C2=A0(origin
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0(method url-fetch)
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0(uri (pypi-uri
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0"trytond" > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0version
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0".tar.gz"))=

We should use the tarballs available on the tryton website.
https://downloads.tryton.org/4.4/

done
=C2=A0


> +=C2=A0 =C2=A0 (arguments
> +=C2=A0 =C2=A0 =C2=A0`(#:phases
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0(modify-phases %standard-phases
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(add-before 'check 'prepara= tions
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0(lambda* _
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0;; this is used in the tests
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0(setenv "DB_NAME" ":memory:"))))))

Though this is shorter, I think it would be clearer to replace the
`check' phase altogether.

mmm I'= ;m not sure I can do this.
I don't know much about setupt= ools, eggs and the such
The check phase of the python build s= ystem is quite articulated, I don't feel like messing with it

Feel free to rearrange this yourself as you see fit.

=C2=A0

> +=C2=A0 =C2=A0 (propagated-inputs
> +=C2=A0 =C2=A0 =C2=A0`(("polib" ,python-polib)
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0("dateutil" ,python-dateutil) > +=C2=A0 =C2=A0 =C2=A0 =C2=A0("werkzeug" ,python-werkzeug) > +=C2=A0 =C2=A0 =C2=A0 =C2=A0("wrapt" ,python-wrapt)
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0("python-sql" ,python-sql)
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0("genshi" ,python-genshi)
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0("relatorio" ,python-relatorio)<= br> > +=C2=A0 =C2=A0 =C2=A0 =C2=A0("lxml" ,python-lxml)
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0;; there's no pyton-mysql in Guix righ= t now
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0;; so psycopg (postgresql) only for now > +=C2=A0 =C2=A0 =C2=A0 =C2=A0("psycopg" ,python-psycopg2)))
If trytond is only an application, these can just be `inputs', not
`propagated-inputs'. For applications, the python build system wraps th= e
executables with the correct PYTHONPATH environment variable.

Right, thanks.
Done

=C2=A0

> +=C2=A0 (license license:lgpl3)))

Tryton is GPL3.

fixed
=C2=A0

> +(define-public python2-trytond
> +=C2=A0 (package-with-python2 python-trytond))

No need for python2-trytond if trytond is just an application.

erased
=C2=A0

> +;; this depends on pygtk that is available or python@2 only
> +(define-public python2-tryton
> +=C2=A0 (package
> +=C2=A0 =C2=A0 (name "python2-tryton")
> +=C2=A0 =C2=A0 (version "4.2.4")

Latest version if 4.4

updated
=C2=A0=

> +=C2=A0 =C2=A0 =C2=A0 =C2=A0(uri (pypi-uri
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0"tryton" > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0version
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0".tar.gz"))=

We should use the tarballs available on the tryton website.
https://downloads.tryton.org/4.4/

done
=C2=A0


> +=C2=A0 =C2=A0 (propagated-inputs
> +=C2=A0 =C2=A0 =C2=A0`(("chardet" ,python2-chardet)
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0("dateutil" ,python2-dateutil) > +=C2=A0 =C2=A0 =C2=A0 =C2=A0("pygtk" ,python2-pygtk)))

For an application, these can just be `inputs'.
done

Ok, = so this is the first iteration.
I'm= ready or the next one =F0=9F=98=8E
--f403045c2d4c096029054f94e94d-- --f403045c2d4c09602f054f94e94f Content-Type: text/x-patch; charset="UTF-8"; name="series.patch" Content-Disposition: attachment; filename="series.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_j2qi87ke0 RnJvbSBmZmE5ODRlY2RmYzBjNzg2YjA5ZWJiOTliNjM1ZmFmZmI1Mzc4ZjRhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBZHJpYW5vIFBlbHVzbyA8Y2F0b25hbm9AZ21haWwuY29tPgpE YXRlOiBUdWUsIDI4IE1hciAyMDE3IDEyOjI1OjA2ICswMjAwClN1YmplY3Q6IFtQQVRDSCAxLzVd IGdudTogQWRkIHB5dGhvbi1zcWwuCgoqIGdudS9wYWNrYWdlcy9weXRob24uc2NtIChweXRob24t c3FsLCBweXRob24yLXNxbCk6IE5ldyB2YXJpYWJsZXMuCi0tLQogZ251L3BhY2thZ2VzL3B5dGhv bi5zY20gfCAyMiArKysrKysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgMjIgaW5z ZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2dudS9wYWNrYWdlcy9weXRob24uc2NtIGIvZ251L3Bh Y2thZ2VzL3B5dGhvbi5zY20KaW5kZXggNTdhNjdkZTQxLi5mMWVmNTNlMWEgMTAwNjQ0Ci0tLSBh L2dudS9wYWNrYWdlcy9weXRob24uc2NtCisrKyBiL2dudS9wYWNrYWdlcy9weXRob24uc2NtCkBA IC0xNDYyMiwzICsxNDYyMiwyNSBAQCBzdWJzdGl0dXRlIGZvciByZWRpcy4iKQogCiAoZGVmaW5l LXB1YmxpYyBweXRob24yLWZha2VyZWRpcwogICAocGFja2FnZS13aXRoLXB5dGhvbjIgcHl0aG9u LWZha2VyZWRpcykpCisKKyhkZWZpbmUtcHVibGljIHB5dGhvbi1zcWwKKyAgKHBhY2thZ2UKKyAg ICAobmFtZSAicHl0aG9uLXNxbCIpCisgICAgKHZlcnNpb24gIjAuOCIpCisgICAgKHNvdXJjZQor ICAgICAob3JpZ2luCisgICAgICAgKG1ldGhvZCB1cmwtZmV0Y2gpCisgICAgICAgKHVyaSAocHlw aS11cmkKKyAgICAgICAgICAgICAicHl0aG9uLXNxbCIKKyAgICAgICAgICAgICB2ZXJzaW9uKSkK KyAgICAgICAoc2hhMjU2CisgICAgICAgIChiYXNlMzIKKyAgICAgICAgICIweGlrOTM5c3hxZnFx YnBnY3NuZmpud3M2OTJiamlwMzJraGd3aHExeWNwaGZ5N2RmM2gyIikpKSkKKyAgICAoYnVpbGQt c3lzdGVtIHB5dGhvbi1idWlsZC1zeXN0ZW0pCisgICAgKGhvbWUtcGFnZSAiaHR0cHM6Ly9weXRo b24tc3FsLnRyeXRvbi5vcmcvIikKKyAgICAoc3lub3BzaXMgIkxpYnJhcnkgdG8gd3JpdGUgU1FM IHF1ZXJpZXMiKQorICAgIChkZXNjcmlwdGlvbiAiSWRpb21hdGljIHB5dGhvbiBmdW5jdGlvbiBj YWxscyBnZXQgdHJhbnNmb3JtZWQgaW4gd2VsbCBmb3JtZWQgU1FMIHF1ZXJpZXMuIikKKyAgICAo bGljZW5zZSBsaWNlbnNlOmJzZC0zKSkpCisKKyhkZWZpbmUtcHVibGljIHB5dGhvbjItc3FsCisg IChwYWNrYWdlLXdpdGgtcHl0aG9uMiBweXRob24tc3FsKSkKLS0gCjIuMTMuMAoKCkZyb20gMmU5 NTA1Mjc4MGNlZjY2ZGVkMDExOWUwZWYyMDQ2YzZiNWM1YTMxYiBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogaHVtYW5pdGllc05lcmQgPGNhdG9uYW5vQGdtYWlsLmNvbT4KRGF0ZTogV2Vk LCA1IEFwciAyMDE3IDE1OjI5OjU2ICswMjAwClN1YmplY3Q6IFtQQVRDSCAyLzVdICBnbnU6IEFk ZCBweXRob24tZ2Vuc2hpLgoKICogZ251L3BhY2thZ2VzL3B5dGhvbi5zY20gKHB5dGhvbi1nZW5z aGksIHB5dGhvbjItZ2Vuc2hpKTogTmV3IHZhcmlhYmxlcy4KICogZ251L3BhY2thZ2VzL3BhdGNo ZXMvcHl0aG9uLWdlbnNoaS1EaXNhYmxlLXRoZS1zcGVlZHVwcy1DLWV4dGVuc2lvbi1vbi1DUHl0 aG9uLTMuMy1zaW5jLnBhdGN0OiBOZXcgZmlsZS4KICogZ251L3BhY2thZ2VzL3BhdGNoZXMvcHl0 aG9uLWdlbnNoaS1zdHJpcHBpbmctb2YtdW5zYWZlLXNjcmlwdC10YWdzLVB5dGhvbi0zLjQucGF0 Y2g6IE5ldyBmaWxlLgogKiBnbnUvcGFja2FnZXMvcGF0Y2hlcy9weXRob24tZ2Vuc2hpLWlzc3Ry aW5nLWhlbHBlci5wYXRjaDogTmV3IGZpbGUuCiAqIGdudS9wYWNrYWdlcy9wYXRjaGVzL3B5dGhv bi1nZW5zaGktQWRkLXN1cHBvcnQtZm9yLVB5dGhvbi0zLjQtQVNULXN1cHBvcnQtZm9yLU5hbWVD b25zdC5wYXRjaDogTmV3IGZpbGUuCiAqIGdudS9wYWNrYWdlcy9wYXRjaGVzL3B5dGhvbi1nZW5z aGktZml4aW5nLXRoZS10ZXN0cy1vbi1weXRob24zNS5wYXRjaDogTmV3IGZpbGUuCiAqIGdudS9w YWNrYWdlcy9wYXRjaGVzL3B5dGhvbi1nZW5zaGktYnVpbGRhYmxlLW9uLXB5dGhvbjI3LXRvby5w YXRjaDogTmV3IGZpbGUuCiAqIGdudS9sb2NhbC5tayAoZGlzdF9wYXRjaF9EQVRBKTogQWRkIHRo ZW0uCi0tLQogZ251L2xvY2FsLm1rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgIDYgKwogLi4uLWZvci1QeXRob24tMy40LUFTVC1zdXBwb3J0LWZvci1OYW1lQ29uc3Qu cGF0Y2ggfCAxNTEgKysrKysrKysrKysrKysrKysrKysrCiAuLi4tc3BlZWR1cHMtQy1leHRlbnNp b24tb24tQ1B5dGhvbi0zLjMtc2luYy5wYXRjaCB8ICAzMiArKysrKwogLi4uL3B5dGhvbi1nZW5z aGktYnVpbGRhYmxlLW9uLXB5dGhvbjI3LXRvby5wYXRjaCAgfCAgMjUgKysrKwogLi4ueXRob24t Z2Vuc2hpLWZpeGluZy10aGUtdGVzdHMtb24tcHl0aG9uMzUucGF0Y2ggfCAxMTIgKysrKysrKysr KysrKysrCiAuLi4vcGF0Y2hlcy9weXRob24tZ2Vuc2hpLWlzc3RyaW5nLWhlbHBlci5wYXRjaCAg ICB8ICAzNyArKysrKwogLi4udHJpcHBpbmctb2YtdW5zYWZlLXNjcmlwdC10YWdzLVB5dGhvbi0z LjQucGF0Y2ggfCAgNTEgKysrKysrKwogZ251L3BhY2thZ2VzL3B5dGhvbi5zY20gICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgNzUgKysrKysrKysrKwogOCBmaWxlcyBjaGFuZ2VkLCA0ODkg aW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGdudS9wYWNrYWdlcy9wYXRjaGVzL3B5 dGhvbi1nZW5zaGktQWRkLXN1cHBvcnQtZm9yLVB5dGhvbi0zLjQtQVNULXN1cHBvcnQtZm9yLU5h bWVDb25zdC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGdudS9wYWNrYWdlcy9wYXRjaGVzL3B5 dGhvbi1nZW5zaGktRGlzYWJsZS10aGUtc3BlZWR1cHMtQy1leHRlbnNpb24tb24tQ1B5dGhvbi0z LjMtc2luYy5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGdudS9wYWNrYWdlcy9wYXRjaGVzL3B5 dGhvbi1nZW5zaGktYnVpbGRhYmxlLW9uLXB5dGhvbjI3LXRvby5wYXRjaAogY3JlYXRlIG1vZGUg MTAwNjQ0IGdudS9wYWNrYWdlcy9wYXRjaGVzL3B5dGhvbi1nZW5zaGktZml4aW5nLXRoZS10ZXN0 cy1vbi1weXRob24zNS5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGdudS9wYWNrYWdlcy9wYXRj aGVzL3B5dGhvbi1nZW5zaGktaXNzdHJpbmctaGVscGVyLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZ251L3BhY2thZ2VzL3BhdGNoZXMvcHl0aG9uLWdlbnNoaS1zdHJpcHBpbmctb2YtdW5zYWZl LXNjcmlwdC10YWdzLVB5dGhvbi0zLjQucGF0Y2gKCmRpZmYgLS1naXQgYS9nbnUvbG9jYWwubWsg Yi9nbnUvbG9jYWwubWsKaW5kZXggMjhhMjgzYWI3Li43YWUxMmMxOGMgMTAwNjQ0Ci0tLSBhL2du dS9sb2NhbC5taworKysgYi9nbnUvbG9jYWwubWsKQEAgLTkyMiw2ICs5MjIsMTIgQEAgZGlzdF9w YXRjaF9EQVRBID0JCQkJCQlcCiAgICVEJS9wYWNrYWdlcy9wYXRjaGVzL3B5dGhvbi1maWxlLWRv dWJsZS1lbmNvZGluZy1idWcucGF0Y2gJXAogICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9weXRob24t Zml4LXRlc3RzLnBhdGNoCQkJXAogICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9weXRob24tcGFyc2Ut dG9vLW1hbnktZmllbGRzLnBhdGNoCVwKKyAgJUQlL3BhY2thZ2VzL3BhdGNoZXMvcHl0aG9uLWdl bnNoaS1EaXNhYmxlLXRoZS1zcGVlZHVwcy1DLWV4dGVuc2lvbi1vbi1DUHl0aG9uLTMuMy1zaW5j LnBhdGNoCVwKKyAgJUQlL3BhY2thZ2VzL3BhdGNoZXMvcHl0aG9uLWdlbnNoaS1zdHJpcHBpbmct b2YtdW5zYWZlLXNjcmlwdC10YWdzLVB5dGhvbi0zLjQucGF0Y2gJXAorICAlRCUvcGFja2FnZXMv cGF0Y2hlcy9weXRob24tZ2Vuc2hpLWlzc3RyaW5nLWhlbHBlci5wYXRjaAlcCisgICVEJS9wYWNr YWdlcy9wYXRjaGVzL3B5dGhvbi1nZW5zaGktQWRkLXN1cHBvcnQtZm9yLVB5dGhvbi0zLjQtQVNU LXN1cHBvcnQtZm9yLU5hbWVDb25zdC5wYXRjaAlcCisgICVEJS9wYWNrYWdlcy9wYXRjaGVzL3B5 dGhvbi1nZW5zaGktZml4aW5nLXRoZS10ZXN0cy1vbi1weXRob24zNS5wYXRjaAlcCisgICVEJS9w YWNrYWdlcy9wYXRjaGVzL3B5dGhvbi1nZW5zaGktYnVpbGRhYmxlLW9uLXB5dGhvbjI3LXRvby5w YXRjaAlcCiAgICVEJS9wYWNrYWdlcy9wYXRjaGVzL3B5dGhvbjItcmRmbGliLWRyb3Atc3BhcnFs d3JhcHBlci5wYXRjaAlcCiAgICVEJS9wYWNrYWdlcy9wYXRjaGVzL3B5dGhvbi1zdGF0c21vZGVs cy1maXgtdGVzdHMucGF0Y2gJXAogICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9weXRob24tY29uZmln b2JqLXNldHVwdG9vbHMucGF0Y2gJXApkaWZmIC0tZ2l0IGEvZ251L3BhY2thZ2VzL3BhdGNoZXMv cHl0aG9uLWdlbnNoaS1BZGQtc3VwcG9ydC1mb3ItUHl0aG9uLTMuNC1BU1Qtc3VwcG9ydC1mb3It TmFtZUNvbnN0LnBhdGNoIGIvZ251L3BhY2thZ2VzL3BhdGNoZXMvcHl0aG9uLWdlbnNoaS1BZGQt c3VwcG9ydC1mb3ItUHl0aG9uLTMuNC1BU1Qtc3VwcG9ydC1mb3ItTmFtZUNvbnN0LnBhdGNoCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uNGU0MGMxZGFhCi0tLSAvZGV2L251 bGwKKysrIGIvZ251L3BhY2thZ2VzL3BhdGNoZXMvcHl0aG9uLWdlbnNoaS1BZGQtc3VwcG9ydC1m b3ItUHl0aG9uLTMuNC1BU1Qtc3VwcG9ydC1mb3ItTmFtZUNvbnN0LnBhdGNoCkBAIC0wLDAgKzEs MTUxIEBACitGcm9tIDg2Yjk4YTExNTU5ZGE3ZDFiMjFkYzliNGM2YjEwNTExYjkwOTViYzQgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTaW1vbiBDcm9zcyA8aG9kZ2VzdGFyQGdtYWls LmNvbT4KK0RhdGU6IFN1biwgMTYgRmViIDIwMTQgMTg6NDY6MTUgKzAwMDAKK1N1YmplY3Q6IFtQ QVRDSCAwNS8xNl0gQWRkIHN1cHBvcnQgZm9yIFB5dGhvbiAzLjQgQVNUIChzdXBwb3J0IGZvcgor IE5hbWVDb25zdGFudHMgYW5kIGNoYW5nZXMgdG8gZXhpc3RpbmcgdG8gYXJndW1lbnRzIG5vZGUg YXR0cmlidXRlcykuCisKKy0tLQorIGdlbnNoaS90ZW1wbGF0ZS9hc3R1dGlsLnB5IHwgMzEgKysr KysrKysrKysrKysrKysrKysrKysrKysrKy0tLQorIGdlbnNoaS90ZW1wbGF0ZS9ldmFsLnB5ICAg IHwgMzQgKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQorIDIgZmlsZXMgY2hhbmdl ZCwgNDcgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nZW5z aGkvdGVtcGxhdGUvYXN0dXRpbC5weSBiL2dlbnNoaS90ZW1wbGF0ZS9hc3R1dGlsLnB5CitpbmRl eCBhNGMyMWM4Li5hMzk0NmI0IDEwMDY0NAorLS0tIGEvZ2Vuc2hpL3RlbXBsYXRlL2FzdHV0aWwu cHkKKysrKyBiL2dlbnNoaS90ZW1wbGF0ZS9hc3R1dGlsLnB5CitAQCAtMjEsNyArMjEsNyBAQCBl bHNlOgorICAgICBkZWYgcGFyc2Uoc291cmNlLCBtb2RlKToKKyAgICAgICAgIHJldHVybiBjb21w aWxlKHNvdXJjZSwgJycsIG1vZGUsIF9hc3QuUHlDRl9PTkxZX0FTVCkKKyAKKy1mcm9tIGdlbnNo aS5jb21wYXQgaW1wb3J0IElTX1BZVEhPTjIKKytmcm9tIGdlbnNoaS5jb21wYXQgaW1wb3J0IElT X1BZVEhPTjIsIGlzc3RyaW5nCisgCisgX19kb2Nmb3JtYXRfXyA9ICdyZXN0cnVjdHVyZWR0ZXh0 IGVuJworIAorQEAgLTEwMyw4ICsxMDMsMTMgQEAgY2xhc3MgQVNUQ29kZUdlbmVyYXRvcihvYmpl Y3QpOgorICAgICAgICAgc2VsZi5fbmV3X2xpbmUoKQorICAgICAgICAgcmV0dXJuIHNlbGYudmlz aXQobm9kZS5ib2R5KQorIAorKyAgICAjIFB5dGhvbiA8IDMuNAorICAgICAjIGFyZ3VtZW50cyA9 IChleHByKiBhcmdzLCBpZGVudGlmaWVyPyB2YXJhcmcsCisgICAgICMgICAgICAgICAgICAgIGlk ZW50aWZpZXI/IGt3YXJnLCBleHByKiBkZWZhdWx0cykKKysgICAgIworKyAgICAjIFB5dGhvbiA+ PSAzLjQKKysgICAgIyBhcmd1bWVudHMgPSAoYXJnKiBhcmdzLCBhcmc/IHZhcmFyZywgYXJnKiBr d29ubHlhcmdzLCBleHByKiBrd19kZWZhdWx0cywKKysgICAgIyAgICAgICAgICAgICAgYXJnPyBr d2FyZywgZXhwciogZGVmYXVsdHMpCisgICAgIGRlZiB2aXNpdF9hcmd1bWVudHMoc2VsZiwgbm9k ZSk6CisgICAgICAgICBmaXJzdCA9IFRydWUKKyAgICAgICAgIG5vX2RlZmF1bHRfY291bnQgPSBs ZW4obm9kZS5hcmdzKSAtIGxlbihub2RlLmRlZmF1bHRzKQorQEAgLTEyMiwxMyArMTI3LDIxIEBA IGNsYXNzIEFTVENvZGVHZW5lcmF0b3Iob2JqZWN0KToKKyAgICAgICAgICAgICAgICAgc2VsZi5f d3JpdGUoJywgJykKKyAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICBmaXJzdCA9 IEZhbHNlCistICAgICAgICAgICAgc2VsZi5fd3JpdGUoJyonICsgbm9kZS52YXJhcmcpCisrICAg ICAgICAgICAgc2VsZi5fd3JpdGUoJyonKQorKyAgICAgICAgICAgIGlmIGlzc3RyaW5nKG5vZGUu dmFyYXJnKToKKysgICAgICAgICAgICAgICAgc2VsZi5fd3JpdGUobm9kZS52YXJhcmcpCisrICAg ICAgICAgICAgZWxzZToKKysgICAgICAgICAgICAgICAgc2VsZi52aXNpdChub2RlLnZhcmFyZykK KyAgICAgICAgIGlmIGdldGF0dHIobm9kZSwgJ2t3YXJnJywgTm9uZSk6CisgICAgICAgICAgICAg aWYgbm90IGZpcnN0OgorICAgICAgICAgICAgICAgICBzZWxmLl93cml0ZSgnLCAnKQorICAgICAg ICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIGZpcnN0ID0gRmFsc2UKKy0gICAgICAgICAg ICBzZWxmLl93cml0ZSgnKionICsgbm9kZS5rd2FyZykKKysgICAgICAgICAgICBzZWxmLl93cml0 ZSgnKionKQorKyAgICAgICAgICAgIGlmIGlzc3RyaW5nKG5vZGUua3dhcmcpOgorKyAgICAgICAg ICAgICAgICBzZWxmLl93cml0ZShub2RlLmt3YXJnKQorKyAgICAgICAgICAgIGVsc2U6CisrICAg ICAgICAgICAgICAgIHNlbGYudmlzaXQobm9kZS5rd2FyZykKKyAKKyAgICAgaWYgbm90IElTX1BZ VEhPTjI6CisgICAgICAgICAjIEluIFB5dGhvbiAzIGFyZ3VtZW50cyBnZXQgYSBzcGVjaWFsIG5v ZGUKK0BAIC03MjQsNiArNzM3LDE3IEBAIGNsYXNzIEFTVENvZGVHZW5lcmF0b3Iob2JqZWN0KToK KyAgICAgZGVmIHZpc2l0X05hbWUoc2VsZiwgbm9kZSk6CisgICAgICAgICBzZWxmLl93cml0ZShu b2RlLmlkKQorIAorKyAgICAjIE5hbWVDb25zdGFudChzaW5nbGV0b24gdmFsdWUpCisrICAgIGRl ZiB2aXNpdF9OYW1lQ29uc3RhbnQoc2VsZiwgbm9kZSk6CisrICAgICAgICBpZiBub2RlLnZhbHVl IGlzIE5vbmU6CisrICAgICAgICAgICAgc2VsZi5fd3JpdGUoJ05vbmUnKQorKyAgICAgICAgZWxp ZiBub2RlLnZhbHVlIGlzIFRydWU6CisrICAgICAgICAgICAgc2VsZi5fd3JpdGUoJ1RydWUnKQor KyAgICAgICAgZWxpZiBub2RlLnZhbHVlIGlzIEZhbHNlOgorKyAgICAgICAgICAgIHNlbGYuX3dy aXRlKCdGYWxzZScpCisrICAgICAgICBlbHNlOgorKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlv bigiVW5rbm93biBOYW1lQ29uc3RhbnQgJXIiICUgKG5vZGUudmFsdWUsKSkKKysKKyAgICAgIyBM aXN0KGV4cHIqIGVsdHMsIGV4cHJfY29udGV4dCBjdHgpCisgICAgIGRlZiB2aXNpdF9MaXN0KHNl bGYsIG5vZGUpOgorICAgICAgICAgc2VsZi5fd3JpdGUoJ1snKQorQEAgLTgyOSw2ICs4NTMsNyBA QCBjbGFzcyBBU1RUcmFuc2Zvcm1lcihvYmplY3QpOgorICAgICB2aXNpdF9BdHRyaWJ1dGUgPSBf Y2xvbmUKKyAgICAgdmlzaXRfU3Vic2NyaXB0ID0gX2Nsb25lCisgICAgIHZpc2l0X05hbWUgPSBf Y2xvbmUKKysgICAgdmlzaXRfTmFtZUNvbnN0YW50ID0gX2Nsb25lCisgICAgIHZpc2l0X0xpc3Qg PSBfY2xvbmUKKyAgICAgdmlzaXRfVHVwbGUgPSBfY2xvbmUKKyAKK2RpZmYgLS1naXQgYS9nZW5z aGkvdGVtcGxhdGUvZXZhbC5weSBiL2dlbnNoaS90ZW1wbGF0ZS9ldmFsLnB5CitpbmRleCA4OWFl YzQ5Li5kZTRiYzg2IDEwMDY0NAorLS0tIGEvZ2Vuc2hpL3RlbXBsYXRlL2V2YWwucHkKKysrKyBi L2dlbnNoaS90ZW1wbGF0ZS9ldmFsLnB5CitAQCAtMjQsNyArMjQsOCBAQCBmcm9tIGdlbnNoaS50 ZW1wbGF0ZS5hc3R1dGlsIGltcG9ydCBBU1RUcmFuc2Zvcm1lciwgQVNUQ29kZUdlbmVyYXRvciwg XAorIGZyb20gZ2Vuc2hpLnRlbXBsYXRlLmJhc2UgaW1wb3J0IFRlbXBsYXRlUnVudGltZUVycm9y CisgZnJvbSBnZW5zaGkudXRpbCBpbXBvcnQgZmxhdHRlbgorIAorLWZyb20gZ2Vuc2hpLmNvbXBh dCBpbXBvcnQgZ2V0X2NvZGVfcGFyYW1zLCBidWlsZF9jb2RlX2NodW5rLCBJU19QWVRIT04yCisr ZnJvbSBnZW5zaGkuY29tcGF0IGltcG9ydCBnZXRfY29kZV9wYXJhbXMsIGJ1aWxkX2NvZGVfY2h1 bmssIGlzc3RyaW5nLCBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICBJU19QWVRIT04yCisg CisgX19hbGxfXyA9IFsnQ29kZScsICdFeHByZXNzaW9uJywgJ1N1aXRlJywgJ0xlbmllbnRMb29r dXAnLCAnU3RyaWN0TG9va3VwJywKKyAgICAgICAgICAgICdVbmRlZmluZWQnLCAnVW5kZWZpbmVk RXJyb3InXQorQEAgLTQ5NSwyOCArNDk2LDMxIEBAIGNsYXNzIFRlbXBsYXRlQVNUVHJhbnNmb3Jt ZXIoQVNUVHJhbnNmb3JtZXIpOgorICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICBz ZWxmLmxvY2FscyA9IFtDT05TVEFOVFNdCisgCisrICAgIGRlZiBfcHJvY2VzcyhzZWxmLCBuYW1l cywgbm9kZSk6CisrICAgICAgICBpZiBub3QgSVNfUFlUSE9OMiBhbmQgaXNpbnN0YW5jZShub2Rl LCBfYXN0LmFyZyk6CisrICAgICAgICAgICAgbmFtZXMuYWRkKG5vZGUuYXJnKQorKyAgICAgICAg ZWxpZiBpc3N0cmluZyhub2RlKToKKysgICAgICAgICAgICBuYW1lcy5hZGQobm9kZSkKKysgICAg ICAgIGVsaWYgaXNpbnN0YW5jZShub2RlLCBfYXN0Lk5hbWUpOgorKyAgICAgICAgICAgIG5hbWVz LmFkZChub2RlLmlkKQorKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKG5vZGUsIF9hc3QuYWxpYXMp OgorKyAgICAgICAgICAgIG5hbWVzLmFkZChub2RlLmFzbmFtZSBvciBub2RlLm5hbWUpCisrICAg ICAgICBlbGlmIGlzaW5zdGFuY2Uobm9kZSwgX2FzdC5UdXBsZSk6CisrICAgICAgICAgICAgZm9y IGVsdCBpbiBub2RlLmVsdHM6CisrICAgICAgICAgICAgICAgIHNlbGYuX3Byb2Nlc3MobmFtZXMs IGVsdCkKKysKKyAgICAgZGVmIF9leHRyYWN0X25hbWVzKHNlbGYsIG5vZGUpOgorICAgICAgICAg bmFtZXMgPSBzZXQoKQorLSAgICAgICAgZGVmIF9wcm9jZXNzKG5vZGUpOgorLSAgICAgICAgICAg IGlmIG5vdCBJU19QWVRIT04yIGFuZCBpc2luc3RhbmNlKG5vZGUsIF9hc3QuYXJnKToKKy0gICAg ICAgICAgICAgICAgbmFtZXMuYWRkKG5vZGUuYXJnKQorLSAgICAgICAgICAgIGlmIGlzaW5zdGFu Y2Uobm9kZSwgX2FzdC5OYW1lKToKKy0gICAgICAgICAgICAgICAgbmFtZXMuYWRkKG5vZGUuaWQp CistICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKG5vZGUsIF9hc3QuYWxpYXMpOgorLSAgICAg ICAgICAgICAgICBuYW1lcy5hZGQobm9kZS5hc25hbWUgb3Igbm9kZS5uYW1lKQorLSAgICAgICAg ICAgIGVsaWYgaXNpbnN0YW5jZShub2RlLCBfYXN0LlR1cGxlKToKKy0gICAgICAgICAgICAgICAg Zm9yIGVsdCBpbiBub2RlLmVsdHM6CistICAgICAgICAgICAgICAgICAgICBfcHJvY2VzcyhlbHQp CisgICAgICAgICBpZiBoYXNhdHRyKG5vZGUsICdhcmdzJyk6CisgICAgICAgICAgICAgZm9yIGFy ZyBpbiBub2RlLmFyZ3M6CistICAgICAgICAgICAgICAgIF9wcm9jZXNzKGFyZykKKysgICAgICAg ICAgICAgICAgc2VsZi5fcHJvY2VzcyhuYW1lcywgYXJnKQorICAgICAgICAgICAgIGlmIGhhc2F0 dHIobm9kZSwgJ3ZhcmFyZycpOgorLSAgICAgICAgICAgICAgICBuYW1lcy5hZGQobm9kZS52YXJh cmcpCisrICAgICAgICAgICAgICAgIHNlbGYuX3Byb2Nlc3MobmFtZXMsIG5vZGUudmFyYXJnKQor ICAgICAgICAgICAgIGlmIGhhc2F0dHIobm9kZSwgJ2t3YXJnJyk6CistICAgICAgICAgICAgICAg IG5hbWVzLmFkZChub2RlLmt3YXJnKQorKyAgICAgICAgICAgICAgICBzZWxmLl9wcm9jZXNzKG5h bWVzLCBub2RlLmt3YXJnKQorICAgICAgICAgZWxpZiBoYXNhdHRyKG5vZGUsICduYW1lcycpOgor ICAgICAgICAgICAgIGZvciBlbHQgaW4gbm9kZS5uYW1lczoKKy0gICAgICAgICAgICAgICAgX3By b2Nlc3MoZWx0KQorKyAgICAgICAgICAgICAgICBzZWxmLl9wcm9jZXNzKG5hbWVzLCBlbHQpCisg ICAgICAgICByZXR1cm4gbmFtZXMKKyAKKyAgICAgZGVmIHZpc2l0X1N0cihzZWxmLCBub2RlKToK Ky0tIAorMi4xMi4wCisKZGlmZiAtLWdpdCBhL2dudS9wYWNrYWdlcy9wYXRjaGVzL3B5dGhvbi1n ZW5zaGktRGlzYWJsZS10aGUtc3BlZWR1cHMtQy1leHRlbnNpb24tb24tQ1B5dGhvbi0zLjMtc2lu Yy5wYXRjaCBiL2dudS9wYWNrYWdlcy9wYXRjaGVzL3B5dGhvbi1nZW5zaGktRGlzYWJsZS10aGUt c3BlZWR1cHMtQy1leHRlbnNpb24tb24tQ1B5dGhvbi0zLjMtc2luYy5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLmMyNWMzYmQ3YQotLS0gL2Rldi9udWxsCisrKyBi L2dudS9wYWNrYWdlcy9wYXRjaGVzL3B5dGhvbi1nZW5zaGktRGlzYWJsZS10aGUtc3BlZWR1cHMt Qy1leHRlbnNpb24tb24tQ1B5dGhvbi0zLjMtc2luYy5wYXRjaApAQCAtMCwwICsxLDMyIEBACitG cm9tIGNlZjJjOGRmNDQxNjYxOTVlMTcwNTYzOGY5ZjE3MDMzYTQ5NDNiYjcgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCitGcm9tOiBTaW1vbiBDcm9zcyA8aG9kZ2VzdGFyQGdtYWlsLmNvbT4KK0Rh dGU6IFN1biwgMTYgRmViIDIwMTQgMTg6MzI6MjEgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAwMi8x NV0gRGlzYWJsZSB0aGUgc3BlZWR1cHMgQyBleHRlbnNpb24gb24gQ1B5dGhvbiA+PSAzLjMKKyBz aW5jZSBHZW5zaGkgZG9lc24ndCBzdXBwb3J0IHRoZSBuZXcgVW5pY29kZSBDIEFQSSB5ZXQuCisK Ky0tLQorIHNldHVwLnB5IHwgNiArKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25z KCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zZXR1cC5weSBiL3NldHVwLnB5Citp bmRleCAxMjNhMmNiLi5hM2Q3NDhjIDEwMDc1NQorLS0tIGEvc2V0dXAucHkKKysrKyBiL3NldHVw LnB5CitAQCAtNjUsOSArNjUsMTMgQEAgYXZhaWxhYmxlLiIiIikKKyAKKyAKKyBpZiBGZWF0dXJl OgorKyAgICAjIE9wdGlvbmFsIEMgZXh0ZW5zaW9uIG1vZHVsZSBmb3Igc3BlZWRpbmcgdXAgR2Vu c2hpOgorKyAgICAjIE5vdCBhY3RpdmF0ZWQgYnkgZGVmYXVsdCBvbjoKKysgICAgIyAtIFB5UHkg KHdoZXJlIGl0IGhhcm1zIHBlcmZvcm1hbmNlKQorKyAgICAjIC0gQ1B5dGhvbiA+PSAzLjMgKHRo ZSBuZXcgVW5pY29kZSBDIEFQSSBpcyBub3Qgc3VwcG9ydGVkIHlldCkKKyAgICAgc3BlZWR1cHMg PSBGZWF0dXJlKAorICAgICAgICAgIm9wdGlvbmFsIEMgc3BlZWQtZW5oYW5jZW1lbnRzIiwKKy0g ICAgICAgIHN0YW5kYXJkID0gbm90IGlzX3B5cHksCisrICAgICAgICBzdGFuZGFyZCA9IG5vdCBp c19weXB5IGFuZCBzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDMpLAorICAgICAgICAgZXh0X21vZHVs ZXMgPSBbCisgICAgICAgICAgICAgRXh0ZW5zaW9uKCdnZW5zaGkuX3NwZWVkdXBzJywgWydnZW5z aGkvX3NwZWVkdXBzLmMnXSksCisgICAgICAgICBdLAorLS0gCisyLjEyLjAKKwpkaWZmIC0tZ2l0 IGEvZ251L3BhY2thZ2VzL3BhdGNoZXMvcHl0aG9uLWdlbnNoaS1idWlsZGFibGUtb24tcHl0aG9u MjctdG9vLnBhdGNoIGIvZ251L3BhY2thZ2VzL3BhdGNoZXMvcHl0aG9uLWdlbnNoaS1idWlsZGFi bGUtb24tcHl0aG9uMjctdG9vLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMC4uMTMyODlmYmU4Ci0tLSAvZGV2L251bGwKKysrIGIvZ251L3BhY2thZ2VzL3BhdGNoZXMv cHl0aG9uLWdlbnNoaS1idWlsZGFibGUtb24tcHl0aG9uMjctdG9vLnBhdGNoCkBAIC0wLDAgKzEs MjUgQEAKK0Zyb20gMzJiZmFhN2NjMWM3MzZmZDYyZmNiYjY0MTRkZTk0OThkYzIwZWQwNyBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IGh1bWFuaXRpZXNOZXJkIDxjYXRvbmFub0BnbWFp bC5jb20+CitEYXRlOiBXZWQsIDUgQXByIDIwMTcgMTU6MTM6MDYgKzAyMDAKK1N1YmplY3Q6IFtQ QVRDSCAyLzJdIGJ1aWxkYWJsZSBvbiBweXRob24yNyB0b28KKworLS0tCisgZ2Vuc2hpL3RlbXBs YXRlL2RpcmVjdGl2ZXMucHkgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCsp LCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9nZW5zaGkvdGVtcGxhdGUvZGlyZWN0aXZl cy5weSBiL2dlbnNoaS90ZW1wbGF0ZS9kaXJlY3RpdmVzLnB5CitpbmRleCA2ZmQwZjI4Li4xZjcw ZWY2IDEwMDY0NAorLS0tIGEvZ2Vuc2hpL3RlbXBsYXRlL2RpcmVjdGl2ZXMucHkKKysrKyBiL2dl bnNoaS90ZW1wbGF0ZS9kaXJlY3RpdmVzLnB5CitAQCAtMjY2LDcgKzI2Niw3IEBAIGNsYXNzIERl ZkRpcmVjdGl2ZShEaXJlY3RpdmUpOgorICAgICAgICAgaWYgaXNpbnN0YW5jZShhc3QsIF9hc3Qu Q2FsbCk6CisgICAgICAgICAgICAgc2VsZi5uYW1lID0gYXN0LmZ1bmMuaWQKKyAgICAgICAgICAg ICBmb3IgYXJnIGluIGFzdC5hcmdzOgorLSAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGFy ZywgX2FzdC5TdGFycmVkKToKKysgICAgICAgICAgICAgICAgaWYgaGFzYXR0cihfYXN0LCAnU3Rh cnJlZCcpIGFuZCBpc2luc3RhbmNlKGFyZywgX2FzdC5TdGFycmVkKToKKyAgICAgICAgICAgICAg ICAgICAgICMgUHl0aG9uIDMuNSsKKyAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3Rhcl9hcmdz ID0gYXJnLnZhbHVlLmlkCisgICAgICAgICAgICAgICAgIGVsc2U6CistLSAKKzIuMTIuMAorCmRp ZmYgLS1naXQgYS9nbnUvcGFja2FnZXMvcGF0Y2hlcy9weXRob24tZ2Vuc2hpLWZpeGluZy10aGUt dGVzdHMtb24tcHl0aG9uMzUucGF0Y2ggYi9nbnUvcGFja2FnZXMvcGF0Y2hlcy9weXRob24tZ2Vu c2hpLWZpeGluZy10aGUtdGVzdHMtb24tcHl0aG9uMzUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwLi5mMTkwNWU3Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9nbnUvcGFj a2FnZXMvcGF0Y2hlcy9weXRob24tZ2Vuc2hpLWZpeGluZy10aGUtdGVzdHMtb24tcHl0aG9uMzUu cGF0Y2gKQEAgLTAsMCArMSwxMTIgQEAKK0Zyb20gY2U3OTZhZDRiYWU1YzQ3MDExODc2Nzc4Njc0 YWQwMzYzNTdmZWJkZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IGh1bWFuaXRpZXNO ZXJkIDxjYXRvbmFub0BnbWFpbC5jb20+CitEYXRlOiBXZWQsIDUgQXByIDIwMTcgMTU6MTA6MDYg KzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzJdIGZpeGluZyB0aGUgdGVzdHMgb24gcHl0aG9uMzUK KworLS0tCisgZ2Vuc2hpL2ZpbHRlcnMvaTE4bi5weSAgICAgICAgfCAgNiArKysrLS0KKyBnZW5z aGkvdGVtcGxhdGUvYXN0dXRpbC5weSAgICB8IDE0ICsrKysrKysrKysrLS0tCisgZ2Vuc2hpL3Rl bXBsYXRlL2RpcmVjdGl2ZXMucHkgfCAyMCArKysrKysrKysrKysrKy0tLS0tLQorIGdlbnNoaS90 ZW1wbGF0ZS9ldmFsLnB5ICAgICAgIHwgIDUgKysrKysKKyA0IGZpbGVzIGNoYW5nZWQsIDM0IGlu c2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2Vuc2hpL2ZpbHRl cnMvaTE4bi5weSBiL2dlbnNoaS9maWx0ZXJzL2kxOG4ucHkKK2luZGV4IDUyNmZkYTQuLjUzODdm Y2YgMTAwNjQ0CistLS0gYS9nZW5zaGkvZmlsdGVycy9pMThuLnB5CisrKysgYi9nZW5zaGkvZmls dGVycy9pMThuLnB5CitAQCAtMTE5NCw4ICsxMTk0LDEwIEBAIGRlZiBleHRyYWN0X2Zyb21fY29k ZShjb2RlLCBnZXR0ZXh0X2Z1bmN0aW9ucyk6CisgICAgICAgICAgICAgICAgIGVsaWYgYXJnOgor ICAgICAgICAgICAgICAgICAgICAgc3RyaW5ncy5hcHBlbmQoTm9uZSkKKyAgICAgICAgICAgICBb X2FkZChhcmcpIGZvciBhcmcgaW4gbm9kZS5hcmdzXQorLSAgICAgICAgICAgIF9hZGQobm9kZS5z dGFyYXJncykKKy0gICAgICAgICAgICBfYWRkKG5vZGUua3dhcmdzKQorKyAgICAgICAgICAgIGlm IGhhc2F0dHIobm9kZSwgJ3N0YXJhcmdzJyk6CisrICAgICAgICAgICAgICAgIF9hZGQobm9kZS5z dGFyYXJncykKKysgICAgICAgICAgICBpZiBoYXNhdHRyKG5vZGUsICdrd2FyZ3MnKToKKysgICAg ICAgICAgICAgICAgX2FkZChub2RlLmt3YXJncykKKyAgICAgICAgICAgICBpZiBsZW4oc3RyaW5n cykgPT0gMToKKyAgICAgICAgICAgICAgICAgc3RyaW5ncyA9IHN0cmluZ3NbMF0KKyAgICAgICAg ICAgICBlbHNlOgorZGlmZiAtLWdpdCBhL2dlbnNoaS90ZW1wbGF0ZS9hc3R1dGlsLnB5IGIvZ2Vu c2hpL3RlbXBsYXRlL2FzdHV0aWwucHkKK2luZGV4IGY0ZTFlZGQuLmU1NjE4NDYgMTAwNjQ0Cist LS0gYS9nZW5zaGkvdGVtcGxhdGUvYXN0dXRpbC5weQorKysrIGIvZ2Vuc2hpL3RlbXBsYXRlL2Fz dHV0aWwucHkKK0BAIC0xNTEsNiArMTUxLDEwIEBAIGNsYXNzIEFTVENvZGVHZW5lcmF0b3Iob2Jq ZWN0KToKKyAgICAgICAgIGRlZiB2aXNpdF9hcmcoc2VsZiwgbm9kZSk6CisgICAgICAgICAgICAg c2VsZi5fd3JpdGUobm9kZS5hcmcpCisgCisrICAgIGRlZiB2aXNpdF9TdGFycmVkKHNlbGYsIG5v ZGUpOgorKyAgICAgICAgc2VsZi5fd3JpdGUoJyonKQorKyAgICAgICAgc2VsZi52aXNpdChub2Rl LnZhbHVlKQorKworICAgICAjIEZ1bmN0aW9uRGVmKGlkZW50aWZpZXIgbmFtZSwgYXJndW1lbnRz IGFyZ3MsCisgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG10KiBib2R5LCBleHBy KiBkZWNvcmF0b3JfbGlzdCkKKyAgICAgZGVmIHZpc2l0X0Z1bmN0aW9uRGVmKHNlbGYsIG5vZGUp OgorQEAgLTY2NCw5ICs2NjgsMTMgQEAgY2xhc3MgQVNUQ29kZUdlbmVyYXRvcihvYmplY3QpOgor ICAgICAgICAgICAgIGlmIG5vdCBmaXJzdDoKKyAgICAgICAgICAgICAgICAgc2VsZi5fd3JpdGUo JywgJykKKyAgICAgICAgICAgICBmaXJzdCA9IEZhbHNlCistICAgICAgICAgICAgIyBrZXl3b3Jk ID0gKGlkZW50aWZpZXIgYXJnLCBleHByIHZhbHVlKQorLSAgICAgICAgICAgIHNlbGYuX3dyaXRl KGtleXdvcmQuYXJnKQorLSAgICAgICAgICAgIHNlbGYuX3dyaXRlKCc9JykKKysgICAgICAgICAg ICBpZiBub3Qga2V5d29yZC5hcmc6CisrICAgICAgICAgICAgICAgICMgUHl0aG9uIDMuNSsgc3Rh ci1zdGFyIGFyZ3MKKysgICAgICAgICAgICAgICAgc2VsZi5fd3JpdGUoJyoqJykKKysgICAgICAg ICAgICBlbHNlOgorKyAgICAgICAgICAgICAgICAjIGtleXdvcmQgPSAoaWRlbnRpZmllciBhcmcs IGV4cHIgdmFsdWUpCisrICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlKGtleXdvcmQuYXJnKQor KyAgICAgICAgICAgICAgICBzZWxmLl93cml0ZSgnPScpCisgICAgICAgICAgICAgc2VsZi52aXNp dChrZXl3b3JkLnZhbHVlKQorICAgICAgICAgaWYgZ2V0YXR0cihub2RlLCAnc3RhcmFyZ3MnLCBO b25lKToKKyAgICAgICAgICAgICBpZiBub3QgZmlyc3Q6CitkaWZmIC0tZ2l0IGEvZ2Vuc2hpL3Rl bXBsYXRlL2RpcmVjdGl2ZXMucHkgYi9nZW5zaGkvdGVtcGxhdGUvZGlyZWN0aXZlcy5weQoraW5k ZXggNzMwMWMyZC4uNmZkMGYyOCAxMDA2NDQKKy0tLSBhL2dlbnNoaS90ZW1wbGF0ZS9kaXJlY3Rp dmVzLnB5CisrKysgYi9nZW5zaGkvdGVtcGxhdGUvZGlyZWN0aXZlcy5weQorQEAgLTI2NiwxMyAr MjY2LDIxIEBAIGNsYXNzIERlZkRpcmVjdGl2ZShEaXJlY3RpdmUpOgorICAgICAgICAgaWYgaXNp bnN0YW5jZShhc3QsIF9hc3QuQ2FsbCk6CisgICAgICAgICAgICAgc2VsZi5uYW1lID0gYXN0LmZ1 bmMuaWQKKyAgICAgICAgICAgICBmb3IgYXJnIGluIGFzdC5hcmdzOgorLSAgICAgICAgICAgICAg ICAjIG9ubHkgbmFtZXMKKy0gICAgICAgICAgICAgICAgc2VsZi5hcmdzLmFwcGVuZChhcmcuaWQp CisrICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYXJnLCBfYXN0LlN0YXJyZWQpOgorKyAg ICAgICAgICAgICAgICAgICAgIyBQeXRob24gMy41KworKyAgICAgICAgICAgICAgICAgICAgc2Vs Zi5zdGFyX2FyZ3MgPSBhcmcudmFsdWUuaWQKKysgICAgICAgICAgICAgICAgZWxzZToKKysgICAg ICAgICAgICAgICAgICAgICMgb25seSBuYW1lcworKyAgICAgICAgICAgICAgICAgICAgc2VsZi5h cmdzLmFwcGVuZChhcmcuaWQpCisgICAgICAgICAgICAgZm9yIGt3ZCBpbiBhc3Qua2V5d29yZHM6 CistICAgICAgICAgICAgICAgIHNlbGYuYXJncy5hcHBlbmQoa3dkLmFyZykKKy0gICAgICAgICAg ICAgICAgZXhwID0gRXhwcmVzc2lvbihrd2QudmFsdWUsIHRlbXBsYXRlLmZpbGVwYXRoLAorLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVubywgbG9va3VwPXRlbXBsYXRlLmxv b2t1cCkKKy0gICAgICAgICAgICAgICAgc2VsZi5kZWZhdWx0c1trd2QuYXJnXSA9IGV4cAorKyAg ICAgICAgICAgICAgICBpZiBrd2QuYXJnIGlzIE5vbmU6CisrICAgICAgICAgICAgICAgICAgICAj IFB5dGhvbiAzLjUrCisrICAgICAgICAgICAgICAgICAgICBzZWxmLmRzdGFyX2FyZ3MgPSBrd2Qu dmFsdWUuaWQKKysgICAgICAgICAgICAgICAgZWxzZToKKysgICAgICAgICAgICAgICAgICAgIHNl bGYuYXJncy5hcHBlbmQoa3dkLmFyZykKKysgICAgICAgICAgICAgICAgICAgIGV4cCA9IEV4cHJl c3Npb24oa3dkLnZhbHVlLCB0ZW1wbGF0ZS5maWxlcGF0aCwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbGluZW5vLCBsb29rdXA9dGVtcGxhdGUubG9va3VwKQorKyAgICAg ICAgICAgICAgICAgICAgc2VsZi5kZWZhdWx0c1trd2QuYXJnXSA9IGV4cAorICAgICAgICAgICAg IGlmIGdldGF0dHIoYXN0LCAnc3RhcmFyZ3MnLCBOb25lKToKKyAgICAgICAgICAgICAgICAgc2Vs Zi5zdGFyX2FyZ3MgPSBhc3Quc3RhcmFyZ3MuaWQKKyAgICAgICAgICAgICBpZiBnZXRhdHRyKGFz dCwgJ2t3YXJncycsIE5vbmUpOgorZGlmZiAtLWdpdCBhL2dlbnNoaS90ZW1wbGF0ZS9ldmFsLnB5 IGIvZ2Vuc2hpL3RlbXBsYXRlL2V2YWwucHkKK2luZGV4IGQzNzg0MTkuLjgxNjQ0YTcgMTAwNjQ0 CistLS0gYS9nZW5zaGkvdGVtcGxhdGUvZXZhbC5weQorKysrIGIvZ2Vuc2hpL3RlbXBsYXRlL2V2 YWwucHkKK0BAIC02MDAsNiArNjAwLDExIEBAIGNsYXNzIFRlbXBsYXRlQVNUVHJhbnNmb3JtZXIo QVNUVHJhbnNmb3JtZXIpOgorICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICBzZWxmLmxv Y2Fscy5wb3AoKQorIAorKyAgICAjIE9ubHkgdXNlZCBpbiBQeXRob24gMy41KworKyAgICBkZWYg dmlzaXRfU3RhcnJlZChzZWxmLCBub2RlKToKKysgICAgICAgIG5vZGUudmFsdWUgPSBzZWxmLnZp c2l0KG5vZGUudmFsdWUpCisrICAgICAgICByZXR1cm4gbm9kZQorKworICAgICBkZWYgdmlzaXRf TmFtZShzZWxmLCBub2RlKToKKyAgICAgICAgICMgSWYgdGhlIG5hbWUgcmVmZXJzIHRvIGEgbG9j YWwgaW5zaWRlIGEgbGFtYmRhLCBsaXN0IGNvbXByZWhlbnNpb24sIG9yCisgICAgICAgICAjIGdl bmVyYXRvciBleHByZXNzaW9uLCBsZWF2ZSBpdCBhbG9uZQorLS0gCisyLjEyLjAKKwpkaWZmIC0t Z2l0IGEvZ251L3BhY2thZ2VzL3BhdGNoZXMvcHl0aG9uLWdlbnNoaS1pc3N0cmluZy1oZWxwZXIu cGF0Y2ggYi9nbnUvcGFja2FnZXMvcGF0Y2hlcy9weXRob24tZ2Vuc2hpLWlzc3RyaW5nLWhlbHBl ci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjRmNmMxOWJiYQot LS0gL2Rldi9udWxsCisrKyBiL2dudS9wYWNrYWdlcy9wYXRjaGVzL3B5dGhvbi1nZW5zaGktaXNz dHJpbmctaGVscGVyLnBhdGNoCkBAIC0wLDAgKzEsMzcgQEAKK0Zyb20gY2M1ZTA3Mjg0ZjQ0Y2Rk OWJlZWMxNzhjNjkwNzBhNTNmNTVkMTMyMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206 IFNpbW9uIENyb3NzIDxob2RnZXN0YXJAZ21haWwuY29tPgorRGF0ZTogU3VuLCAxNiBGZWIgMjAx NCAxODo0MzoyMCArMDAwMAorU3ViamVjdDogW1BBVENIIDAzLzE1XSBBZGQgaXNzdHJpbmcgaGVs cGVyLgorCistLS0KKyBnZW5zaGkvY29tcGF0LnB5IHwgMTAgKysrKysrKysrLQorIDEgZmlsZSBj aGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2dl bnNoaS9jb21wYXQucHkgYi9nZW5zaGkvY29tcGF0LnB5CitpbmRleCA5Nzg3MzI1Li42NTc0ZTM5 IDEwMDY0NAorLS0tIGEvZ2Vuc2hpL2NvbXBhdC5weQorKysrIGIvZ2Vuc2hpL2NvbXBhdC5weQor QEAgLTM1LDYgKzM1LDE1IEBAIGVsc2U6CisgICAgICAgICAgICAgICAgICdQeXRob24gMiBjb21w YXRpYmlsaXR5IGZ1bmN0aW9uLiBOb3QgdXNhYmxlIGluIFB5dGhvbiAzLicpCisgCisgCisrIyBX ZSBuZWVkIHRvIHRlc3QgaWYgYW4gb2JqZWN0IGlzIGFuIGluc3RhbmNlIG9mIGEgc3RyaW5nIHR5 cGUgaW4gcGxhY2VzCisrCisraWYgSVNfUFlUSE9OMjoKKysgICAgZGVmIGlzc3RyaW5nKG9iaik6 CisrICAgICAgICByZXR1cm4gaXNpbnN0YW5jZShvYmosIGJhc2VzdHJpbmcpCisrZWxzZToKKysg ICAgZGVmIGlzc3RyaW5nKG9iaik6CisrICAgICAgICByZXR1cm4gaXNpbnN0YW5jZShvYmosIHN0 cikKKysKKyAjIFdlIG5lZWQgdG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIFN0cmluZ0lPIGFuZCBC eXRlc0lPIGluIHBsYWNlcworIAorIGlmIElTX1BZVEhPTjI6CitAQCAtMTEyLDQgKzEyMSwzIEBA IGV4Y2VwdCBOYW1lRXJyb3I6CisgICAgICAgICAgICAgaWYgbm90IHg6CisgICAgICAgICAgICAg ICAgIHJldHVybiBGYWxzZQorICAgICAgICAgcmV0dXJuIFRydWUKKy0KKy0tIAorMi4xMi4wCisK ZGlmZiAtLWdpdCBhL2dudS9wYWNrYWdlcy9wYXRjaGVzL3B5dGhvbi1nZW5zaGktc3RyaXBwaW5n LW9mLXVuc2FmZS1zY3JpcHQtdGFncy1QeXRob24tMy40LnBhdGNoIGIvZ251L3BhY2thZ2VzL3Bh dGNoZXMvcHl0aG9uLWdlbnNoaS1zdHJpcHBpbmctb2YtdW5zYWZlLXNjcmlwdC10YWdzLVB5dGhv bi0zLjQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi4yOTk1MWE2 MTQKLS0tIC9kZXYvbnVsbAorKysgYi9nbnUvcGFja2FnZXMvcGF0Y2hlcy9weXRob24tZ2Vuc2hp LXN0cmlwcGluZy1vZi11bnNhZmUtc2NyaXB0LXRhZ3MtUHl0aG9uLTMuNC5wYXRjaApAQCAtMCww ICsxLDUxIEBACitGcm9tIDA3NjliZTA0YzM4OTFhZTVjNzI0YzY3NzliYTEzZDFkMGY1M2I0YWUg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTaW1vbiBDcm9zcyA8aG9kZ2VzdGFyQGdt YWlsLmNvbT4KK0RhdGU6IFN1biwgMTYgRmViIDIwMTQgMTg6MjU6MTcgKzAwMDAKK1N1YmplY3Q6 IFtQQVRDSCAwMS8xNV0gQWxzbyBhbGxvdyBzdHJpcHBpbmcgb2YgdW5zYWZlIHNjcmlwdCB0YWdz IChQeXRob24gMy40CisgcGFyc2VzIHRoZSBzZWNvbmQgZXhhbXBsZSBhcyBhIHRhZyB3aG9zZSBu YW1lIGlzIHNjcmlwdCZ4eXopLgorCistLS0KKyBnZW5zaGkvZmlsdGVycy90ZXN0cy90ZXN0X2h0 bWwucHkgfCAxNCArKysrKysrKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25z KCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2Vuc2hpL2ZpbHRlcnMvdGVzdHMv dGVzdF9odG1sLnB5IGIvZ2Vuc2hpL2ZpbHRlcnMvdGVzdHMvdGVzdF9odG1sLnB5CitpbmRleCAw YzZjZmUxLi40NWVjMGRhIDEwMDY0NAorLS0tIGEvZ2Vuc2hpL2ZpbHRlcnMvdGVzdHMvdGVzdF9o dG1sLnB5CisrKysgYi9nZW5zaGkvZmlsdGVycy90ZXN0cy90ZXN0X2h0bWwucHkKK0BAIC0zNjgs MTIgKzM2OCwxNiBAQCBkZWYgU3R5bGVTYW5pdGl6ZXIoKToKKyAKKyBjbGFzcyBIVE1MU2FuaXRp emVyVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorIAorLSAgICBkZWYgYXNzZXJ0X3BhcnNl X2Vycm9yX29yX2VxdWFsKHNlbGYsIGV4cGVjdGVkLCBleHBsb2l0KToKKysgICAgZGVmIGFzc2Vy dF9wYXJzZV9lcnJvcl9vcl9lcXVhbChzZWxmLCBleHBlY3RlZCwgZXhwbG9pdCwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd19zdHJpcD1GYWxzZSk6CisgICAgICAg ICB0cnk6CisgICAgICAgICAgICAgaHRtbCA9IEhUTUwoZXhwbG9pdCkKKyAgICAgICAgIGV4Y2Vw dCBQYXJzZUVycm9yOgorICAgICAgICAgICAgIHJldHVybgorLSAgICAgICAgc2VsZi5hc3NlcnRF cXVhbHMoZXhwZWN0ZWQsIChodG1sIHwgSFRNTFNhbml0aXplcigpKS5yZW5kZXIoKSkKKysgICAg ICAgIHNhbml0aXplZF9odG1sID0gKGh0bWwgfCBIVE1MU2FuaXRpemVyKCkpLnJlbmRlcigpCisr ICAgICAgICBpZiBub3Qgc2FuaXRpemVkX2h0bWwgYW5kIGFsbG93X3N0cmlwOgorKyAgICAgICAg ICAgIHJldHVybgorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0ZWQsIHNhbml0aXpl ZF9odG1sKQorIAorICAgICBkZWYgdGVzdF9zYW5pdGl6ZV91bmNoYW5nZWQoc2VsZik6CisgICAg ICAgICBodG1sID0gSFRNTCh1JzxhIGhyZWY9IiMiPmZvPGJyIC8+bzwvYT4nKQorQEAgLTQxNiwx MCArNDIwLDEyIEBAIGNsYXNzIEhUTUxTYW5pdGl6ZXJUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2Fz ZSk6CisgICAgICAgICBodG1sID0gSFRNTCh1JzxTQ1JJUFQgU1JDPSJodHRwOi8vZXhhbXBsZS5j b20vIj48L1NDUklQVD4nKQorICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJycsIChodG1sIHwg SFRNTFNhbml0aXplcigpKS5yZW5kZXIoKSkKKyAgICAgICAgIHNyYyA9IHUnPFNDUlwwSVBUPmFs ZXJ0KCJmb28iKTwvU0NSXDBJUFQ+JworLSAgICAgICAgc2VsZi5hc3NlcnRfcGFyc2VfZXJyb3Jf b3JfZXF1YWwoJyZsdDtTQ1JceDAwSVBUJmd0O2FsZXJ0KCJmb28iKScsIHNyYykKKysgICAgICAg IHNlbGYuYXNzZXJ0X3BhcnNlX2Vycm9yX29yX2VxdWFsKCcmbHQ7U0NSXHgwMElQVCZndDthbGVy dCgiZm9vIiknLCBzcmMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBhbGxvd19zdHJpcD1UcnVlKQorICAgICAgICAgc3JjID0gdSc8U0NSSVBUJlhZWiBTUkM9Imh0 dHA6Ly9leGFtcGxlLmNvbS8iPjwvU0NSSVBUPicKKyAgICAgICAgIHNlbGYuYXNzZXJ0X3BhcnNl X2Vycm9yX29yX2VxdWFsKCcmbHQ7U0NSSVBUJmFtcDtYWVo7ICcKKy0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICdTUkM9Imh0dHA6Ly9leGFtcGxlLmNvbS8iJmd0Oycs IHNyYykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTUkM9Imh0 dHA6Ly9leGFtcGxlLmNvbS8iJmd0OycsIHNyYywKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGFsbG93X3N0cmlwPVRydWUpCisgCisgICAgIGRlZiB0ZXN0X3Nhbml0 aXplX3JlbW92ZV9vbmNsaWNrX2F0dHIoc2VsZik6CisgICAgICAgICBodG1sID0gSFRNTCh1Jzxk aXYgb25jbGljaz1cJ2FsZXJ0KCJmb28iKVwnIC8+JykKKy0tIAorMi4xMi4wCisKZGlmZiAtLWdp dCBhL2dudS9wYWNrYWdlcy9weXRob24uc2NtIGIvZ251L3BhY2thZ2VzL3B5dGhvbi5zY20KaW5k ZXggZjFlZjUzZTFhLi4xNGNlY2ZjYjEgMTAwNjQ0Ci0tLSBhL2dudS9wYWNrYWdlcy9weXRob24u c2NtCisrKyBiL2dudS9wYWNrYWdlcy9weXRob24uc2NtCkBAIC0xNDY0NCwzICsxNDY0NCw3OCBA QCBzdWJzdGl0dXRlIGZvciByZWRpcy4iKQogCiAoZGVmaW5lLXB1YmxpYyBweXRob24yLXNxbAog ICAocGFja2FnZS13aXRoLXB5dGhvbjIgcHl0aG9uLXNxbCkpCisKKyhkZWZpbmUtcHVibGljIHB5 dGhvbi1nZW5zaGkKKyAgKHBhY2thZ2UKKyAgICAobmFtZSAicHl0aG9uLWdlbnNoaSIpCisgICAg KHZlcnNpb24gIjAuNyIpCisgICAgKHNvdXJjZQorICAgICAob3JpZ2luCisgICAgICAgKG1ldGhv ZCB1cmwtZmV0Y2gpCisgICAgICAgKHVyaSAoc3RyaW5nLWFwcGVuZAorICAgICAgICAgICAgICJo dHRwczovL2Z0cC5lZGdld2FsbC5vcmcvcHViL2dlbnNoaS9HZW5zaGktIgorICAgICAgICAgICAg IHZlcnNpb24KKyAgICAgICAgICAgICAiLnRhci5neiIpKQorICAgICAgIChwYXRjaGVzCisgICAg ICAgIChzZWFyY2gtcGF0Y2hlcworICAgICAgICAgOzsgVGhlIGZpcnN0IDQgcGF0Y2hlcyBhcmUg aW4gdGhlIG1hc3RlciBicmFuY2ggdXBzdHJlYW0uCisgICAgICAgICA7OyBzZWUgdGhpcyBhcyBh IHJlZmVyZW5jZSBodHRwczovL2dlbnNoaS5lZGdld2FsbC5vcmcvdGlja2V0LzU4MgorICAgICAg ICAgOzsgVGhlIGxhc3QgMiBhcmUgTk9UIGluIGFueSBicmFuY2guCisgICAgICAgICA7OyBUaGV5 IHdlcmUgc2VudCBhcyBhdHRhY2htZW50cyB0byBhIHRpY2tldCBvcGVuZWQgYXQKKyAgICAgICAg IDs7IGh0dHBzOi8vZ2Vuc2hpLmVkZ2V3YWxsLm9yZy90aWNrZXQvNjAyI25vMQorICAgICAgICAg InB5dGhvbi1nZW5zaGktc3RyaXBwaW5nLW9mLXVuc2FmZS1zY3JpcHQtdGFncy1QeXRob24tMy40 LnBhdGNoIgorICAgICAgICAgInB5dGhvbi1nZW5zaGktRGlzYWJsZS10aGUtc3BlZWR1cHMtQy1l eHRlbnNpb24tb24tQ1B5dGhvbi0zLjMtc2luYy5wYXRjaCIKKyAgICAgICAgICJweXRob24tZ2Vu c2hpLWlzc3RyaW5nLWhlbHBlci5wYXRjaCIKKyAgICAgICAgICJweXRob24tZ2Vuc2hpLUFkZC1z dXBwb3J0LWZvci1QeXRob24tMy40LUFTVC1zdXBwb3J0LWZvci1OYW1lQ29uc3QucGF0Y2giCisg ICAgICAgICAicHl0aG9uLWdlbnNoaS1maXhpbmctdGhlLXRlc3RzLW9uLXB5dGhvbjM1LnBhdGNo IgorICAgICAgICAgInB5dGhvbi1nZW5zaGktYnVpbGRhYmxlLW9uLXB5dGhvbjI3LXRvby5wYXRj aCIpKQorICAgICAgIChzaGEyNTYKKyAgICAgICAgKGJhc2UzMgorICAgICAgICAgIjBsa2ticDZm Ynd6djB6ZGE1aXFjMjFycjdyZGxka3doM2hmYWJmamw5aTRid3ExNDg1OHgiKSkpKQorICAgIChi dWlsZC1zeXN0ZW0gcHl0aG9uLWJ1aWxkLXN5c3RlbSkKKyAgICAoaG9tZS1wYWdlICJodHRwczov L2dlbnNoaS5lZGdld2FsbC5vcmcvIikKKyAgICAoc3lub3BzaXMgIlRvb2xraXQgZm9yIGdlbmVy YXRpb24gb2Ygb3V0cHV0IGZvciB0aGUgd2ViIikKKyAgICAoZGVzY3JpcHRpb24gIkdlbnNoaSBp cyBhIFB5dGhvbiBsaWJyYXJ5IHRoYXQgcHJvdmlkZXMKK2FuIGludGVncmF0ZWQgc2V0IG9mIGNv bXBvbmVudHMgZm9yIHBhcnNpbmcsIGdlbmVyYXRpbmcsIGFuZCBwcm9jZXNzaW5nIEhUTUwsIFhN TAorb3Igb3RoZXIgdGV4dHVhbCBjb250ZW50IGZvciBvdXRwdXQgZ2VuZXJhdGlvbiBvbiB0aGUg d2ViIikKKyAgICAobGljZW5zZSBsaWNlbnNlOmJzZC0zKSkpCisKKzs7IHRoZSBsaW50ZXIgaGVy ZSBjbGFpbXMgdGhhdCBwYXRjaCBmaWxlIG5hbWVzCis7OyBzaG91bGQgc3RhcnQgd2l0aCB0aGUg cGFja2FnZSBuYW1lLgorOzsgSW4gdGhpcyBjYXNlIHRoZSBwYXRjaGVzIGFyZSBpbmhlcml0ZWQg ZnJvbQorOzsgcHl0aG9uLWdlbnNoaSB3aXRob3V0IHRoZSAiMiIKKyhkZWZpbmUtcHVibGljIHB5 dGhvbjItZ2Vuc2hpCisgIChwYWNrYWdlLXdpdGgtcHl0aG9uMiBweXRob24tZ2Vuc2hpKSkKKwor Cis7OyB0aGlzIHBhY2thZ2UgZGVwZW5kcyBvbiBweXRob24tZ2Vuc2hpIHRoYXQKKzs7IGNhbiBi ZSBidWl0IG9ubHkgd2l0aCBweXRob24tMgorOzsgc28gcHJvdmlkaW5nIGEgcHl0aG9uMzMgdmVy c2lvbiBvZiB0aGlzCis7OyBpcyBkaWZmaWN1bHQKKyhkZWZpbmUtcHVibGljIHB5dGhvbjItcmVs YXRvcmlvCisgIChwYWNrYWdlCisgICAgKG5hbWUgInB5dGhvbi1yZWxhdG9yaW8iKQorICAgICh2 ZXJzaW9uICIwLjYuNCIpCisgICAgKHNvdXJjZQorICAgICAob3JpZ2luCisgICAgICAgKG1ldGhv ZCB1cmwtZmV0Y2gpCisgICAgICAgKHVyaSAocHlwaS11cmkgInJlbGF0b3JpbyIgdmVyc2lvbikp CisgICAgICAgKHNoYTI1NgorICAgICAgICAoYmFzZTMyCisgICAgICAgICAiMGxpbmNxNzltemdh endkOWdoNDFkeWJqaDljM244N3I4M3BsOG5rM2o3OWFpaHlmazg0eiIpKSkpCisgICAgKHByb3Bh Z2F0ZWQtaW5wdXRzCisgICAgIGAoKCJseG1sIiAscHl0aG9uMi1seG1sKQorICAgICAgICgiZ2Vu c2hpIiAscHl0aG9uMi1nZW5zaGkpKSkKKyAgICAoYXJndW1lbnRzCisgICAgIGAoIzpweXRob24g LHB5dGhvbi0yKSkKKyAgICA7OyBiZWNhdXNlIHJlbGF0b3JpbyBkZXBlbmRzIG9uIHB5dGhvbi1n ZW5zaGkKKyAgICA7OyB0aGF0IGNhbiBiZSBidWlsdCB3aXRoIHB5dGhvbi0yIG9ubHkKKyAgICAo YnVpbGQtc3lzdGVtIHB5dGhvbi1idWlsZC1zeXN0ZW0pCisgICAgKGhvbWUtcGFnZSAiaHR0cHM6 Ly9yZWxhdG9yaW8udHJ5dG9uLm9yZy8iKQorICAgIChzeW5vcHNpcyAiVGVtcGxhdGluZyBsaWJy YXJ5IGFibGUgdG8gb3V0cHV0IG9kdCBhbmQgcGRmIGZpbGVzIikKKyAgICAoZGVzY3JpcHRpb24K KyAgICAgIlJlbGF0b3JpbyBpcyBhIHRlbXBsYXRpbmcgbGlicmFyeSB3aGljaAorcHJvdmlkZXMg YSB3YXkgdG8gZWFzaWx5IG91dHB1dCBzZXZlcmFsIGtpbmRzIG9mIGZpbGVzCisob2R0LCBvZHMs IHBuZywgc3ZnLCDigKYpLiAgU3VwcG9ydCBmb3IgbW9yZSBmaWxldHlwZXMgY2FuIGJlCitlYXNp bHkgYWRkZWQgYnkgY3JlYXRpbmcgcGx1Z2lucyBmb3IgdGhlbS4iKQorICAgIChsaWNlbnNlIGxp Y2Vuc2U6bGdwbDMpKSkKLS0gCjIuMTMuMAoKCkZyb20gMGViNTI2MWViMmQ2OTZhMzBkNWE3MzA0 ZGQ0ZGMxNjkyYzE0YWM2MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogaHVtYW5pdGll c05lcmQgPGNhdG9uYW5vQGdtYWlsLmNvbT4KRGF0ZTogV2VkLCA1IEFwciAyMDE3IDE2OjA2OjA2 ICswMjAwClN1YmplY3Q6IFtQQVRDSCAzLzVdICBnbnUgQWRkOiBweXRob24tcmVsYXRvcmlvLgoK KiBnbnUvcGFja2FnZXMvcHl0aG9uIChweXRob24tcmVsYXRvcmlvLCBweXRob24yLXJlbGF0b3Jp byk6IE5ldyB2YXJpYWJsZXMuCi0tLQogZ251L3BhY2thZ2VzL3B5dGhvbi5zY20gfCAxOCArKysr KystLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDEyIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2dudS9wYWNrYWdlcy9weXRob24uc2NtIGIvZ251L3BhY2th Z2VzL3B5dGhvbi5zY20KaW5kZXggMTRjZWNmY2IxLi4zMjY4ZGNjODUgMTAwNjQ0Ci0tLSBhL2du dS9wYWNrYWdlcy9weXRob24uc2NtCisrKyBiL2dudS9wYWNrYWdlcy9weXRob24uc2NtCkBAIC0x NDY4NywxMiArMTQ2ODcsNyBAQCBvciBvdGhlciB0ZXh0dWFsIGNvbnRlbnQgZm9yIG91dHB1dCBn ZW5lcmF0aW9uIG9uIHRoZSB3ZWIiKQogKGRlZmluZS1wdWJsaWMgcHl0aG9uMi1nZW5zaGkKICAg KHBhY2thZ2Utd2l0aC1weXRob24yIHB5dGhvbi1nZW5zaGkpKQogCi0KLTs7IHRoaXMgcGFja2Fn ZSBkZXBlbmRzIG9uIHB5dGhvbi1nZW5zaGkgdGhhdAotOzsgY2FuIGJlIGJ1aXQgb25seSB3aXRo IHB5dGhvbi0yCi07OyBzbyBwcm92aWRpbmcgYSBweXRob24zMyB2ZXJzaW9uIG9mIHRoaXMKLTs7 IGlzIGRpZmZpY3VsdAotKGRlZmluZS1wdWJsaWMgcHl0aG9uMi1yZWxhdG9yaW8KKyhkZWZpbmUt cHVibGljIHB5dGhvbi1yZWxhdG9yaW8KICAgKHBhY2thZ2UKICAgICAobmFtZSAicHl0aG9uLXJl bGF0b3JpbyIpCiAgICAgKHZlcnNpb24gIjAuNi40IikKQEAgLTE0NzA0LDEyICsxNDY5OSw4IEBA IG9yIG90aGVyIHRleHR1YWwgY29udGVudCBmb3Igb3V0cHV0IGdlbmVyYXRpb24gb24gdGhlIHdl YiIpCiAgICAgICAgIChiYXNlMzIKICAgICAgICAgICIwbGluY3E3OW16Z2F6d2Q5Z2g0MWR5Ympo OWMzbjg3cjgzcGw4bmszajc5YWloeWZrODR6IikpKSkKICAgICAocHJvcGFnYXRlZC1pbnB1dHMK LSAgICAgYCgoImx4bWwiICxweXRob24yLWx4bWwpCi0gICAgICAgKCJnZW5zaGkiICxweXRob24y LWdlbnNoaSkpKQotICAgIChhcmd1bWVudHMKLSAgICAgYCgjOnB5dGhvbiAscHl0aG9uLTIpKQot ICAgIDs7IGJlY2F1c2UgcmVsYXRvcmlvIGRlcGVuZHMgb24gcHl0aG9uLWdlbnNoaQotICAgIDs7 IHRoYXQgY2FuIGJlIGJ1aWx0IHdpdGggcHl0aG9uLTIgb25seQorICAgICBgKCgibHhtbCIgLHB5 dGhvbi1seG1sKQorICAgICAgICgiZ2Vuc2hpIiAscHl0aG9uLWdlbnNoaSkpKQogICAgIChidWls ZC1zeXN0ZW0gcHl0aG9uLWJ1aWxkLXN5c3RlbSkKICAgICAoaG9tZS1wYWdlICJodHRwczovL3Jl bGF0b3Jpby50cnl0b24ub3JnLyIpCiAgICAgKHN5bm9wc2lzICJUZW1wbGF0aW5nIGxpYnJhcnkg YWJsZSB0byBvdXRwdXQgb2R0IGFuZCBwZGYgZmlsZXMiKQpAQCAtMTQ3MTksMyArMTQ3MTAsNiBA QCBwcm92aWRlcyBhIHdheSB0byBlYXNpbHkgb3V0cHV0IHNldmVyYWwga2luZHMgb2YgZmlsZXMK IChvZHQsIG9kcywgcG5nLCBzdmcsIOKApikuICBTdXBwb3J0IGZvciBtb3JlIGZpbGV0eXBlcyBj YW4gYmUKIGVhc2lseSBhZGRlZCBieSBjcmVhdGluZyBwbHVnaW5zIGZvciB0aGVtLiIpCiAgICAg KGxpY2Vuc2UgbGljZW5zZTpsZ3BsMykpKQorCisoZGVmaW5lLXB1YmxpYyBweXRob24yLXJlbGF0 b3JpbworICAocGFja2FnZS13aXRoLXB5dGhvbjIgcHl0aG9uLXJlbGF0b3JpbykpCi0tIAoyLjEz LjAKCgpGcm9tIGI3MWNkMmJkNjY0ZTUzMGRmYWJiM2U1NThkYjE1OTM0ZjBlYzIwNGEgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IGh1bWFuaXRpZXNOZXJkIDxjYXRvbmFub0BnbWFpbC5j b20+CkRhdGU6IFRodSwgNiBBcHIgMjAxNyAwOTozNzo1OSArMDIwMApTdWJqZWN0OiBbUEFUQ0gg NC81XSBnbnU6IEFkZCBweXRob24tdHJ5dG9uZC4KCiogZ251L3BhY2thZ2VzL3B5dGhvbi5zY20g KHB5dGhvbi10cnl0b25kLCBweXRob24yLXRyeXRvbmQpOiBOZXcgdmFyaWFibGVzLgotLS0KIGdu dS9wYWNrYWdlcy9weXRob24uc2NtIHwgNTAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDUwIGluc2VydGlvbnMoKykKCmRp ZmYgLS1naXQgYS9nbnUvcGFja2FnZXMvcHl0aG9uLnNjbSBiL2dudS9wYWNrYWdlcy9weXRob24u c2NtCmluZGV4IDMyNjhkY2M4NS4uMGM1ZmY2NTE3IDEwMDY0NAotLS0gYS9nbnUvcGFja2FnZXMv cHl0aG9uLnNjbQorKysgYi9nbnUvcGFja2FnZXMvcHl0aG9uLnNjbQpAQCAtMTQ3MTMsMyArMTQ3 MTMsNTMgQEAgZWFzaWx5IGFkZGVkIGJ5IGNyZWF0aW5nIHBsdWdpbnMgZm9yIHRoZW0uIikKIAog KGRlZmluZS1wdWJsaWMgcHl0aG9uMi1yZWxhdG9yaW8KICAgKHBhY2thZ2Utd2l0aC1weXRob24y IHB5dGhvbi1yZWxhdG9yaW8pKQorCisoZGVmaW5lLXB1YmxpYyBweXRob24tdHJ5dG9uZAorICAo cGFja2FnZQorICAgIChuYW1lICJweXRob24tdHJ5dG9uZCIpCisgICAgKHZlcnNpb24gIjQuMi4z IikKKyAgICAoc291cmNlCisgICAgIChvcmlnaW4KKyAgICAgICAobWV0aG9kIHVybC1mZXRjaCkK KyAgICAgICAodXJpIChweXBpLXVyaQorICAgICAgICAgICAgICJ0cnl0b25kIgorICAgICAgICAg ICAgIHZlcnNpb24KKyAgICAgICAgICAgICAiLnRhci5neiIpKQorICAgICAgIChzaGEyNTYKKyAg ICAgICAgKGJhc2UzMgorICAgICAgICAgIjF3OWJjMHFjazlrMXZ6azF4dnJ5M3ZiNzBtaWJheGlw cDIyOW5heW0yZm53aTI4MmpsaDUiKSkpKQorICAgIChidWlsZC1zeXN0ZW0gcHl0aG9uLWJ1aWxk LXN5c3RlbSkKKyAgICAoYXJndW1lbnRzCisgICAgIGAoIzpwaGFzZXMKKyAgICAgICAobW9kaWZ5 LXBoYXNlcyAlc3RhbmRhcmQtcGhhc2VzCisgICAgICAgICAoYWRkLWJlZm9yZSAnY2hlY2sgJ3By ZXBhcmF0aW9ucworICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSogXworICAgICAgICAgICAg ICAgICAgICAgICA7OyB0aGlzIGlzIHVzZWQgaW4gdGhlIHRlc3RzCisgICAgICAgICAgICAgICAg ICAgICAgIChzZXRlbnYgIkRCX05BTUUiICI6bWVtb3J5OiIpKSkpKSkKKyAgICAocHJvcGFnYXRl ZC1pbnB1dHMKKyAgICAgYCgoInBvbGliIiAscHl0aG9uLXBvbGliKQorICAgICAgICgiZGF0ZXV0 aWwiICxweXRob24tZGF0ZXV0aWwpCisgICAgICAgKCJ3ZXJremV1ZyIgLHB5dGhvbi13ZXJremV1 ZykKKyAgICAgICAoIndyYXB0IiAscHl0aG9uLXdyYXB0KQorICAgICAgICgicHl0aG9uLXNxbCIg LHB5dGhvbi1zcWwpCisgICAgICAgKCJnZW5zaGkiICxweXRob24tZ2Vuc2hpKQorICAgICAgICgi cmVsYXRvcmlvIiAscHl0aG9uLXJlbGF0b3JpbykKKyAgICAgICAoImx4bWwiICxweXRob24tbHht bCkKKyAgICAgICA7OyB0aGVyZSdzIG5vIHB5dG9uLW15c3FsIGluIEd1aXggcmlnaHQgbm93Cisg ICAgICAgOzsgc28gcHN5Y29wZyAocG9zdGdyZXNxbCkgb25seSBmb3Igbm93CisgICAgICAgKCJw c3ljb3BnIiAscHl0aG9uLXBzeWNvcGcyKSkpCisgICAgKG5hdGl2ZS1pbnB1dHMKKyAgICAgOzsg dGhpcyBpcyB1c2VkIGluIHRoZSB0ZXN0cworICAgICBgKCgibW9jayIgLHB5dGhvbi1tb2NrKSkp CisgICAgKGhvbWUtcGFnZSAiaHR0cDovL3d3dy50cnl0b24ub3JnLyIpCisgICAgKHN5bm9wc2lz ICJTZXJ2ZXIgY29tcG9uZW50IG9mIFRyeXRvbiIpCisgICAgKGRlc2NyaXB0aW9uCisgICAiVGhl IHNlcnZlciBvZiB0aGUgVHJ5dG9uIGFwcGxpY2F0aW9uIHBsYXRmb3JtLgorQSB0aHJlZS10aWVy cyBoaWdoLWxldmVsIGdlbmVyYWwgcHVycG9zZSBhcHBsaWNhdGlvbiBwbGF0Zm9ybQord3JpdHRl biBpbiBQeXRob24gYW5kIHVzZSBQb3N0Z3Jlc3FsIGFzIG1haW4gZGF0YWJhc2UgZW5naW5lLgor SXQgaXMgdGhlIGNvcmUgYmFzZSBvZiBhbiBPcGVuIFNvdXJjZSBFUlAuCitJdCBwcm92aWRlcyBt b2R1bGFyaXR5LCBzY2FsYWJpbGl0eSBhbmQgc2VjdXJpdHkuIikKKyAgKGxpY2Vuc2UgbGljZW5z ZTpsZ3BsMykpKQorCisoZGVmaW5lLXB1YmxpYyBweXRob24yLXRyeXRvbmQKKyAgKHBhY2thZ2Ut d2l0aC1weXRob24yIHB5dGhvbi10cnl0b25kKSkKLS0gCjIuMTMuMAoKCkZyb20gNDg0OTNjYWQ5 MGVhYzFkODA3ZmM2ZjNkNzAxMWNjYzgxMWM3MTNhMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogaHVtYW5pdGllc05lcmQgPGNhdG9uYW5vQGdtYWlsLmNvbT4KRGF0ZTogVGh1LCA2IEFw ciAyMDE3IDIyOjE3OjExICswMjAwClN1YmplY3Q6IFtQQVRDSCA1LzVdIGdudTogQWRkIHB5dGhv bjItdHJ5dG9uLgoKKiBnbnUvcGFja2FnZXMvcHl0aG9uLnNjbSAocHl0aG9uMi10cnl0b24pOiBO ZXcgdmFyaWFibGUuCi0tLQogZ251L3BhY2thZ2VzL3B5dGhvbi5zY20gfCA4MiArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwg NTMgaW5zZXJ0aW9ucygrKSwgMjkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZ251L3BhY2th Z2VzL3B5dGhvbi5zY20gYi9nbnUvcGFja2FnZXMvcHl0aG9uLnNjbQppbmRleCAwYzVmZjY1MTcu LmFjMTA2MTAxNCAxMDA2NDQKLS0tIGEvZ251L3BhY2thZ2VzL3B5dGhvbi5zY20KKysrIGIvZ251 L3BhY2thZ2VzL3B5dGhvbi5zY20KQEAgLTE0NjI2LDE2ICsxNDYyNiwxNSBAQCBzdWJzdGl0dXRl IGZvciByZWRpcy4iKQogKGRlZmluZS1wdWJsaWMgcHl0aG9uLXNxbAogICAocGFja2FnZQogICAg IChuYW1lICJweXRob24tc3FsIikKLSAgICAodmVyc2lvbiAiMC44IikKKyAgICAodmVyc2lvbiAi MC45IikKICAgICAoc291cmNlCiAgICAgIChvcmlnaW4KICAgICAgICAobWV0aG9kIHVybC1mZXRj aCkKICAgICAgICAodXJpIChweXBpLXVyaQotICAgICAgICAgICAgICJweXRob24tc3FsIgotICAg ICAgICAgICAgIHZlcnNpb24pKQorICAgICAgICAgICAgICJweXRob24tc3FsIiB2ZXJzaW9uKSkK ICAgICAgICAoc2hhMjU2CiAgICAgICAgIChiYXNlMzIKLSAgICAgICAgICIweGlrOTM5c3hxZnFx YnBnY3NuZmpud3M2OTJiamlwMzJraGd3aHExeWNwaGZ5N2RmM2gyIikpKSkKKyAgICAgICAgICIw cDZrYXFqMDJ2ejBoYWJtZHgzN3pqazZoanhkZm04YXc3Mzd6czA1OXZ2cHI3MGlyZDg3IikpKSkK ICAgICAoYnVpbGQtc3lzdGVtIHB5dGhvbi1idWlsZC1zeXN0ZW0pCiAgICAgKGhvbWUtcGFnZSAi aHR0cHM6Ly9weXRob24tc3FsLnRyeXRvbi5vcmcvIikKICAgICAoc3lub3BzaXMgIkxpYnJhcnkg dG8gd3JpdGUgU1FMIHF1ZXJpZXMiKQpAQCAtMTQ2NTQsOCArMTQ2NTMsNyBAQCBzdWJzdGl0dXRl IGZvciByZWRpcy4iKQogICAgICAgIChtZXRob2QgdXJsLWZldGNoKQogICAgICAgICh1cmkgKHN0 cmluZy1hcHBlbmQKICAgICAgICAgICAgICAiaHR0cHM6Ly9mdHAuZWRnZXdhbGwub3JnL3B1Yi9n ZW5zaGkvR2Vuc2hpLSIKLSAgICAgICAgICAgICB2ZXJzaW9uCi0gICAgICAgICAgICAgIi50YXIu Z3oiKSkKKyAgICAgICAgICAgICB2ZXJzaW9uICIudGFyLmd6IikpCiAgICAgICAgKHBhdGNoZXMK ICAgICAgICAgKHNlYXJjaC1wYXRjaGVzCiAgICAgICAgICA7OyBUaGUgZmlyc3QgNCBwYXRjaGVz IGFyZSBpbiB0aGUgbWFzdGVyIGJyYW5jaCB1cHN0cmVhbS4KQEAgLTE0Njk5LDggKzE0Njk3LDgg QEAgb3Igb3RoZXIgdGV4dHVhbCBjb250ZW50IGZvciBvdXRwdXQgZ2VuZXJhdGlvbiBvbiB0aGUg d2ViIikKICAgICAgICAgKGJhc2UzMgogICAgICAgICAgIjBsaW5jcTc5bXpnYXp3ZDlnaDQxZHli amg5YzNuODdyODNwbDhuazNqNzlhaWh5Zms4NHoiKSkpKQogICAgIChwcm9wYWdhdGVkLWlucHV0 cwotICAgICBgKCgibHhtbCIgLHB5dGhvbi1seG1sKQotICAgICAgICgiZ2Vuc2hpIiAscHl0aG9u LWdlbnNoaSkpKQorICAgICBgKCgicHl0aG9uLWx4bWwiICxweXRob24tbHhtbCkKKyAgICAgICAo InB5dGhvbi1nZW5zaGkiICxweXRob24tZ2Vuc2hpKSkpCiAgICAgKGJ1aWxkLXN5c3RlbSBweXRo b24tYnVpbGQtc3lzdGVtKQogICAgIChob21lLXBhZ2UgImh0dHBzOi8vcmVsYXRvcmlvLnRyeXRv bi5vcmcvIikKICAgICAoc3lub3BzaXMgIlRlbXBsYXRpbmcgbGlicmFyeSBhYmxlIHRvIG91dHB1 dCBvZHQgYW5kIHBkZiBmaWxlcyIpCkBAIC0xNDcxNCwyMCArMTQ3MTIsMTkgQEAgZWFzaWx5IGFk ZGVkIGJ5IGNyZWF0aW5nIHBsdWdpbnMgZm9yIHRoZW0uIikKIChkZWZpbmUtcHVibGljIHB5dGhv bjItcmVsYXRvcmlvCiAgIChwYWNrYWdlLXdpdGgtcHl0aG9uMiBweXRob24tcmVsYXRvcmlvKSkK IAotKGRlZmluZS1wdWJsaWMgcHl0aG9uLXRyeXRvbmQKKyhkZWZpbmUtcHVibGljIHRyeXRvbmQK ICAgKHBhY2thZ2UKLSAgICAobmFtZSAicHl0aG9uLXRyeXRvbmQiKQotICAgICh2ZXJzaW9uICI0 LjIuMyIpCisgICAgKG5hbWUgInRyeXRvbmQiKQorICAgICh2ZXJzaW9uICI0LjQuMCIpCiAgICAg KHNvdXJjZQogICAgICAob3JpZ2luCiAgICAgICAgKG1ldGhvZCB1cmwtZmV0Y2gpCi0gICAgICAg KHVyaSAocHlwaS11cmkKLSAgICAgICAgICAgICAidHJ5dG9uZCIKLSAgICAgICAgICAgICB2ZXJz aW9uCi0gICAgICAgICAgICAgIi50YXIuZ3oiKSkKKyAgICAgICAodXJpIChzdHJpbmctYXBwZW5k CisgICAgICAgICAgICAgImh0dHBzOi8vZG93bmxvYWRzLnRyeXRvbi5vcmcvNC40L3RyeXRvbmQt IgorICAgICAgICAgICAgIHZlcnNpb24gIi50YXIuZ3oiKSkKICAgICAgICAoc2hhMjU2CiAgICAg ICAgIChiYXNlMzIKLSAgICAgICAgICIxdzliYzBxY2s5azF2emsxeHZyeTN2YjcwbWliYXhpcHAy MjluYXltMmZud2kyODJqbGg1IikpKSkKKyAgICAgICAgICIwZjV4aDRzOHhyMDFycno2M2FjY3J6 OGxwc25pMGRmc2pybmw0aDN3aWRyZ3o2ZHMyZnI2IikpKSkKICAgICAoYnVpbGQtc3lzdGVtIHB5 dGhvbi1idWlsZC1zeXN0ZW0pCiAgICAgKGFyZ3VtZW50cwogICAgICBgKCM6cGhhc2VzCkBAIC0x NDczNiwyMSArMTQ3MzMsMjEgQEAgZWFzaWx5IGFkZGVkIGJ5IGNyZWF0aW5nIHBsdWdpbnMgZm9y IHRoZW0uIikKICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEqIF8KICAgICAgICAgICAgICAg ICAgICAgICAgOzsgdGhpcyBpcyB1c2VkIGluIHRoZSB0ZXN0cwogICAgICAgICAgICAgICAgICAg ICAgICAoc2V0ZW52ICJEQl9OQU1FIiAiOm1lbW9yeToiKSkpKSkpCi0gICAgKHByb3BhZ2F0ZWQt aW5wdXRzCi0gICAgIGAoKCJwb2xpYiIgLHB5dGhvbi1wb2xpYikKLSAgICAgICAoImRhdGV1dGls IiAscHl0aG9uLWRhdGV1dGlsKQotICAgICAgICgid2Vya3pldWciICxweXRob24td2Vya3pldWcp Ci0gICAgICAgKCJ3cmFwdCIgLHB5dGhvbi13cmFwdCkKKyAgICAoaW5wdXRzCisgICAgIGAoKCJw eXRob24tcG9saWIiICxweXRob24tcG9saWIpCisgICAgICAgKCJweXRob24tZGF0ZXV0aWwiICxw eXRob24tZGF0ZXV0aWwpCisgICAgICAgKCJweXRob24td2Vya3pldWciICxweXRob24td2Vya3pl dWcpCisgICAgICAgKCJweXRob24td3JhcHQiICxweXRob24td3JhcHQpCiAgICAgICAgKCJweXRo b24tc3FsIiAscHl0aG9uLXNxbCkKLSAgICAgICAoImdlbnNoaSIgLHB5dGhvbi1nZW5zaGkpCi0g ICAgICAgKCJyZWxhdG9yaW8iICxweXRob24tcmVsYXRvcmlvKQotICAgICAgICgibHhtbCIgLHB5 dGhvbi1seG1sKQorICAgICAgICgicHl0aG9uLWdlbnNoaSIgLHB5dGhvbi1nZW5zaGkpCisgICAg ICAgKCJweXRob24tcmVsYXRvcmlvIiAscHl0aG9uLXJlbGF0b3JpbykKKyAgICAgICAoInB5dGhv bi1seG1sIiAscHl0aG9uLWx4bWwpCiAgICAgICAgOzsgdGhlcmUncyBubyBweXRvbi1teXNxbCBp biBHdWl4IHJpZ2h0IG5vdwogICAgICAgIDs7IHNvIHBzeWNvcGcgKHBvc3RncmVzcWwpIG9ubHkg Zm9yIG5vdwotICAgICAgICgicHN5Y29wZyIgLHB5dGhvbi1wc3ljb3BnMikpKQorICAgICAgICgi cHl0b24tcHN5Y29wZyIgLHB5dGhvbi1wc3ljb3BnMikpKQogICAgIChuYXRpdmUtaW5wdXRzCiAg ICAgIDs7IHRoaXMgaXMgdXNlZCBpbiB0aGUgdGVzdHMKLSAgICAgYCgoIm1vY2siICxweXRob24t bW9jaykpKQorICAgICBgKCgicHl0aG9uLW1vY2siICxweXRob24tbW9jaykpKQogICAgIChob21l LXBhZ2UgImh0dHA6Ly93d3cudHJ5dG9uLm9yZy8iKQogICAgIChzeW5vcHNpcyAiU2VydmVyIGNv bXBvbmVudCBvZiBUcnl0b24iKQogICAgIChkZXNjcmlwdGlvbgpAQCAtMTQ3NTksNyArMTQ3NTYs MzQgQEAgQSB0aHJlZS10aWVycyBoaWdoLWxldmVsIGdlbmVyYWwgcHVycG9zZSBhcHBsaWNhdGlv biBwbGF0Zm9ybQogd3JpdHRlbiBpbiBQeXRob24gYW5kIHVzZSBQb3N0Z3Jlc3FsIGFzIG1haW4g ZGF0YWJhc2UgZW5naW5lLgogSXQgaXMgdGhlIGNvcmUgYmFzZSBvZiBhbiBPcGVuIFNvdXJjZSBF UlAuCiBJdCBwcm92aWRlcyBtb2R1bGFyaXR5LCBzY2FsYWJpbGl0eSBhbmQgc2VjdXJpdHkuIikK LSAgKGxpY2Vuc2UgbGljZW5zZTpsZ3BsMykpKQorICAobGljZW5zZSBsaWNlbnNlOmdwbDMpKSkK IAotKGRlZmluZS1wdWJsaWMgcHl0aG9uMi10cnl0b25kCi0gIChwYWNrYWdlLXdpdGgtcHl0aG9u MiBweXRob24tdHJ5dG9uZCkpCis7OyB0aGlzIGRlcGVuZHMgb24gcHlndGsgdGhhdCBpcyBhdmFp bGFibGUgb3IgcHl0aG9uQDIgb25seQorKGRlZmluZS1wdWJsaWMgdHJ5dG9uCisgIChwYWNrYWdl CisgICAgKG5hbWUgInRyeXRvbiIpCisgICAgKHZlcnNpb24gIjQuNC4wIikKKyAgICAoc291cmNl CisgICAgIChvcmlnaW4KKyAgICAgICAobWV0aG9kIHVybC1mZXRjaCkKKyAgICAgICAodXJpIChz dHJpbmctYXBwZW5kCisgICAgICAgICAgICAgImh0dHBzOi8vZG93bmxvYWRzLnRyeXRvbi5vcmcv NC40L3RyeXRvbi0iCisgICAgICAgICAgICAgdmVyc2lvbiAiLnRhci5neiIpKQorICAgICAgIChz aGEyNTYKKyAgICAgICAgKGJhc2UzMgorICAgICAgICAgIjFsa2xjejVmczZya3JkN3oybTJmNWd6 NGZkd3prZ25oZzJoeXZ6cDIwa2RzdmkzM2JxMmoiKSkpKQorICAgIChhcmd1bWVudHMKKyAgICAg YCgjOnB5dGhvbiAscHl0aG9uLTIpKQorICAgIChpbnB1dHMKKyAgICAgYCgoInB5dGhvbi1jaGFy ZGV0IiAscHl0aG9uMi1jaGFyZGV0KQorICAgICAgICgicHl0b24tZGF0ZXV0aWwiICxweXRob24y LWRhdGV1dGlsKQorICAgICAgICgicHl0b24yLXB5Z3RrIiAscHl0aG9uMi1weWd0aykpKQorICAg IChidWlsZC1zeXN0ZW0gcHl0aG9uLWJ1aWxkLXN5c3RlbSkKKyAgICAoaG9tZS1wYWdlICJodHRw Oi8vd3d3LnRyeXRvbi5vcmcvIikKKyAgICAoc3lub3BzaXMgIkNsaWVudCBjb21wb25lbnQgb2Yg VHJ5dG9uIikKKyAgICAoZGVzY3JpcHRpb24gIlRoZSBjbGllbnQgb2YgdGhlIFRyeXRvbiBhcHBs aWNhdGlvbiBwbGF0Zm9ybS4KK0EgdGhyZWUtdGllcnMgaGlnaC1sZXZlbCBnZW5lcmFsIHB1cnBv c2UgYXBwbGljYXRpb24gcGxhdGZvcm0KK3dyaXR0ZW4gaW4gUHl0aG9uIGFuZCB1c2UgUG9zdGdy ZXNxbCBhcyBtYWluIGRhdGFiYXNlIGVuZ2luZS4KK0l0IGlzIHRoZSBjb3JlIGJhc2Ugb2YgYW4g T3BlbiBTb3VyY2UgRVJQLgorSXQgcHJvdmlkZXMgbW9kdWxhcml0eSwgc2NhbGFiaWxpdHkgYW5k IHNlY3VyaXR5LiIpCisgICAgKGxpY2Vuc2UgbGljZW5zZTpncGwzKSkpCi0tIAoyLjEzLjAKCg== --f403045c2d4c09602f054f94e94f--