Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dKTzZ-00061a-4v for pgadmin-hackers@arkaria.postgresql.org; Mon, 12 Jun 2017 18:23:09 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1dKTzX-0003hM-US for pgadmin-hackers@arkaria.postgresql.org; Mon, 12 Jun 2017 18:23:07 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1dKTzC-0003HH-29 for pgadmin-hackers@postgresql.org; Mon, 12 Jun 2017 18:22:46 +0000 Received: from mail-it0-x232.google.com ([2607:f8b0:4001:c0b::232]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1dKTz4-00077T-CR for pgadmin-hackers@postgresql.org; Mon, 12 Jun 2017 18:22:41 +0000 Received: by mail-it0-x232.google.com with SMTP id m62so27631608itc.0 for ; Mon, 12 Jun 2017 11:22:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pivotal-io.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=WkzAuQ7WVBrPwj7iodBuHdFxmysuIpPRaYt87KGNceQ=; b=IRKDoIC3wGGp79kvBvsypmVGTUh/4IhYrm971gQwAEMHOl+QE70I34DFrwcJq+SEQX hlD7kKUI4ej44+6Szx9ihGlk5wonr94PTDdKT9WRIrJN+vqflo9jcCRSiZwldJetsfPJ AoKgGjA3wo+l/cPXveU3ErSqE6oPQqQSRjp7FZqb31DIbmLRkY+y9x4jUsoMKeF03b+g F69rc6UKBid1hdGWovlvj3mWBYLMInfSFnTZ6pPf/buCfkJywGstnA8k0AwamLDc4xoo 9j3cD0zi1wMu5Mk1DUybZhkaDarwdoU3vU+UcTHAEIJ3Cppc1TzQoy6iGkXD/sl/mo8a kjzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=WkzAuQ7WVBrPwj7iodBuHdFxmysuIpPRaYt87KGNceQ=; b=Wjz/Zyc7jln1qzCZNAw2E6Nbb4n1tqPbx4Xd7KtEgD2SeNWQXLAEX3ikmrlgqpu0vu 3oooI/JQ5FhzMhiEiU2MTwDTz52FtinzaLzldibZUZozdvrDpX+VXxKiSjCGd5x9Lwgl AYcPzhNHho2hfgBGNup3h0ae1oSjbqJwJ2szGzfVF3OtQeMwiwDYqd19LVCV7P0CpFHC BuidRoIHzsn/RtxgadNfm0ZMDcEHbAZoMeXlxtIMOOrcjOA7ZTGDz8M3Mi1ko41CVtjy v0HZ/kIVoTp6jK20QOMBHg0stdDHS1//PAeYlhEPAx812rD+LpurELsUmr0d/baLS7/x wePw== X-Gm-Message-State: AODbwcCWL+HDEvBXtKwD99Y/arKqS89azvMdTLe0cNBXN3g8FNvOBQJT NIrOLHd1+fJ82SHAaJpctvPPGfbMPbkQ X-Received: by 10.36.82.82 with SMTP id d79mr13163862itb.90.1497291756842; Mon, 12 Jun 2017 11:22:36 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Shruti B Iyer Date: Mon, 12 Jun 2017 18:22:25 +0000 Message-ID: Subject: Re: [pgAdmin4] [PATCH] History Tab rewrite in React To: Dave Page Cc: Surinder Kumar , Joao Pedro De Almeida Pereira , Murtuza Zabuawala , pgadmin-hackers Content-Type: multipart/mixed; boundary="001a11449c0a4b83210551c767f8" List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgadmin-hackers Precedence: bulk Sender: pgadmin-hackers-owner@postgresql.org --001a11449c0a4b83210551c767f8 Content-Type: multipart/alternative; boundary="001a11449c0a4b831d0551c767f6" --001a11449c0a4b831d0551c767f6 Content-Type: text/plain; charset="UTF-8" Hi Dave, We regenerated the patch to add new tasks to package.json to compile react code for development and to not minimize it. This should fix the error you captured in the screenshot. The new task to lint and bundle everything for development is: yarn run bundle:dev The new task only bundle everything is: yarn run webpacker:dev We also changed the task test:feature to bundle without optimization before we start the tests. When we ran these commands in our machine, they did not display any error. Is it possible that you forgot to run yarn install before running the webpacker task? We are asking this because the errors look like missing node packages. Thanks Shruti & Joao On Mon, Jun 12, 2017 at 12:15 PM Dave Page wrote: > To add to that; running the JS tests gives: > > ERROR in ./regression/javascript/history/query_history_entry_spec.jsx > Module not found: Error: Can't resolve 'jasmine-enzyme' in > '/Users/dpage/git/pgadmin4/web/regression/javascript/history' > @ ./regression/javascript/history/query_history_entry_spec.jsx 13:21-46 > > ERROR in ./pgadmin/static/jsx/history/query_history_entry.jsx > Module not found: Error: Can't resolve 'immutability-helper' in > '/Users/dpage/git/pgadmin4/web/pgadmin/static/jsx/history' > @ ./pgadmin/static/jsx/history/query_history_entry.jsx 13:26-56 > @ ./regression/javascript/history/query_history_entry_spec.jsx > > ERROR in ./pgadmin/static/jsx/history/query_history_entry.jsx > Module not found: Error: Can't resolve 'moment' in > '/Users/dpage/git/pgadmin4/web/pgadmin/static/jsx/history' > @ ./pgadmin/static/jsx/history/query_history_entry.jsx 17:14-31 > @ ./regression/javascript/history/query_history_entry_spec.jsx > > ERROR in ./regression/javascript/history/query_history_spec.jsx > Module not found: Error: Can't resolve 'jasmine-enzyme' in > '/Users/dpage/git/pgadmin4/web/regression/javascript/history' > @ ./regression/javascript/history/query_history_spec.jsx 19:21-46 > webpack: Failed to compile. > PhantomJS 2.1.1 (Mac OS X 0.0.0) ERROR > Error: Cannot find module "immutability-helper" > at regression/javascript/history/query_history_entry_spec.jsx:30705 > > > PhantomJS 2.1.1 (Mac OS X 0.0.0) ERROR > Error: Cannot find module "immutability-helper" > at regression/javascript/history/query_history_spec.jsx:30705 > > > error Command failed with exit code 1. > info Visit https://yarnpkg.com/en/docs/cli/run for documentation about > this command. > error Command failed with exit code 1. > info Visit https://yarnpkg.com/en/docs/cli/run for documentation about > this command. > > > Also, while I think of it, why the addition of the delay to app_starter.py? > > > On Mon, Jun 12, 2017 at 5:12 PM, Dave Page wrote: > > Hi, > > > > So 01 and 02 are now committed :-). > > > > 03 has a couple of problems though (likely the same): > > > > - Running the webpacker results in: > > > > (pgadmin4)piranha:web dpage$ yarn run webpacker > > yarn run v0.24.4 > > $ yarn run webpack -- --optimize-minimize --config webpack.config.js > > yarn run v0.24.4 > > $ "/Users/dpage/git/pgadmin4/web/node_modules/.bin/webpack" > > --optimize-minimize --config webpack.config.js > > (node:19446) DeprecationWarning: loaderUtils.parseQuery() received a > > non-string value which can be problematic, see > > https://github.com/webpack/loader-utils/issues/56 > > parseQuery() will be replaced with getOptions() in the next major > > version of loader-utils. > > Hash: a5e75aa70eb6b09bdb78 > > Version: webpack 2.3.3 > > Time: 3983ms > > Asset Size Chunks Chunk Names > > reactComponents.js 222 kB 0 [emitted] reactComponents > > history.js 1.58 kB 1 [emitted] history > > [0] /Users/dpage/git/pgadmin4/web/~/process/browser.js 5.42 kB {0} > [built] > > [18] /Users/dpage/git/pgadmin4/web/~/react-dom/lib/ReactReconciler.js > > 6.21 kB {0} [built] > > [19] /Users/dpage/git/pgadmin4/web/~/react/lib/React.js 2.69 kB {0} > [built] > > [31] /Users/dpage/git/pgadmin4/web/~/react/react.js 56 bytes {0} > [built] > > [80] ./js/history/history_collection.js 1.91 kB {1} [built] > > [81] ./jsx/history/query_history.jsx 3.65 kB {0} [built] > > [82] /Users/dpage/git/pgadmin4/web/~/react-dom/index.js 59 bytes {0} > [built] > > [83] ./js/history/index.js 690 bytes {1} [built] > > [84] ./jsx/components.jsx 599 bytes {0} [built] > > [85] ./jsx/history/query_history_entry.jsx 5.21 kB {0} [built] > > [113] /Users/dpage/git/pgadmin4/web/~/react-dom/lib/ReactDOM.js 5.14 > > kB {0} [built] > > [175] /Users/dpage/git/pgadmin4/web/~/react/lib/ReactDOMFactories.js > > 5.53 kB {0} [built] > > [176] /Users/dpage/git/pgadmin4/web/~/react/lib/ReactPropTypes.js > > 15.8 kB {0} [built] > > [177] /Users/dpage/git/pgadmin4/web/~/react/lib/ReactPureComponent.js > > 1.32 kB {0} [built] > > [178] /Users/dpage/git/pgadmin4/web/~/react/lib/ReactVersion.js 350 > > bytes {0} [built] > > + 167 hidden modules > > > > ERROR in ./jsx/history/query_history_entry.jsx > > Module not found: Error: Can't resolve 'immutability-helper' in > > '/Users/dpage/git/pgadmin4/web/pgadmin/static/jsx/history' > > @ ./jsx/history/query_history_entry.jsx 13:26-56 > > @ ./jsx/history/query_history.jsx > > @ ./jsx/components.jsx > > > > ERROR in ./jsx/history/query_history_entry.jsx > > Module not found: Error: Can't resolve 'moment' in > > '/Users/dpage/git/pgadmin4/web/pgadmin/static/jsx/history' > > @ ./jsx/history/query_history_entry.jsx 17:14-31 > > @ ./jsx/history/query_history.jsx > > @ ./jsx/components.jsx > > error Command failed with exit code 2. > > info Visit https://yarnpkg.com/en/docs/cli/run for documentation about > > this command. > > error Command failed with exit code 1. > > info Visit https://yarnpkg.com/en/docs/cli/run for documentation about > > this command > > > > > > - If I try to run pgAdmin, I get a script error in the UI, and console > > output as attached (sorry for the screenshot, I've yet to find a good > > way to copy/paste that info without losing the formatting). > > > > Thanks. > > > > > > On Mon, Jun 12, 2017 at 3:53 PM, Shruti B Iyer wrote: > >> Hi Hackers, > >> > >> Attached are the updated patches that apply on top of master. > >> > >> Thanks, > >> Shruti & Joao > >> > >> > >> On Mon, Jun 12, 2017 at 10:44 AM Dave Page wrote: > >>> > >>> Hi Shruti > >>> > >>> On Mon, Jun 12, 2017 at 3:24 PM, Shruti B Iyer > wrote: > >>> > > >>> > Hello Dave, > >>> > > >>> > Thanks for making those fixes and sharing them with us. We tried > >>> > applying > >>> > the patch and it looks like there are some missing file changes from > >>> > your > >>> > patch that were present in ours, like the Make.bat file changes. But > we > >>> > will > >>> > add them when we send you the new patches. > >>> > >>> Hmm, I wonder if I missed them because I applied the patch in a sub > >>> directory. > >>> > >>> > While trying to generate the new patches we realized some tests are > >>> > failing > >>> > in master branch due to an internal server error: > >>> > > >>> > 2017-06-12 10:04:11,938: INFO werkzeug: 127.0.0.1 - - [12/Jun/2017 > >>> > 10:04:11] > >>> > "GET /browser/table/sql/1/1/12669/2200/81920 HTTP/1.1" 500 - > >>> > Traceback (most recent call last): > >>> > File > >>> > > >>> > > "/Users/pivotal/.pyenv/versions/2.7.10/envs/pgadmin/lib/python2.7/site-packages/flask/app.py", > >>> > line 2000, in __call__ > >>> > return self.wsgi_app(environ, start_response) > >>> > File > >>> > > >>> > > "/Users/pivotal/.pyenv/versions/2.7.10/envs/pgadmin/lib/python2.7/site-packages/flask/app.py", > >>> > line 1991, in wsgi_app > >>> > response = self.make_response(self.handle_exception(e)) > >>> > File > >>> > > >>> > > "/Users/pivotal/.pyenv/versions/2.7.10/envs/pgadmin/lib/python2.7/site-packages/flask/app.py", > >>> > line 1567, in handle_exception > >>> > reraise(exc_type, exc_value, tb) > >>> > File > >>> > > >>> > > "/Users/pivotal/.pyenv/versions/2.7.10/envs/pgadmin/lib/python2.7/site-packages/flask/app.py", > >>> > line 1988, in wsgi_app > >>> > response = self.full_dispatch_request() > >>> > File > >>> > > >>> > > "/Users/pivotal/.pyenv/versions/2.7.10/envs/pgadmin/lib/python2.7/site-packages/flask/app.py", > >>> > line 1641, in full_dispatch_request > >>> > rv = self.handle_user_exception(e) > >>> > File > >>> > > >>> > > "/Users/pivotal/.pyenv/versions/2.7.10/envs/pgadmin/lib/python2.7/site-packages/flask/app.py", > >>> > line 1544, in handle_user_exception > >>> > reraise(exc_type, exc_value, tb) > >>> > File > >>> > > >>> > > "/Users/pivotal/.pyenv/versions/2.7.10/envs/pgadmin/lib/python2.7/site-packages/flask/app.py", > >>> > line 1639, in full_dispatch_request > >>> > rv = self.dispatch_request() > >>> > File > >>> > > >>> > > "/Users/pivotal/.pyenv/versions/2.7.10/envs/pgadmin/lib/python2.7/site-packages/flask/app.py", > >>> > line 1625, in dispatch_request > >>> > return self.view_functions[rule.endpoint](**req.view_args) > >>> > File > >>> > > >>> > > "/Users/pivotal/.pyenv/versions/2.7.10/envs/pgadmin/lib/python2.7/site-packages/flask/views.py", > >>> > line 84, in view > >>> > return self.dispatch_request(*args, **kwargs) > >>> > File > "/Users/pivotal/workspace/pgadmin4/web/pgadmin/browser/utils.py", > >>> > line 235, in dispatch_request > >>> > return method(*args, **kwargs) > >>> > File > >>> > > >>> > > "/Users/pivotal/workspace/pgadmin4/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/__init__.py", > >>> > line 315, in wrap > >>> > return f(*args, **kwargs) > >>> > File > >>> > > >>> > > "/Users/pivotal/workspace/pgadmin4/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/__init__.py", > >>> > line 2555, in sql > >>> > data = self._formatter(did, scid, tid, data) > >>> > File > >>> > > >>> > > "/Users/pivotal/workspace/pgadmin4/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/__init__.py", > >>> > line 1081, in _formatter > >>> > data = self._columns_formatter(tid, data) > >>> > File > >>> > > >>> > > "/Users/pivotal/workspace/pgadmin4/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/__init__.py", > >>> > line 663, in _columns_formatter > >>> > column['attlen'] = matchObj.group(1) > >>> > AttributeError: 'NoneType' object has no attribute 'group' > >>> > > >>> > Was this introduced in a previous patch? > >>> > >>> Yes, it looks like it. For some reason it's not failing on the Jenkins > >>> server though. I'll ask Khushboo to fix it. > >>> > >>> > We will recreate the patches and send them ASAP. > >>> > >>> Thanks! > >>> > >>> > Thanks > >>> > Shruti & Joao > >>> > > >>> > On Mon, Jun 12, 2017 at 6:59 AM Dave Page wrote: > >>> >> > >>> >> Hi > >>> >> > >>> >> OK, so Ashesh and I spend much of the morning on this. > >>> >> > >>> >> Patch 01 - Applied. > >>> >> Patch 02: > >>> >> > >>> >> - karma.conf.js wouldn't patch; I've manually handled that. > >>> >> - test-main.js wouldn't patch. The diff looked like it was trying to > >>> >> empty it; I have removed it instead. > >>> >> - The imports in pgAdmin4.py need to be made after the app root is > >>> >> added to the path. > >>> >> - The JS bundler should be in pgadmin/utils, not pgadmin/tools > (which > >>> >> is intended for plugin modules) > >>> >> - The tests were failing following some changes Ashesh pushed > earlier > >>> >> to add a client-side url_for function. > >>> >> - pgAdmin4.py was attempting to run the bundler on every startup. > I've > >>> >> wrapped those called in "if config.DEBUG:" conditionals, as > typically > >>> >> an installation for an end-user will be in a read-only directory. > >>> >> > >>> >> We've fixed all of that in the attached patch. I'm not sure why it's > >>> >> so much bigger than yours. > >>> >> > >>> >> The following issues are outstanding; please take a look at them: > >>> >> > >>> >> - There is no update to the Windows installer generation code > (needed > >>> >> in 2 places unfortunately; Make.bat and Make-MinGW.bat). > >>> >> > >>> >> - The updates to the other packages call "yarn run webpacker" which > is > >>> >> an undefined target. > >>> >> > >>> >> I haven't looked at patch 03 yet, but Ashesh did tell me it won't > >>> >> apply for him. Patch 4 is also untested at this stage. > >>> >> > >>> >> If the issues above can be fixed, we can get patch 2 applied then > move > >>> >> on from there. > >>> >> > >>> >> I'll hold off on Harshal's patch for the Query Tool's load on demand > >>> >> to give you a chance to get this done. > >>> >> > >>> >> Thanks. > >>> >> > >>> >> On Sat, Jun 10, 2017 at 2:52 AM, George Gelashvili > >>> >> wrote: > >>> >> > Hi Dave, > >>> >> > > >>> >> > Our patch touches code also changed by the patches that were > recently > >>> >> > committed. > >>> >> > That's likely what's causing this issue. We've rebased on top of > the > >>> >> > new > >>> >> > state of master. > >>> >> > > >>> >> > We had initially kept the yarn.lock .gitignored, but ran into an > >>> >> > issue > >>> >> > rather early on where an upgraded dependency introduced a > regression. > >>> >> > Checking-in the yarn.lock provides the "know your dependency > version" > >>> >> > benefit of vendorizing code without vendorization's drawback of > >>> >> > having > >>> >> > to > >>> >> > manually manage your dependencies. > >>> >> > > >>> >> > It is safe to delete a yarn.lock before applying a patch, as you > are > >>> >> > authoring master. It provides a history of the versions of each > >>> >> > dependency > >>> >> > that were working at the point in time of the commit. By contrast, > >>> >> > package.json provides approximate versions and leaves room for > >>> >> > fixes/improvements by the dependency authors to be pulled in as > they > >>> >> > become > >>> >> > available. > >>> >> > > >>> >> > To run linter and tests: > >>> >> > > >>> >> > The tasks that Grunt used to manage are now defined as a set of > >>> >> > scripts > >>> >> > in > >>> >> > the package.json > >>> >> > After applying the patches--which may require deleting yarn.lock > for > >>> >> > the > >>> >> > first patch--you should cd web && yarn install > >>> >> > > >>> >> > Then yarn test will run the linter, jasmine specs, and python > tests > >>> >> > including feature tests, in that order, exiting early if there are > >>> >> > failures/errors. > >>> >> > At the moment, the CheckForViewData test is failing on master as > well > >>> >> > as > >>> >> > in > >>> >> > each of these patches; that should be resolved as RM2477. > >>> >> > > >>> >> > Thanks! > >>> >> > George and Matt > >>> >> > > >>> >> > > >>> >> > On Thu, Jun 8, 2017 at 9:15 AM, Dave Page > wrote: > >>> >> >> > >>> >> >> Hi George > >>> >> >> > >>> >> >> On Wed, Jun 7, 2017 at 10:21 PM, George Gelashvili > >>> >> >> wrote: > >>> >> >> > Hi Dave, > >>> >> >> > > >>> >> >> > I split the linting out into an intermediate commit, and > rebased > >>> >> >> > on > >>> >> >> > top > >>> >> >> > of > >>> >> >> > master. > >>> >> >> > >>> >> >> Unfortunately, it still doesn't apply: > >>> >> >> > >>> >> >> error: patch failed: web/regression/javascript/test-main.js:1 > >>> >> >> error: removal patch leaves file contents > >>> >> >> error: web/regression/javascript/test-main.js: patch does not > apply > >>> >> >> Checking patch web/regression/requirements.txt... > >>> >> >> Checking patch web/webpack.config.js... > >>> >> >> Checking patch web/webpack.test.config.js... > >>> >> >> Checking patch web/yarn.lock... > >>> >> >> error: web/yarn.lock: already exists in working directory > >>> >> >> Applied patch .gitignore cleanly. > >>> >> >> Applied patch Make.bat cleanly. > >>> >> >> Applied patch README cleanly. > >>> >> >> Applied patch pkg/mac/build.sh cleanly. > >>> >> >> Applied patch pkg/pip/build.sh cleanly. > >>> >> >> Applied patch pkg/src/build.sh cleanly. > >>> >> >> Applied patch web/.eslintrc.js cleanly. > >>> >> >> Applied patch web/karma.conf.js cleanly. > >>> >> >> Applied patch web/package.json cleanly. > >>> >> >> Applied patch web/pgAdmin4.py cleanly. > >>> >> >> Applied patch web/pgadmin/static/jsx/components.jsx cleanly. > >>> >> >> Applied patch web/pgadmin/tools/javascript/__init__.py cleanly. > >>> >> >> Applied patch web/pgadmin/tools/javascript/javascript_bundler.py > >>> >> >> cleanly. > >>> >> >> Applied patch web/pgadmin/tools/javascript/tests/__init__.py > >>> >> >> cleanly. > >>> >> >> Applied patch > >>> >> >> web/pgadmin/tools/javascript/tests/test_javascript_bundler.py > >>> >> >> cleanly. > >>> >> >> Applied patch web/regression/README cleanly. > >>> >> >> Applied patch > >>> >> >> web/regression/javascript/jasmine_capture_warnings_beforeall.js > >>> >> >> cleanly. > >>> >> >> Applied patch web/regression/requirements.txt cleanly. > >>> >> >> Applied patch web/webpack.config.js cleanly. > >>> >> >> Applied patch web/webpack.test.config.js cleanly. > >>> >> >> > >>> >> >> The second (lint update) patch is even worse, with significant > >>> >> >> number > >>> >> >> change that just don't want to apply. > >>> >> >> > >>> >> >> Clearly yarn.lock needs to be removed from there repo. > >>> >> >> > >>> >> >> Once I can apply a version of this, how should I be running the > >>> >> >> linter > >>> >> >> and the unit tests? > >>> >> >> > >>> >> >> -- > >>> >> >> Dave Page > >>> >> >> Blog: http://pgsnake.blogspot.com > >>> >> >> Twitter: @pgsnake > >>> >> >> > >>> >> >> EnterpriseDB UK: http://www.enterprisedb.com > >>> >> >> The Enterprise PostgreSQL Company > >>> >> > > >>> >> > > >>> >> > >>> >> > >>> >> > >>> >> -- > >>> >> Dave Page > >>> >> Blog: http://pgsnake.blogspot.com > >>> >> Twitter: @pgsnake > >>> >> > >>> >> EnterpriseDB UK: http://www.enterprisedb.com > >>> >> The Enterprise PostgreSQL Company > >>> >> > >>> >> -- > >>> >> Sent via pgadmin-hackers mailing list ( > pgadmin-hackers@postgresql.org) > >>> >> To make changes to your subscription: > >>> >> http://www.postgresql.org/mailpref/pgadmin-hackers > >>> > >>> > >>> > >>> -- > >>> Dave Page > >>> Blog: http://pgsnake.blogspot.com > >>> Twitter: @pgsnake > >>> > >>> EnterpriseDB UK: http://www.enterprisedb.com > >>> The Enterprise PostgreSQL Company > > > > > > > > -- > > Dave Page > > Blog: http://pgsnake.blogspot.com > > Twitter: @pgsnake > > > > EnterpriseDB UK: http://www.enterprisedb.com > > The Enterprise PostgreSQL Company > > > > -- > Dave Page > Blog: http://pgsnake.blogspot.com > Twitter: @pgsnake > > EnterpriseDB UK: http://www.enterprisedb.com > The Enterprise PostgreSQL Company > --001a11449c0a4b831d0551c767f6 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Dave,

We regenerated the patch to add new = tasks to package.json to compile react code for development and to not mini= mize it. This should fix the error you captured in the screenshot.

The new task to lint and bundle everything for development= is:
yarn run bundle:dev

The new task only bundle everything is:
yarn run webpacker:dev

We = also changed the task test:feature to bundl= e without optimization before we start the tests.

= When we ran these commands in our machine, they did not display any error. = Is it possible that you forgot to run yarn install= before running the webpacker task? We are asking this because the e= rrors look like missing node packages.

Thanks
Shruti & Joao

On Mon, Jun 12, 2017 at 12:15 PM Dave Page <dpage@pgadmin.org> wrote:
To add to that; running the JS tests gives:

ERROR in ./regression/javascript/history/query_history_entry_spec.jsx
Module not found: Error: Can't resolve 'jasmine-enzyme' in
'/Users/dpage/git/pgadmin4/web/regression/javascript/history'
=C2=A0@ ./regression/javascript/history/query_history_entry_spec.jsx 13:21-= 46

ERROR in ./pgadmin/static/jsx/history/query_history_entry.jsx
Module not found: Error: Can't resolve 'immutability-helper' in=
'/Users/dpage/git/pgadmin4/web/pgadmin/static/jsx/history'
=C2=A0@ ./pgadmin/static/jsx/history/query_history_entry.jsx 13:26-56
=C2=A0@ ./regression/javascript/history/query_history_entry_spec.jsx

ERROR in ./pgadmin/static/jsx/history/query_history_entry.jsx
Module not found: Error: Can't resolve 'moment' in
'/Users/dpage/git/pgadmin4/web/pgadmin/static/jsx/history'
=C2=A0@ ./pgadmin/static/jsx/history/query_history_entry.jsx 17:14-31
=C2=A0@ ./regression/javascript/history/query_history_entry_spec.jsx

ERROR in ./regression/javascript/history/query_history_spec.jsx
Module not found: Error: Can't resolve 'jasmine-enzyme' in
'/Users/dpage/git/pgadmin4/web/regression/javascript/history'
=C2=A0@ ./regression/javascript/history/query_history_spec.jsx 19:21-46
webpack: Failed to compile.
PhantomJS 2.1.1 (Mac OS X 0.0.0) ERROR
=C2=A0 Error: Cannot find module "immutability-helper"
=C2=A0 at regression/javascript/history/query_history_entry_spec.jsx:30705<= br>

PhantomJS 2.1.1 (Mac OS X 0.0.0) ERROR
=C2=A0 Error: Cannot find module "immutability-helper"
=C2=A0 at regression/javascript/history/query_history_spec.jsx:30705


error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentat= ion about
this command.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentat= ion about
this command.


Also, while I think of it, why the addition of the delay to app_starter.py?=


On Mon, Jun 12, 2017 at 5:12 PM, Dave Page <dpage@pgadmin.org> wrote:
> Hi,
>
> So 01 and 02 are now committed :-).
>
> 03 has a couple of problems though (likely the same):
>
> - Running the webpacker results in:
>
> (pgadmin4)piranha:web dpage$ yarn run webpacker
> yarn run v0.24.4
> $ yarn run webpack -- --optimize-minimize --config webpack.config.js > yarn run v0.24.4
> $ "/Users/dpage/git/pgadmin4/web/node_modules/.bin/webpack"<= br> > --optimize-minimize --config webpack.config.js
> (node:19446) DeprecationWarning: loaderUtils.parseQuery() received a > non-string value which can be problematic, see
> https://github.com/webpack/loader-utils/issues= /56
> parseQuery() will be replaced with getOptions() in the next major
> version of loader-utils.
> Hash: a5e75aa70eb6b09bdb78
> Version: webpack 2.3.3
> Time: 3983ms
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Asset=C2=A0 =C2=A0 =C2= =A0Size=C2=A0 Chunks=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Chunk N= ames
> reactComponents.js=C2=A0 =C2=A0222 kB=C2=A0 =C2=A0 =C2=A0 =C2=A00=C2= =A0 [emitted]=C2=A0 reactComponents
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0history.js=C2=A0 1.58 kB=C2=A0 =C2=A0= =C2=A0 =C2=A01=C2=A0 [emitted]=C2=A0 history
>=C2=A0 =C2=A0 [0] /Users/dpage/git/pgadmin4/web/~/process/browser.js 5.= 42 kB {0} [built]
>=C2=A0 =C2=A0[18] /Users/dpage/git/pgadmin4/web/~/react-dom/lib/ReactRe= conciler.js
> 6.21 kB {0} [built]
>=C2=A0 =C2=A0[19] /Users/dpage/git/pgadmin4/web/~/react/lib/React.js 2.= 69 kB {0} [built]
>=C2=A0 =C2=A0[31] /Users/dpage/git/pgadmin4/web/~/react/react.js 56 byt= es {0} [built]
>=C2=A0 =C2=A0[80] ./js/history/history_collection.js 1.91 kB {1} [built= ]
>=C2=A0 =C2=A0[81] ./jsx/history/query_history.jsx 3.65 kB {0} [built] >=C2=A0 =C2=A0[82] /Users/dpage/git/pgadmin4/web/~/react-dom/index.js 59= bytes {0} [built]
>=C2=A0 =C2=A0[83] ./js/history/index.js 690 bytes {1} [built]
>=C2=A0 =C2=A0[84] ./jsx/components.jsx 599 bytes {0} [built]
>=C2=A0 =C2=A0[85] ./jsx/history/query_history_entry.jsx 5.21 kB {0} [bu= ilt]
>=C2=A0 [113] /Users/dpage/git/pgadmin4/web/~/react-dom/lib/ReactDOM.js = 5.14
> kB {0} [built]
>=C2=A0 [175] /Users/dpage/git/pgadmin4/web/~/react/lib/ReactDOMFactorie= s.js
> 5.53 kB {0} [built]
>=C2=A0 [176] /Users/dpage/git/pgadmin4/web/~/react/lib/ReactPropTypes.j= s
> 15.8 kB {0} [built]
>=C2=A0 [177] /Users/dpage/git/pgadmin4/web/~/react/lib/ReactPureCompone= nt.js
> 1.32 kB {0} [built]
>=C2=A0 [178] /Users/dpage/git/pgadmin4/web/~/react/lib/ReactVersion.js = 350
> bytes {0} [built]
>=C2=A0 =C2=A0 =C2=A0+ 167 hidden modules
>
> ERROR in ./jsx/history/query_history_entry.jsx
> Module not found: Error: Can't resolve 'immutability-helper= 9; in
> '/Users/dpage/git/pgadmin4/web/pgadmin/static/jsx/history'
>=C2=A0 @ ./jsx/history/query_history_entry.jsx 13:26-56
>=C2=A0 @ ./jsx/history/query_history.jsx
>=C2=A0 @ ./jsx/components.jsx
>
> ERROR in ./jsx/history/query_history_entry.jsx
> Module not found: Error: Can't resolve 'moment' in
> '/Users/dpage/git/pgadmin4/web/pgadmin/static/jsx/history'
>=C2=A0 @ ./jsx/history/query_history_entry.jsx 17:14-31
>=C2=A0 @ ./jsx/history/query_history.jsx
>=C2=A0 @ ./jsx/components.jsx
> error Command failed with exit code 2.
> info Visit https://yarnpkg.com/en/docs/cli/run for docum= entation about
> this command.
> error Command failed with exit code 1.
> info Visit https://yarnpkg.com/en/docs/cli/run for docum= entation about
> this command
>
>
> - If I try to run pgAdmin, I get a script error in the UI, and console=
> output as attached (sorry for the screenshot, I've yet to find a g= ood
> way to copy/paste that info without losing the formatting).
>
> Thanks.
>
>
> On Mon, Jun 12, 2017 at 3:53 PM, Shruti B Iyer <siyer@pivotal.io> wrote:
>> Hi Hackers,
>>
>> Attached are the updated patches that apply on top of master.
>>
>> Thanks,
>> Shruti & Joao
>>
>>
>> On Mon, Jun 12, 2017 at 10:44 AM Dave Page <dpage@pgadmin.org> wrote:
>>>
>>> Hi Shruti
>>>
>>> On Mon, Jun 12, 2017 at 3:24 PM, Shruti B Iyer <siyer@pivotal.io> wrote:<= br> >>> >
>>> > Hello Dave,
>>> >
>>> > Thanks for making those fixes and sharing them with us. W= e tried
>>> > applying
>>> > the patch and it looks like there are some missing file c= hanges from
>>> > your
>>> > patch that were present in ours, like the Make.bat file c= hanges. But we
>>> > will
>>> > add them when we send you the new patches.
>>>
>>> Hmm, I wonder if I missed them because I applied the patch in = a sub
>>> directory.
>>>
>>> > While trying to generate the new patches we realized some= tests are
>>> > failing
>>> > in master branch due to an internal server error:
>>> >
>>> > 2017-06-12 10:04:11,938: INFO werkzeug: 127.0.0.1 - - [12= /Jun/2017
>>> > 10:04:11]
>>> > "GET /browser/table/sql/1/1/12669/2200/81920 HTTP/1.= 1" 500 -
>>> > Traceback (most recent call last):
>>> >=C2=A0 =C2=A0File
>>> >
>>> > "/Users/pivotal/.pyenv/versions/2.7.10/envs/pgadmin/= lib/python2.7/site-packages/flask/app.py",
>>> > line 2000, in __call__
>>> >=C2=A0 =C2=A0 =C2=A0return self.wsgi_app(environ, start_re= sponse)
>>> >=C2=A0 =C2=A0File
>>> >
>>> > "/Users/pivotal/.pyenv/versions/2.7.10/envs/pgadmin/= lib/python2.7/site-packages/flask/app.py",
>>> > line 1991, in wsgi_app
>>> >=C2=A0 =C2=A0 =C2=A0response =3D self.make_response(self.h= andle_exception(e))
>>> >=C2=A0 =C2=A0File
>>> >
>>> > "/Users/pivotal/.pyenv/versions/2.7.10/envs/pgadmin/= lib/python2.7/site-packages/flask/app.py",
>>> > line 1567, in handle_exception
>>> >=C2=A0 =C2=A0 =C2=A0reraise(exc_type, exc_value, tb)
>>> >=C2=A0 =C2=A0File
>>> >
>>> > "/Users/pivotal/.pyenv/versions/2.7.10/envs/pgadmin/= lib/python2.7/site-packages/flask/app.py",
>>> > line 1988, in wsgi_app
>>> >=C2=A0 =C2=A0 =C2=A0response =3D self.full_dispatch_reques= t()
>>> >=C2=A0 =C2=A0File
>>> >
>>> > "/Users/pivotal/.pyenv/versions/2.7.10/envs/pgadmin/= lib/python2.7/site-packages/flask/app.py",
>>> > line 1641, in full_dispatch_request
>>> >=C2=A0 =C2=A0 =C2=A0rv =3D self.handle_user_exception(e) >>> >=C2=A0 =C2=A0File
>>> >
>>> > "/Users/pivotal/.pyenv/versions/2.7.10/envs/pgadmin/= lib/python2.7/site-packages/flask/app.py",
>>> > line 1544, in handle_user_exception
>>> >=C2=A0 =C2=A0 =C2=A0reraise(exc_type, exc_value, tb)
>>> >=C2=A0 =C2=A0File
>>> >
>>> > "/Users/pivotal/.pyenv/versions/2.7.10/envs/pgadmin/= lib/python2.7/site-packages/flask/app.py",
>>> > line 1639, in full_dispatch_request
>>> >=C2=A0 =C2=A0 =C2=A0rv =3D self.dispatch_request()
>>> >=C2=A0 =C2=A0File
>>> >
>>> > "/Users/pivotal/.pyenv/versions/2.7.10/envs/pgadmin/= lib/python2.7/site-packages/flask/app.py",
>>> > line 1625, in dispatch_request
>>> >=C2=A0 =C2=A0 =C2=A0return self.view_functions[rule.endpoi= nt](**req.view_args)
>>> >=C2=A0 =C2=A0File
>>> >
>>> > "/Users/pivotal/.pyenv/versions/2.7.10/envs/pgadmin/= lib/python2.7/site-packages/flask/views.py",
>>> > line 84, in view
>>> >=C2=A0 =C2=A0 =C2=A0return self.dispatch_request(*args, **= kwargs)
>>> >=C2=A0 =C2=A0File "/Users/pivotal/workspace/pgadmin4/= web/pgadmin/browser/utils.py",
>>> > line 235, in dispatch_request
>>> >=C2=A0 =C2=A0 =C2=A0return method(*args, **kwargs)
>>> >=C2=A0 =C2=A0File
>>> >
>>> > "/Users/pivotal/workspace/pgadmin4/web/pgadmin/brows= er/server_groups/servers/databases/schemas/tables/__init__.py",
>>> > line 315, in wrap
>>> >=C2=A0 =C2=A0 =C2=A0return f(*args, **kwargs)
>>> >=C2=A0 =C2=A0File
>>> >
>>> > "/Users/pivotal/workspace/pgadmin4/web/pgadmin/brows= er/server_groups/servers/databases/schemas/tables/__init__.py",
>>> > line 2555, in sql
>>> >=C2=A0 =C2=A0 =C2=A0data =3D self._formatter(did, scid, ti= d, data)
>>> >=C2=A0 =C2=A0File
>>> >
>>> > "/Users/pivotal/workspace/pgadmin4/web/pgadmin/brows= er/server_groups/servers/databases/schemas/tables/__init__.py",
>>> > line 1081, in _formatter
>>> >=C2=A0 =C2=A0 =C2=A0data =3D self._columns_formatter(tid, = data)
>>> >=C2=A0 =C2=A0File
>>> >
>>> > "/Users/pivotal/workspace/pgadmin4/web/pgadmin/brows= er/server_groups/servers/databases/schemas/tables/__init__.py",
>>> > line 663, in _columns_formatter
>>> >=C2=A0 =C2=A0 =C2=A0column['attlen'] =3D matchObj.= group(1)
>>> > AttributeError: 'NoneType' object has no attribut= e 'group'
>>> >
>>> > Was this introduced in a previous patch?
>>>
>>> Yes, it looks like it. For some reason it's not failing on= the Jenkins
>>> server though. I'll ask Khushboo to fix it.
>>>
>>> > We will recreate the patches and send them ASAP.
>>>
>>> Thanks!
>>>
>>> > Thanks
>>> > Shruti & Joao
>>> >
>>> > On Mon, Jun 12, 2017 at 6:59 AM Dave Page <dpage@pgadmin.org> wrote= :
>>> >>
>>> >> Hi
>>> >>
>>> >> OK, so Ashesh and I spend much of the morning on this= .
>>> >>
>>> >> Patch 01 - Applied.
>>> >> Patch 02:
>>> >>
>>> >> - karma.conf.js wouldn't patch; I've manually= handled that.
>>> >> - test-main.js wouldn't patch. The diff looked li= ke it was trying to
>>> >> empty it; I have removed it instead.
>>> >> - The imports in pgAdmin4.py need to be made after th= e app root is
>>> >> added to the path.
>>> >> - The JS bundler should be in pgadmin/utils, not pgad= min/tools (which
>>> >> is intended for plugin modules)
>>> >> - The tests were failing following some changes Ashes= h pushed earlier
>>> >> to add a client-side url_for function.
>>> >> - pgAdmin4.py was attempting to run the bundler on ev= ery startup. I've
>>> >> wrapped those called in "if config.DEBUG:" = conditionals, as typically
>>> >> an installation for an end-user will be in a read-onl= y directory.
>>> >>
>>> >> We've fixed all of that in the attached patch. I&= #39;m not sure why it's
>>> >> so much bigger than yours.
>>> >>
>>> >> The following issues are outstanding; please take a l= ook at them:
>>> >>
>>> >> - There is no update to the Windows installer generat= ion code (needed
>>> >> in 2 places unfortunately; Make.bat and Make-MinGW.ba= t).
>>> >>
>>> >> - The updates to the other packages call "yarn r= un webpacker" which is
>>> >> an undefined target.
>>> >>
>>> >> I haven't looked at patch 03 yet, but Ashesh did = tell me it won't
>>> >> apply for him. Patch 4 is also untested at this stage= .
>>> >>
>>> >> If the issues above can be fixed, we can get patch 2 = applied then move
>>> >> on from there.
>>> >>
>>> >> I'll hold off on Harshal's patch for the Quer= y Tool's load on demand
>>> >> to give you a chance to get this done.
>>> >>
>>> >> Thanks.
>>> >>
>>> >> On Sat, Jun 10, 2017 at 2:52 AM, George Gelashvili
>>> >> <ggelashvili@pivotal.io> wrote:
>>> >> > Hi Dave,
>>> >> >
>>> >> > Our patch touches code also changed by the patch= es that were recently
>>> >> > committed.
>>> >> > That's likely what's causing this issue.= We've rebased on top of the
>>> >> > new
>>> >> > state of master.
>>> >> >
>>> >> > We had initially kept the yarn.lock .gitignored,= but ran into an
>>> >> > issue
>>> >> > rather early on where an upgraded dependency int= roduced a regression.
>>> >> > Checking-in the yarn.lock provides the "kno= w your dependency version"
>>> >> > benefit of vendorizing code without vendorizatio= n's drawback of
>>> >> > having
>>> >> > to
>>> >> > manually manage your dependencies.
>>> >> >
>>> >> > It is safe to delete a yarn.lock before applying= a patch, as you are
>>> >> > authoring master. It provides a history of the v= ersions of each
>>> >> > dependency
>>> >> > that were working at the point in time of the co= mmit. By contrast,
>>> >> > package.json provides approximate versions and l= eaves room for
>>> >> > fixes/improvements by the dependency authors to = be pulled in as they
>>> >> > become
>>> >> > available.
>>> >> >
>>> >> > To run linter and tests:
>>> >> >
>>> >> > The tasks that Grunt used to manage are now defi= ned as a set of
>>> >> > scripts
>>> >> > in
>>> >> > the package.json
>>> >> > After applying the patches--which may require de= leting yarn.lock for
>>> >> > the
>>> >> > first patch--you should cd web && yarn i= nstall
>>> >> >
>>> >> > Then yarn test will run the linter, jasmine spec= s, and python tests
>>> >> > including feature tests, in that order, exiting = early if there are
>>> >> > failures/errors.
>>> >> > At the moment, the CheckForViewData test is fail= ing on master as well
>>> >> > as
>>> >> > in
>>> >> > each of these patches; that should be resolved a= s RM2477.
>>> >> >
>>> >> > Thanks!
>>> >> > George and Matt
>>> >> >
>>> >> >
>>> >> > On Thu, Jun 8, 2017 at 9:15 AM, Dave Page <dpage@pgadmin.org&= gt; wrote:
>>> >> >>
>>> >> >> Hi George
>>> >> >>
>>> >> >> On Wed, Jun 7, 2017 at 10:21 PM, George Gela= shvili
>>> >> >> <ggelashvili@pivotal.io> wrote:
>>> >> >> > Hi Dave,
>>> >> >> >
>>> >> >> > I split the linting out into an interme= diate commit, and rebased
>>> >> >> > on
>>> >> >> > top
>>> >> >> > of
>>> >> >> > master.
>>> >> >>
>>> >> >> Unfortunately, it still doesn't apply: >>> >> >>
>>> >> >> error: patch failed: web/regression/javascri= pt/test-main.js:1
>>> >> >> error: removal patch leaves file contents
>>> >> >> error: web/regression/javascript/test-main.j= s: patch does not apply
>>> >> >> Checking patch web/regression/requirements.t= xt...
>>> >> >> Checking patch web/webpack.config.js...
>>> >> >> Checking patch web/webpack.test.config.js...=
>>> >> >> Checking patch web/yarn.lock...
>>> >> >> error: web/yarn.lock: already exists in work= ing directory
>>> >> >> Applied patch .gitignore cleanly.
>>> >> >> Applied patch Make.bat cleanly.
>>> >> >> Applied patch README cleanly.
>>> >> >> Applied patch pkg/mac/build.sh cleanly.
>>> >> >> Applied patch pkg/pip/build.sh cleanly.
>>> >> >> Applied patch pkg/src/build.sh cleanly.
>>> >> >> Applied patch web/.eslintrc.js cleanly.
>>> >> >> Applied patch web/karma.conf.js cleanly.
>>> >> >> Applied patch web/package.json cleanly.
>>> >> >> Applied patch web/pgAdmin4.py cleanly.
>>> >> >> Applied patch web/pgadmin/static/jsx/compone= nts.jsx cleanly.
>>> >> >> Applied patch web/pgadmin/tools/javascript/_= _init__.py cleanly.
>>> >> >> Applied patch web/pgadmin/tools/javascript/j= avascript_bundler.py
>>> >> >> cleanly.
>>> >> >> Applied patch web/pgadmin/tools/javascript/t= ests/__init__.py
>>> >> >> cleanly.
>>> >> >> Applied patch
>>> >> >> web/pgadmin/tools/javascript/tests/test_java= script_bundler.py
>>> >> >> cleanly.
>>> >> >> Applied patch web/regression/README cleanly.=
>>> >> >> Applied patch
>>> >> >> web/regression/javascript/jasmine_capture_wa= rnings_beforeall.js
>>> >> >> cleanly.
>>> >> >> Applied patch web/regression/requirements.tx= t cleanly.
>>> >> >> Applied patch web/webpack.config.js cleanly.=
>>> >> >> Applied patch web/webpack.test.config.js cle= anly.
>>> >> >>
>>> >> >> The second (lint update) patch is even worse= , with significant
>>> >> >> number
>>> >> >> change that just don't want to apply.
>>> >> >>
>>> >> >> Clearly yarn.lock needs to be removed from t= here repo.
>>> >> >>
>>> >> >> Once I can apply a version of this, how shou= ld I be running the
>>> >> >> linter
>>> >> >> and the unit tests?
>>> >> >>
>>> >> >> --
>>> >> >> Dave Page
>>> >> >> Blog: http://pgsnake.blogspot.com
>>> >> >> Twitter: @pgsnake
>>> >> >>
>>> >> >> EnterpriseDB UK: http://www.enterprisedb.c= om
>>> >> >> The Enterprise PostgreSQL Company
>>> >> >
>>> >> >
>>> >>
>>> >>
>>> >>
>>> >> --
>>> >> Dave Page
>>> >> Blog: http://pgsnake.blogspot.com
>>> >> Twitter: @pgsnake
>>> >>
>>> >> EnterpriseDB UK: http://www.enterprisedb.com
>>> >> The Enterprise PostgreSQL Company
>>> >>
>>> >> --
>>> >> Sent via pgadmin-hackers mailing list (pgadmin-hackers@postg= resql.org)
>>> >> To make changes to your subscription:
>>> >> http://www.postgresql.org/ma= ilpref/pgadmin-hackers
>>>
>>>
>>>
>>> --
>>> Dave Page
>>> Blog: http://pgsnake.blogspot.com
>>> Twitter: @pgsnake
>>>
>>> EnterpriseDB UK: http://www.enterprisedb.com
>>> The Enterprise PostgreSQL Company
>
>
>
> --
> Dave Page
> Blog: http://pgsnake.blogspot.com
> Twitter: @pgsnake
>
> EnterpriseDB UK: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company



--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
--001a11449c0a4b831d0551c767f6-- --001a11449c0a4b83210551c767f8 Content-Type: application/octet-stream; name="03-create-query-history-list.patch" Content-Disposition: attachment; filename="03-create-query-history-list.patch" Content-Transfer-Encoding: base64 Content-ID: <15c9d81e7cd959fb2dd2> X-Attachment-Id: 15c9d81e7cd959fb2dd2 ZGlmZiAtLWdpdCBhL3dlYi8uZXNsaW50cmMuanMgYi93ZWIvLmVzbGludHJj LmpzCmluZGV4IGM2MDU2OWRiLi45ODQ4NmRjZCAxMDA2NDQKLS0tIGEvd2Vi Ly5lc2xpbnRyYy5qcworKysgYi93ZWIvLmVzbGludHJjLmpzCkBAIC01LDcg KzUsMTAgQEAgbW9kdWxlLmV4cG9ydHMgPSB7CiAgICAgJ2FtZCc6IHRydWUs CiAgICAgJ2phc21pbmUnOiB0cnVlLAogICB9LAotICAnZXh0ZW5kcyc6ICdl c2xpbnQ6cmVjb21tZW5kZWQnLAorICAnZXh0ZW5kcyc6IFsKKyAgICAnZXNs aW50OnJlY29tbWVuZGVkJywKKyAgICAicGx1Z2luOnJlYWN0L3JlY29tbWVu ZGVkIiwKKyAgXSwKICAgJ3BhcnNlck9wdGlvbnMnOiB7CiAgICAgJ2VjbWFG ZWF0dXJlcyc6IHsKICAgICAgICdleHBlcmltZW50YWxPYmplY3RSZXN0U3By ZWFkJzogdHJ1ZSwKQEAgLTQwLDYgKzQzLDYgQEAgbW9kdWxlLmV4cG9ydHMg PSB7CiAgICAgJ2NvbW1hLWRhbmdsZSc6IFsKICAgICAgICdlcnJvcicsCiAg ICAgICAnYWx3YXlzLW11bHRpbGluZScKLSAgICBdCisgICAgXSwKICAgfQog fTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93 ZWIva2FybWEuY29uZi5qcyBiL3dlYi9rYXJtYS5jb25mLmpzCmluZGV4IGNh OTg4YTBiLi43MTNiOWYwNSAxMDA2NDQKLS0tIGEvd2ViL2thcm1hLmNvbmYu anMKKysrIGIvd2ViL2thcm1hLmNvbmYuanMKQEAgLTI5LDcgKzI5LDcgQEAg bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoY29uZmlnKSB7CiAgICAgLy8g YXZhaWxhYmxlIHByZXByb2Nlc3NvcnM6IGh0dHBzOi8vbnBtanMub3JnL2Jy b3dzZS9rZXl3b3JkL2thcm1hLXByZXByb2Nlc3NvcgogICAgIHByZXByb2Nl c3NvcnM6IHsKICAgICAgICdyZWdyZXNzaW9uL2phdmFzY3JpcHQvKiovKi5q cyc6IFsnd2VicGFjayddLAotICAgICAgLy8gJ3JlZ3Jlc3Npb24vamF2YXNj cmlwdC8qKi8qLmpzeCc6IFsnd2VicGFjayddLAorICAgICAgJ3JlZ3Jlc3Np b24vamF2YXNjcmlwdC8qKi8qLmpzeCc6IFsnd2VicGFjayddLAogICAgIH0s CiAKICAgICB3ZWJwYWNrOiB3ZWJwYWNrQ29uZmlnLApkaWZmIC0tZ2l0IGEv d2ViL3BhY2thZ2UuanNvbiBiL3dlYi9wYWNrYWdlLmpzb24KaW5kZXggYjVk MmUwY2IuLmNkODk5MmY5IDEwMDY0NAotLS0gYS93ZWIvcGFja2FnZS5qc29u CisrKyBiL3dlYi9wYWNrYWdlLmpzb24KQEAgLTUsOSArNSwxMSBAQAogICAg ICJiYWJlbC1wcmVzZXQtZXMyMDE1IjogIn42LjI0LjAiLAogICAgICJiYWJl bC1wcmVzZXQtcmVhY3QiOiAifjYuMjMuMCIsCiAgICAgImVuenltZSI6ICJ+ Mi44LjIiLAorICAgICJlbnp5bWUtbWF0Y2hlcnMiOiAiXjMuMS4wIiwKICAg ICAiZXNsaW50IjogIl4zLjE5LjAiLAogICAgICJlc2xpbnQtcGx1Z2luLXJl YWN0IjogIl42LjEwLjMiLAogICAgICJqYXNtaW5lLWNvcmUiOiAifjIuNS4y IiwKKyAgICAiamFzbWluZS1lbnp5bWUiOiAiXjMuMS4wIiwKICAgICAia2Fy bWEiOiAifjEuNS4wIiwKICAgICAia2FybWEtYmFiZWwtcHJlcHJvY2Vzc29y IjogIl42LjAuMSIsCiAgICAgImthcm1hLWJyb3dzZXJpZnkiOiAifjUuMS4x IiwKQEAgLTI4LDcgKzMwLDkgQEAKICAgICAiYmFiZWxpZnkiOiAifjcuMy4w IiwKICAgICAiYnJvd3NlcmlmeSI6ICJ+MTQuMS4wIiwKICAgICAiZXhwb3J0 cy1sb2FkZXIiOiAifjAuNi40IiwKKyAgICAiaW1tdXRhYmlsaXR5LWhlbHBl ciI6ICJeMi4yLjAiLAogICAgICJpbXBvcnRzLWxvYWRlciI6ICJnaXQraHR0 cHM6Ly9naXRodWIuY29tL3dlYnBhY2stY29udHJpYi9pbXBvcnRzLWxvYWRl ci5naXQjNDRkNmY0ODQ2M2IyNTZhMTdjMWJhNmZkOWI1Y2MxNDQ5YjRlMzc5 ZCIsCisgICAgIm1vbWVudCI6ICJeMi4xOC4xIiwKICAgICAicmVhY3QiOiAi fjE1LjQuMiIsCiAgICAgInJlYWN0LWRvbSI6ICJ+MTUuNC4yIiwKICAgICAi cmVxdWlyZWpzIjogIn4yLjMuMyIsCkBAIC0zOCw3ICs0Miw5IEBACiAgICJz Y3JpcHRzIjogewogICAgICJsaW50ZXIiOiAieWFybiBydW4gZXNsaW50IHBn YWRtaW4vc3RhdGljL2pzeC8qKi8qLmpzeCBwZ2FkbWluL3N0YXRpYy9qcy9z ZWxlY3Rpb24vKi5qcyByZWdyZXNzaW9uL2phdmFzY3JpcHQvKiovKi5qc3gg cmVncmVzc2lvbi9qYXZhc2NyaXB0LyoqLyouanMgKi5qcyIsCiAgICAgIndl YnBhY2tlciI6ICJ5YXJuIHJ1biB3ZWJwYWNrIC0tIC0tb3B0aW1pemUtbWlu aW1pemUgLS1jb25maWcgd2VicGFjay5jb25maWcuanMiLAorICAgICJ3ZWJw YWNrZXI6ZGV2IjogInlhcm4gcnVuIHdlYnBhY2sgLS0gLS1jb25maWcgd2Vi cGFjay5jb25maWcuanMiLAogICAgICJidW5kbGUiOiAieWFybiBydW4gbGlu dGVyICYmIHlhcm4gcnVuIHdlYnBhY2tlciIsCisgICAgImJ1bmRsZTpkZXYi OiAieWFybiBydW4gbGludGVyICYmIHlhcm4gcnVuIHdlYnBhY2tlcjpkZXYi LAogICAgICJ0ZXN0Omthcm1hLW9uY2UiOiAieWFybiBydW4gbGludGVyICYm IHlhcm4gcnVuIGthcm1hIHN0YXJ0IC0tIC0tc2luZ2xlLXJ1biIsCiAgICAg InRlc3Q6a2FybWEiOiAieWFybiBydW4gbGludGVyICYmIHlhcm4gcnVuIGth cm1hIHN0YXJ0IiwKICAgICAidGVzdDpmZWF0dXJlIjogInlhcm4gcnVuIGJ1 bmRsZSAmJiBweXRob24gcmVncmVzc2lvbi9ydW50ZXN0cy5weSAtLXBrZyBm ZWF0dXJlX3Rlc3RzIiwKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2ZlYXR1 cmVfdGVzdHMvcXVlcnlfdG9vbF9qb3VybmV5X3Rlc3QucHkgYi93ZWIvcGdh ZG1pbi9mZWF0dXJlX3Rlc3RzL3F1ZXJ5X3Rvb2xfam91cm5leV90ZXN0LnB5 Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi4wNzY2MTkz ZQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2ZlYXR1cmVfdGVz dHMvcXVlcnlfdG9vbF9qb3VybmV5X3Rlc3QucHkKQEAgLTAsMCArMSwxMTEg QEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRt aW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAy MDEzIC0gMjAxNywgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBU aGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FM IExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisK K2ltcG9ydCBweXBlcmNsaXAKK2ltcG9ydCB0aW1lCisKK2Zyb20gc2VsZW5p dW0ud2ViZHJpdmVyIGltcG9ydCBBY3Rpb25DaGFpbnMKKworZnJvbSByZWdy ZXNzaW9uLnB5dGhvbl90ZXN0X3V0aWxzIGltcG9ydCB0ZXN0X3V0aWxzCitm cm9tIHJlZ3Jlc3Npb24uZmVhdHVyZV91dGlscy5iYXNlX2ZlYXR1cmVfdGVz dCBpbXBvcnQgQmFzZUZlYXR1cmVUZXN0CisKKworY2xhc3MgUXVlcnlUb29s Sm91cm5leVRlc3QoQmFzZUZlYXR1cmVUZXN0KToKKyAgICAiIiIKKyAgICBU ZXN0cyB0aGUgcGF0aCB0aHJvdWdoIHRoZSBxdWVyeSB0b29sCisgICAgIiIi CisKKyAgICBzY2VuYXJpb3MgPSBbCisgICAgICAgICgiVGVzdHMgdGhlIHBh dGggdGhyb3VnaCB0aGUgcXVlcnkgdG9vbCIsIGRpY3QoKSkKKyAgICBdCisK KyAgICBkZWYgYmVmb3JlKHNlbGYpOgorICAgICAgICBjb25uZWN0aW9uID0g dGVzdF91dGlscy5nZXRfZGJfY29ubmVjdGlvbihzZWxmLnNlcnZlclsnZGIn XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2VsZi5zZXJ2ZXJbJ3VzZXJuYW1lJ10sCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu c2VydmVyWydkYl9wYXNzd29yZCddLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlclsnaG9z dCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzZWxmLnNlcnZlclsncG9ydCddKQorICAgICAgICB0ZXN0 X3V0aWxzLmRyb3BfZGF0YWJhc2UoY29ubmVjdGlvbiwgImFjY2VwdGFuY2Vf dGVzdF9kYiIpCisgICAgICAgIHRlc3RfdXRpbHMuY3JlYXRlX2RhdGFiYXNl KHNlbGYuc2VydmVyLCAiYWNjZXB0YW5jZV90ZXN0X2RiIikKKyAgICAgICAg dGVzdF91dGlscy5jcmVhdGVfdGFibGUoc2VsZi5zZXJ2ZXIsICJhY2NlcHRh bmNlX3Rlc3RfZGIiLCAidGVzdF90YWJsZSIpCisgICAgICAgIHNlbGYucGFn ZS5hZGRfc2VydmVyKHNlbGYuc2VydmVyKQorCisgICAgZGVmIHJ1blRlc3Qo c2VsZik6CisgICAgICAgIHNlbGYuX25hdmlnYXRlX3RvX3F1ZXJ5X3Rvb2wo KQorICAgICAgICBzZWxmLl9leGVjdXRlX3F1ZXJ5KCJTRUxFQ1QgKiBGUk9N IHRlc3RfdGFibGUgT1JERVIgQlkgdmFsdWUiKQorCisgICAgICAgIHNlbGYu X3Rlc3RfY29waWVzX3Jvd3MoKQorICAgICAgICBzZWxmLl90ZXN0X2NvcGll c19jb2x1bW5zKCkKKyAgICAgICAgc2VsZi5fdGVzdF9oaXN0b3J5X3RhYigp CisKKyAgICBkZWYgX3Rlc3RfY29waWVzX3Jvd3Moc2VsZik6CisgICAgICAg IHB5cGVyY2xpcC5jb3B5KCJvbGQgY2xpcGJvYXJkIGNvbnRlbnRzIikKKyAg ICAgICAgdGltZS5zbGVlcCg1KQorICAgICAgICBzZWxmLnBhZ2UuZHJpdmVy LnN3aXRjaF90by5kZWZhdWx0X2NvbnRlbnQoKQorICAgICAgICBzZWxmLnBh Z2UuZHJpdmVyLnN3aXRjaF90b19mcmFtZShzZWxmLnBhZ2UuZHJpdmVyLmZp bmRfZWxlbWVudF9ieV90YWdfbmFtZSgiaWZyYW1lIikpCisgICAgICAgIHNl bGYucGFnZS5maW5kX2J5X3hwYXRoKCIvLypbY29udGFpbnMoQGNsYXNzLCAn c2xpY2stcm93JyldLypbMV0iKS5jbGljaygpCisgICAgICAgIHNlbGYucGFn ZS5maW5kX2J5X3hwYXRoKCIvLypbQGlkPSdidG4tY29weS1yb3cnXSIpLmNs aWNrKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCInU29tZS1OYW1l JywnNicsJ3NvbWUgaW5mbyciLAorICAgICAgICAgICAgICAgICAgICAgICAg IHB5cGVyY2xpcC5wYXN0ZSgpKQorCisgICAgZGVmIF90ZXN0X2NvcGllc19j b2x1bW5zKHNlbGYpOgorICAgICAgICBweXBlcmNsaXAuY29weSgib2xkIGNs aXBib2FyZCBjb250ZW50cyIpCisKKyAgICAgICAgc2VsZi5wYWdlLmRyaXZl ci5zd2l0Y2hfdG8uZGVmYXVsdF9jb250ZW50KCkKKyAgICAgICAgc2VsZi5w YWdlLmRyaXZlci5zd2l0Y2hfdG9fZnJhbWUoc2VsZi5wYWdlLmRyaXZlci5m aW5kX2VsZW1lbnRfYnlfdGFnX25hbWUoImlmcmFtZSIpKQorICAgICAgICBz ZWxmLnBhZ2UuZmluZF9ieV94cGF0aCgiLy8qW0BkYXRhLXRlc3Q9J291dHB1 dC1jb2x1bW4taGVhZGVyJyBhbmQgY29udGFpbnMoLiwgJ3NvbWVfY29sdW1u JyldIikuY2xpY2soKQorICAgICAgICBzZWxmLnBhZ2UuZmluZF9ieV94cGF0 aCgiLy8qW0BpZD0nYnRuLWNvcHktcm93J10iKS5jbGljaygpCisKKyAgICAg ICAgc2VsZi5hc3NlcnRUcnVlKCInU29tZS1OYW1lJyIgaW4gcHlwZXJjbGlw LnBhc3RlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgiJ1NvbWUtT3Ro ZXItTmFtZSciIGluIHB5cGVyY2xpcC5wYXN0ZSgpKQorICAgICAgICBzZWxm LmFzc2VydFRydWUoIidZZXQtQW5vdGhlci1OYW1lJyIgaW4gcHlwZXJjbGlw LnBhc3RlKCkpCisKKyAgICBkZWYgX3Rlc3RfaGlzdG9yeV90YWIoc2VsZik6 CisgICAgICAgIHNlbGYuX19jbGVhcl9xdWVyeV90b29sKCkKKworICAgICAg ICBlZGl0b3JfaW5wdXQgPSBzZWxmLnBhZ2UuZmluZF9ieV9pZCgib3V0cHV0 LXBhbmVsIikKKyAgICAgICAgc2VsZi5wYWdlLmNsaWNrX2VsZW1lbnQoZWRp dG9yX2lucHV0KQorICAgICAgICBzZWxmLl9leGVjdXRlX3F1ZXJ5KCJTRUxF Q1QgKiBGUk9NIHNob2VzIikKKworICAgICAgICBzZWxmLnBhZ2UuY2xpY2tf dGFiKCJIaXN0b3J5IikKKyAgICAgICAgaGlzdG9yeV9lbGVtZW50ID0gc2Vs Zi5wYWdlLmZpbmRfYnlfaWQoImhpc3RvcnlfZ3JpZCIpCisgICAgICAgIHNl bGYuYXNzZXJ0SW4oIlNFTEVDVCAqIEZST00gdGVzdF90YWJsZSIsIGhpc3Rv cnlfZWxlbWVudC50ZXh0KQorICAgICAgICBzZWxmLmFzc2VydEluKCJTRUxF Q1QgKiBGUk9NIHNob2VzIiwgaGlzdG9yeV9lbGVtZW50LnRleHQpCisKKyAg ICBkZWYgX19jbGVhcl9xdWVyeV90b29sKHNlbGYpOgorICAgICAgICBzZWxm LnBhZ2UuY2xpY2tfZWxlbWVudChzZWxmLnBhZ2UuZmluZF9ieV94cGF0aCgi Ly8qW0BpZD0nYnRuLWVkaXQnXSIpKQorICAgICAgICBzZWxmLnBhZ2UuY2xp Y2tfbW9kYWwoJ1llcycpCisKKyAgICBkZWYgX25hdmlnYXRlX3RvX3F1ZXJ5 X3Rvb2woc2VsZik6CisgICAgICAgIHNlbGYucGFnZS50b2dnbGVfb3Blbl90 cmVlX2l0ZW0oc2VsZi5zZXJ2ZXJbJ25hbWUnXSkKKyAgICAgICAgc2VsZi5w YWdlLnRvZ2dsZV9vcGVuX3RyZWVfaXRlbSgnRGF0YWJhc2VzJykKKyAgICAg ICAgc2VsZi5wYWdlLnRvZ2dsZV9vcGVuX3RyZWVfaXRlbSgnYWNjZXB0YW5j ZV90ZXN0X2RiJykKKyAgICAgICAgdGltZS5zbGVlcCg1KQorICAgICAgICBz ZWxmLnBhZ2UuZmluZF9ieV9wYXJ0aWFsX2xpbmtfdGV4dCgiVG9vbHMiKS5j bGljaygpCisgICAgICAgIHNlbGYucGFnZS5maW5kX2J5X3BhcnRpYWxfbGlu a190ZXh0KCJRdWVyeSBUb29sIikuY2xpY2soKQorICAgICAgICBzZWxmLnBh Z2UuY2xpY2tfdGFiKCdRdWVyeS0xJykKKyAgICAgICAgdGltZS5zbGVlcCg1 KQorCisgICAgZGVmIF9leGVjdXRlX3F1ZXJ5KHNlbGYsIHF1ZXJ5KToKKyAg ICAgICAgQWN0aW9uQ2hhaW5zKHNlbGYucGFnZS5kcml2ZXIpLnNlbmRfa2V5 cyhxdWVyeSkucGVyZm9ybSgpCisgICAgICAgIHNlbGYucGFnZS5kcml2ZXIu c3dpdGNoX3RvLmRlZmF1bHRfY29udGVudCgpCisgICAgICAgIHNlbGYucGFn ZS5kcml2ZXIuc3dpdGNoX3RvX2ZyYW1lKHNlbGYucGFnZS5kcml2ZXIuZmlu ZF9lbGVtZW50X2J5X3RhZ19uYW1lKCJpZnJhbWUiKSkKKyAgICAgICAgc2Vs Zi5wYWdlLmZpbmRfYnlfaWQoImJ0bi1mbGFzaCIpLmNsaWNrKCkKKworICAg IGRlZiBhZnRlcihzZWxmKToKKyAgICAgICAgc2VsZi5wYWdlLmNsb3NlX3F1 ZXJ5X3Rvb2woKQorICAgICAgICBzZWxmLnBhZ2UucmVtb3ZlX3NlcnZlcihz ZWxmLnNlcnZlcikKKworICAgICAgICBjb25uZWN0aW9uID0gdGVzdF91dGls cy5nZXRfZGJfY29ubmVjdGlvbihzZWxmLnNlcnZlclsnZGInXSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2VsZi5zZXJ2ZXJbJ3VzZXJuYW1lJ10sCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyWydk Yl9wYXNzd29yZCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlclsnaG9zdCddLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzZWxmLnNlcnZlclsncG9ydCddKQorICAgICAgICB0ZXN0X3V0aWxzLmRy b3BfZGF0YWJhc2UoY29ubmVjdGlvbiwgImFjY2VwdGFuY2VfdGVzdF9kYiIp CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3RzL3hzc19j aGVja3NfcGdhZG1pbl9kZWJ1Z2dlcl90ZXN0LnB5IGIvd2ViL3BnYWRtaW4v ZmVhdHVyZV90ZXN0cy94c3NfY2hlY2tzX3BnYWRtaW5fZGVidWdnZXJfdGVz dC5weQppbmRleCA5NTliMmMxOS4uMDk0ZGZlZDYgMTAwNjQ0Ci0tLSBhL3dl Yi9wZ2FkbWluL2ZlYXR1cmVfdGVzdHMveHNzX2NoZWNrc19wZ2FkbWluX2Rl YnVnZ2VyX3Rlc3QucHkKKysrIGIvd2ViL3BnYWRtaW4vZmVhdHVyZV90ZXN0 cy94c3NfY2hlY2tzX3BnYWRtaW5fZGVidWdnZXJfdGVzdC5weQpAQCAtODMs NyArODMsNyBAQCBjbGFzcyBDaGVja0RlYnVnZ2VyRm9yWHNzRmVhdHVyZVRl c3QoQmFzZUZlYXR1cmVUZXN0KToKIAogICAgICAgICAjIElmIGRlYnVnZ2Vy IHBsdWdpbiBpcyBub3QgZm91bmQKICAgICAgICAgaWYgaXNfZXJyb3IgYW5k IGlzX2Vycm9yID09ICJEZWJ1Z2dlciBFcnJvciI6Ci0gICAgICAgICAgICBz ZWxmLnBhZ2UuY2xpY2tfbW9kYWxfb2soKQorICAgICAgICAgICAgc2VsZi5w YWdlLmNsaWNrX21vZGFsKCdPSycpCiAgICAgICAgICAgICBzZWxmLnNraXBU ZXN0KCJQbGVhc2UgbWFrZSBzdXJlIHRoYXQgZGVidWdnZXIgcGx1Z2luIGlz IHByb3Blcmx5IGNvbmZpZ3VyZWQiKQogICAgICAgICBlbHNlOgogICAgICAg ICAgICAgdGltZS5zbGVlcCgyKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v c3RhdGljL2pzL2hpc3RvcnkvaGlzdG9yeV9jb2xsZWN0aW9uLmpzIGIvd2Vi L3BnYWRtaW4vc3RhdGljL2pzL2hpc3RvcnkvaGlzdG9yeV9jb2xsZWN0aW9u LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi5mN2I2 YWNkNwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9q cy9oaXN0b3J5L2hpc3RvcnlfY29sbGVjdGlvbi5qcwpAQCAtMCwwICsxLDM0 IEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9z dGdyZVNRTCBUb29scworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIw MTcsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKy8vIFRoaXMgc29m dHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5j ZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2V4cG9ydCBkZWZhdWx0IGNs YXNzIEhpc3RvcnlDb2xsZWN0aW9uIHsKKworICBjb25zdHJ1Y3RvcihoaXN0 b3J5X21vZGVsKSB7CisgICAgdGhpcy5oaXN0b3J5TGlzdCA9IGhpc3Rvcnlf bW9kZWw7CisgICAgdGhpcy5vbkNoYW5nZSgoKSA9PiB7fSk7CisgIH0KKwor ICBsZW5ndGgoKSB7CisgICAgcmV0dXJuIHRoaXMuaGlzdG9yeUxpc3QubGVu Z3RoOworICB9CisKKyAgYWRkKG9iamVjdCkgeworICAgIHRoaXMuaGlzdG9y eUxpc3QucHVzaChvYmplY3QpOworICAgIHRoaXMub25DaGFuZ2VIYW5kbGVy KHRoaXMuaGlzdG9yeUxpc3QpOworICB9CisKKyAgcmVzZXQoKSB7CisgICAg dGhpcy5oaXN0b3J5TGlzdCA9IFtdOworICAgIHRoaXMub25DaGFuZ2VIYW5k bGVyKHRoaXMuaGlzdG9yeUxpc3QpOworICB9CisKKyAgb25DaGFuZ2Uob25D aGFuZ2VIYW5kbGVyKSB7CisgICAgdGhpcy5vbkNoYW5nZUhhbmRsZXIgPSBv bkNoYW5nZUhhbmRsZXI7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBv ZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvaGlz dG9yeS9pbmRleC5qcyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9oaXN0b3J5 L2luZGV4LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw Li44MzQ4NzhhOAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3N0 YXRpYy9qcy9oaXN0b3J5L2luZGV4LmpzCkBAIC0wLDAgKzEsMTQgQEAKKy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FM IFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxNywgVGhl IHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBp cyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisvLwor Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8KKworaW1wb3J0IGhpc3RvcnlDb2xsZWN0aW9u IGZyb20gJy4vaGlzdG9yeV9jb2xsZWN0aW9uJzsKKworZXhwb3J0IHsKKyAg aGlzdG9yeUNvbGxlY3Rpb24sCit9OwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vc3RhdGljL2pzeC9jb21wb25lbnRzLmpzeCBiL3dlYi9wZ2FkbWluL3N0 YXRpYy9qc3gvY29tcG9uZW50cy5qc3gKaW5kZXggNWJjYjUyMDguLjZmZjM0 ZTRjIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9zdGF0aWMvanN4L2NvbXBv bmVudHMuanN4CisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qc3gvY29tcG9u ZW50cy5qc3gKQEAgLTEsOCArMSwxMCBAQAogCiBpbXBvcnQgUmVhY3QgZnJv bSAncmVhY3QnOwogaW1wb3J0IHtyZW5kZXJ9IGZyb20gJ3JlYWN0LWRvbSc7 CitpbXBvcnQgUXVlcnlIaXN0b3J5IGZyb20gJy4vaGlzdG9yeS9xdWVyeV9o aXN0b3J5JzsKIAogZXhwb3J0IHsKICAgcmVuZGVyLAogICBSZWFjdCwKKyAg UXVlcnlIaXN0b3J5LAogfTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvanN4L2hpc3Rvcnkv cXVlcnlfaGlzdG9yeS5qc3ggYi93ZWIvcGdhZG1pbi9zdGF0aWMvanN4L2hp c3RvcnkvcXVlcnlfaGlzdG9yeS5qc3gKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAuLmQzNmY1Y2U5Ci0tLSAvZGV2L251bGwKKysrIGIv d2ViL3BnYWRtaW4vc3RhdGljL2pzeC9oaXN0b3J5L3F1ZXJ5X2hpc3Rvcnku anN4CkBAIC0wLDAgKzEsNDkgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisv LyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisvLworLy8gQ29weXJp Z2h0IChDKSAyMDEzIC0gMjAxNywgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQg VGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUg UG9zdGdyZVNRTCBMaWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKwor aW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JzsKK2ltcG9ydCBRdWVyeUhpc3Rv cnlFbnRyeSBmcm9tICcuL3F1ZXJ5X2hpc3RvcnlfZW50cnknOworCitjb25z dCBsaVN0eWxlID0geworICBib3JkZXJCb3R0b206ICcxcHggc29saWQgI2Nj Y2NjYycsCit9OworCitleHBvcnQgZGVmYXVsdCBjbGFzcyBRdWVyeUhpc3Rv cnkgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQgeworCisgIGNvbnN0cnVjdG9y KHByb3BzKSB7CisgICAgc3VwZXIocHJvcHMpOworCisgICAgdGhpcy5zdGF0 ZSA9IHsKKyAgICAgIGhpc3Rvcnk6IFtdLAorICAgIH07CisgIH0KKworICBj b21wb25lbnRXaWxsTW91bnQoKSB7CisgICAgdGhpcy5zZXRTdGF0ZSh7aGlz dG9yeTogdGhpcy5wcm9wcy5oaXN0b3J5Q29sbGVjdGlvbi5oaXN0b3J5TGlz dH0pOworICAgIHRoaXMucHJvcHMuaGlzdG9yeUNvbGxlY3Rpb24ub25DaGFu Z2UoKGhpc3RvcnlMaXN0KSA9PiB0aGlzLnNldFN0YXRlKHtoaXN0b3J5OiBo aXN0b3J5TGlzdH0pKTsKKyAgfQorCisgIHJlbmRlcigpIHsKKyAgICByZXR1 cm4gPHVsPgorICAgICAge18uY2hhaW4odGhpcy5zdGF0ZS5oaXN0b3J5KQor ICAgICAgICAuc29ydEJ5KGhpc3RvcnlFbnRyeSA9PiBoaXN0b3J5RW50cnku c3RhcnRfdGltZSkKKyAgICAgICAgLnJldmVyc2UoKQorICAgICAgICAubWFw KChlbnRyeSwgaW5kZXgpID0+CisgICAgICAgIDxsaSBrZXk9e2luZGV4fSBz dHlsZT17bGlTdHlsZX0+CisgICAgICAgICAgPFF1ZXJ5SGlzdG9yeUVudHJ5 IGhpc3RvcnlFbnRyeT17ZW50cnl9Lz4KKyAgICAgICAgPC9saT4pCisgICAg ICAgIC52YWx1ZSgpCisgICAgICB9CisgICAgPC91bD47CisgIH0KK30KKwor UXVlcnlIaXN0b3J5LnByb3BUeXBlcyA9IHsKKyAgaGlzdG9yeUNvbGxlY3Rp b246IFJlYWN0LlByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCwKK307Clwg Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vc3RhdGljL2pzeC9oaXN0b3J5L3F1ZXJ5X2hpc3RvcnlfZW50cnku anN4IGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzeC9oaXN0b3J5L3F1ZXJ5X2hp c3RvcnlfZW50cnkuanN4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwLi5kNjZjYjNhNwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2Fk bWluL3N0YXRpYy9qc3gvaGlzdG9yeS9xdWVyeV9oaXN0b3J5X2VudHJ5Lmpz eApAQCAtMCwwICsxLDkzIEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8g cGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworLy8KKy8vIENvcHlyaWdo dCAoQykgMjAxMyAtIDIwMTcsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRl YW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBv c3RncmVTUUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2lt cG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7CitpbXBvcnQgdXBkYXRlIGZyb20g J2ltbXV0YWJpbGl0eS1oZWxwZXInOworaW1wb3J0IG1vbWVudCBmcm9tICdt b21lbnQnOworCitjb25zdCBvdXRlckRpdlN0eWxlID0geworICBwYWRkaW5n TGVmdDogJzEwcHgnLAorICBmb250RmFtaWx5OiAnbW9ub3NwYWNlJywKKyAg cGFkZGluZ1JpZ2h0OiAnMjBweCcsCisgIGZvbnRTaXplOiAnMTRweCcsCisg IGJhY2tncm91bmRDb2xvcjogJyNGRkYnLAorfTsKK2NvbnN0IHNxbFN0eWxl ID0geworICB0ZXh0T3ZlcmZsb3c6ICdlbGxpcHNpcycsCisgIG92ZXJmbG93 OiAnaGlkZGVuJywKKyAgd2hpdGVTcGFjZTogJ25vd3JhcCcsCisgIHVzZXJT ZWxlY3Q6ICdhdXRvJywKK307Citjb25zdCBzZWNvbmRMaW5lU3R5bGUgPSB7 CisgIGRpc3BsYXk6ICdmbGV4JywKKyAgZmxleERpcmVjdGlvbjogJ3Jvdycs CisgIGp1c3RpZnlDb250ZW50OiAnc3BhY2UtYmV0d2VlbicsCisgIGZvbnRT aXplOiAnMTNweCcsCisgIGNvbG9yOiAnIzg4ODg4OCcsCit9OworY29uc3Qg dGltZXN0YW1wU3R5bGUgPSB7CisgIGFsaWduU2VsZjogJ2ZsZXgtc3RhcnQn LAorfTsKK2NvbnN0IHJvd3NBZmZlY3RlZFN0eWxlID0geworICBhbGlnblNl bGY6ICdmbGV4LWVuZCcsCit9OworY29uc3QgZXJyb3JNZXNzYWdlU3R5bGUg PSB7CisgIHRleHRPdmVyZmxvdzogJ2VsbGlwc2lzJywKKyAgb3ZlcmZsb3c6 ICdoaWRkZW4nLAorICB3aGl0ZVNwYWNlOiAnbm93cmFwJywKKyAgdXNlclNl bGVjdDogJ2F1dG8nLAorICBmb250U2l6ZTogJzEzcHgnLAorICBjb2xvcjog JyM4ODg4ODgnLAorfTsKKworZXhwb3J0IGRlZmF1bHQgY2xhc3MgUXVlcnlI aXN0b3J5RW50cnkgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQgeworICBmb3Jt YXREYXRlKGRhdGUpIHsKKyAgICByZXR1cm4gKG1vbWVudChkYXRlKS5mb3Jt YXQoJ01NTSBEIFlZWVkgW+KAk10gSEg6bW06c3MnKSk7CisgIH0KKworICBy ZW5kZXIoKSB7CisgICAgcmV0dXJuICgKKyAgICAgIDxkaXYgc3R5bGU9e3Ro aXMucXVlcnlFbnRyeUJhY2tncm91bmRDb2xvcigpfT4KKyAgICAgICAgPGRp diBzdHlsZT17c3FsU3R5bGV9PgorICAgICAgICAgIHt0aGlzLnByb3BzLmhp c3RvcnlFbnRyeS5xdWVyeX0KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxk aXYgc3R5bGU9e3NlY29uZExpbmVTdHlsZX0+CisgICAgICAgICAgPGRpdiBz dHlsZT17dGltZXN0YW1wU3R5bGV9PgorICAgICAgICAgICAge3RoaXMuZm9y bWF0RGF0ZSh0aGlzLnByb3BzLmhpc3RvcnlFbnRyeS5zdGFydF90aW1lKX0g LworICAgICAgICAgICAgdG90YWwgdGltZToge3RoaXMucHJvcHMuaGlzdG9y eUVudHJ5LnRvdGFsX3RpbWV9CisgICAgICAgICAgPC9kaXY+CisgICAgICAg ICAgPGRpdiBzdHlsZT17cm93c0FmZmVjdGVkU3R5bGV9PgorICAgICAgICAg ICAge3RoaXMucHJvcHMuaGlzdG9yeUVudHJ5LnJvd19hZmZlY3RlZH0gcm93 cyBhZmZlY3RlZAorICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4K KyAgICAgICAgPGRpdiBzdHlsZT17ZXJyb3JNZXNzYWdlU3R5bGV9PgorICAg ICAgICAgIHt0aGlzLnByb3BzLmhpc3RvcnlFbnRyeS5tZXNzYWdlfQorICAg ICAgICA8L2Rpdj4KKyAgICAgIDwvZGl2PgorICAgICk7CisgIH0KKworICBx dWVyeUVudHJ5QmFja2dyb3VuZENvbG9yKCkgeworICAgIGlmICghdGhpcy5w cm9wcy5oaXN0b3J5RW50cnkuc3RhdHVzKSB7CisgICAgICByZXR1cm4gdXBk YXRlKG91dGVyRGl2U3R5bGUsIHskbWVyZ2U6IHtiYWNrZ3JvdW5kQ29sb3I6 ICcjRjdEMEQ1J319KTsKKyAgICB9CisgICAgcmV0dXJuIG91dGVyRGl2U3R5 bGU7CisgIH0KK30KKworUXVlcnlIaXN0b3J5RW50cnkucHJvcFR5cGVzID0g eworICBoaXN0b3J5RW50cnk6IFJlYWN0LlByb3BUeXBlcy5zaGFwZSh7Cisg ICAgcXVlcnk6IFJlYWN0LlByb3BUeXBlcy5zdHJpbmcsCisgICAgc3RhcnRf dGltZTogUmVhY3QuUHJvcFR5cGVzLmluc3RhbmNlT2YoRGF0ZSksCisgICAg c3RhdHVzOiBSZWFjdC5Qcm9wVHlwZXMuYm9vbCwKKyAgICB0b3RhbF90aW1l OiBSZWFjdC5Qcm9wVHlwZXMuc3RyaW5nLAorICAgIHJvd19hZmZlY3RlZDog UmVhY3QuUHJvcFR5cGVzLmludCwKKyAgICBtZXNzYWdlOiBSZWFjdC5Qcm9w VHlwZXMuc3RyaW5nLAorICB9KSwKK307ClwgTm8gbmV3bGluZSBhdCBlbmQg b2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRp dG9yL3RlbXBsYXRlcy9zcWxlZGl0b3IvanMvc3FsZWRpdG9yLmpzIGIvd2Vi L3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3RlbXBsYXRlcy9zcWxlZGl0b3Iv anMvc3FsZWRpdG9yLmpzCmluZGV4IGVhOGZlZGJmLi5kZTg1NzQxNSAxMDA2 NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3RlbXBsYXRl cy9zcWxlZGl0b3IvanMvc3FsZWRpdG9yLmpzCisrKyBiL3dlYi9wZ2FkbWlu L3Rvb2xzL3NxbGVkaXRvci90ZW1wbGF0ZXMvc3FsZWRpdG9yL2pzL3NxbGVk aXRvci5qcwpAQCAtOSw3ICs5LDEwIEBAIGRlZmluZShbCiAgICAgJ3NvdXJj ZXMvc2xpY2tncmlkL2V2ZW50X2hhbmRsZXJzL2hhbmRsZV9xdWVyeV9vdXRw dXRfa2V5Ym9hcmRfZXZlbnQnLAogICAgICdzb3VyY2VzL3NlbGVjdGlvbi94 Y2VsbF9zZWxlY3Rpb25fbW9kZWwnLAogICAgICdzb3VyY2VzL3NlbGVjdGlv bi9zZXRfc3RhZ2VkX3Jvd3MnLAotICAgICdzb3VyY2VzL2dldHRleHQnLCAn c291cmNlcy9zcWxlZGl0b3JfdXRpbHMnLAorICAgICdzb3VyY2VzL2dldHRl eHQnLAorICAgICdzb3VyY2VzL3NxbGVkaXRvcl91dGlscycsCisgICAgJ3Nv dXJjZXMvZ2VuZXJhdGVkL2hpc3RvcnknLAorICAgICdzb3VyY2VzL2dlbmVy YXRlZC9yZWFjdENvbXBvbmVudHMnLAogCiAgICAgJ3NsaWNrZ3JpZCcsICdi b290c3RyYXAnLCAncGdhZG1pbi5icm93c2VyJywgJ3djZG9ja2VyJywKICAg ICAnY29kZW1pcnJvci9tb2RlL3NxbC9zcWwnLCAnY29kZW1pcnJvci9hZGRv bi9zZWxlY3Rpb24vbWFyay1zZWxlY3Rpb24nLApAQCAtMzIsOSArMzUsOSBA QCBkZWZpbmUoWwogICAgICdzbGlja2dyaWQvcGx1Z2lucy9zbGljay5yb3dz ZWxlY3Rpb25tb2RlbCcsCiAgICAgJ3NsaWNrZ3JpZC9zbGljay5ncmlkJwog XSwgZnVuY3Rpb24oCi0gICAgJCwgXywgUywgYWxlcnRpZnksIHBnQWRtaW4s IEJhY2tib25lLCBCYWNrZ3JpZCwgQ29kZU1pcnJvciwgcGdFeHBsYWluLCBH cmlkU2VsZWN0b3IsCi0gICAgQWN0aXZlQ2VsbENhcHR1cmUsIGNsaXBib2Fy ZCwgY29weURhdGEsIFJhbmdlU2VsZWN0aW9uSGVscGVyLCBoYW5kbGVRdWVy eU91dHB1dEtleWJvYXJkRXZlbnQsCi0gICAgWENlbGxTZWxlY3Rpb25Nb2Rl bCwgc2V0U3RhZ2VkUm93cywgZ2V0dGV4dCwgU3FsRWRpdG9yVXRpbHMKKyAg JCwgXywgUywgYWxlcnRpZnksIHBnQWRtaW4sIEJhY2tib25lLCBCYWNrZ3Jp ZCwgQ29kZU1pcnJvciwKKyAgcGdFeHBsYWluLCBHcmlkU2VsZWN0b3IsIEFj dGl2ZUNlbGxDYXB0dXJlLCBjbGlwYm9hcmQsIGNvcHlEYXRhLCBSYW5nZVNl bGVjdGlvbkhlbHBlciwgaGFuZGxlUXVlcnlPdXRwdXRLZXlib2FyZEV2ZW50 LAorICAgIFhDZWxsU2VsZWN0aW9uTW9kZWwsIHNldFN0YWdlZFJvd3MsIGdl dHRleHQsIFNxbEVkaXRvclV0aWxzLCBIaXN0b3J5QnVuZGxlLCByZWFjdENv bXBvbmVudHMKICkgewogICAgIC8qIFJldHVybiBiYWNrLCB0aGlzIGhhcyBi ZWVuIGNhbGxlZCBtb3JlIHRoYW4gb25jZSAqLwogICAgIGlmIChwZ0FkbWlu LlNxbEVkaXRvcikKQEAgLTg3NCwxNDcgKzg3NywxNCBAQCBkZWZpbmUoWwog CiAgICAgICAgIC8vIFJlbW92ZSBhbnkgZXhpc3RpbmcgZ3JpZCBmaXJzdAog ICAgICAgICBpZiAoc2VsZi5oaXN0b3J5X2dyaWQpIHsKLSAgICAgICAgICAg IHNlbGYuaGlzdG9yeV9ncmlkLnJlbW92ZSgpOworICAgICAgICAgIHNlbGYu aGlzdG9yeV9ncmlkLnJlbW92ZSgpOwogICAgICAgICB9CiAKLSAgICAgICAg dmFyIGhpc3RvcnlfbW9kZWwgPSBCYWNrYm9uZS5Nb2RlbC5leHRlbmQoewot ICAgICAgICAgIGRlZmF1bHRzOiB7Ci0gICAgICAgICAgICBzdGF0dXM6IHVu ZGVmaW5lZCwKLSAgICAgICAgICAgIHN0YXJ0X3RpbWU6IHVuZGVmaW5lZCwK LSAgICAgICAgICAgIHF1ZXJ5OiB1bmRlZmluZWQsCi0gICAgICAgICAgICBy b3dfYWZmZWN0ZWQ6IDAsCi0gICAgICAgICAgICByb3dfcmV0cmlldmVkOiAw LAotICAgICAgICAgICAgdG90YWxfdGltZTogdW5kZWZpbmVkLAotICAgICAg ICAgICAgbWVzc2FnZTogJycKLSAgICAgICAgICB9Ci0gICAgICAgIH0pOwot Ci0gICAgICAgIHZhciBoaXN0b3J5X2NvbGxlY3Rpb24gPSBzZWxmLmhpc3Rv cnlfY29sbGVjdGlvbiA9IG5ldyAoQmFja2JvbmUuQ29sbGVjdGlvbi5leHRl bmQoewotICAgICAgICAgICAgbW9kZWw6IGhpc3RvcnlfbW9kZWwsCi0gICAg ICAgICAgICAvLyBjb21wYXJhdG9yIHRvIHNvcnQgdGhlIGhpc3RvcnkgaW4g cmV2ZXJzZSBvcmRlciBvZiB0aGUgc3RhcnRfdGltZQotICAgICAgICAgICAg Y29tcGFyYXRvcjogZnVuY3Rpb24oYSwgYikgewotICAgICAgICAgICAgICBy ZXR1cm4gLWEuZ2V0KCdzdGFydF90aW1lJykubG9jYWxlQ29tcGFyZShiLmdl dCgnc3RhcnRfdGltZScpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSkp OwotICAgICAgICB2YXIgY29sdW1ucyA9IFt7Ci0gICAgICAgICAgICBuYW1l OiAic3RhdHVzIiwKLSAgICAgICAgICAgIGxhYmVsOiAiIiwKLSAgICAgICAg ICAgIGNlbGw6IEJhY2tncmlkLkNlbGwuZXh0ZW5kKHsKLSAgICAgICAgICAg ICAgY2xhc3M6ICdzcWwtc3RhdHVzLWNlbGwnLAotICAgICAgICAgICAgICBy ZW5kZXI6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHRoaXMuJGVs LmVtcHR5KCk7Ci0gICAgICAgICAgICAgICAgdmFyICRidG4gPSAkKCc8YnV0 dG9uPjwvYnV0dG9uPicsIHsKLSAgICAgICAgICAgICAgICAgIGNsYXNzOiAn YnRuIGJ0bi1jaXJjbGUnCi0gICAgICAgICAgICAgICAgfSkuYXBwZW5kVG8o dGhpcy4kZWwpOwotICAgICAgICAgICAgICAgIHZhciAkY2lyY2xlRGl2ID0g JCgnPGk+PC9pPicsIHtjbGFzczogJ2ZhJ30pLmFwcGVuZFRvKCRidG4pOwot ICAgICAgICAgICAgICAgIGlmICh0aGlzLm1vZGVsLmdldCgnc3RhdHVzJykp IHsKLSAgICAgICAgICAgICAgICAgICRidG4uYWRkQ2xhc3MoJ2J0bi1zdWNj ZXNzJyk7Ci0gICAgICAgICAgICAgICAgICAkY2lyY2xlRGl2LmFkZENsYXNz KCdmYS1jaGVjaycpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg ICAgICAgICAgICAgICAkYnRuLmFkZENsYXNzKCdidG4tZGFuZ2VyJyk7Ci0g ICAgICAgICAgICAgICAgICAkY2lyY2xlRGl2LmFkZENsYXNzKCdmYS10aW1l cycpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHJl dHVybiB0aGlzOwotICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICBl ZGl0YWJsZTogZmFsc2UKLSAgICAgICAgICAgIH0pLAotICAgICAgICAgICAg ZWRpdGFibGU6IGZhbHNlCi0gICAgICAgICAgfSwgewotICAgICAgICAgICAg bmFtZTogInN0YXJ0X3RpbWUiLAotICAgICAgICAgICAgbGFiZWw6ICJEYXRl IiwKLSAgICAgICAgICAgIGNlbGw6ICJzdHJpbmciLAotICAgICAgICAgICAg ZWRpdGFibGU6IGZhbHNlLAotICAgICAgICAgICAgcmVzaXplYWJsZTogdHJ1 ZQotICAgICAgICAgIH0sIHsKLSAgICAgICAgICAgIG5hbWU6ICJxdWVyeSIs Ci0gICAgICAgICAgICBsYWJlbDogIlF1ZXJ5IiwKLSAgICAgICAgICAgIGNl bGw6ICJzdHJpbmciLAotICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLAot ICAgICAgICAgICAgcmVzaXplYWJsZTogdHJ1ZQotICAgICAgICAgIH0sIHsK LSAgICAgICAgICAgIG5hbWU6ICJyb3dfYWZmZWN0ZWQiLAotICAgICAgICAg ICAgbGFiZWw6ICJSb3dzIGFmZmVjdGVkIiwKLSAgICAgICAgICAgIGNlbGw6 ICJpbnRlZ2VyIiwKLSAgICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwKLSAg ICAgICAgICAgIHJlc2l6ZWFibGU6IHRydWUKLSAgICAgICAgICB9LCB7Ci0g ICAgICAgICAgICBuYW1lOiAidG90YWxfdGltZSIsCi0gICAgICAgICAgICBs YWJlbDogIlRvdGFsIFRpbWUiLAotICAgICAgICAgICAgY2VsbDogInN0cmlu ZyIsCi0gICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsCi0gICAgICAgICAg ICByZXNpemVhYmxlOiB0cnVlCi0gICAgICAgICAgfSwgewotICAgICAgICAg ICAgbmFtZTogIm1lc3NhZ2UiLAotICAgICAgICAgICAgbGFiZWw6ICJNZXNz YWdlIiwKLSAgICAgICAgICAgIGNlbGw6ICJzdHJpbmciLAotICAgICAgICAg ICAgZWRpdGFibGU6IGZhbHNlLAotICAgICAgICAgICAgcmVzaXplYWJsZTog dHJ1ZQotICAgICAgICB9XTsKLQotCi0gICAgICAgIC8vIENyZWF0ZSBDb2xs ZWN0aW9uIG9mIEJhY2tncmlkIGNvbHVtbnMKLSAgICAgICAgdmFyIGNvbHVt bnNDb2xsID0gbmV3IEJhY2tncmlkLkNvbHVtbnMoY29sdW1ucyk7Ci0gICAg ICAgIHZhciAkaGlzdG9yeV9ncmlkID0gc2VsZi4kZWwuZmluZCgnI2hpc3Rv cnlfZ3JpZCcpOwotCi0gICAgICAgIHZhciBncmlkID0gc2VsZi5oaXN0b3J5 X2dyaWQgPSBuZXcgQmFja2dyaWQuR3JpZCh7Ci0gICAgICAgICAgICBjb2x1 bW5zOiBjb2x1bW5zQ29sbCwKLSAgICAgICAgICAgIGNvbGxlY3Rpb246IGhp c3RvcnlfY29sbGVjdGlvbiwKLSAgICAgICAgICAgIGNsYXNzTmFtZTogImJh Y2tncmlkIHRhYmxlLWJvcmRlcmVkIHByZXNlbnRhdGlvbiB0YWJsZSBiYWNr Z3JpZC1zdHJpcGVkIgotICAgICAgICB9KTsKLQotICAgICAgICAvLyBSZW5k ZXIgdGhlIGdyaWQKLSAgICAgICAgJGhpc3RvcnlfZ3JpZC5hcHBlbmQoZ3Jp ZC5yZW5kZXIoKS4kZWwpOwotCi0gICAgICAgIHZhciBzaXplQWJsZUNvbCA9 IG5ldyBCYWNrZ3JpZC5FeHRlbnNpb24uU2l6ZUFibGVDb2x1bW5zKHsKLSAg ICAgICAgICBjb2xsZWN0aW9uOiBoaXN0b3J5X2NvbGxlY3Rpb24sCi0gICAg ICAgICAgY29sdW1uczogY29sdW1uc0NvbGwsCi0gICAgICAgICAgZ3JpZDog c2VsZi5oaXN0b3J5X2dyaWQKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgJGhp c3RvcnlfZ3JpZC5maW5kKCd0aGVhZCcpLmJlZm9yZShzaXplQWJsZUNvbC5y ZW5kZXIoKS5lbCk7CisgICAgICAgIHNlbGYuaGlzdG9yeV9jb2xsZWN0aW9u ID0gbmV3IEhpc3RvcnlCdW5kbGUuaGlzdG9yeUNvbGxlY3Rpb24oW10pOwog Ci0gICAgICAgIC8vIEFkZCByZXNpemUgaGFuZGxlcnMKLSAgICAgICAgdmFy IHNpemVIYW5kbGVyID0gbmV3IEJhY2tncmlkLkV4dGVuc2lvbi5TaXplQWJs ZUNvbHVtbnNIYW5kbGVycyh7Ci0gICAgICAgICAgc2l6ZUFibGVDb2x1bW5z OiBzaXplQWJsZUNvbCwKLSAgICAgICAgICBncmlkOiBzZWxmLmhpc3Rvcnlf Z3JpZCwKLSAgICAgICAgICBzYXZlQ29sdW1uV2lkdGg6IHRydWUKLSAgICAg ICAgfSk7Ci0KLSAgICAgICAgLy8gc2l6ZUhhbmRsZXIgc2hvdWxkIHJlbmRl ciBvbmx5IHdoZW4gdGFibGUgZ3JpZCBsb2FkZWQgY29tcGxldGVseS4KLSAg ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgICAkaGlz dG9yeV9ncmlkLmZpbmQoJ3RoZWFkJykuYmVmb3JlKHNpemVIYW5kbGVyLnJl bmRlcigpLmVsKTsKLSAgICAgICAgfSwgMTAwMCk7Ci0KLSAgICAgICAgLy8g cmUgcmVuZGVyIHNpemVIYW5kbGVyIHdoZW5ldmVyIGhpc3RvcnkgcGFuZWwg dGFiIGJlY29tZXMgdmlzaWJsZQotICAgICAgICBzZWxmLmhpc3RvcnlfcGFu ZWwub24od2NEb2NrZXIuRVZFTlQuVklTSUJJTElUWV9DSEFOR0VELCBmdW5j dGlvbihldikgewotICAgICAgICAgICRoaXN0b3J5X2dyaWQuZmluZCgndGhl YWQnKS5iZWZvcmUoc2l6ZUhhbmRsZXIucmVuZGVyKCkuZWwpOwotICAgICAg ICB9KTsKLQotICAgICAgICAvLyBJbml0aWFsaXplZCB0YWJsZSB3aWR0aCAw IHN0aWxsIG5vdCBjYWxjdWxhdGVkCi0gICAgICAgIHZhciB0YWJsZV93aWR0 aCA9IDA7Ci0gICAgICAgIC8vIExpc3RlbiB0byByZXNpemUgZXZlbnRzCi0g ICAgICAgIGNvbHVtbnNDb2xsLm9uKCdyZXNpemUnLAotICAgICAgICAgIGZ1 bmN0aW9uKGNvbHVtbk1vZGVsLCBuZXdXaWR0aCwgb2xkV2lkdGgsIG9mZnNl dCkgewotICAgICAgICAgICAgdmFyICRncmlkX2VsID0gJGhpc3RvcnlfZ3Jp ZC5maW5kKCd0YWJsZScpLAotICAgICAgICAgICAgICAgIHRibF9vcmlnX3dp ZHRoID0gJGdyaWRfZWwud2lkdGgoKSwKLSAgICAgICAgICAgICAgICBvZmZz ZXQgPSBvbGRXaWR0aCAtIG5ld1dpZHRoLAotICAgICAgICAgICAgICAgIHRi bF9uZXdfd2lkdGggPSB0Ymxfb3JpZ193aWR0aCAtIG9mZnNldDsKLQotICAg ICAgICAgICAgaWYgKHRhYmxlX3dpZHRoID09IDApIHsKLSAgICAgICAgICAg ICAgdGFibGVfd2lkdGggPSB0Ymxfb3JpZ193aWR0aAotICAgICAgICAgICAg fQotICAgICAgICAgICAgLy8gVGFibGUgbmV3IHdpZHRoIGNhbm5vdCBiZSBs ZXNzIHRoYW4gb3JpZ2luYWwgd2lkdGgKLSAgICAgICAgICAgIGlmICh0Ymxf bmV3X3dpZHRoID49IHRhYmxlX3dpZHRoKSB7Ci0gICAgICAgICAgICAgICQo JGdyaWRfZWwpLmNzcygnd2lkdGgnLCB0YmxfbmV3X3dpZHRoICsgJ3B4Jyk7 Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAg ICAgICAgLy8gcmVzZXQgaWYgY2FsY3VsYXRlZCB0YmxfbmV3X3dpZHRoIGlz IGxlc3MgdGhhbiBvcmlnaW5hbAotICAgICAgICAgICAgICAvLyB0YWJsZSB3 aWR0aAotICAgICAgICAgICAgICB0YmxfbmV3X3dpZHRoID0gdGFibGVfd2lk dGg7Ci0gICAgICAgICAgICAgICQoJGdyaWRfZWwpLmNzcygnd2lkdGgnLCB0 YmxfbmV3X3dpZHRoICsgJ3B4Jyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg IH0pOworICAgICAgICBsZXQgcXVlcnlIaXN0b3J5RWxlbWVudCA9IHJlYWN0 Q29tcG9uZW50cy5SZWFjdC5jcmVhdGVFbGVtZW50KAorICAgICAgICAgIHJl YWN0Q29tcG9uZW50cy5RdWVyeUhpc3RvcnksIHtoaXN0b3J5Q29sbGVjdGlv bjogc2VsZi5oaXN0b3J5X2NvbGxlY3Rpb259KTsKKyAgICAgICAgcmVhY3RD b21wb25lbnRzLnJlbmRlcihxdWVyeUhpc3RvcnlFbGVtZW50LCAkKCcjaGlz dG9yeV9ncmlkJylbMF0pOwogICAgICAgfSwKIAogICAgICAgLy8gQ2FsbGJh Y2sgZnVuY3Rpb24gZm9yIEFkZCBOZXcgUm93IGJ1dHRvbiBjbGljay4KQEAg LTEzMTcsNyArMTE4Nyw3IEBAIGRlZmluZShbCiAgICAgICAgIHRoaXMuX3N0 b3BFdmVudFByb3BvZ2F0aW9uKGV2KTsKICAgICAgICAgdGhpcy5fY2xvc2VE cm9wRG93bihldik7CiAgICAgICAgIC8vIGFzayBmb3IgY29uZmlybWF0aW9u IG9ubHkgaWYgYW55dGhpbmcgdG8gY2xlYXIKLSAgICAgICAgaWYoIXNlbGYu aGlzdG9yeV9jb2xsZWN0aW9uLmxlbmd0aCkgeyByZXR1cm47IH0KKyAgICAg ICAgaWYoIXNlbGYuaGlzdG9yeV9jb2xsZWN0aW9uLmxlbmd0aCgpKSB7IHJl dHVybjsgfQogCiAgICAgICAgIGFsZXJ0aWZ5LmNvbmZpcm0oZ2V0dGV4dCgi Q2xlYXIgaGlzdG9yeSIpLAogICAgICAgICAgIGdldHRleHQoIkFyZSB5b3Ug c3VyZSB5b3Ugd2lzaCB0byBjbGVhciB0aGUgaGlzdG9yeT8iKSwKQEAgLTIx NDAsMTEgKzIwMTAsMTMgQEAgZGVmaW5lKFsKICAgICAgICAgICAgICQoIiNi dG4tZmxhc2giKS5wcm9wKCdkaXNhYmxlZCcsIGZhbHNlKTsKICAgICAgICAg ICAgIHNlbGYudHJpZ2dlcigncGdhZG1pbi1zcWxlZGl0b3I6bG9hZGluZy1p Y29uOmhpZGUnKTsKICAgICAgICAgICAgIHNlbGYuZ3JpZFZpZXcuaGlzdG9y eV9jb2xsZWN0aW9uLmFkZCh7Ci0gICAgICAgICAgICAgICdzdGF0dXMnIDog c3RhdHVzLCAnc3RhcnRfdGltZSc6IHNlbGYucXVlcnlfc3RhcnRfdGltZS50 b1N0cmluZygpLAotICAgICAgICAgICAgICAncXVlcnknOiBzZWxmLnF1ZXJ5 LCAncm93X2FmZmVjdGVkJzogc2VsZi5yb3dzX2FmZmVjdGVkLAotICAgICAg ICAgICAgICAndG90YWxfdGltZSc6IHNlbGYudG90YWxfdGltZSwgJ21lc3Nh Z2UnOm1zZworICAgICAgICAgICAgICAnc3RhdHVzJyA6IHN0YXR1cywKKyAg ICAgICAgICAgICAgJ3N0YXJ0X3RpbWUnOiBzZWxmLnF1ZXJ5X3N0YXJ0X3Rp bWUsCisgICAgICAgICAgICAgICdxdWVyeSc6IHNlbGYucXVlcnksCisgICAg ICAgICAgICAgICdyb3dfYWZmZWN0ZWQnOiBzZWxmLnJvd3NfYWZmZWN0ZWQs CisgICAgICAgICAgICAgICd0b3RhbF90aW1lJzogc2VsZi50b3RhbF90aW1l LAorICAgICAgICAgICAgICAnbWVzc2FnZSc6bXNnLAogICAgICAgICAgICAg fSk7Ci0gICAgICAgICAgICBzZWxmLmdyaWRWaWV3Lmhpc3RvcnlfY29sbGVj dGlvbi5zb3J0KCk7CiAgICAgICAgICAgfQogICAgICAgICB9LAogCkBAIC0y NDE3LDEwICsyMjg5LDEzIEBAIGRlZmluZShbCiAKICAgICAgICAgICAgICAg ICAvLyBVcGRhdGUgdGhlIHNxbCByZXN1bHRzIGluIGhpc3RvcnkgdGFiCiAg ICAgICAgICAgICAgICAgXy5lYWNoKHJlcy5kYXRhLnF1ZXJ5X3Jlc3VsdCwg ZnVuY3Rpb24ocikgewotICAgICAgICAgICAgICAgICAgc2VsZi5ncmlkVmll dy5oaXN0b3J5X2NvbGxlY3Rpb24uYWRkKAotICAgICAgICAgICAgICAgICAg ICB7J3N0YXR1cycgOiByLnN0YXR1cywgJ3N0YXJ0X3RpbWUnOiBzZWxmLnF1 ZXJ5X3N0YXJ0X3RpbWUudG9TdHJpbmcoKSwKLSAgICAgICAgICAgICAgICAg ICAgJ3F1ZXJ5Jzogci5zcWwsICdyb3dfYWZmZWN0ZWQnOiByLnJvd3NfYWZm ZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICd0b3RhbF90aW1lJzogc2Vs Zi50b3RhbF90aW1lLCAnbWVzc2FnZSc6IHIucmVzdWx0CisgICAgICAgICAg ICAgICAgICBzZWxmLmdyaWRWaWV3Lmhpc3RvcnlfY29sbGVjdGlvbi5hZGQo eworICAgICAgICAgICAgICAgICAgICAnc3RhdHVzJzogci5zdGF0dXMsCisg ICAgICAgICAgICAgICAgICAgICdzdGFydF90aW1lJzogc2VsZi5xdWVyeV9z dGFydF90aW1lLAorICAgICAgICAgICAgICAgICAgICAncXVlcnknOiByLnNx bCwKKyAgICAgICAgICAgICAgICAgICAgJ3Jvd19hZmZlY3RlZCc6IHIucm93 c19hZmZlY3RlZCwKKyAgICAgICAgICAgICAgICAgICAgJ3RvdGFsX3RpbWUn OiBzZWxmLnRvdGFsX3RpbWUsCisgICAgICAgICAgICAgICAgICAgICdtZXNz YWdlJzogci5yZXN1bHQsCiAgICAgICAgICAgICAgICAgICB9KTsKICAgICAg ICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICBzZWxmLnRyaWdnZXIo J3BnYWRtaW4tc3FsZWRpdG9yOmxvYWRpbmctaWNvbjpoaWRlJyk7CkBAIC0z MzY2LDcgKzMyNDEsNyBAQCBkZWZpbmUoWwogCiAgICAgICAgICAgICAgICAg dmFyIG1zZyA9IGUucmVzcG9uc2VUZXh0OwogICAgICAgICAgICAgICAgIGlm IChlLnJlc3BvbnNlSlNPTiAhPSB1bmRlZmluZWQgJiYKLSAgICAgICAgICAg ICAgICAgIGUucmVzcG9uc2VKU09OLmVycm9ybXNnICE9IHVuZGVmaW5lZCkK KyAgICAgICAgICAgICAgICAgICAgZS5yZXNwb25zZUpTT04uZXJyb3Jtc2cg IT0gdW5kZWZpbmVkKQogICAgICAgICAgICAgICAgICAgbXNnID0gZS5yZXNw b25zZUpTT04uZXJyb3Jtc2c7CiAKICAgICAgICAgICAgICAgICBhbGVydGlm eS5hbGVydCgnR2V0IE9iamVjdCBOYW1lIEVycm9yJywgbXNnKTsKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL3V0aWxzL2phdmFzY3JpcHQvamF2YXNjcmlw dF9idW5kbGVyLnB5IGIvd2ViL3BnYWRtaW4vdXRpbHMvamF2YXNjcmlwdC9q YXZhc2NyaXB0X2J1bmRsZXIucHkKaW5kZXggNGNhMmRhNjcuLjYwMTZhZGIw IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi91dGlscy9qYXZhc2NyaXB0L2ph dmFzY3JpcHRfYnVuZGxlci5weQorKysgYi93ZWIvcGdhZG1pbi91dGlscy9q YXZhc2NyaXB0L2phdmFzY3JpcHRfYnVuZGxlci5weQpAQCAtNTgsNSArNTgs NSBAQCBkZWYgd2ViZGlyX3BhdGgoKToKIAogZGVmIHRyeV9idWlsZGluZ19q cygpOgogICAgIHdpdGggcHVzaGQod2ViZGlyX3BhdGgoKSk6Ci0gICAgICAg IGlmIGNhbGwoWyd5YXJuJywgJ3J1bicsICdidW5kbGUnXSkgIT0gMDoKKyAg ICAgICAgaWYgY2FsbChbJ3lhcm4nLCAncnVuJywgJ2J1bmRsZTpkZXYnXSkg IT0gMDoKICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoJ0Vycm9yIGV4ZWN1 dGluZyBidW5kbGluZyB0aGUgYXBwbGljYXRpb24nKQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vdXRpbHMvamF2YXNjcmlwdC90ZXN0cy90ZXN0X2phdmFz Y3JpcHRfYnVuZGxlci5weSBiL3dlYi9wZ2FkbWluL3V0aWxzL2phdmFzY3Jp cHQvdGVzdHMvdGVzdF9qYXZhc2NyaXB0X2J1bmRsZXIucHkKaW5kZXggNjcw MTEzOGQuLmM0ZWJhZDBmIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi91dGls cy9qYXZhc2NyaXB0L3Rlc3RzL3Rlc3RfamF2YXNjcmlwdF9idW5kbGVyLnB5 CisrKyBiL3dlYi9wZ2FkbWluL3V0aWxzL2phdmFzY3JpcHQvdGVzdHMvdGVz dF9qYXZhc2NyaXB0X2J1bmRsZXIucHkKQEAgLTYxLDcgKzYxLDcgQEAgY2xh c3MgSmF2YXNjcmlwdEJ1bmRsZXJUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRv cik6CiAgICAgICAgIHNlbGYubW9ja09zLmxpc3RkaXIucmV0dXJuX3ZhbHVl ID0gW3UnaGlzdG9yeS5qcycsIHUncmVhY3RDb21wb25lbnRzLmpzJ10KIAog ICAgICAgICBqYXZhc2NyaXB0QnVuZGxlci5idW5kbGUoKQotICAgICAgICBz ZWxmLm1vY2tTdWJwcm9jZXNzLmNhbGwuYXNzZXJ0X2NhbGxlZF9vbmNlX3dp dGgoWyd5YXJuJywgJ3J1bicsICdidW5kbGUnXSkKKyAgICAgICAgc2VsZi5t b2NrU3VicHJvY2Vzcy5jYWxsLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKFsn eWFybicsICdydW4nLCAnYnVuZGxlOmRldiddKQogCiAgICAgICAgIHJlcG9y dGVkU3RhdGUgPSBqYXZhc2NyaXB0QnVuZGxlci5yZXBvcnQoKQogICAgICAg ICBleHBlY3RlZFN0YXRlID0gc2VsZi5Kc1N0YXRlLk5FVwpAQCAtMTEwLDcg KzExMCw3IEBAIGNsYXNzIEphdmFzY3JpcHRCdW5kbGVyVGVzdENhc2UoQmFz ZVRlc3RHZW5lcmF0b3IpOgogICAgICAgICBzZWxmLm1vY2tPcy5saXN0ZGly LnJldHVybl92YWx1ZSA9IFt1J2hpc3RvcnkuanMnLCB1J3JlYWN0Q29tcG9u ZW50cy5qcyddCiAKICAgICAgICAgamF2YXNjcmlwdEJ1bmRsZXIuYnVuZGxl KCkKLSAgICAgICAgc2VsZi5tb2NrU3VicHJvY2Vzcy5jYWxsLmFzc2VydF9j YWxsZWRfb25jZV93aXRoKFsneWFybicsICdydW4nLCAnYnVuZGxlJ10pCisg ICAgICAgIHNlbGYubW9ja1N1YnByb2Nlc3MuY2FsbC5hc3NlcnRfY2FsbGVk X29uY2Vfd2l0aChbJ3lhcm4nLCAncnVuJywgJ2J1bmRsZTpkZXYnXSkKIAog ICAgICAgICByZXBvcnRlZFN0YXRlID0gamF2YXNjcmlwdEJ1bmRsZXIucmVw b3J0KCkKICAgICAgICAgZXhwZWN0ZWRTdGF0ZSA9IHNlbGYuSnNTdGF0ZS5P TEQKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2ZlYXR1cmVfdXRpbHMv YXBwX3N0YXJ0ZXIucHkgYi93ZWIvcmVncmVzc2lvbi9mZWF0dXJlX3V0aWxz L2FwcF9zdGFydGVyLnB5CmluZGV4IDk2Y2M1MTZiLi5mNDBkNjkyMSAxMDA2 NDQKLS0tIGEvd2ViL3JlZ3Jlc3Npb24vZmVhdHVyZV91dGlscy9hcHBfc3Rh cnRlci5weQorKysgYi93ZWIvcmVncmVzc2lvbi9mZWF0dXJlX3V0aWxzL2Fw cF9zdGFydGVyLnB5CkBAIC0xMSw2ICsxMSw3IEBAIGltcG9ydCBzdWJwcm9j ZXNzCiBpbXBvcnQgc2lnbmFsCiBpbXBvcnQgcmFuZG9tCiAKK2ltcG9ydCB0 aW1lCiAKIGNsYXNzIEFwcFN0YXJ0ZXI6CiAgICAgIiIiIEhlbHBlciBmb3Ig c3RhcnRpbmcgdGhlIGZ1bGwgcGdhZG1pbjQgYXBwIGFuZCBsb2FkaW5nIHRo ZSBwYWdlIHZpYQpAQCAtNDAsNiArNDEsNyBAQCBjbGFzcyBBcHBTdGFydGVy OgogICAgICAgICApCiAKICAgICAgICAgc2VsZi5kcml2ZXIuc2V0X3dpbmRv d19zaXplKDEwMjQsIDEwMjQpCisgICAgICAgIHRpbWUuc2xlZXAoMTApCiAg ICAgICAgIHNlbGYuZHJpdmVyLmdldCgKICAgICAgICAgICAgICJodHRwOi8v IiArIHNlbGYuYXBwX2NvbmZpZy5ERUZBVUxUX1NFUlZFUiArICI6IiArCiAg ICAgICAgICAgICByYW5kb21fc2VydmVyX3BvcnQpCmRpZmYgLS1naXQgYS93 ZWIvcmVncmVzc2lvbi9mZWF0dXJlX3V0aWxzL3BnYWRtaW5fcGFnZS5weSBi L3dlYi9yZWdyZXNzaW9uL2ZlYXR1cmVfdXRpbHMvcGdhZG1pbl9wYWdlLnB5 CmluZGV4IDQ2ZDUwMTU2Li5hMWNiNzE0NyAxMDA2NDQKLS0tIGEvd2ViL3Jl Z3Jlc3Npb24vZmVhdHVyZV91dGlscy9wZ2FkbWluX3BhZ2UucHkKKysrIGIv d2ViL3JlZ3Jlc3Npb24vZmVhdHVyZV91dGlscy9wZ2FkbWluX3BhZ2UucHkK QEAgLTMzLDE1ICszMywxNiBAQCBjbGFzcyBQZ2FkbWluUGFnZToKICAgICBk ZWYgcmVzZXRfbGF5b3V0KHNlbGYpOgogICAgICAgICBzZWxmLmNsaWNrX2Vs ZW1lbnQoc2VsZi5maW5kX2J5X3BhcnRpYWxfbGlua190ZXh0KCJGaWxlIikp CiAgICAgICAgIHNlbGYuZmluZF9ieV9wYXJ0aWFsX2xpbmtfdGV4dCgiUmVz ZXQgTGF5b3V0IikuY2xpY2soKQotICAgICAgICBzZWxmLmNsaWNrX21vZGFs X29rKCkKKyAgICAgICAgc2VsZi5jbGlja19tb2RhbCgnT0snKQogICAgICAg ICBzZWxmLndhaXRfZm9yX3JlbG9hZGluZ19pbmRpY2F0b3JfdG9fZGlzYXBw ZWFyKCkKIAotICAgIGRlZiBjbGlja19tb2RhbF9vayhzZWxmKToKKyAgICBk ZWYgY2xpY2tfbW9kYWwoc2VsZiwgYnV0dG9uX3RleHQpOgogICAgICAgICB0 aW1lLnNsZWVwKDAuNSkKICAgICAgICAgIyBGaW5kIGFjdGl2ZSBhbGVydGlm eSBkaWFsb2cgaW4gY2FzZSBvZiBtdWx0aXBsZSBhbGVydGlmeSBkaWFsb2cg JiBjbGljayBvbiB0aGF0IGRpYWxvZwotICAgICAgICBzZWxmLmNsaWNrX2Vs ZW1lbnQoCi0gICAgICAgICAgICBzZWxmLmZpbmRfYnlfeHBhdGgoIi8vZGl2 W2NvbnRhaW5zKEBjbGFzcywgJ2FsZXJ0aWZ5JykgYW5kIG5vdChjb250YWlu cyhAY2xhc3MsICdhanMtaGlkZGVuJykpXS8vYnV0dG9uWy49J09LJ10iKQot ICAgICAgICApCisgICAgICAgIG1vZGFsX2J1dHRvbiA9IHNlbGYuZmluZF9i eV94cGF0aCgKKyAgICAgICAgICAgICIvL2Rpdltjb250YWlucyhAY2xhc3Ms ICdhbGVydGlmeScpIGFuZCBub3QoY29udGFpbnMoQGNsYXNzLCAnYWpzLWhp ZGRlbicpKV0vL2J1dHRvblsuPSclcyddIgorICAgICAgICAgICAgJSBidXR0 b25fdGV4dCkKKyAgICAgICAgc2VsZi5jbGlja19lbGVtZW50KG1vZGFsX2J1 dHRvbikKIAogICAgIGRlZiBhZGRfc2VydmVyKHNlbGYsIHNlcnZlcl9jb25m aWcpOgogICAgICAgICBzZWxmLmZpbmRfYnlfeHBhdGgoIi8vKltAY2xhc3M9 J2FjaVRyZWVUZXh0JyBhbmQgY29udGFpbnMoLiwnU2VydmVycycpXSIpLmNs aWNrKCkKQEAgLTc4LDEwICs3OSwxMyBAQCBjbGFzcyBQZ2FkbWluUGFnZToK IAogICAgIGRlZiByZW1vdmVfc2VydmVyKHNlbGYsIHNlcnZlcl9jb25maWcp OgogICAgICAgICBzZWxmLmRyaXZlci5zd2l0Y2hfdG8uZGVmYXVsdF9jb250 ZW50KCkKLSAgICAgICAgc2VsZi5maW5kX2J5X3hwYXRoKCIvLypbQGlkPSd0 cmVlJ10vLypbLj0nIiArIHNlcnZlcl9jb25maWdbJ25hbWUnXSArICInIGFu ZCBAY2xhc3M9J2FjaVRyZWVJdGVtJ10iKS5jbGljaygpCi0gICAgICAgIHNl bGYuZmluZF9ieV9wYXJ0aWFsX2xpbmtfdGV4dCgiT2JqZWN0IikuY2xpY2so KQotICAgICAgICBzZWxmLmZpbmRfYnlfcGFydGlhbF9saW5rX3RleHQoIkRl bGV0ZS9Ecm9wIikuY2xpY2soKQotICAgICAgICBzZWxmLmNsaWNrX21vZGFs X29rKCkKKyAgICAgICAgc2VydmVyX3RvX3JlbW92ZSA9IHNlbGYuZmluZF9i eV94cGF0aCgiLy8qW0BpZD0ndHJlZSddLy8qWy49JyIgKyBzZXJ2ZXJfY29u ZmlnWyduYW1lJ10gKyAiJyBhbmQgQGNsYXNzPSdhY2lUcmVlSXRlbSddIikK KyAgICAgICAgc2VsZi5jbGlja19lbGVtZW50KHNlcnZlcl90b19yZW1vdmUp CisgICAgICAgIG9iamVjdF9tZW51X2l0ZW0gPSBzZWxmLmZpbmRfYnlfcGFy dGlhbF9saW5rX3RleHQoIk9iamVjdCIpCisgICAgICAgIHNlbGYuY2xpY2tf ZWxlbWVudChvYmplY3RfbWVudV9pdGVtKQorICAgICAgICBkZWxldGVfbWVu dV9pdGVtID0gc2VsZi5maW5kX2J5X3BhcnRpYWxfbGlua190ZXh0KCJEZWxl dGUvRHJvcCIpCisgICAgICAgIHNlbGYuY2xpY2tfZWxlbWVudChkZWxldGVf bWVudV9pdGVtKQorICAgICAgICBzZWxmLmNsaWNrX21vZGFsKCdPSycpCiAK ICAgICBkZWYgc2VsZWN0X3RyZWVfaXRlbShzZWxmLCB0cmVlX2l0ZW1fdGV4 dCk6CiAgICAgICAgIHNlbGYuZmluZF9ieV94cGF0aCgiLy8qW0BpZD0ndHJl ZSddLy8qWy49JyIgKyB0cmVlX2l0ZW1fdGV4dCArICInIGFuZCBAY2xhc3M9 J2FjaVRyZWVJdGVtJ10iKS5jbGljaygpCkBAIC0xMzAsNiArMTM0LDcgQEAg Y2xhc3MgUGdhZG1pblBhZ2U6CiAgICAgICAgICkKIAogICAgIGRlZiBjbGlj a19lbGVtZW50KHNlbGYsIGVsZW1lbnQpOgorICAgICAgICAjIGRyaXZlciBt dXN0IGJlIGhlcmUgdG8gYWRoZXJlIHRvIHRoZSBtZXRob2QgY29udHJhY3Qg aW4gc2VsZW5pdW0ud2ViZHJpdmVyLnN1cHBvcnQud2FpdC5XZWJEcml2ZXJX YWl0LnVudGlsKCkKICAgICAgICAgZGVmIGNsaWNrX3N1Y2NlZWRlZChkcml2 ZXIpOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGVsZW1l bnQuY2xpY2soKQpAQCAtMTc1LDggKzE4MCw5IEBAIGNsYXNzIFBnYWRtaW5Q YWdlOgogICAgICAgICB0aW1lLnNsZWVwKHNsZWVwX3RpbWUpCiAKICAgICBk ZWYgY2xpY2tfdGFiKHNlbGYsIHRhYl9uYW1lKToKLSAgICAgICAgc2VsZi5m aW5kX2J5X3hwYXRoKCIvLypbY29udGFpbnMoQGNsYXNzLCd3Y1RhYlRvcCcp XS8vKltjb250YWlucyhAY2xhc3MsJ3djUGFuZWxUYWInKSAiCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAiYW5kIGNvbnRhaW5zKC4sJyIgKyB0YWJf bmFtZSArICInKV0iKS5jbGljaygpCisgICAgICAgIHRhYiA9IHNlbGYuZmlu ZF9ieV94cGF0aCgiLy8qW2NvbnRhaW5zKEBjbGFzcywnd2NUYWJUb3AnKV0v LypbY29udGFpbnMoQGNsYXNzLCd3Y1BhbmVsVGFiJykgIgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgImFuZCBjb250YWlucyguLCciICsgdGFiX25h bWUgKyAiJyldIikKKyAgICAgICAgc2VsZi5jbGlja19lbGVtZW50KHRhYikK IAogICAgIGRlZiB3YWl0X2Zvcl9pbnB1dF9maWVsZF9jb250ZW50KHNlbGYs IGZpZWxkX25hbWUsIGNvbnRlbnQpOgogICAgICAgICBkZWYgaW5wdXRfZmll bGRfaGFzX2NvbnRlbnQoZHJpdmVyKToKZGlmZiAtLWdpdCBhL3dlYi9yZWdy ZXNzaW9uL2phdmFzY3JpcHQvY2hlY2tfbm9kZV92aXNpYmxpdHlfc3BlYy5q cyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvY2hlY2tfbm9kZV92aXNp YmlsaXR5X3NwZWMuanMKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBm cm9tIHdlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvY2hlY2tfbm9kZV92aXNp YmxpdHlfc3BlYy5qcwpyZW5hbWUgdG8gd2ViL3JlZ3Jlc3Npb24vamF2YXNj cmlwdC9jaGVja19ub2RlX3Zpc2liaWxpdHlfc3BlYy5qcwpkaWZmIC0tZ2l0 IGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9oaXN0b3J5L2hpc3Rvcnlf Y29sbGVjdGlvbl9zcGVjLmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlw dC9oaXN0b3J5L2hpc3RvcnlfY29sbGVjdGlvbl9zcGVjLmpzCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi5lMWJhYTU1NAotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvaGlzdG9y eS9oaXN0b3J5X2NvbGxlY3Rpb25fc3BlYy5qcwpAQCAtMCwwICsxLDgzIEBA CisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdy ZVNRTCBUb29scworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTcs IFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdh cmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQor Ly8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2ltcG9ydCBIaXN0b3J5Q29sbGVj dGlvbiBmcm9tICcuLi8uLi8uLi9wZ2FkbWluL3N0YXRpYy9qcy9oaXN0b3J5 L2hpc3RvcnlfY29sbGVjdGlvbic7CisKK2Rlc2NyaWJlKCdoaXN0b3J5Q29s bGVjdGlvbicsIGZ1bmN0aW9uICgpIHsKKyAgbGV0IGhpc3RvcnlDb2xsZWN0 aW9uLCBoaXN0b3J5TW9kZWwsIG9uQ2hhbmdlU3B5OworICBiZWZvcmVFYWNo KCgpID0+IHsKKyAgICBoaXN0b3J5TW9kZWwgPSBbe3NvbWU6ICd0aGluZycs IHNvbWVPdGhlcjogWydhcnJheSBlbGVtZW50J119XTsKKyAgICBoaXN0b3J5 Q29sbGVjdGlvbiA9IG5ldyBIaXN0b3J5Q29sbGVjdGlvbihoaXN0b3J5TW9k ZWwpOworICAgIG9uQ2hhbmdlU3B5ID0gamFzbWluZS5jcmVhdGVTcHkoJ29u Q2hhbmdlSGFuZGxlcicpOworCisgICAgaGlzdG9yeUNvbGxlY3Rpb24ub25D aGFuZ2Uob25DaGFuZ2VTcHkpOworICB9KTsKKworICBkZXNjcmliZSgnbGVu Z3RoJywgZnVuY3Rpb24gKCkgeworICAgIGl0KCdyZXR1cm5zIDAgd2hlbiB1 bmRlcmx5aW5nIGhpc3RvcnkgbW9kZWwgaGFzIG5vIGVsZW1lbnRzJywgZnVu Y3Rpb24gKCkgeworICAgICAgaGlzdG9yeUNvbGxlY3Rpb24gPSBuZXcgSGlz dG9yeUNvbGxlY3Rpb24oW10pOworCisgICAgICBleHBlY3QoaGlzdG9yeUNv bGxlY3Rpb24ubGVuZ3RoKCkpLnRvQmUoMCk7CisgICAgfSk7CisKKyAgICBp dCgncmV0dXJucyB0aGUgbGVuZ3RoIG9mIHRoZSB1bmRlcmx5aW5nIGhpc3Rv cnkgbW9kZWwnLCBmdW5jdGlvbiAoKSB7CisgICAgICBleHBlY3QoaGlzdG9y eUNvbGxlY3Rpb24ubGVuZ3RoKCkpLnRvQmUoMSk7CisgICAgfSk7CisgIH0p OworCisgIGRlc2NyaWJlKCdhZGQnLCBmdW5jdGlvbiAoKSB7CisgICAgbGV0 IGV4cGVjdGVkSGlzdG9yeTsKKyAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAg ICAgIGhpc3RvcnlDb2xsZWN0aW9uLmFkZCh7c29tZTogJ25ldyB0aGluZycs IHNvbWVPdGhlcjogWyd2YWx1ZTEnLCAndmFsdWUyJ119KTsKKworICAgICAg ZXhwZWN0ZWRIaXN0b3J5ID0gWworICAgICAgICB7c29tZTogJ3RoaW5nJywg c29tZU90aGVyOiBbJ2FycmF5IGVsZW1lbnQnXX0sCisgICAgICAgIHtzb21l OiAnbmV3IHRoaW5nJywgc29tZU90aGVyOiBbJ3ZhbHVlMScsICd2YWx1ZTIn XX0sCisgICAgICBdOworICAgIH0pOworCisgICAgaXQoJ2FkZHMgYSBwYXNz ZWQgZW50cnknLCBmdW5jdGlvbiAoKSB7CisgICAgICBleHBlY3QoaGlzdG9y eUNvbGxlY3Rpb24uaGlzdG9yeUxpc3QpLnRvRXF1YWwoZXhwZWN0ZWRIaXN0 b3J5KTsKKyAgICB9KTsKKworICAgIGl0KCdjYWxscyB0aGUgb25DaGFuZ2Ug ZnVuY3Rpb24nLCBmdW5jdGlvbiAoKSB7CisgICAgICBleHBlY3Qob25DaGFu Z2VTcHkpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKGV4cGVjdGVkSGlzdG9yeSk7 CisgICAgfSk7CisgIH0pOworCisgIGRlc2NyaWJlKCdyZXNldCcsIGZ1bmN0 aW9uICgpIHsKKyAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgIGhpc3Rv cnlDb2xsZWN0aW9uLnJlc2V0KCk7CisgICAgfSk7CisKKyAgICBpdCgnZHJv cHMgdGhlIGhpc3RvcnknLCBmdW5jdGlvbiAoKSB7CisgICAgICBleHBlY3Qo aGlzdG9yeUNvbGxlY3Rpb24uaGlzdG9yeUxpc3QpLnRvRXF1YWwoW10pOwor ICAgICAgZXhwZWN0KGhpc3RvcnlDb2xsZWN0aW9uLmxlbmd0aCgpKS50b0Jl KDApOworICAgIH0pOworCisgICAgaXQoJ2NhbGxzIHRoZSBvbkNoYW5nZSBm dW5jdGlvbicsIGZ1bmN0aW9uICgpIHsKKyAgICAgIGV4cGVjdChvbkNoYW5n ZVNweSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoW10pOworICAgIH0pOworICB9 KTsKKworICBkZXNjcmliZSgnc29ydCcsIGZ1bmN0aW9uICgpIHsKKyAgICBp dCgnZG9lc25cJ3Qgc29ydCcpOworICB9KTsKKworICBkZXNjcmliZSgnd2hl biBpbnN0YW50aWF0ZWQnLCBmdW5jdGlvbiAoKSB7CisgICAgZGVzY3JpYmUo J2Zyb20gYSBoaXN0b3J5IG1vZGVsJywgZnVuY3Rpb24gKCkgeworICAgICAg aXQoJ2hhcyB0aGUgaGlzdG9yeU1vZGVsJywgKCkgPT4geworICAgICAgICBs ZXQgY29udGVudCA9IGhpc3RvcnlDb2xsZWN0aW9uLmhpc3RvcnlMaXN0Owor CisgICAgICAgIGV4cGVjdChjb250ZW50KS50b0VxdWFsKGhpc3RvcnlNb2Rl bCk7CisgICAgICB9KTsKKworICAgIH0pOworICB9KTsKK30pOwpcIE5vIG5l d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNz aW9uL2phdmFzY3JpcHQvaGlzdG9yeS9xdWVyeV9oaXN0b3J5X2VudHJ5X3Nw ZWMuanN4IGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9oaXN0b3J5L3F1 ZXJ5X2hpc3RvcnlfZW50cnlfc3BlYy5qc3gKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAuLmM4NmExY2ZjCi0tLSAvZGV2L251bGwKKysr IGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9oaXN0b3J5L3F1ZXJ5X2hp c3RvcnlfZW50cnlfc3BlYy5qc3gKQEAgLTAsMCArMSw1MCBAQAorLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLworLy8KKy8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9v bHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE3LCBUaGUgcGdB ZG1pbiBEZXZlbG9wbWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlzIHJl bGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLworCitpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnOwor CitpbXBvcnQgUXVlcnlIaXN0b3J5RW50cnkgZnJvbSAnLi4vLi4vLi4vcGdh ZG1pbi9zdGF0aWMvanN4L2hpc3RvcnkvcXVlcnlfaGlzdG9yeV9lbnRyeSc7 CisKK2ltcG9ydCB7bW91bnR9IGZyb20gJ2VuenltZSc7CitpbXBvcnQgamFz bWluZUVuenltZSBmcm9tICdqYXNtaW5lLWVuenltZSc7CisKK2Rlc2NyaWJl KCdRdWVyeUhpc3RvcnlFbnRyeScsICgpID0+IHsKKyAgbGV0IGhpc3RvcnlX cmFwcGVyOworICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICBqYXNtaW5lRW56 eW1lKCk7CisgIH0pOworCisgIGRlc2NyaWJlKCdmb3IgYSBmYWlsZWQgcXVl cnknLCAoKSA9PiB7CisgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICBj b25zdCBoaXN0b3J5RW50cnkgPSB7CisgICAgICAgIHF1ZXJ5OiAnc2Vjb25k IHNxbCBzdGF0ZW1lbnQnLAorICAgICAgICBzdGFydF90aW1lOiBuZXcgRGF0 ZSgyMDE2LCAxMSwgMTEsIDEsIDMzLCA1LCA5OSksCisgICAgICAgIHN0YXR1 czogZmFsc2UsCisgICAgICB9OworICAgICAgaGlzdG9yeVdyYXBwZXIgPSBt b3VudCg8UXVlcnlIaXN0b3J5RW50cnkgaGlzdG9yeUVudHJ5PXtoaXN0b3J5 RW50cnl9Lz4pOworICAgIH0pOworICAgIGl0KCdkaXNwbGF5cyBhIHBpbmsg YmFja2dyb3VuZCBjb2xvcicsICgpID0+IHsKKyAgICAgIGV4cGVjdChoaXN0 b3J5V3JhcHBlci5maW5kKCdkaXYnKS5maXJzdCgpKS50b0hhdmVTdHlsZSgn YmFja2dyb3VuZENvbG9yJywgJyNGN0QwRDUnKTsKKyAgICB9KTsKKyAgfSk7 CisKKyAgZGVzY3JpYmUoJ2ZvciBhIHN1Y2Nlc3NmdWwgcXVlcnknLCAoKSA9 PiB7CisgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICBjb25zdCBoaXN0 b3J5RW50cnkgPSB7CisgICAgICAgIHF1ZXJ5OiAnc2Vjb25kIHNxbCBzdGF0 ZW1lbnQnLAorICAgICAgICBzdGFydF90aW1lOiBuZXcgRGF0ZSgyMDE2LCAx MSwgMTEsIDEsIDMzLCA1LCA5OSksCisgICAgICAgIHN0YXR1czogdHJ1ZSwK KyAgICAgIH07CisgICAgICBoaXN0b3J5V3JhcHBlciA9IG1vdW50KDxRdWVy eUhpc3RvcnlFbnRyeSBoaXN0b3J5RW50cnk9e2hpc3RvcnlFbnRyeX0vPik7 CisgICAgfSk7CisgICAgaXQoJ2RvZXMgbm90IGRpc3BsYXkgYSBwaW5rIGJh Y2tncm91bmQgY29sb3InLCAoKSA9PiB7CisgICAgICBleHBlY3QoaGlzdG9y eVdyYXBwZXIuZmluZCgnZGl2JykuZmlyc3QoKSkudG9IYXZlU3R5bGUoJ2Jh Y2tncm91bmRDb2xvcicsICcjRkZGJyk7CisgICAgfSk7CisgIH0pOworfSk7 CmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2hpc3Rv cnkvcXVlcnlfaGlzdG9yeV9zcGVjLmpzeCBiL3dlYi9yZWdyZXNzaW9uL2ph dmFzY3JpcHQvaGlzdG9yeS9xdWVyeV9oaXN0b3J5X3NwZWMuanN4Cm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi5lMzY5ODhhOAotLS0g L2Rldi9udWxsCisrKyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvaGlz dG9yeS9xdWVyeV9oaXN0b3J5X3NwZWMuanN4CkBAIC0wLDAgKzEsMTAzIEBA CisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdy ZVNRTCBUb29scworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTcs IFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdh cmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQor Ly8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2ltcG9ydCBSZWFjdCBmcm9tICdy ZWFjdCc7CitpbXBvcnQgUXVlcnlIaXN0b3J5IGZyb20gJy4uLy4uLy4uL3Bn YWRtaW4vc3RhdGljL2pzeC9oaXN0b3J5L3F1ZXJ5X2hpc3RvcnknOworaW1w b3J0IFF1ZXJ5SGlzdG9yeUVudHJ5IGZyb20gJy4uLy4uLy4uL3BnYWRtaW4v c3RhdGljL2pzeC9oaXN0b3J5L3F1ZXJ5X2hpc3RvcnlfZW50cnknOworaW1w b3J0IEhpc3RvcnlDb2xsZWN0aW9uIGZyb20gJy4uLy4uLy4uL3BnYWRtaW4v c3RhdGljL2pzL2hpc3RvcnkvaGlzdG9yeV9jb2xsZWN0aW9uJzsKK2ltcG9y dCBqYXNtaW5lRW56eW1lIGZyb20gJ2phc21pbmUtZW56eW1lJzsKKworaW1w b3J0IHttb3VudCwgc2hhbGxvd30gZnJvbSAnZW56eW1lJzsKKworZGVzY3Jp YmUoJ1F1ZXJ5SGlzdG9yeScsICgpID0+IHsKKyAgbGV0IGhpc3RvcnlXcmFw cGVyOworICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICBqYXNtaW5lRW56eW1l KCk7CisgICAgY29uc3QgaGlzdG9yeUNvbGxlY3Rpb24gPSBuZXcgSGlzdG9y eUNvbGxlY3Rpb24oW10pOworICAgIGhpc3RvcnlXcmFwcGVyID0gc2hhbGxv dyg8UXVlcnlIaXN0b3J5IGhpc3RvcnlDb2xsZWN0aW9uPXtoaXN0b3J5Q29s bGVjdGlvbn0vPik7CisgIH0pOworCisgIGRlc2NyaWJlKCdvbiBjb25zdHJ1 Y3Rpb24nLCAoKSA9PiB7CisgICAgaXQoJ2hhcyBubyBlbnRyaWVzJywgKGRv bmUpID0+IHsKKyAgICAgIGxldCBmb3VuZENoaWxkcmVuID0gaGlzdG9yeVdy YXBwZXIuZmluZChRdWVyeUhpc3RvcnlFbnRyeSk7CisgICAgICBleHBlY3Qo Zm91bmRDaGlsZHJlbi5sZW5ndGgpLnRvQmUoMCk7CisgICAgICBkb25lKCk7 CisgICAgfSk7CisgIH0pOworCisgIGRlc2NyaWJlKCd3aGVuIGl0IGhhcyBo aXN0b3J5JywgKCkgPT4geworICAgIGRlc2NyaWJlKCd3aGVuIHR3byBTUUwg cXVlcmllcyB3ZXJlIGV4ZWN1dGVkJywgKCkgPT4geworICAgICAgbGV0IGZv dW5kQ2hpbGRyZW47CisKKyAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAg ICAgICBjb25zdCBoaXN0b3J5T2JqZWN0cyA9IFsKKyAgICAgICAgICB7Cisg ICAgICAgICAgICBxdWVyeTogJ3NlY29uZCBzcWwgc3RhdGVtZW50JywKKyAg ICAgICAgICAgIHN0YXJ0X3RpbWU6IG5ldyBEYXRlKDIwMTYsIDExLCAxMSwg MSwgMzMsIDUsIDk5KSwKKyAgICAgICAgICAgIHN0YXR1czogZmFsc2UsCisg ICAgICAgICAgICByb3dfYWZmZWN0ZWQ6IDEsCisgICAgICAgICAgICB0b3Rh bF90aW1lOiAnMjM0IG1zZWMnLAorICAgICAgICAgICAgbWVzc2FnZTogJ3Nv bWUgb3RoZXIgbWVzc2FnZScsCisgICAgICAgICAgfSwKKyAgICAgICAgICB7 CisgICAgICAgICAgICBxdWVyeTogJ2ZpcnN0IHNxbCBzdGF0ZW1lbnQnLAor ICAgICAgICAgICAgc3RhcnRfdGltZTogbmV3IERhdGUoMjAxNywgNSwgMywg MTQsIDMsIDE1LCAxNTApLAorICAgICAgICAgICAgc3RhdHVzOiB0cnVlLAor ICAgICAgICAgICAgcm93X2FmZmVjdGVkOiAyLAorICAgICAgICAgICAgdG90 YWxfdGltZTogJzE0IG1zZWMnLAorICAgICAgICAgICAgbWVzc2FnZTogJ2Eg dmVyeSBpbXBvcnRhbnQgbWVzc2FnZScsCisgICAgICAgICAgfSwKKyAgICAg ICAgXTsKKyAgICAgICAgY29uc3QgaGlzdG9yeUNvbGxlY3Rpb24gPSBuZXcg SGlzdG9yeUNvbGxlY3Rpb24oaGlzdG9yeU9iamVjdHMpOworCisgICAgICAg IGhpc3RvcnlXcmFwcGVyID0gbW91bnQoPFF1ZXJ5SGlzdG9yeSBoaXN0b3J5 Q29sbGVjdGlvbj17aGlzdG9yeUNvbGxlY3Rpb259Lz4pOworCisgICAgICAg IGZvdW5kQ2hpbGRyZW4gPSBoaXN0b3J5V3JhcHBlci5maW5kKFF1ZXJ5SGlz dG9yeUVudHJ5KTsKKyAgICAgIH0pOworCisgICAgICBpdCgnaGFzIHR3byBx dWVyeSBoaXN0b3J5IGVudHJpZXMnLCAoKSA9PiB7CisgICAgICAgIGV4cGVj dChmb3VuZENoaWxkcmVuLmxlbmd0aCkudG9CZSgyKTsKKyAgICAgIH0pOwor CisgICAgICBpdCgnZGlzcGxheXMgdGhlIFNRTCBvZiB0aGUgcXVlcmllcyBp biBvcmRlcicsICgpID0+IHsKKyAgICAgICAgZXhwZWN0KGZvdW5kQ2hpbGRy ZW4uYXQoMCkudGV4dCgpKS50b0NvbnRhaW4oJ2ZpcnN0IHNxbCBzdGF0ZW1l bnQnKTsKKyAgICAgICAgZXhwZWN0KGZvdW5kQ2hpbGRyZW4uYXQoMSkudGV4 dCgpKS50b0NvbnRhaW4oJ3NlY29uZCBzcWwgc3RhdGVtZW50Jyk7CisgICAg ICB9KTsKKworICAgICAgaXQoJ2Rpc3BsYXlzIHRoZSBmb3JtYXR0ZWQgdGlt ZXN0YW1wIG9mIHRoZSBxdWVyaWVzIGluIGNocm9ub2xvZ2ljYWwgb3JkZXIg YnkgbW9zdCByZWNlbnQgZmlyc3QnLCAoKSA9PiB7CisgICAgICAgIGV4cGVj dChmb3VuZENoaWxkcmVuLmF0KDApLnRleHQoKSkudG9Db250YWluKCdKdW4g MyAyMDE3IOKAkyAxNDowMzoxNScpOworICAgICAgICBleHBlY3QoZm91bmRD aGlsZHJlbi5hdCgxKS50ZXh0KCkpLnRvQ29udGFpbignRGVjIDExIDIwMTYg 4oCTIDAxOjMzOjA1Jyk7CisgICAgICB9KTsKKworICAgICAgaXQoJ2Rpc3Bs YXlzIHRoZSBudW1iZXIgb2Ygcm93cyBhZmZlY3RlZCcsICgpID0+IHsKKyAg ICAgICAgZXhwZWN0KGZvdW5kQ2hpbGRyZW4uYXQoMSkudGV4dCgpKS50b0Nv bnRhaW4oJzEgcm93cyBhZmZlY3RlZCcpOworICAgICAgICBleHBlY3QoZm91 bmRDaGlsZHJlbi5hdCgwKS50ZXh0KCkpLnRvQ29udGFpbignMiByb3dzIGFm ZmVjdGVkJyk7CisgICAgICB9KTsKKworICAgICAgaXQoJ2Rpc3BsYXlzIHRo ZSB0b3RhbCB0aW1lJywgKCkgPT4geworICAgICAgICBleHBlY3QoZm91bmRD aGlsZHJlbi5hdCgwKS50ZXh0KCkpLnRvQ29udGFpbigndG90YWwgdGltZTog MTQgbXNlYycpOworICAgICAgICBleHBlY3QoZm91bmRDaGlsZHJlbi5hdCgx KS50ZXh0KCkpLnRvQ29udGFpbigndG90YWwgdGltZTogMjM0IG1zZWMnKTsK KyAgICAgIH0pOworCisgICAgICBpdCgnZGlzcGxheXMgdGhlIHRydW5jYXRl ZCBtZXNzYWdlJywgKCkgPT4geworICAgICAgICBleHBlY3QoZm91bmRDaGls ZHJlbi5hdCgwKS50ZXh0KCkpLnRvQ29udGFpbignYSB2ZXJ5IGltcG9ydGFu dCBtZXNzYWdlJyk7CisgICAgICAgIGV4cGVjdChmb3VuZENoaWxkcmVuLmF0 KDEpLnRleHQoKSkudG9Db250YWluKCdzb21lIG90aGVyIG1lc3NhZ2UnKTsK KyAgICAgIH0pOworCisgICAgICBkZXNjcmliZSgnd2hlbiB0aGVyZSBhcmUg b25lIGZhaWxpbmcgYW5kIG9uZSBzdWNjZXNzZnVsIHF1ZXJ5IGVhY2gnLCAo KSA9PiB7CisgICAgICAgIGl0KCdhZGRzIGEgd2hpdGUgYmFja2dyb3VuZCBj b2xvciBmb3IgdGhlIHN1Y2Nlc3NmdWwgcXVlcnknLCAoKSA9PiB7CisgICAg ICAgICAgZXhwZWN0KGZvdW5kQ2hpbGRyZW4uYXQoMCkuZmluZCgnZGl2Jyku Zmlyc3QoKSkudG9IYXZlU3R5bGUoJ2JhY2tncm91bmRDb2xvcicsICcjRkZG Jyk7CisgICAgICAgIH0pOworICAgICAgICBpdCgnYWRkcyBhIHJlZCBiYWNr Z3JvdW5kIGNvbG9yIGZvciB0aGUgZmFpbGVkIHF1ZXJ5JywgKCkgPT4gewor ICAgICAgICAgIGV4cGVjdChmb3VuZENoaWxkcmVuLmF0KDEpLmZpbmQoJ2Rp dicpLmZpcnN0KCkpLnRvSGF2ZVN0eWxlKCdiYWNrZ3JvdW5kQ29sb3InLCAn I0Y3RDBENScpOworICAgICAgICB9KTsKKyAgICAgIH0pOworICAgIH0pOwor ICB9KTsKK30pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt LWdpdCBhL3dlYi9yZWdyZXNzaW9uL3B5dGhvbl90ZXN0X3V0aWxzL3Rlc3Rf dXRpbHMucHkgYi93ZWIvcmVncmVzc2lvbi9weXRob25fdGVzdF91dGlscy90 ZXN0X3V0aWxzLnB5CmluZGV4IGNmNTU5YzQ0Li5mM2U3ZWQwMSAxMDA2NDQK LS0tIGEvd2ViL3JlZ3Jlc3Npb24vcHl0aG9uX3Rlc3RfdXRpbHMvdGVzdF91 dGlscy5weQorKysgYi93ZWIvcmVncmVzc2lvbi9weXRob25fdGVzdF91dGls cy90ZXN0X3V0aWxzLnB5CkBAIC0yMjcsNiArMjI3LDcgQEAgZGVmIGNyZWF0 ZV9jb25zdHJhaW50KAogICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAg IHRyYWNlYmFjay5wcmludF9leGMoZmlsZT1zeXMuc3RkZXJyKQogCisKIGRl ZiBjcmVhdGVfZGVidWdfZnVuY3Rpb24oc2VydmVyLCBkYl9uYW1lLCBmdW5j dGlvbl9uYW1lPSJ0ZXN0X2Z1bmMiKToKICAgICB0cnk6CiAgICAgICAgIGNv bm5lY3Rpb24gPSBnZXRfZGJfY29ubmVjdGlvbihkYl9uYW1lLApAQCAtMzA1 LDYgKzMwNiw3IEBAIGRlZiBkcm9wX2RhdGFiYXNlKGNvbm5lY3Rpb24sIGRh dGFiYXNlX25hbWUpOgogICAgICAgICAgICAgY29ubmVjdGlvbi5jb21taXQo KQogICAgICAgICAgICAgY29ubmVjdGlvbi5jbG9zZSgpCiAKKwogZGVmIGRy b3BfdGFibGVzcGFjZShjb25uZWN0aW9uKToKICAgICAiIiJUaGlzIGZ1bmN0 aW9uIHVzZWQgdG8gZHJvcCB0aGUgdGFibGVzcGFjZSIiIgogICAgIHBnX2N1 cnNvciA9IGNvbm5lY3Rpb24uY3Vyc29yKCkKZGlmZiAtLWdpdCBhL3dlYi93 ZWJwYWNrLmNvbmZpZy5qcyBiL3dlYi93ZWJwYWNrLmNvbmZpZy5qcwppbmRl eCA5MTU4NjU5Mi4uZmM2ZDI5ZTAgMTAwNjQ0Ci0tLSBhL3dlYi93ZWJwYWNr LmNvbmZpZy5qcworKysgYi93ZWIvd2VicGFjay5jb25maWcuanMKQEAgLTEs MTggKzEsMjEgQEAKIC8qIGVzbGludC1lbnYgbm9kZSAqLwogCiBtb2R1bGUu ZXhwb3J0cyA9IHsKLSAgY29udGV4dDogX19kaXJuYW1lICsgJy9wZ2FkbWlu L3N0YXRpYy9qc3gnLAotICBlbnRyeTogJy4vY29tcG9uZW50cy5qc3gnLAor ICBjb250ZXh0OiBfX2Rpcm5hbWUgKyAnL3BnYWRtaW4vc3RhdGljJywKKyAg ZW50cnk6IHsKKyAgICByZWFjdENvbXBvbmVudHM6ICcuL2pzeC9jb21wb25l bnRzLmpzeCcsCisgICAgaGlzdG9yeTogJy4vanMvaGlzdG9yeS9pbmRleC5q cycsCisgIH0sCiAgIG91dHB1dDogewogICAgIGxpYnJhcnlUYXJnZXQ6ICdh bWQnLAogICAgIHBhdGg6IF9fZGlybmFtZSArICcvcGdhZG1pbi9zdGF0aWMv anMvZ2VuZXJhdGVkJywKLSAgICBmaWxlbmFtZTogJ3JlYWN0Q29tcG9uZW50 cy5qcycsCisgICAgZmlsZW5hbWU6ICdbbmFtZV0uanMnLAogICB9LAogCiAg IG1vZHVsZTogewogICAgIHJ1bGVzOiBbewogICAgICAgdGVzdDogL1wuanN4 PyQvLAotICAgICAgZXhjbHVkZTogL25vZGVfbW9kdWxlcy8sCisgICAgICBl eGNsdWRlOiBbL25vZGVfbW9kdWxlcy8sIC92ZW5kb3IvXSwKICAgICAgIHVz ZTogewogICAgICAgICBsb2FkZXI6ICdiYWJlbC1sb2FkZXInLAogICAgICAg ICBvcHRpb25zOiB7CmRpZmYgLS1naXQgYS93ZWIvd2VicGFjay50ZXN0LmNv bmZpZy5qcyBiL3dlYi93ZWJwYWNrLnRlc3QuY29uZmlnLmpzCmluZGV4IGQx YzY0NTVhLi42NzU0ZjA0OCAxMDA2NDQKLS0tIGEvd2ViL3dlYnBhY2sudGVz dC5jb25maWcuanMKKysrIGIvd2ViL3dlYnBhY2sudGVzdC5jb25maWcuanMK QEAgLTIyLDcgKzIyLDcgQEAgbW9kdWxlLmV4cG9ydHMgPSB7CiAgICAgICAg IHVzZTogewogICAgICAgICAgIGxvYWRlcjogJ2JhYmVsLWxvYWRlcicsCiAg ICAgICAgICAgb3B0aW9uczogewotICAgICAgICAgICAgcHJlc2V0czogWydl czIwMTUnXSwKKyAgICAgICAgICAgIHByZXNldHM6IFsnZXMyMDE1JywgJ3Jl YWN0J10sCiAgICAgICAgICAgfSwKICAgICAgICAgfSwKICAgICAgIH0sCkBA IC01MSw2ICs1MSw3IEBAIG1vZHVsZS5leHBvcnRzID0gewogICB9LAogCiAg IHJlc29sdmU6IHsKKyAgICBleHRlbnNpb25zOiBbJy5qcycsICcuanN4J10s CiAgICAgYWxpYXM6IHsKICAgICAgICdhbGVydGlmeSc6IHNvdXJjZXNEaXIg KyAnL3ZlbmRvci9hbGVydGlmeWpzL2FsZXJ0aWZ5JywKICAgICAgICdqcXVl cnknOiBzb3VyY2VzRGlyICsgJy92ZW5kb3IvanF1ZXJ5L2pxdWVyeS0xLjEx LjInLApAQCAtNjcsNCArNjgsMTEgQEAgbW9kdWxlLmV4cG9ydHMgPSB7CiAg ICAgICAncGdhZG1pbic6IHNvdXJjZXNEaXIgKyAnL2pzL3BnYWRtaW4nLAog ICAgIH0sCiAgIH0sCisgIGV4dGVybmFsczogeworICAgICdyZWFjdC9hZGRv bnMnOiB0cnVlLAorICAgICdyZWFjdC9saWIvUmVhY3RDb250ZXh0JzogdHJ1 ZSwKKyAgICAncmVhY3QvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50JzogdHJ1 ZSwKKyAgICAncmVhY3QtZG9tL3Rlc3QtdXRpbHMnOiB0cnVlLAorICAgICdy ZWFjdC10ZXN0LXJlbmRlcmVyL3NoYWxsb3cnOiB0cnVlLAorICB9LAogfTsK ZGlmZiAtLWdpdCBhL3dlYi95YXJuLmxvY2sgYi93ZWIveWFybi5sb2NrCmlu ZGV4IGIwNGNhYTVjLi5jZTcyZDQxYiAxMDA2NDQKLS0tIGEvd2ViL3lhcm4u bG9jaworKysgYi93ZWIveWFybi5sb2NrCkBAIC0xMzcxLDYgKzEzNzEsMTIg QEAgZGVjYW1lbGl6ZUBeMS4wLjAsIGRlY2FtZWxpemVAXjEuMS4xOgogICB2 ZXJzaW9uICIxLjIuMCIKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku eWFybnBrZy5jb20vZGVjYW1lbGl6ZS8tL2RlY2FtZWxpemUtMS4yLjAudGd6 I2Y2NTM0ZDE1MTQ4MjY5YjIwMzUyZTdiZWUyNmY1MDFmOWExOTEyOTAiCiAK K2RlZXAtZXF1YWwtaWRlbnRAXjEuMS4xOgorICB2ZXJzaW9uICIxLjEuMSIK KyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZGVl cC1lcXVhbC1pZGVudC8tL2RlZXAtZXF1YWwtaWRlbnQtMS4xLjEudGd6IzA2 ZjRiODllNTM3MTBjZDZjZWE0YTc3ODFjN2E5NTY2NDJkZThkYzkiCisgIGRl cGVuZGVuY2llczoKKyAgICBsb2Rhc2guaXNlcXVhbCAiXjMuMCIKKwogZGVl cC1leHRlbmRAfjAuNC4wOgogICB2ZXJzaW9uICIwLjQuMiIKICAgcmVzb2x2 ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZGVlcC1leHRlbmQv LS9kZWVwLWV4dGVuZC0wLjQuMi50Z3ojNDhiNjk5YzI3ZTMzNGJmODlmMTA4 OTJiZTQzMmY2ZTRjN2QzNGE3ZiIKQEAgLTE2MDgsNiArMTYxNCwxMiBAQCBl bnRpdGllc0BeMS4xLjEsIGVudGl0aWVzQH4xLjEuMToKICAgdmVyc2lvbiAi MS4xLjEiCiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu Y29tL2VudGl0aWVzLy0vZW50aXRpZXMtMS4xLjEudGd6IzZlNWMyZDBhNTYy MWI1ZGFkYWVjZWY4MGI5MGVkZmI1Y2Q3NzcyZjAiCiAKK2VuenltZS1tYXRj aGVyc0BeMy4xLjAsIGVuenltZS1tYXRjaGVyc0BeMy4yLjA6CisgIHZlcnNp b24gIjMuMi4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu cGtnLmNvbS9lbnp5bWUtbWF0Y2hlcnMvLS9lbnp5bWUtbWF0Y2hlcnMtMy4y LjAudGd6IzQ3MTg3NzlhM2I5ZWI1ZThlYmFkNDY4MDRmOGQzZTY2MDQ1ZDAx ODEiCisgIGRlcGVuZGVuY2llczoKKyAgICBkZWVwLWVxdWFsLWlkZW50ICJe MS4xLjEiCisKIGVuenltZUB+Mi44LjI6CiAgIHZlcnNpb24gIjIuOC4yIgog ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9lbnp5 bWUvLS9lbnp5bWUtMi44LjIudGd6IzZjOGJjYjA1MDEyYWJjNGFhNGJjMzIx M2ZiMjM3ODBiOWI1YjE3MTQiCkBAIC0yMjk5LDYgKzIzMTEsMTIgQEAgaWdu b3JlQF4zLjIuMDoKICAgdmVyc2lvbiAiMy4zLjMiCiAgIHJlc29sdmVkICJo dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lnbm9yZS8tL2lnbm9yZS0z LjMuMy50Z3ojNDMyMzUyZTU3YWNjZDg3YWIzMTEwZTgyZDNmZWEwZTQ3ODEy MTU2ZCIKIAoraW1tdXRhYmlsaXR5LWhlbHBlckBeMi4yLjA6CisgIHZlcnNp b24gIjIuMi4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu cGtnLmNvbS9pbW11dGFiaWxpdHktaGVscGVyLy0vaW1tdXRhYmlsaXR5LWhl bHBlci0yLjIuMi50Z3ojZTdlOWRhNzI4YjNkZTJmYWQzNGEyMTZmNDE1N2Iz MjZkYmNjYzg5MiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGludmFyaWFudCAi XjIuMi4wIgorCiAiaW1wb3J0cy1sb2FkZXJAZ2l0K2h0dHBzOi8vZ2l0aHVi LmNvbS93ZWJwYWNrLWNvbnRyaWIvaW1wb3J0cy1sb2FkZXIuZ2l0IzQ0ZDZm NDg0NjNiMjU2YTE3YzFiYTZmZDliNWNjMTQ0OWI0ZTM3OWQiOgogICB2ZXJz aW9uICIwLjcuMSIKICAgcmVzb2x2ZWQgImdpdCtodHRwczovL2dpdGh1Yi5j b20vd2VicGFjay1jb250cmliL2ltcG9ydHMtbG9hZGVyLmdpdCM0NGQ2ZjQ4 NDYzYjI1NmExN2MxYmE2ZmQ5YjVjYzE0NDliNGUzNzlkIgpAQCAtMjU2OCw2 ICsyNTg2LDEyIEBAIGphc21pbmUtY29yZUB+Mi41LjI6CiAgIHZlcnNpb24g IjIuNS4yIgogICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn LmNvbS9qYXNtaW5lLWNvcmUvLS9qYXNtaW5lLWNvcmUtMi41LjIudGd6IzZm NjFiZDc5MDYxZTI3ZjQzZTZmOTM1NWU0NGIzYzZjYWI2ZmYyOTciCiAKK2ph c21pbmUtZW56eW1lQF4zLjEuMDoKKyAgdmVyc2lvbiAiMy4yLjAiCisgIHJl c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2phc21pbmUt ZW56eW1lLy0vamFzbWluZS1lbnp5bWUtMy4yLjAudGd6IzBlZWIzNzBkNGZh OTY1ZGIwM2UwNDM0N2NhOWM0ZWQ1YTYwZmFkYzIiCisgIGRlcGVuZGVuY2ll czoKKyAgICBlbnp5bWUtbWF0Y2hlcnMgIl4zLjIuMCIKKwogam9kaWQyNTUx OUBeMS4wLjA6CiAgIHZlcnNpb24gIjEuMC4yIgogICByZXNvbHZlZCAiaHR0 cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qb2RpZDI1NTE5Ly0vam9kaWQy NTUxOS0xLjAuMi50Z3ojMDZkNDkxMjI1NTA5MzQxOTQ3N2Q0MjU2MzM2MDZl MGU5MDc4Mjk2NyIKQEAgLTI4MjgsNiArMjg1MiwyMiBAQCBsb2FkZXItdXRp bHNAXjEuMC4yOgogICAgIGVtb2ppcy1saXN0ICJeMi4wLjAiCiAgICAganNv bjUgIl4wLjUuMCIKIAorbG9kYXNoLl9iYXNlaXNlcXVhbEBeMy4wLjA6Cisg IHZlcnNpb24gIjMuMC43IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry eS55YXJucGtnLmNvbS9sb2Rhc2guX2Jhc2Vpc2VxdWFsLy0vbG9kYXNoLl9i YXNlaXNlcXVhbC0zLjAuNy50Z3ojZDgwMjVmNzYzMzlkMjkzNDI3NjdkY2M4 ODdjZTVjYjk1YTViNTFmMSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGxvZGFz aC5pc2FycmF5ICJeMy4wLjAiCisgICAgbG9kYXNoLmlzdHlwZWRhcnJheSAi XjMuMC4wIgorICAgIGxvZGFzaC5rZXlzICJeMy4wLjAiCisKK2xvZGFzaC5f YmluZGNhbGxiYWNrQF4zLjAuMDoKKyAgdmVyc2lvbiAiMy4wLjEiCisgIHJl c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xvZGFzaC5f YmluZGNhbGxiYWNrLy0vbG9kYXNoLl9iaW5kY2FsbGJhY2stMy4wLjEudGd6 I2U1MzFjMjc2NDRjZjhiNTdhOTllMTdlZDk1YjM1Yzc0ODc4OTM5MmUiCisK K2xvZGFzaC5fZ2V0bmF0aXZlQF4zLjAuMDoKKyAgdmVyc2lvbiAiMy45LjEi CisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xv ZGFzaC5fZ2V0bmF0aXZlLy0vbG9kYXNoLl9nZXRuYXRpdmUtMy45LjEudGd6 IzU3MGJjN2RlZGU0NmQ2MWNkY2RlNjg3ZDY1ZDNlZWNiYWEzYWFmZjUiCisK IGxvZGFzaC5hc3NpZ25pbkBeNC4wLjk6CiAgIHZlcnNpb24gIjQuMi4wIgog ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9sb2Rh c2guYXNzaWduaW4vLS9sb2Rhc2guYXNzaWduaW4tNC4yLjAudGd6I2JhOGRm NWZiODQxZWIwYTNlODA0NDIzMmIwZTI2M2E4ZGM2YTI4YTIiCkBAIC0yODUy LDYgKzI4OTIsMzMgQEAgbG9kYXNoLmZvcmVhY2hAXjQuMy4wOgogICB2ZXJz aW9uICI0LjUuMCIKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy bnBrZy5jb20vbG9kYXNoLmZvcmVhY2gvLS9sb2Rhc2guZm9yZWFjaC00LjUu MC50Z3ojMWE2YTM1ZWFjZTQwMTI4MGM3ZjA2ZGRkZWMzNTE2NWFiMjdlM2U1 MyIKIAorbG9kYXNoLmlzYXJndW1lbnRzQF4zLjAuMDoKKyAgdmVyc2lvbiAi My4xLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu Y29tL2xvZGFzaC5pc2FyZ3VtZW50cy8tL2xvZGFzaC5pc2FyZ3VtZW50cy0z LjEuMC50Z3ojMmY1NzNkODVjNmEyNDI4OWZmMDA2NjNiNDkxYzFkMzM4ZmYz NDU4YSIKKworbG9kYXNoLmlzYXJyYXlAXjMuMC4wOgorICB2ZXJzaW9uICIz LjAuNCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j b20vbG9kYXNoLmlzYXJyYXkvLS9sb2Rhc2guaXNhcnJheS0zLjAuNC50Z3oj NzllNGViODhjMzZhODEyMmFmODZmODQ0YWE5YmNkODUxYjVmYmI1NSIKKwor bG9kYXNoLmlzZXF1YWxAXjMuMDoKKyAgdmVyc2lvbiAiMy4wLjQiCisgIHJl c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xvZGFzaC5p c2VxdWFsLy0vbG9kYXNoLmlzZXF1YWwtMy4wLjQudGd6IzFjMzVlYjNiNmVm MGNkMWZmNTE3NDNlM2VhM2NmN2ZkZmZkYWNiNjQiCisgIGRlcGVuZGVuY2ll czoKKyAgICBsb2Rhc2guX2Jhc2Vpc2VxdWFsICJeMy4wLjAiCisgICAgbG9k YXNoLl9iaW5kY2FsbGJhY2sgIl4zLjAuMCIKKworbG9kYXNoLmlzdHlwZWRh cnJheUBeMy4wLjA6CisgIHZlcnNpb24gIjMuMC42IgorICByZXNvbHZlZCAi aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9sb2Rhc2guaXN0eXBlZGFy cmF5Ly0vbG9kYXNoLmlzdHlwZWRhcnJheS0zLjAuNi50Z3ojYzlhNDc3NDk4 NjA3NTAxZDhlODQ5NGQyODNiODdjMzkyODFjZWY2MiIKKworbG9kYXNoLmtl eXNAXjMuMC4wOgorICB2ZXJzaW9uICIzLjEuMiIKKyAgcmVzb2x2ZWQgImh0 dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbG9kYXNoLmtleXMvLS9sb2Rh c2gua2V5cy0zLjEuMi50Z3ojNGRiYzA0NzJiMTU2YmU1MGEwYjI4Njg1NWQx YmQwYjBjNjU2MDk4YSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGxvZGFzaC5f Z2V0bmF0aXZlICJeMy4wLjAiCisgICAgbG9kYXNoLmlzYXJndW1lbnRzICJe My4wLjAiCisgICAgbG9kYXNoLmlzYXJyYXkgIl4zLjAuMCIKKwogbG9kYXNo Lm1hcEBeNC40LjA6CiAgIHZlcnNpb24gIjQuNi4wIgogICByZXNvbHZlZCAi aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9sb2Rhc2gubWFwLy0vbG9k YXNoLm1hcC00LjYuMC50Z3ojNzcxZWM3ODM5ZTM0NzNkOWM0Y2RlMjhiMTkz OTRjMzU2MmY0ZjZkMyIKQEAgLTMwMTMsNiArMzA4MCwxMCBAQCBtb2R1bGUt ZGVwc0BeNC4wLjg6CiAgICAgdGhyb3VnaDIgIl4yLjAuMCIKICAgICB4dGVu ZCAiXjQuMC4wIgogCittb21lbnRAXjIuMTguMToKKyAgdmVyc2lvbiAiMi4x OC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv bS9tb21lbnQvLS9tb21lbnQtMi4xOC4xLnRneiNjMzYxOTNkZDNjZTFjMmVl ZDJhZGI3YzgwMmRiYmM3N2E4MWIxYzBmIgorCiBtc0AwLjcuMToKICAgdmVy c2lvbiAiMC43LjEiCiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh cm5wa2cuY29tL21zLy0vbXMtMC43LjEudGd6IzljZDEzYzAzYWRiZmYyNWI2 NWVmZmRlN2NlODY0ZWU5NTIwMTcwOTgiCkBAIC0zNDk5LDEwICszNTcwLDEw IEBAIHJhbmRvbWF0aWNAXjEuMS4zOgogICAgIGtpbmQtb2YgIl4zLjAuMiIK IAogcmFuZG9tYnl0ZXNAXjIuMC4wLCByYW5kb21ieXRlc0BeMi4wLjE6Ci0g IHZlcnNpb24gIjIuMC40IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry eS55YXJucGtnLmNvbS9yYW5kb21ieXRlcy8tL3JhbmRvbWJ5dGVzLTIuMC40 LnRneiM5NTUxZGYyMDg0MjJjOGY4MGViNThlMjMyNmRkMGI4NDBmZjIyZWZk IgorICB2ZXJzaW9uICIyLjAuNSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn aXN0cnkueWFybnBrZy5jb20vcmFuZG9tYnl0ZXMvLS9yYW5kb21ieXRlcy0y LjAuNS50Z3ojZGMwMDlhMjQ2YjhkMDlhMTc3YjRiN2EwYWU3N2JjNTcwZjRi MWI3OSIKICAgZGVwZW5kZW5jaWVzOgotICAgIHNhZmUtYnVmZmVyICJeNS4w LjEiCisgICAgc2FmZS1idWZmZXIgIl41LjEuMCIKIAogcmFuZ2UtcGFyc2Vy QF4xLjAuMywgcmFuZ2UtcGFyc2VyQF4xLjIuMDoKICAgdmVyc2lvbiAiMS4y LjAiCkBAIC0zODE4LDcgKzM4ODksNyBAQCByeC1saXRlQF4zLjEuMjoKICAg dmVyc2lvbiAiMy4xLjIiCiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5 Lnlhcm5wa2cuY29tL3J4LWxpdGUvLS9yeC1saXRlLTMuMS4yLnRneiMxOWNl NTAyY2E1NzI2NjVmM2I2NDdiMTA5MzlmOTdmZDE2MTVmMTAyIgogCi1zYWZl LWJ1ZmZlckBeNS4wLjE6CitzYWZlLWJ1ZmZlckBeNS4wLjEsIHNhZmUtYnVm ZmVyQF41LjEuMDoKICAgdmVyc2lvbiAiNS4xLjAiCiAgIHJlc29sdmVkICJo dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3NhZmUtYnVmZmVyLy0vc2Fm ZS1idWZmZXItNS4xLjAudGd6I2ZlNGM4NDYwMzk3ZjllYWFhYTU4ZTczYmU0 NjI3MzQwOGE0NWUyMjMiCiAK --001a11449c0a4b83210551c767f8 Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers --001a11449c0a4b83210551c767f8--