Received: from malur.postgresql.org ([2a02:16a8:dc51::56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fSgU5-0005tj-S3 for pgadmin-hackers@arkaria.postgresql.org; Tue, 12 Jun 2018 10:25:06 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1fSgU2-0002cO-5Y for pgadmin-hackers@arkaria.postgresql.org; Tue, 12 Jun 2018 10:25:02 +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.89) (envelope-from ) id 1fSgU0-0002bs-RU for pgadmin-hackers@lists.postgresql.org; Tue, 12 Jun 2018 10:25:01 +0000 Received: from mail-ot0-x241.google.com ([2607:f8b0:4003:c0f::241]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1fSgTv-0004oG-7Z for pgadmin-hackers@postgresql.org; Tue, 12 Jun 2018 10:24:59 +0000 Received: by mail-ot0-x241.google.com with SMTP id w9-v6so21912611otj.7 for ; Tue, 12 Jun 2018 03:24:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=ihgTtn2h9NH8DxzZkHRjsqMhXvKia4jSlok6LgAiF38=; b=YeJc3Qj8FSqbYfmco3S3jPCdYSEAJplBItUuGXt+e7t/H/LYyaER0TNFQMxtsXHABF ZDX2wbl9dPDOTU5Rj4rIHwSKVhyQiuOb3/4nWoQGs3vc9sMMSZNDMbPqjaew7mXE1yi7 0/+MXnvQc512b5qOgTYSlhQ5ssVO3VfN3b8WZrIAsV3YMH80W5DT/6GOqFiMqK5MLs8x 6uZ/9pRAVGTKCKYg3QAQp+PUDbo0+nTgijhnLdktkidxAZsS7q8aZmpaRJrRnblwyH9b ytxgB6nnldamh1vJqyFOJ/ESVhDN5IS5jIybUFBCuZVcrW5dIKWDjfyzsV+2x9ukaEG/ 1oAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=ihgTtn2h9NH8DxzZkHRjsqMhXvKia4jSlok6LgAiF38=; b=ROyLVC8FM6U7lffLzzjmb7sN+NtnkBpl8o2zLh5JuinHydyWqo4v9M+xMoY9nuqsTc DRKyNYRPXdKMxZIxbYAKnfFGnej+b1MlUo4Ttc5slFj763e1ebytejgXNqxUlJx7T68K DLFAvgqsQMSzflnZFg7yHxA41Bj9IDT9WDS2GVxwrwgW4Y7JWcgeLYQ9ZgbQ+TVIn/OO AsVg4/54Qt2Lh/ruLKgggnGEfXudA5P7DbfwYq2Cns8ZimnsRHK4L+Y5pco0tYlWsSbo C0mE+b39Htpa93TA8jfWYN76mMTPXHPvGX72D2WrI90cCt0qvhYdwcOh2Sd58ZQJgl7Q O+7A== X-Gm-Message-State: APt69E2rkyyfWgYjM46Z3yBIbsW/oighHuGwnMD7T3it1sc7AP5vGw+o LqmBnZTth/8sKnIZ0UIjCVV45SmnwpBjBGDW25N2dg== X-Google-Smtp-Source: ADUXVKI0HGvI9WLIWgknCjffOKGOZr7aYXOCJ+Kl81l27IRTdMVGgbDzWRFEt0esPqClPIo6GFh1sUkj4P4+IdKr+I0= X-Received: by 2002:a9d:428c:: with SMTP id r12-v6mr1798590ote.296.1528799094337; Tue, 12 Jun 2018 03:24:54 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a4a:4081:0:0:0:0:0 with HTTP; Tue, 12 Jun 2018 03:24:53 -0700 (PDT) In-Reply-To: References: From: Khushboo Vashi Date: Tue, 12 Jun 2018 15:54:53 +0530 Message-ID: Subject: Re: [pgadmin4][Patch]: Test cases for the backup module To: Dave Page Cc: Victoria Henry , Joao De Almeida Pereira , pgadmin-hackers Content-Type: multipart/mixed; boundary="000000000000f3b132056e6f4637" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --000000000000f3b132056e6f4637 Content-Type: multipart/alternative; boundary="000000000000f3b12d056e6f4635" --000000000000f3b12d056e6f4635 Content-Type: text/plain; charset="UTF-8" Hi, Please find the attached patch excluding feature test cases. Python test cases are working fine, so we can commit this patch. I am working on fixing the feature tests which are failing on the different window sizes. Thanks, Khushboo On Fri, Jun 8, 2018 at 2:38 PM, Dave Page wrote: > Hi > > On Fri, Jun 8, 2018 at 6:33 AM, Khushboo Vashi < > khushboo.vashi@enterprisedb.com> wrote: > >> Hi Dave, >> >> As per our discussion I have changed the window size to 1280X800, before >> it was 1280X900. >> Please find the attached updated patch >> > > I'm not sure that actually made any difference on my system. The window > continued to look taller than it is wide, so I wonder if the code to set > the size is being ignored, or is at the wrong place? > > Anyway, I got 10 failures with this patch :-( > > ====================================================================== > > ERROR: runTest (pgadmin.feature_tests.pg_util > ities_backup_restore_test.PGUtilitiesBackupFeatureTest) > > Test for PG utilities - Backup and Restore > > ---------------------------------------------------------------------- > > Traceback (most recent call last): > > File "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/pg_utilities_backup_restore_test.py", > line 97, in runTest > > self.page.find_by_xpath("//div[contains(@class,'wcFloatingFocus')" > > File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_page.py", > line 171, in find_by_xpath > > lambda driver: driver.find_element_by_xpath(xpath) > > File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_page.py", > line 263, in wait_for_element > > return self._wait_for("element to exist", element_if_it_exists) > > File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_page.py", > line 337, in _wait_for > > "Timed out waiting for " + waiting_for_message > > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packa > ges/selenium/webdriver/support/wait.py", line 80, in until > > raise TimeoutException(message, screen, stacktrace) > > TimeoutException: Message: Timed out waiting for element to exist > > > > ====================================================================== > > ERROR: runTest (pgadmin.feature_tests.xss_che > cks_pgadmin_debugger_test.CheckDebuggerForXssFeatureTest) > > Tests to check if Debugger is vulnerable to XSS > > ---------------------------------------------------------------------- > > Traceback (most recent call last): > > File "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/xss_checks_pgadmin_debugger_test.py", > line 42, in runTest > > self._function_node_expandable() > > File "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/xss_checks_pgadmin_debugger_test.py", > line 57, in _function_node_expandable > > self.page.select_tree_item("a_test_function()") > > File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_page.py", > line 135, in select_tree_item > > "' and @class='aciTreeItem']").click() > > File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_page.py", > line 171, in find_by_xpath > > lambda driver: driver.find_element_by_xpath(xpath) > > File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_page.py", > line 263, in wait_for_element > > return self._wait_for("element to exist", element_if_it_exists) > > File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_page.py", > line 337, in _wait_for > > "Timed out waiting for " + waiting_for_message > > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packa > ges/selenium/webdriver/support/wait.py", line 80, in until > > raise TimeoutException(message, screen, stacktrace) > > TimeoutException: Message: Timed out waiting for element to exist > > > > ====================================================================== > > ERROR: runTest (pgadmin.tools.backup.tests.te > st_create_backup_job.BackupJobTest) > > When backup the object with the default options > > ---------------------------------------------------------------------- > > Traceback (most recent call last): > > File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/backup/tests/test_create_backup_job.py", > line 58, in runTest > > self.assertNotIn > > File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/backup/tests/test_backup_utils.py", > line 33, in run_backup_job > > random.randint(1, 9999999))) > > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/werkzeug/test.py", > line 830, in get > > return self.open(*args, **kw) > > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/testing.py", > line 127, in open > > follow_redirects=follow_redirects) > > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/werkzeug/test.py", > line 803, in open > > response = self.run_wsgi_app(environ, buffered=buffered) > > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/werkzeug/test.py", > line 716, in run_wsgi_app > > rv = run_wsgi_app(self.application, environ, buffered=buffered) > > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/werkzeug/test.py", > line 923, in run_wsgi_app > > app_rv = app(environ, start_response) > > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", > line 1997, in __call__ > > return self.wsgi_app(environ, start_response) > > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", > line 1985, in wsgi_app > > response = self.handle_exception(e) > > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", > line 1540, in handle_exception > > reraise(exc_type, exc_value, tb) > > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", > line 1982, in wsgi_app > > response = self.full_dispatch_request() > > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", > line 1614, in full_dispatch_request > > rv = self.handle_user_exception(e) > > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", > line 1517, in handle_user_exception > > reraise(exc_type, exc_value, tb) > > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", > line 1612, in full_dispatch_request > > rv = self.dispatch_request() > > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", > line 1598, in dispatch_request > > return self.view_functions[rule.endpoint](**req.view_args) > > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask_login.py", > line 792, in decorated_view > > return func(*args, **kwargs) > > File "/Users/dpage/git/pgadmin4/web/pgadmin/misc/bgprocess/__init__.py", > line 62, in index > > return make_response(response=BatchProcess.list()) > > File "/Users/dpage/git/pgadmin4/web/pgadmin/misc/bgprocess/processes.py", > line 584, in list > > details = desc.details(p.command, args) > > File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/backup/__init__.py", > line 159, in details > > name, host, port = self.get_server_details() > > File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/backup/__init__.py", > line 122, in get_server_details > > host = manager.local_bind_host if manager.use_ssh_tunnel else s.host > > AttributeError: 'NoneType' object has no attribute 'use_ssh_tunnel' > > > ====================================================================== > > ERROR: runTest (pgadmin.tools.maintenance.tes > ts.test_create_maintenance_job.MaintenanceJobTest) > > When maintenance the object with the default options > > ---------------------------------------------------------------------- > > Traceback (most recent call last): > > File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/maintenance/tes > ts/test_create_maintenance_job.py", line 71, in runTest > > random.randint(1, 9999999))) > > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/werkzeug/test.py", > line 830, in get > > return self.open(*args, **kw) > > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/testing.py", > line 127, in open > > follow_redirects=follow_redirects) > > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/werkzeug/test.py", > line 803, in open > > response = self.run_wsgi_app(environ, buffered=buffered) > > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/werkzeug/test.py", > line 716, in run_wsgi_app > > rv = run_wsgi_app(self.application, environ, buffered=buffered) > > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/werkzeug/test.py", > line 923, in run_wsgi_app > > app_rv = app(environ, start_response) > > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", > line 1997, in __call__ > > return self.wsgi_app(environ, start_response) > > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", > line 1985, in wsgi_app > > response = self.handle_exception(e) > > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", > line 1540, in handle_exception > > reraise(exc_type, exc_value, tb) > > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", > line 1982, in wsgi_app > > response = self.full_dispatch_request() > > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", > line 1614, in full_dispatch_request > > rv = self.handle_user_exception(e) > > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", > line 1517, in handle_user_exception > > reraise(exc_type, exc_value, tb) > > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", > line 1612, in full_dispatch_request > > rv = self.dispatch_request() > > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", > line 1598, in dispatch_request > > return self.view_functions[rule.endpoint](**req.view_args) > > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask_login.py", > line 792, in decorated_view > > return func(*args, **kwargs) > > File "/Users/dpage/git/pgadmin4/web/pgadmin/misc/bgprocess/__init__.py", > line 62, in index > > return make_response(response=BatchProcess.list()) > > File "/Users/dpage/git/pgadmin4/web/pgadmin/misc/bgprocess/processes.py", > line 584, in list > > details = desc.details(p.command, args) > > File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/backup/__init__.py", > line 159, in details > > name, host, port = self.get_server_details() > > File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/backup/__init__.py", > line 122, in get_server_details > > host = manager.local_bind_host if manager.use_ssh_tunnel else s.host > > AttributeError: 'NoneType' object has no attribute 'use_ssh_tunnel' > > > ====================================================================== > > ERROR: runTest (pgadmin.tools.restore.tests.t > est_create_restore_job.RestoreJobTest) > > When restore the object with the default options > > ---------------------------------------------------------------------- > > Traceback (most recent call last): > > File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/restore/tests/test_create_restore_job.py", > line 95, in runTest > > self.create_backup() > > File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/restore/tests/test_create_restore_job.py", > line 86, in create_backup > > self.assertNotIn > > File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/backup/tests/test_backup_utils.py", > line 33, in run_backup_job > > random.randint(1, 9999999))) > > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/werkzeug/test.py", > line 830, in get > > return self.open(*args, **kw) > > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/testing.py", > line 127, in open > > follow_redirects=follow_redirects) > > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/werkzeug/test.py", > line 803, in open > > response = self.run_wsgi_app(environ, buffered=buffered) > > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/werkzeug/test.py", > line 716, in run_wsgi_app > > rv = run_wsgi_app(self.application, environ, buffered=buffered) > > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/werkzeug/test.py", > line 923, in run_wsgi_app > > app_rv = app(environ, start_response) > > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", > line 1997, in __call__ > > return self.wsgi_app(environ, start_response) > > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", > line 1985, in wsgi_app > > response = self.handle_exception(e) > > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", > line 1540, in handle_exception > > reraise(exc_type, exc_value, tb) > > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", > line 1982, in wsgi_app > > response = self.full_dispatch_request() > > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", > line 1614, in full_dispatch_request > > rv = self.handle_user_exception(e) > > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", > line 1517, in handle_user_exception > > reraise(exc_type, exc_value, tb) > > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", > line 1612, in full_dispatch_request > > rv = self.dispatch_request() > > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", > line 1598, in dispatch_request > > return self.view_functions[rule.endpoint](**req.view_args) > > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask_login.py", > line 792, in decorated_view > > return func(*args, **kwargs) > > File "/Users/dpage/git/pgadmin4/web/pgadmin/misc/bgprocess/__init__.py", > line 62, in index > > return make_response(response=BatchProcess.list()) > > File "/Users/dpage/git/pgadmin4/web/pgadmin/misc/bgprocess/processes.py", > line 584, in list > > details = desc.details(p.command, args) > > File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/backup/__init__.py", > line 159, in details > > name, host, port = self.get_server_details() > > File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/backup/__init__.py", > line 122, in get_server_details > > host = manager.local_bind_host if manager.use_ssh_tunnel else s.host > > AttributeError: 'NoneType' object has no attribute 'use_ssh_tunnel' > > > ====================================================================== > > FAIL: runTest (pgadmin.browser.server_groups.servers.databases.schemas. > functions.tests.test_trigger_func_add.TriggerFuncAddTestCase) > > Fetch Trigger Function Node URL > > ---------------------------------------------------------------------- > > Traceback (most recent call last): > > File "/Users/dpage/git/pgadmin4/web/pgadmin/browser/server_groups > /servers/databases/schemas/functions/tests/test_trigger_func_add.py", > line 111, in runTest > > self.assertEquals(response.status_code, 200) > > AssertionError: 500 != 200 > > > ====================================================================== > > FAIL: runTest (pgadmin.browser.server_groups.servers.databases.schemas. > functions.tests.test_trigger_func_delete.TriggerFuncDeleteTestCase) > > Fetch Trigger Function Node URL > > ---------------------------------------------------------------------- > > Traceback (most recent call last): > > File "/Users/dpage/git/pgadmin4/web/pgadmin/browser/server_groups > /servers/databases/schemas/functions/tests/test_trigger_func_delete.py", > line 72, in runTest > > self.assertEquals(response.status_code, 200) > > AssertionError: 500 != 200 > > > ====================================================================== > > FAIL: runTest (pgadmin.browser.server_groups.servers.databases.schemas. > functions.tests.test_trigger_func_get.TriggerFuncGetTestCase) > > Fetch Trigger Function Node URL > > ---------------------------------------------------------------------- > > Traceback (most recent call last): > > File "/Users/dpage/git/pgadmin4/web/pgadmin/browser/server_groups > /servers/databases/schemas/functions/tests/test_trigger_func_get.py", > line 72, in runTest > > self.assertEquals(response.status_code, 200) > > AssertionError: 500 != 200 > > > ====================================================================== > > FAIL: runTest (pgadmin.browser.server_groups.servers.databases.schemas. > functions.tests.test_trigger_func_put.TriggerFuncPutTestCase) > > Fetch Trigger Function Node URL > > ---------------------------------------------------------------------- > > Traceback (most recent call last): > > File "/Users/dpage/git/pgadmin4/web/pgadmin/browser/server_groups > /servers/databases/schemas/functions/tests/test_trigger_func_put.py", > line 87, in runTest > > self.assertEquals(put_response.status_code, 200) > > AssertionError: 500 != 200 > > > ====================================================================== > > FAIL: runTest (pgadmin.feature_tests.pg_utilities_maintenance_test.PGUtili > tiesMaintenanceFeatureTest) > > Test for PG maintenance: database pg_maintenance > > ---------------------------------------------------------------------- > > Traceback (most recent call last): > > File "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/pg_utilities_maintenance_test.py", > line 63, in runTest > > self._verify_command() > > File "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/pg_utilities_maintenance_test.py", > line 90, in _verify_command > > self.assertEquals(command, "VACUUM " > > AssertionError: u'Backing up an object on the server \'Regression - PG 11 > Feature Tests (localhost:5436)\' from database > \'pg_utility_test_db\'...\nRunning command:\n/Library/PostgreSQL/11/bin/pg_dump > --file "/Users/dpage/test_backup" --host "localhost" --port "5436" > --username "postgres" --no-password --verbose --format=c --blobs > "pg_utility_test_db"' != 'VACUUM (VERBOSE)\nRunning Query:\nVACUUM VERBOSE;' > > > ====================================================================== > > FAIL: runTest (pgadmin.feature_tests.pg_utilities_maintenance_test.PGUtili > tiesMaintenanceFeatureTest) > > Test for PG maintenance: database > > ---------------------------------------------------------------------- > > Traceback (most recent call last): > > File "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/pg_utilities_maintenance_test.py", > line 63, in runTest > > self._verify_command() > > File "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/pg_utilities_maintenance_test.py", > line 97, in _verify_command > > " public." + self.table_name + ";") > > AssertionError: u'Backing up an object on the server \'Regression - PG 11 > Feature Tests (localhost:5436)\' from database > \'pg_utility_test_db\'...\nRunning command:\n/Library/PostgreSQL/11/bin/pg_dump > --file "/Users/dpage/test_backup" --host "localhost" --port "5436" > --username "postgres" --no-password --verbose --format=c --blobs > "pg_utility_test_db"' != 'VACUUM (VERBOSE)\nRunning Query:\nVACUUM VERBOSE > public.pg_maintenance_table;' > > > ---------------------------------------------------------------------- > > Ran 369 tests in 417.660s > > > FAILED (failures=6, errors=5, skipped=13) > > > ====================================================================== > > Test Result Summary > > ====================================================================== > > > Regression - PG 11: > > > 346 tests passed > > 10 tests failed: > > TriggerFuncGetTestCase (Fetch Trigger Function Node URL) > > MaintenanceJobTest (When maintenance the object with the default options) > > TriggerFuncDeleteTestCase (Fetch Trigger Function Node URL) > > TriggerFuncPutTestCase (Fetch Trigger Function Node URL) > > RestoreJobTest (When restore the object with the default options) > > CheckDebuggerForXssFeatureTest (Tests to check if Debugger is vulnerable > to XSS) > > TriggerFuncAddTestCase (Fetch Trigger Function Node URL) > > PGUtilitiesBackupFeatureTest (Test for PG utilities - Backup and Restore) > > PGUtilitiesMaintenanceFeatureTest (Test for PG maintenance: database, > > Test for PG maintenance: database pg_maintenance) > > BackupJobTest (When backup the object with the default options) > > 13 tests skipped: > > SynonymDeleteTestCase (Fetch synonym Node URL) > > SynonymGetTestCase (Fetch synonym Node URL) > > PackageDeleteTestCase (Fetch Package Node URL) > > ResourceGroupsGetTestCase (Get resource groups) > > TestSSLConnection (Test for SSL connection) > > ResourceGroupsAddTestCase (Add resource groups) > > PackagePutTestCase (Fetch Package Node URL) > > SynonymPutTestCase (Fetch synonym Node URL) > > ResourceGroupsPutTestCase (Put resource groups) > > ResourceGroupsDeleteTestCase (Delete resource groups) > > SynonymAddTestCase (Default Node URL) > > PackageAddTestCase (Fetch Package Node URL) > > PackageGetTestCase (Fetch Package Node URL) > > > ====================================================================== > > > -- > Dave Page > Blog: http://pgsnake.blogspot.com > Twitter: @pgsnake > > EnterpriseDB UK: http://www.enterprisedb.com > The Enterprise PostgreSQL Company > --000000000000f3b12d056e6f4635 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi,

Please find the attached patch excl= uding feature test cases.
Python test cases are working fine, so = we can commit this patch. I am working on fixing the feature tests which ar= e failing on the different window sizes.

Thanks,
Khushboo

On Fri, Jun 8, 2018 at 2:38 PM, Dave Page <= dpage@pgadmin.org> wrote:
Hi

On Fri, Jun 8, = 2018 at 6:33 AM, Khushboo Vashi <khushboo.vashi@enterprisedb= .com> wrote:
Hi Dave,

As per our discussion I have changed t= he window size to 1280X800, before it was 1280X900.
Please find the attached updated patch
=C2=A0
I'm not sure that actually made any difference o= n my system. The window continued to look taller than it is wide, so I wond= er if the code to set the size is being ignored, or is at the wrong place?<= /div>

Anyway, I got 10 failures with this patch :-(

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D

ERROR: runTest (pgadmin.feature_tests.pg_utilities_ba= ckup_restore_test.PGUtilitiesBackupFeatureTest)

Test for PG utilities - Backup and Restore

-----------------------------------------------------= -----------------

Traceback (most recent call last):

=C2=A0 File "/Users/dpage/git/pgad= min4/web/pgadmin/feature_tests/pg_utilities_backup_restore_test.p= y", line 97, in runTest

=C2=A0 =C2=A0 self.page.find_by_xpath(&= quot;//div[contains(@class,'wcFloatingFocus')"

=C2=A0 File "/Users/dpage/git/pgad= min4/web/regression/feature_utils/pgadmin_page.py", line 171= , in find_by_xpath

=C2=A0 =C2=A0 lambda driver: driver.fin= d_element_by_xpath(xpath)

=C2=A0 File "/Users/dpage/git/pgad= min4/web/regression/feature_utils/pgadmin_page.py", line 263= , in wait_for_element

=C2=A0 =C2=A0 return self._wait_for(&qu= ot;element to exist", element_if_it_exists)

=C2=A0 File "/Users/dpage/git/pgad= min4/web/regression/feature_utils/pgadmin_page.py", line 337= , in _wait_for

=C2=A0 =C2=A0 "Timed out waiting f= or " + waiting_for_message

=C2=A0 File "/Users/dpage/.virtual= envs/pgadmin4/lib/python2.7/site-packages/selenium/webdriver/supp= ort/wait.py", line 80, in until

=C2=A0 =C2=A0 raise TimeoutException(me= ssage, screen, stacktrace)

TimeoutException: Message: Timed out waiting for element t= o exist



=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D

ERROR: runTest (pgadmin.feature_tests.xss_checks_pgad= min_debugger_test.CheckDebuggerForXssFeatureTest)

Tests to check if Debugger is vulnerable to XSS

-----------------------------------------------------= -----------------

Traceback (most recent call last):

=C2=A0 File "/Users/dpage/git/pgad= min4/web/pgadmin/feature_tests/xss_checks_pgadmin_debugger_test.p= y", line 42, in runTest

=C2=A0 =C2=A0 self._function_node_expan= dable()

=C2=A0 File "/Users/dpage/git/pgad= min4/web/pgadmin/feature_tests/xss_checks_pgadmin_debugger_test.p= y", line 57, in _function_node_expandable

=C2=A0 =C2=A0 self.page.select_tree_ite= m("a_test_function()")

=C2=A0 File "/Users/dpage/git/pgad= min4/web/regression/feature_utils/pgadmin_page.py", line 135= , in select_tree_item

=C2=A0 =C2=A0 "' and @class=3D= 'aciTreeItem']").click()

=C2=A0 File "/Users/dpage/git/pgad= min4/web/regression/feature_utils/pgadmin_page.py", line 171= , in find_by_xpath

=C2=A0 =C2=A0 lambda driver: driver.fin= d_element_by_xpath(xpath)

=C2=A0 File "/Users/dpage/git/pgad= min4/web/regression/feature_utils/pgadmin_page.py", line 263= , in wait_for_element

=C2=A0 =C2=A0 return self._wait_for(&qu= ot;element to exist", element_if_it_exists)

=C2=A0 File "/Users/dpage/git/pgad= min4/web/regression/feature_utils/pgadmin_page.py", line 337= , in _wait_for

=C2=A0 =C2=A0 "Timed out waiting f= or " + waiting_for_message

=C2=A0 File "/Users/dpage/.virtual= envs/pgadmin4/lib/python2.7/site-packages/selenium/webdriver/supp= ort/wait.py", line 80, in until

=C2=A0 =C2=A0 raise TimeoutException(me= ssage, screen, stacktrace)

TimeoutException: Message: Timed out waiting for element t= o exist



=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D

ERROR: runTest (pgadmin.tools.backup.tests.test_creat= e_backup_job.BackupJobTest)

When backup the object with the default options

-----------------------------------------------------= -----------------

Traceback (most recent call last):

=C2=A0 File "/Users/dpage/git/pgad= min4/web/pgadmin/tools/backup/tests/test_create_backup_job.py&quo= t;, line 58, in runTest

=C2=A0 =C2=A0 self.assertNotIn

=C2=A0 File "/Users/dpage/git/pgad= min4/web/pgadmin/tools/backup/tests/test_backup_utils.py", l= ine 33, in run_backup_job

=C2=A0 =C2=A0 random.randint(1, 9999999= )))

=C2=A0 File "/Users/dpage/.virtual= envs/pgadmin4/lib/python2.7/site-packages/werkzeug/test.py",= line 830, in get

=C2=A0 =C2=A0 return self.open(*args, *= *kw)

=C2=A0 File "/Users/dpage/.virtual= envs/pgadmin4/lib/python2.7/site-packages/flask/testing.py",= line 127, in open

=C2=A0 =C2=A0 follow_redirects=3Dfollow= _redirects)

=C2=A0 File "/Users/dpage/.virtual= envs/pgadmin4/lib/python2.7/site-packages/werkzeug/test.py",= line 803, in open

=C2=A0 =C2=A0 response =3D self.run_wsg= i_app(environ, buffered=3Dbuffered)

=C2=A0 File "/Users/dpage/.virtual= envs/pgadmin4/lib/python2.7/site-packages/werkzeug/test.py",= line 716, in run_wsgi_app

=C2=A0 =C2=A0 rv =3D run_wsgi_app(self.= application, environ, buffered=3Dbuffered)

=C2=A0 File "/Users/dpage/.virtual= envs/pgadmin4/lib/python2.7/site-packages/werkzeug/test.py",= line 923, in run_wsgi_app

=C2=A0 =C2=A0 app_rv =3D app(environ, s= tart_response)

=C2=A0 File "/Users/dpage/.virtual= envs/pgadmin4/lib/python2.7/site-packages/flask/app.py", lin= e 1997, in __call__

=C2=A0 =C2=A0 return self.wsgi_app(envi= ron, start_response)

=C2=A0 File "/Users/dpage/.virtual= envs/pgadmin4/lib/python2.7/site-packages/flask/app.py", lin= e 1985, in wsgi_app

=C2=A0 =C2=A0 response =3D self.handle_= exception(e)

=C2=A0 File "/Users/dpage/.virtual= envs/pgadmin4/lib/python2.7/site-packages/flask/app.py", lin= e 1540, in handle_exception

=C2=A0 =C2=A0 reraise(exc_type, exc_val= ue, tb)

=C2=A0 File "/Users/dpage/.virtual= envs/pgadmin4/lib/python2.7/site-packages/flask/app.py", lin= e 1982, in wsgi_app

=C2=A0 =C2=A0 response =3D self.full_di= spatch_request()

=C2=A0 File "/Users/dpage/.virtual= envs/pgadmin4/lib/python2.7/site-packages/flask/app.py", lin= e 1614, in full_dispatch_request

=C2=A0 =C2=A0 rv =3D self.handle_user_e= xception(e)

=C2=A0 File "/Users/dpage/.virtual= envs/pgadmin4/lib/python2.7/site-packages/flask/app.py", lin= e 1517, in handle_user_exception

=C2=A0 =C2=A0 reraise(exc_type, exc_val= ue, tb)

=C2=A0 File "/Users/dpage/.virtual= envs/pgadmin4/lib/python2.7/site-packages/flask/app.py", lin= e 1612, in full_dispatch_request

=C2=A0 =C2=A0 rv =3D self.dispatch_requ= est()

=C2=A0 File "/Users/dpage/.virtual= envs/pgadmin4/lib/python2.7/site-packages/flask/app.py", lin= e 1598, in dispatch_request

=C2=A0 =C2=A0 return self.view_function= s[rule.endpoint](**req.view_args)

=C2=A0 File "/Users/dpage/.virtual= envs/pgadmin4/lib/python2.7/site-packages/flask_login.py", l= ine 792, in decorated_view

=C2=A0 =C2=A0 return func(*args, **kwar= gs)

=C2=A0 File "/Users/dpage/git/pgad= min4/web/pgadmin/misc/bgprocess/__init__.py", line 62, in in= dex

=C2=A0 =C2=A0 return make_response(resp= onse=3DBatchProcess.list())

=C2=A0 File "/Users/dpage/git/pgad= min4/web/pgadmin/misc/bgprocess/processes.py", line 584, in = list

=C2=A0 =C2=A0 details =3D desc.details(= p.command, args)

=C2=A0 File "/Users/dpage/git/pgad= min4/web/pgadmin/tools/backup/__init__.py", line 159, in det= ails

=C2=A0 =C2=A0 name, host, port =3D self= .get_server_details()

=C2=A0 File "/Users/dpage/git/pgad= min4/web/pgadmin/tools/backup/__init__.py", line 122, in get= _server_details

=C2=A0 =C2=A0 host =3D manager.local_bi= nd_host if manager.use_ssh_tunnel else s.host

AttributeError: 'NoneType' object has no attribute= 'use_ssh_tunnel'


=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D

ERROR: runTest (pgadmin.tools.maintenance.tests.test_= create_maintenance_job.MaintenanceJobTest)

When maintenance the object with the default options

-----------------------------------------------------= -----------------

Traceback (most recent call last):

=C2=A0 File "/Users/dpage/git/pgad= min4/web/pgadmin/tools/maintenance/tests/test_create_maintenance_= job.py", line 71, in runTest

=C2=A0 =C2=A0 random.randint(1, 9999999= )))

=C2=A0 File "/Users/dpage/.virtual= envs/pgadmin4/lib/python2.7/site-packages/werkzeug/test.py",= line 830, in get

=C2=A0 =C2=A0 return self.open(*args, *= *kw)

=C2=A0 File "/Users/dpage/.virtual= envs/pgadmin4/lib/python2.7/site-packages/flask/testing.py",= line 127, in open

=C2=A0 =C2=A0 follow_redirects=3Dfollow= _redirects)

=C2=A0 File "/Users/dpage/.virtual= envs/pgadmin4/lib/python2.7/site-packages/werkzeug/test.py",= line 803, in open

=C2=A0 =C2=A0 response =3D self.run_wsg= i_app(environ, buffered=3Dbuffered)

=C2=A0 File "/Users/dpage/.virtual= envs/pgadmin4/lib/python2.7/site-packages/werkzeug/test.py",= line 716, in run_wsgi_app

=C2=A0 =C2=A0 rv =3D run_wsgi_app(self.= application, environ, buffered=3Dbuffered)

=C2=A0 File "/Users/dpage/.virtual= envs/pgadmin4/lib/python2.7/site-packages/werkzeug/test.py",= line 923, in run_wsgi_app

=C2=A0 =C2=A0 app_rv =3D app(environ, s= tart_response)

=C2=A0 File "/Users/dpage/.virtual= envs/pgadmin4/lib/python2.7/site-packages/flask/app.py", lin= e 1997, in __call__

=C2=A0 =C2=A0 return self.wsgi_app(envi= ron, start_response)

=C2=A0 File "/Users/dpage/.virtual= envs/pgadmin4/lib/python2.7/site-packages/flask/app.py", lin= e 1985, in wsgi_app

=C2=A0 =C2=A0 response =3D self.handle_= exception(e)

=C2=A0 File "/Users/dpage/.virtual= envs/pgadmin4/lib/python2.7/site-packages/flask/app.py", lin= e 1540, in handle_exception

=C2=A0 =C2=A0 reraise(exc_type, exc_val= ue, tb)

=C2=A0 File "/Users/dpage/.virtual= envs/pgadmin4/lib/python2.7/site-packages/flask/app.py", lin= e 1982, in wsgi_app

=C2=A0 =C2=A0 response =3D self.full_di= spatch_request()

=C2=A0 File "/Users/dpage/.virtual= envs/pgadmin4/lib/python2.7/site-packages/flask/app.py", lin= e 1614, in full_dispatch_request

=C2=A0 =C2=A0 rv =3D self.handle_user_e= xception(e)

=C2=A0 File "/Users/dpage/.virtual= envs/pgadmin4/lib/python2.7/site-packages/flask/app.py", lin= e 1517, in handle_user_exception

=C2=A0 =C2=A0 reraise(exc_type, exc_val= ue, tb)

=C2=A0 File "/Users/dpage/.virtual= envs/pgadmin4/lib/python2.7/site-packages/flask/app.py", lin= e 1612, in full_dispatch_request

=C2=A0 =C2=A0 rv =3D self.dispatch_requ= est()

=C2=A0 File "/Users/dpage/.virtual= envs/pgadmin4/lib/python2.7/site-packages/flask/app.py", lin= e 1598, in dispatch_request

=C2=A0 =C2=A0 return self.view_function= s[rule.endpoint](**req.view_args)

=C2=A0 File "/Users/dpage/.virtual= envs/pgadmin4/lib/python2.7/site-packages/flask_login.py", l= ine 792, in decorated_view

=C2=A0 =C2=A0 return func(*args, **kwar= gs)

=C2=A0 File "/Users/dpage/git/pgad= min4/web/pgadmin/misc/bgprocess/__init__.py", line 62, in in= dex

=C2=A0 =C2=A0 return make_response(resp= onse=3DBatchProcess.list())

=C2=A0 File "/Users/dpage/git/pgad= min4/web/pgadmin/misc/bgprocess/processes.py", line 584, in = list

=C2=A0 =C2=A0 details =3D desc.details(= p.command, args)

=C2=A0 File "/Users/dpage/git/pgad= min4/web/pgadmin/tools/backup/__init__.py", line 159, in det= ails

=C2=A0 =C2=A0 name, host, port =3D self= .get_server_details()

=C2=A0 File "/Users/dpage/git/pgad= min4/web/pgadmin/tools/backup/__init__.py", line 122, in get= _server_details

=C2=A0 =C2=A0 host =3D manager.local_bi= nd_host if manager.use_ssh_tunnel else s.host

AttributeError: 'NoneType' object has no attribute= 'use_ssh_tunnel'


=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D

ERROR: runTest (pgadmin.tools.restore.tests.test_crea= te_restore_job.RestoreJobTest)

When restore the object with the default options

-----------------------------------------------------= -----------------

Traceback (most recent call last):

=C2=A0 File "/Users/dpage/git/pgad= min4/web/pgadmin/tools/restore/tests/test_create_restore_job.py&q= uot;, line 95, in runTest

=C2=A0 =C2=A0 self.create_backup()

=C2=A0 File "/Users/dpage/git/pgad= min4/web/pgadmin/tools/restore/tests/test_create_restore_job.py&q= uot;, line 86, in create_backup

=C2=A0 =C2=A0 self.assertNotIn

=C2=A0 File "/Users/dpage/git/pgad= min4/web/pgadmin/tools/backup/tests/test_backup_utils.py", l= ine 33, in run_backup_job

=C2=A0 =C2=A0 random.randint(1, 9999999= )))

=C2=A0 File "/Users/dpage/.virtual= envs/pgadmin4/lib/python2.7/site-packages/werkzeug/test.py",= line 830, in get

=C2=A0 =C2=A0 return self.open(*args, *= *kw)

=C2=A0 File "/Users/dpage/.virtual= envs/pgadmin4/lib/python2.7/site-packages/flask/testing.py",= line 127, in open

=C2=A0 =C2=A0 follow_redirects=3Dfollow= _redirects)

=C2=A0 File "/Users/dpage/.virtual= envs/pgadmin4/lib/python2.7/site-packages/werkzeug/test.py",= line 803, in open

=C2=A0 =C2=A0 response =3D self.run_wsg= i_app(environ, buffered=3Dbuffered)

=C2=A0 File "/Users/dpage/.virtual= envs/pgadmin4/lib/python2.7/site-packages/werkzeug/test.py",= line 716, in run_wsgi_app

=C2=A0 =C2=A0 rv =3D run_wsgi_app(self.= application, environ, buffered=3Dbuffered)

=C2=A0 File "/Users/dpage/.virtual= envs/pgadmin4/lib/python2.7/site-packages/werkzeug/test.py",= line 923, in run_wsgi_app

=C2=A0 =C2=A0 app_rv =3D app(environ, s= tart_response)

=C2=A0 File "/Users/dpage/.virtual= envs/pgadmin4/lib/python2.7/site-packages/flask/app.py", lin= e 1997, in __call__

=C2=A0 =C2=A0 return self.wsgi_app(envi= ron, start_response)

=C2=A0 File "/Users/dpage/.virtual= envs/pgadmin4/lib/python2.7/site-packages/flask/app.py", lin= e 1985, in wsgi_app

=C2=A0 =C2=A0 response =3D self.handle_= exception(e)

=C2=A0 File "/Users/dpage/.virtual= envs/pgadmin4/lib/python2.7/site-packages/flask/app.py", lin= e 1540, in handle_exception

=C2=A0 =C2=A0 reraise(exc_type, exc_val= ue, tb)

=C2=A0 File "/Users/dpage/.virtual= envs/pgadmin4/lib/python2.7/site-packages/flask/app.py", lin= e 1982, in wsgi_app

=C2=A0 =C2=A0 response =3D self.full_di= spatch_request()

=C2=A0 File "/Users/dpage/.virtual= envs/pgadmin4/lib/python2.7/site-packages/flask/app.py", lin= e 1614, in full_dispatch_request

=C2=A0 =C2=A0 rv =3D self.handle_user_e= xception(e)

=C2=A0 File "/Users/dpage/.virtual= envs/pgadmin4/lib/python2.7/site-packages/flask/app.py", lin= e 1517, in handle_user_exception

=C2=A0 =C2=A0 reraise(exc_type, exc_val= ue, tb)

=C2=A0 File "/Users/dpage/.virtual= envs/pgadmin4/lib/python2.7/site-packages/flask/app.py", lin= e 1612, in full_dispatch_request

=C2=A0 =C2=A0 rv =3D self.dispatch_requ= est()

=C2=A0 File "/Users/dpage/.virtual= envs/pgadmin4/lib/python2.7/site-packages/flask/app.py", lin= e 1598, in dispatch_request

=C2=A0 =C2=A0 return self.view_function= s[rule.endpoint](**req.view_args)

=C2=A0 File "/Users/dpage/.virtual= envs/pgadmin4/lib/python2.7/site-packages/flask_login.py", l= ine 792, in decorated_view

=C2=A0 =C2=A0 return func(*args, **kwar= gs)

=C2=A0 File "/Users/dpage/git/pgad= min4/web/pgadmin/misc/bgprocess/__init__.py", line 62, in in= dex

=C2=A0 =C2=A0 return make_response(resp= onse=3DBatchProcess.list())

=C2=A0 File "/Users/dpage/git/pgad= min4/web/pgadmin/misc/bgprocess/processes.py", line 584, in = list

=C2=A0 =C2=A0 details =3D desc.details(= p.command, args)

=C2=A0 File "/Users/dpage/git/pgad= min4/web/pgadmin/tools/backup/__init__.py", line 159, in det= ails

=C2=A0 =C2=A0 name, host, port =3D self= .get_server_details()

=C2=A0 File "/Users/dpage/git/pgad= min4/web/pgadmin/tools/backup/__init__.py", line 122, in get= _server_details

=C2=A0 =C2=A0 host =3D manager.local_bi= nd_host if manager.use_ssh_tunnel else s.host

AttributeError: 'NoneType' object has no attribute= 'use_ssh_tunnel'


=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D

FAIL: runTest (pgadmin.browser.server_groups.servers.= databases.schemas.functions.tests.test_trigger_func_add.TriggerFu= ncAddTestCase)

Fetch Trigger Function Node URL

-----------------------------------------------------= -----------------

Traceback (most recent call last):

=C2=A0 File "/Users/dpage/git/pgad= min4/web/pgadmin/browser/server_groups/servers/databases/schemas/= functions/tests/test_trigger_func_add.py", line 111, in runT= est

=C2=A0 =C2=A0 self.assertEquals(respons= e.status_code, 200)

AssertionError: 500 !=3D 200


=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D

FAIL: runTest (pgadmin.browser.server_groups.servers.= databases.schemas.functions.tests.test_trigger_func_delete.Trigge= rFuncDeleteTestCase)

Fetch Trigger Function Node URL

-----------------------------------------------------= -----------------

Traceback (most recent call last):

=C2=A0 File "/Users/dpage/git/pgad= min4/web/pgadmin/browser/server_groups/servers/databases/schemas/= functions/tests/test_trigger_func_delete.py", line 72, in ru= nTest

=C2=A0 =C2=A0 self.assertEquals(respons= e.status_code, 200)

AssertionError: 500 !=3D 200


=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D

FAIL: runTest (pgadmin.browser.server_groups.servers.= databases.schemas.functions.tests.test_trigger_func_get.TriggerFu= ncGetTestCase)

Fetch Trigger Function Node URL

-----------------------------------------------------= -----------------

Traceback (most recent call last):

=C2=A0 File "/Users/dpage/git/pgad= min4/web/pgadmin/browser/server_groups/servers/databases/schemas/= functions/tests/test_trigger_func_get.py", line 72, in runTe= st

=C2=A0 =C2=A0 self.assertEquals(respons= e.status_code, 200)

AssertionError: 500 !=3D 200


=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D

FAIL: runTest (pgadmin.browser.server_groups.servers.= databases.schemas.functions.tests.test_trigger_func_put.TriggerFu= ncPutTestCase)

Fetch Trigger Function Node URL

-----------------------------------------------------= -----------------

Traceback (most recent call last):

=C2=A0 File "/Users/dpage/git/pgad= min4/web/pgadmin/browser/server_groups/servers/databases/schemas/= functions/tests/test_trigger_func_put.py", line 87, in runTe= st

=C2=A0 =C2=A0 self.assertEquals(put_res= ponse.status_code, 200)

AssertionError: 500 !=3D 200


=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D

FAIL: runTest (pgadmin.feature_tests.pg_utilities_mai= ntenance_test.PGUtilitiesMaintenanceFeatureTest)

Test for PG maintenance: database pg_maintenance

-----------------------------------------------------= -----------------

Traceback (most recent call last):

=C2=A0 File "/Users/dpage/git/pgad= min4/web/pgadmin/feature_tests/pg_utilities_maintenance_test.py&q= uot;, line 63, in runTest

=C2=A0 =C2=A0 self._verify_command()

=C2=A0 File "/Users/dpage/git/pgad= min4/web/pgadmin/feature_tests/pg_utilities_maintenance_test.py&q= uot;, line 90, in _verify_command

=C2=A0 =C2=A0 self.assertEquals(command= , "VACUUM "

AssertionError: u'Backing up an object on the server \= 'Regression - PG 11 Feature Tests (localhost:5436)\' from database = \'pg_utility_test_db\'...\nRunning command:\n/Library/PostgreS= QL/11/bin/pg_dump --file "/Users/dpage/test_backup" --host &= quot;localhost" --port "5436" --username "postgres"= ; --no-password --verbose --format=3Dc --blobs "pg_utility_test_db&quo= t;' !=3D 'VACUUM (VERBOSE)\nRunning Query:\nVACUUM VERBOSE;'


=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D

FAIL: runTest (pgadmin.feature_tests.pg_utilities_mai= ntenance_test.PGUtilitiesMaintenanceFeatureTest)

Test for PG maintenance: database

-----------------------------------------------------= -----------------

Traceback (most recent call last):

=C2=A0 File "/Users/dpage/git/pgad= min4/web/pgadmin/feature_tests/pg_utilities_maintenance_test.py&q= uot;, line 63, in runTest

=C2=A0 =C2=A0 self._verify_command()

=C2=A0 File "/Users/dpage/git/pgad= min4/web/pgadmin/feature_tests/pg_utilities_maintenance_test.py&q= uot;, line 97, in _verify_command

=C2=A0 =C2=A0 " public." + se= lf.table_name + ";")

AssertionError: u'Backing up an object on the server \= 'Regression - PG 11 Feature Tests (localhost:5436)\' from database = \'pg_utility_test_db\'...\nRunning command:\n/Library/PostgreS= QL/11/bin/pg_dump --file "/Users/dpage/test_backup" --host &= quot;localhost" --port "5436" --username "postgres"= ; --no-password --verbose --format=3Dc --blobs "pg_utility_test_db&quo= t;' !=3D 'VACUUM (VERBOSE)\nRunning Query:\nVACUUM VERBOSE public.p= g_maintenance_table;'


-----------------------------------------------------= -----------------

Ran 369 tests in 417.660s


FAILED (failures=3D6, errors=3D5, skipped=3D13)


=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D

Test Result Summary

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D


Regression - PG 11:


346 tests pass= ed

10 tests faile= d:

TriggerFuncGetTestCase (Fetch Trigger Functio= n Node URL)

MaintenanceJobTest (When maintenance the obje= ct with the default options)

TriggerFuncDeleteTestCase (Fetch Trigger Func= tion Node URL)

TriggerFuncPutTestCase (Fetch Trigger Functio= n Node URL)

RestoreJobTest (When restore the object with = the default options)

CheckDebuggerForXssFeatureTest (Tests to chec= k if Debugger is vulnerable to XSS)

TriggerFuncAddTestCase (Fetch Trigger Functio= n Node URL)

PGUtilitiesBackupFeatureTest (Test for PG uti= lities - Backup and Restore)

PGUtilitiesMaintenanceFeatureTest (Test = for PG maintenance: database,

<= span class=3D"m_-5651241742605812125m_2367499627219900368gmail-Apple-tab-sp= an" style=3D"white-space:pre-wrap"> Test for PG maintenance: database pg_maintenance)

BackupJobTest (When backup the object with th= e default options)

13 tests skipp= ed:

SynonymDeleteTestCase (Fetch synonym Node URL= )

SynonymGetTestCase (Fetch synonym Node URL)

PackageDeleteTestCase (Fetch Package Node URL= )

ResourceGroupsGetTestCase (Get resource group= s)

TestSSLConnection (Test for SSL connection)

ResourceGroupsAddTestCase (Add resource group= s)

PackagePutTestCase (Fetch Package Node URL)

SynonymPutTestCase (Fetch synonym Node URL)

ResourceGroupsPutTestCase (Put resource group= s)

ResourceGroupsDeleteTestCase (Delete resource= groups)

SynonymAddTestCase (Default Node URL)<= /p>

PackageAddTestCase (Fetch Package Node URL)

PackageGetTestCase (Fetch Package Node URL)


=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D


=C2=A0
--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake
EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
<= /div>

--000000000000f3b12d056e6f4635-- --000000000000f3b132056e6f4637 Content-Type: application/octet-stream; name="RM_3206_exclude_feature_tests.patch" Content-Disposition: attachment; filename="RM_3206_exclude_feature_tests.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_jibjg9pb0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC9fX2luaXRfXy5weSBiL3dlYi9w Z2FkbWluL3Rvb2xzL2JhY2t1cC9fX2luaXRfXy5weQppbmRleCAxMjVkYjgwLi4wNTEzMzY1IDEw MDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvX19pbml0X18ucHkKKysrIGIvd2Vi L3BnYWRtaW4vdG9vbHMvYmFja3VwL19faW5pdF9fLnB5CkBAIC0xMDksOCArMTA5LDcgQEAgY2xh c3MgQmFja3VwTWVzc2FnZShJUHJvY2Vzc0Rlc2MpOgogICAgICAgICAgICAgZWxzZToKICAgICAg ICAgICAgICAgICBzZWxmLmNtZCArPSBjbWRBcmcoYXJnKQogCi0gICAgQHByb3BlcnR5Ci0gICAg ZGVmIG1lc3NhZ2Uoc2VsZik6CisgICAgZGVmIGdldF9zZXJ2ZXJfZGV0YWlscyhzZWxmKToKICAg ICAgICAgIyBGZXRjaCB0aGUgc2VydmVyIGRldGFpbHMgbGlrZSBob3N0bmFtZSwgcG9ydCwgcm9s ZXMgZXRjCiAgICAgICAgIHMgPSBTZXJ2ZXIucXVlcnkuZmlsdGVyX2J5KAogICAgICAgICAgICAg aWQ9c2VsZi5zaWQsIHVzZXJfaWQ9Y3VycmVudF91c2VyLmlkCkBAIC0xMjMsMTMgKzEyMiwxOSBA QCBjbGFzcyBCYWNrdXBNZXNzYWdlKElQcm9jZXNzRGVzYyk6CiAgICAgICAgIGhvc3QgPSBtYW5h Z2VyLmxvY2FsX2JpbmRfaG9zdCBpZiBtYW5hZ2VyLnVzZV9zc2hfdHVubmVsIGVsc2Ugcy5ob3N0 CiAgICAgICAgIHBvcnQgPSBtYW5hZ2VyLmxvY2FsX2JpbmRfcG9ydCBpZiBtYW5hZ2VyLnVzZV9z c2hfdHVubmVsIGVsc2Ugcy5wb3J0CiAKKyAgICAgICAgcmV0dXJuIHMubmFtZSwgaG9zdCwgcG9y dAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG1lc3NhZ2Uoc2VsZik6CisgICAgICAgIG5hbWUs IGhvc3QsIHBvcnQgPSBzZWxmLmdldF9zZXJ2ZXJfZGV0YWlscygpCisKICAgICAgICAgaWYgc2Vs Zi5iYWNrdXBfdHlwZSA9PSBCQUNLVVAuT0JKRUNUOgogICAgICAgICAgICAgcmV0dXJuIF8oCiAg ICAgICAgICAgICAgICAgIkJhY2tpbmcgdXAgYW4gb2JqZWN0IG9uIHRoZSBzZXJ2ZXIgJ3swfScg IgogICAgICAgICAgICAgICAgICJmcm9tIGRhdGFiYXNlICd7MX0nLi4uIgogICAgICAgICAgICAg KS5mb3JtYXQoCiAgICAgICAgICAgICAgICAgInswfSAoezF9OnsyfSkiLmZvcm1hdCgKLSAgICAg ICAgICAgICAgICAgICAgcy5uYW1lLCBob3N0LCBwb3J0CisgICAgICAgICAgICAgICAgICAgIG5h bWUsIGhvc3QsIHBvcnQKICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIHNlbGYu ZGF0YWJhc2UKICAgICAgICAgICAgICkKQEAgLTEzNywxMyArMTQyLDEzIEBAIGNsYXNzIEJhY2t1 cE1lc3NhZ2UoSVByb2Nlc3NEZXNjKToKICAgICAgICAgICAgIHJldHVybiBfKCJCYWNraW5nIHVw IHRoZSBnbG9iYWwgb2JqZWN0cyBvbiAiCiAgICAgICAgICAgICAgICAgICAgICAidGhlIHNlcnZl ciAnezB9Jy4uLiIpLmZvcm1hdCgKICAgICAgICAgICAgICAgICAiezB9ICh7MX06ezJ9KSIuZm9y bWF0KAotICAgICAgICAgICAgICAgICAgICBzLm5hbWUsIGhvc3QsIHBvcnQKKyAgICAgICAgICAg ICAgICAgICAgbmFtZSwgaG9zdCwgcG9ydAogICAgICAgICAgICAgICAgICkKICAgICAgICAgICAg ICkKICAgICAgICAgZWxpZiBzZWxmLmJhY2t1cF90eXBlID09IEJBQ0tVUC5TRVJWRVI6CiAgICAg ICAgICAgICByZXR1cm4gXygiQmFja2luZyB1cCB0aGUgc2VydmVyICd7MH0nLi4uIikuZm9ybWF0 KAogICAgICAgICAgICAgICAgICJ7MH0gKHsxfTp7Mn0pIi5mb3JtYXQoCi0gICAgICAgICAgICAg ICAgICAgIHMubmFtZSwgaG9zdCwgcG9ydAorICAgICAgICAgICAgICAgICAgICBuYW1lLCBob3N0 LCBwb3J0CiAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgKQogICAgICAgICBlbHNlOgpA QCAtMTUxLDE3ICsxNTYsNyBAQCBjbGFzcyBCYWNrdXBNZXNzYWdlKElQcm9jZXNzRGVzYyk6CiAg ICAgICAgICAgICByZXR1cm4gIlVua25vd24gQmFja3VwIgogCiAgICAgZGVmIGRldGFpbHMoc2Vs ZiwgY21kLCBhcmdzKToKLSAgICAgICAgIyBGZXRjaCB0aGUgc2VydmVyIGRldGFpbHMgbGlrZSBo b3N0bmFtZSwgcG9ydCwgcm9sZXMgZXRjCi0gICAgICAgIHMgPSBTZXJ2ZXIucXVlcnkuZmlsdGVy X2J5KAotICAgICAgICAgICAgaWQ9c2VsZi5zaWQsIHVzZXJfaWQ9Y3VycmVudF91c2VyLmlkCi0g ICAgICAgICkuZmlyc3QoKQotCi0gICAgICAgIGZyb20gcGdhZG1pbi51dGlscy5kcml2ZXIgaW1w b3J0IGdldF9kcml2ZXIKLSAgICAgICAgZHJpdmVyID0gZ2V0X2RyaXZlcihQR19ERUZBVUxUX0RS SVZFUikKLSAgICAgICAgbWFuYWdlciA9IGRyaXZlci5jb25uZWN0aW9uX21hbmFnZXIoc2VsZi5z aWQpCi0KLSAgICAgICAgaG9zdCA9IG1hbmFnZXIubG9jYWxfYmluZF9ob3N0IGlmIG1hbmFnZXIu dXNlX3NzaF90dW5uZWwgZWxzZSBzLmhvc3QKLSAgICAgICAgcG9ydCA9IG1hbmFnZXIubG9jYWxf YmluZF9wb3J0IGlmIG1hbmFnZXIudXNlX3NzaF90dW5uZWwgZWxzZSBzLnBvcnQKKyAgICAgICAg bmFtZSwgaG9zdCwgcG9ydCA9IHNlbGYuZ2V0X3NlcnZlcl9kZXRhaWxzKCkKIAogICAgICAgICBy ZXMgPSAnPGRpdiBjbGFzcz0iaDUiPicKIApAQCAtMTcxLDcgKzE2Niw3IEBAIGNsYXNzIEJhY2t1 cE1lc3NhZ2UoSVByb2Nlc3NEZXNjKToKICAgICAgICAgICAgICAgICAiZnJvbSBkYXRhYmFzZSAn ezF9Jy4uLiIKICAgICAgICAgICAgICkuZm9ybWF0KAogICAgICAgICAgICAgICAgICJ7MH0gKHsx fTp7Mn0pIi5mb3JtYXQoCi0gICAgICAgICAgICAgICAgICAgIGh0bWwuc2FmZV9zdHIocy5uYW1l KSwKKyAgICAgICAgICAgICAgICAgICAgaHRtbC5zYWZlX3N0cihuYW1lKSwKICAgICAgICAgICAg ICAgICAgICAgaHRtbC5zYWZlX3N0cihob3N0KSwKICAgICAgICAgICAgICAgICAgICAgaHRtbC5z YWZlX3N0cihwb3J0KSwKICAgICAgICAgICAgICAgICApLApAQCAtMTgxLDcgKzE3Niw3IEBAIGNs YXNzIEJhY2t1cE1lc3NhZ2UoSVByb2Nlc3NEZXNjKToKICAgICAgICAgICAgIHJlcyArPSBfKCJC YWNraW5nIHVwIHRoZSBnbG9iYWwgb2JqZWN0cyBvbiAiCiAgICAgICAgICAgICAgICAgICAgICAi dGhlIHNlcnZlciAnezB9Jy4uLiIpLmZvcm1hdCgKICAgICAgICAgICAgICAgICAiezB9ICh7MX06 ezJ9KSIuZm9ybWF0KAotICAgICAgICAgICAgICAgICAgICBodG1sLnNhZmVfc3RyKHMubmFtZSks CisgICAgICAgICAgICAgICAgICAgIGh0bWwuc2FmZV9zdHIobmFtZSksCiAgICAgICAgICAgICAg ICAgICAgIGh0bWwuc2FmZV9zdHIoaG9zdCksCiAgICAgICAgICAgICAgICAgICAgIGh0bWwuc2Fm ZV9zdHIocG9ydCkKICAgICAgICAgICAgICAgICApCkBAIC0xODksNyArMTg0LDcgQEAgY2xhc3Mg QmFja3VwTWVzc2FnZShJUHJvY2Vzc0Rlc2MpOgogICAgICAgICBlbGlmIHNlbGYuYmFja3VwX3R5 cGUgPT0gQkFDS1VQLlNFUlZFUjoKICAgICAgICAgICAgIHJlcyArPSBfKCJCYWNraW5nIHVwIHRo ZSBzZXJ2ZXIgJ3swfScuLi4iKS5mb3JtYXQoCiAgICAgICAgICAgICAgICAgInswfSAoezF9Onsy fSkiLmZvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAgaHRtbC5zYWZlX3N0cihzLm5hbWUpLAor ICAgICAgICAgICAgICAgICAgICBodG1sLnNhZmVfc3RyKG5hbWUpLAogICAgICAgICAgICAgICAg ICAgICBodG1sLnNhZmVfc3RyKGhvc3QpLAogICAgICAgICAgICAgICAgICAgICBodG1sLnNhZmVf c3RyKHBvcnQpCiAgICAgICAgICAgICAgICAgKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9v bHMvYmFja3VwL3Rlc3RzL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3Rl c3RzL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRl MjkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC90ZXN0cy90ZXN0X2JhY2t1 cF9jcmVhdGVfam9iX3VuaXRfdGVzdC5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC90ZXN0 cy90ZXN0X2JhY2t1cF9jcmVhdGVfam9iX3VuaXRfdGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi5hMzc2YTNiCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4v dG9vbHMvYmFja3VwL3Rlc3RzL3Rlc3RfYmFja3VwX2NyZWF0ZV9qb2JfdW5pdF90ZXN0LnB5CkBA IC0wLDAgKzEsNDYzIEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0 Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWlu IERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUg UG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisKK2ltcG9ydCBzeXMK K2ltcG9ydCBzaW1wbGVqc29uIGFzIGpzb24KKworZnJvbSBwZ2FkbWluLm1pc2MuYmdwcm9jZXNz LnByb2Nlc3NlcyBpbXBvcnQgQmF0Y2hQcm9jZXNzCitmcm9tIHBnYWRtaW4udG9vbHMuYmFja3Vw IGltcG9ydCBCYWNrdXBNZXNzYWdlCitmcm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJh c2VUZXN0R2VuZXJhdG9yCitmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHBhcmVudF9ub2RlX2RpY3QK K2Zyb20gcmVncmVzc2lvbi5weXRob25fdGVzdF91dGlscyBpbXBvcnQgdGVzdF91dGlscyBhcyB1 dGlscworZnJvbSBwZ2FkbWluLnV0aWxzIGltcG9ydCBzZXJ2ZXJfdXRpbHMgYXMgc2VydmVyX3V0 aWxzCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2Vz LnRlc3RzIGltcG9ydCB1dGlscyBhcyBcCisgICAgZGF0YWJhc2VfdXRpbHMKKworCitpZiBzeXMu dmVyc2lvbl9pbmZvIDwgKDMsIDMpOgorICAgIGZyb20gbW9jayBpbXBvcnQgcGF0Y2gsIE1hZ2lj TW9jaworZWxzZToKKyAgICBmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IHBhdGNoLCBNYWdpY01v Y2sKKworCitjbGFzcyBCYWNrdXBDcmVhdGVKb2JUZXN0KEJhc2VUZXN0R2VuZXJhdG9yKToKKyAg ICAiIiJUZXN0IHRoZSBCYWNrdXBDcmVhdGVKb2IgY2xhc3MiIiIKKyAgICBzY2VuYXJpb3MgPSBb CisgICAgICAgICgnV2hlbiBiYWNrdXAgb2JqZWN0IHdpdGggZGVmYXVsdCBvcHRpb25zJywKKyAg ICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAg ICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X2JhY2t1cF9zZXJ2ZXIn LAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xv Y2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAg ICAgICAgICAgIGJmaWxlPSd0ZXN0X2JhY2t1cCcsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1l PSdwb3N0Z3JlcycKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAor ICAgICAgICAgICAgICAgICBmaWxlPSd0ZXN0X2JhY2t1cF9maWxlJywKKyAgICAgICAgICAgICAg ICAgZm9ybWF0PSdjdXN0b20nLAorICAgICAgICAgICAgICAgICB2ZXJib3NlPVRydWUsCisgICAg ICAgICAgICAgICAgIGJsb2JzPVRydWUsCisgICAgICAgICAgICAgICAgIHNjaGVtYXM9W10sCisg ICAgICAgICAgICAgICAgIHRhYmxlcz1bXSwKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bv c3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgdXJsPScvYmFja3VwL2pvYi97 MH0vb2JqZWN0JywKKyAgICAgICAgICAgICBleHBlY3RlZF9jbWRfb3B0cz1bJy0tdmVyYm9zZScs ICctLWZvcm1hdD1jJywgJy0tYmxvYnMnXSwKKyAgICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21k X29wdHM9W10sCisgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXQorICAg ICAgICAgKSksCisgICAgICAgICgnV2hlbiBiYWNrdXAgdGhlIG9iamVjdCB3aXRoIG9wdGlvbiBz ZWN0aW9ucyB0byBhbGwgZGF0YScsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNz X3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAg bmFtZT0ndGVzdF9iYWNrdXBfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAor ICAgICAgICAgICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRh YmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9iYWNrdXAnLAor ICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnCisgICAgICAgICAgICAgKSwKKyAg ICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgZmlsZT0ndGVzdF9iYWNr dXBfZmlsZScsCisgICAgICAgICAgICAgICAgIGZvcm1hdD0nY3VzdG9tJywKKyAgICAgICAgICAg ICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAgICAgICAgICBzY2hlbWFzPVtdLAorICAgICAg ICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3Jl cycsCisgICAgICAgICAgICAgICAgIGRhdGE9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgcHJlX2Rh dGE9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgcG9zdF9kYXRhPVRydWUKKyAgICAgICAgICAgICAp LAorICAgICAgICAgICAgIHVybD0nL2JhY2t1cC9qb2IvezB9L29iamVjdCcsCisgICAgICAgICAg ICAgZXhwZWN0ZWRfY21kX29wdHM9WyctLXZlcmJvc2UnLCAnLS1mb3JtYXQ9YycsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICctLXNlY3Rpb249cHJlLWRhdGEnLCAnLS1zZWN0aW9u PWRhdGEnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1zZWN0aW9uPXBvc3Qt ZGF0YSddLAorICAgICAgICAgICAgIG5vdF9leHBlY3RlZF9jbWRfb3B0cz1bXSwKKyAgICAgICAg ICAgICBleHBlY3RlZF9leGl0X2NvZGU9WzAsIE5vbmVdCisgICAgICAgICApKSwKKyAgICAgICAg KCdXaGVuIGJhY2t1cCB0aGUgb2JqZWN0IHdpdGggb3B0aW9uIG9ubHlfZGF0YScsCisgICAgICAg ICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAg ICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9iYWNrdXBfc2VydmVyJywKKyAg ICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0PSdsb2NhbGhv c3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAg ICAgICBiZmlsZT0ndGVzdF9iYWNrdXAnLAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9z dGdyZXMnCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAg ICAgICAgICAgICAgZmlsZT0ndGVzdF9iYWNrdXBfZmlsZScsCisgICAgICAgICAgICAgICAgIGZv cm1hdD0ncGxhaW4nLAorICAgICAgICAgICAgICAgICB2ZXJib3NlPVRydWUsCisgICAgICAgICAg ICAgICAgIHNjaGVtYXM9W10sCisgICAgICAgICAgICAgICAgIHRhYmxlcz1bXSwKKyAgICAgICAg ICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgb25seV9kYXRh PVRydWUsCisgICAgICAgICAgICAgICAgIG9ubHlfc2NoZW1hPUZhbHNlCisgICAgICAgICAgICAg KSwKKyAgICAgICAgICAgICB1cmw9Jy9iYWNrdXAvam9iL3swfS9vYmplY3QnLAorICAgICAgICAg ICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnLS12ZXJib3NlJywgJy0tZm9ybWF0PXAnLCAnLS1kYXRh LW9ubHknXSwKKyAgICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21kX29wdHM9W10sCisgICAgICAg ICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXQorICAgICAgICAgKSksCisgICAgICAg ICgnV2hlbiBiYWNrdXAgdGhlIG9iamVjdCB3aXRoIG9wdGlvbiBvbmx5X2RhdGEnLAorICAgICAg ICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAg ICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfYmFja3VwX3NlcnZlcicsCisg ICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxo b3N0JywKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAg ICAgICAgYmZpbGU9J3Rlc3RfYmFja3VwJywKKyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bv c3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgcGFyYW1zPWRpY3QoCisgICAg ICAgICAgICAgICAgIGZpbGU9J3Rlc3RfYmFja3VwX2ZpbGUnLAorICAgICAgICAgICAgICAgICBm b3JtYXQ9J3BsYWluJywKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAg ICAgICAgICBzY2hlbWFzPVtdLAorICAgICAgICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAg ICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIG9ubHlfZGF0 YT1UcnVlLAorICAgICAgICAgICAgICAgICBvbmx5X3NjaGVtYT1UcnVlLAorICAgICAgICAgICAg ICAgICBkbnNfb3duZXI9VHJ1ZQorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgdXJsPScv YmFja3VwL2pvYi97MH0vb2JqZWN0JywKKyAgICAgICAgICAgICBleHBlY3RlZF9jbWRfb3B0cz1b Jy0tdmVyYm9zZScsICctLWZvcm1hdD1wJywgJy0tZGF0YS1vbmx5J10sCisgICAgICAgICAgICAg bm90X2V4cGVjdGVkX2NtZF9vcHRzPVsnLS1zY2hlbWEtb25seScsICctLW5vLW93bmVyJ10sCisg ICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXQorICAgICAgICAgKSksCisg ICAgICAgICgnV2hlbiBiYWNrdXAgdGhlIG9iamVjdCB3aXRoIG9wdGlvbiBvbmx5X3NjaGVtYScs CisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAg ICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9iYWNrdXBfc2Vy dmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0 PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAg ICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9iYWNrdXAnLAorICAgICAgICAgICAgICAgICB1c2Vy bmFtZT0ncG9zdGdyZXMnCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGlj dCgKKyAgICAgICAgICAgICAgICAgZmlsZT0ndGVzdF9iYWNrdXBfZmlsZScsCisgICAgICAgICAg ICAgICAgIGZvcm1hdD0ncGxhaW4nLAorICAgICAgICAgICAgICAgICB2ZXJib3NlPVRydWUsCisg ICAgICAgICAgICAgICAgIHNjaGVtYXM9W10sCisgICAgICAgICAgICAgICAgIHRhYmxlcz1bXSwK KyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAg b25seV9kYXRhPUZhbHNlLAorICAgICAgICAgICAgICAgICBvbmx5X3NjaGVtYT1UcnVlCisgICAg ICAgICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9Jy9iYWNrdXAvam9iL3swfS9vYmplY3QnLAor ICAgICAgICAgICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnLS12ZXJib3NlJywgJy0tZm9ybWF0PXAn LCAnLS1zY2hlbWEtb25seSddLAorICAgICAgICAgICAgIG5vdF9leHBlY3RlZF9jbWRfb3B0cz1b XSwKKyAgICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGU9WzAsIE5vbmVdCisgICAgICAgICAp KSwKKyAgICAgICAgKCdXaGVuIGJhY2t1cCB0aGUgb2JqZWN0IHdpdGggb3B0aW9uIC0gZm9ybWF0 IHBsYWluIGFuZCBkbnNfb3duZXInLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFz c19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAg IG5hbWU9J3Rlc3RfYmFja3VwX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwK KyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgZGF0 YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfYmFja3VwJywK KyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAgICksCisg ICAgICAgICAgICAgcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGZpbGU9J3Rlc3RfYmFj a3VwX2ZpbGUnLAorICAgICAgICAgICAgICAgICBmb3JtYXQ9J3BsYWluJywKKyAgICAgICAgICAg ICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAgICAgICAgICBzY2hlbWFzPVtdLAorICAgICAg ICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3Jl cycsCisgICAgICAgICAgICAgICAgIGRuc19vd25lcj1UcnVlCisgICAgICAgICAgICAgKSwKKyAg ICAgICAgICAgICB1cmw9Jy9iYWNrdXAvam9iL3swfS9vYmplY3QnLAorICAgICAgICAgICAgIGV4 cGVjdGVkX2NtZF9vcHRzPVsnLS12ZXJib3NlJywgJy0tZm9ybWF0PXAnLCAnLS1uby1vd25lcidd LAorICAgICAgICAgICAgIG5vdF9leHBlY3RlZF9jbWRfb3B0cz1bXSwKKyAgICAgICAgICAgICBl eHBlY3RlZF9leGl0X2NvZGU9WzAsIE5vbmVdCisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVu IGJhY2t1cCB0aGUgb2JqZWN0IHdpdGggb3B0aW9uIC0gRG8gbm90IHNhdmUgcHJpdmlsZWdlLCcK KyAgICAgICAgICcgdGFibGVzcGFjZSwgdW5sb2dnZWQgdGFibGUgZGF0YScsCisgICAgICAgICBk aWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBz aWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9iYWNrdXBfc2VydmVyJywKKyAgICAg ICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0PSdsb2NhbGhvc3Qn LAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAg ICBiZmlsZT0ndGVzdF9iYWNrdXAnLAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdy ZXMnCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAg ICAgICAgICAgZmlsZT0ndGVzdF9iYWNrdXBfZmlsZScsCisgICAgICAgICAgICAgICAgIGZvcm1h dD0nY3VzdG9tJywKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAgICAg ICAgICBzY2hlbWFzPVtdLAorICAgICAgICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAgICAg ICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGRuc19wcml2aWxl Z2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgZG5zX3VubG9nZ2VkX3RibF9kYXRhPVRydWUsCisg ICAgICAgICAgICAgICAgIGRuc190YWJsZXNwYWNlPVRydWUKKyAgICAgICAgICAgICApLAorICAg ICAgICAgICAgIHVybD0nL2JhY2t1cC9qb2IvezB9L29iamVjdCcsCisgICAgICAgICAgICAgZXhw ZWN0ZWRfY21kX29wdHM9WyctLW5vLXByaXZpbGVnZXMnLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAnLS1uby10YWJsZXNwYWNlcycsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICctLW5vLXVubG9nZ2VkLXRhYmxlLWRhdGEnXSwKKyAgICAgICAgICAgICBub3RfZXhw ZWN0ZWRfY21kX29wdHM9W10sCisgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBO b25lXQorICAgICAgICAgKSksCisgICAgICAgICgnV2hlbiBiYWNrdXAgdGhlIG9iamVjdCB3aXRo IG9wdGlvbiAtIGFsbCBxdWVyaWVzJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xh c3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAg ICBuYW1lPSd0ZXN0X2JhY2t1cF9zZXJ2ZXInLAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQs CisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIGRh dGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGJmaWxlPSd0ZXN0X2JhY2t1cCcs CisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAgICAgICApLAor ICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBmaWxlPSd0ZXN0X2Jh Y2t1cF9maWxlJywKKyAgICAgICAgICAgICAgICAgZm9ybWF0PSdwbGFpbicsCisgICAgICAgICAg ICAgICAgIHZlcmJvc2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgc2NoZW1hcz1bXSwKKyAgICAg ICAgICAgICAgICAgdGFibGVzPVtdLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdy ZXMnLAorICAgICAgICAgICAgICAgICB1c2VfY29sdW1uX2luc2VydHM9VHJ1ZSwKKyAgICAgICAg ICAgICAgICAgaW5jbHVkZV9jcmVhdGVfZGF0YWJhc2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAg dXNlX2luc2VydF9jb21tYW5kcz1UcnVlLAorICAgICAgICAgICAgICAgICBpbmNsdWRlX2Ryb3Bf ZGF0YWJhc2U9VHJ1ZQorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgdXJsPScvYmFja3Vw L2pvYi97MH0vb2JqZWN0JywKKyAgICAgICAgICAgICBleHBlY3RlZF9jbWRfb3B0cz1bJy0tY3Jl YXRlJywgJy0tY2xlYW4nLCAnLS1pbnNlcnRzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJy0tY29sdW1uLWluc2VydHMnXSwKKyAgICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21k X29wdHM9W10sCisgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXQorICAg ICAgICAgKSksCisgICAgICAgICgnV2hlbiBiYWNrdXAgdGhlIG9iamVjdCB3aXRoIG9wdGlvbiAt IGFsbCBxdWVyaWVzIGFuZCBmb3JtYXQgY3VzdG9tJywKKyAgICAgICAgIGRpY3QoCisgICAgICAg ICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAg ICAgICAgICAgICBuYW1lPSd0ZXN0X2JhY2t1cF9zZXJ2ZXInLAorICAgICAgICAgICAgICAgICBw b3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAg ICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGJmaWxlPSd0ZXN0 X2JhY2t1cCcsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAg ICAgICApLAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBmaWxl PSd0ZXN0X2JhY2t1cF9maWxlJywKKyAgICAgICAgICAgICAgICAgZm9ybWF0PSdjdXN0b20nLAor ICAgICAgICAgICAgICAgICB2ZXJib3NlPVRydWUsCisgICAgICAgICAgICAgICAgIHNjaGVtYXM9 W10sCisgICAgICAgICAgICAgICAgIHRhYmxlcz1bXSwKKyAgICAgICAgICAgICAgICAgZGF0YWJh c2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgdXNlX2NvbHVtbl9pbnNlcnRzPVRydWUs CisgICAgICAgICAgICAgICAgIGluY2x1ZGVfY3JlYXRlX2RhdGFiYXNlPVRydWUsCisgICAgICAg ICAgICAgICAgIHVzZV9pbnNlcnRfY29tbWFuZHM9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgaW5j bHVkZV9kcm9wX2RhdGFiYXNlPVRydWUKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHVy bD0nL2JhY2t1cC9qb2IvezB9L29iamVjdCcsCisgICAgICAgICAgICAgZXhwZWN0ZWRfY21kX29w dHM9WyctLWluc2VydHMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1jb2x1 bW4taW5zZXJ0cyddLAorICAgICAgICAgICAgIG5vdF9leHBlY3RlZF9jbWRfb3B0cz1bJy0tY3Jl YXRlJywgJy0tY2xlYW4nXSwKKyAgICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGU9WzAsIE5v bmVdCisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIGJhY2t1cCB0aGUgb2JqZWN0IHdpdGgg b3B0aW9uIC0gbWlzY2VsbGFuZW91cycsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNs YXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAg ICAgbmFtZT0ndGVzdF9iYWNrdXBfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0 LAorICAgICAgICAgICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBk YXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9iYWNrdXAn LAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnCisgICAgICAgICAgICAgKSwK KyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgZmlsZT0ndGVzdF9i YWNrdXBfZmlsZScsCisgICAgICAgICAgICAgICAgIGZvcm1hdD0nY3VzdG9tJywKKyAgICAgICAg ICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAgICAgICAgICBzY2hlbWFzPVtdLAorICAg ICAgICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0 Z3JlcycsCisgICAgICAgICAgICAgICAgIGRpc2FibGVfcXVvdGluZz1UcnVlLAorICAgICAgICAg ICAgICAgICB1c2Vfc2V0X3Nlc3Npb25fYXV0aD1UcnVlLAorICAgICAgICAgICAgICAgICB3aXRo X29pZHM9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgZHFvdXRlPVRydWUKKyAgICAgICAgICAgICAp LAorICAgICAgICAgICAgIHVybD0nL2JhY2t1cC9qb2IvezB9L29iamVjdCcsCisgICAgICAgICAg ICAgZXhwZWN0ZWRfY21kX29wdHM9WyctLXZlcmJvc2UnLCAnLS1xdW90ZS1hbGwtaWRlbnRpZmll cnMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1kaXNhYmxlLWRvbGxhci1x dW90aW5nJywgJy0tb2lkcycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLXVz ZS1zZXQtc2Vzc2lvbi1hdXRob3JpemF0aW9uJ10sCisgICAgICAgICAgICAgbm90X2V4cGVjdGVk X2NtZF9vcHRzPVtdLAorICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9uZV0K KyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gYmFja3VwIHRoZSBvYmplY3Qgd2l0aCBmb3Jt YXQgdGFyJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3Qo CisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X2Jh Y2t1cF9zZXJ2ZXInLAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAg ICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3Jl cycsCisgICAgICAgICAgICAgICAgIGJmaWxlPSd0ZXN0X2JhY2t1cCcsCisgICAgICAgICAgICAg ICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHBh cmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBmaWxlPSd0ZXN0X2JhY2t1cF9maWxlJywKKyAg ICAgICAgICAgICAgICAgZm9ybWF0PSd0YXInLAorICAgICAgICAgICAgICAgICB2ZXJib3NlPVRy dWUsCisgICAgICAgICAgICAgICAgIHNjaGVtYXM9W10sCisgICAgICAgICAgICAgICAgIHRhYmxl cz1bXSwKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAg ICAgICAgYmxvYnM9VHJ1ZSwKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHVybD0nL2Jh Y2t1cC9qb2IvezB9L29iamVjdCcsCisgICAgICAgICAgICAgZXhwZWN0ZWRfY21kX29wdHM9Wyct LXZlcmJvc2UnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1ibG9icycsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWZvcm1hdD10J10sCisgICAgICAgICAg ICAgbm90X2V4cGVjdGVkX2NtZF9vcHRzPVtdLAorICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRf Y29kZT1bMCwgTm9uZV0KKyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gYmFja3VwIHRoZSBz ZXJ2ZXInLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgK KyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfYmFj a3VwX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAg ICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVz JywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfYmFja3VwJywKKyAgICAgICAgICAgICAg ICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgcGFy YW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGZpbGU9J3Rlc3RfYmFja3VwX3NlcnZlcl9maWxl JywKKyAgICAgICAgICAgICAgICAgZHFvdXRlPUZhbHNlLAorICAgICAgICAgICAgICAgICB2ZXJi b3NlPVRydWUsCisgICAgICAgICAgICAgICAgIHR5cGU9J3NlcnZlcicKKyAgICAgICAgICAgICAp LAorICAgICAgICAgICAgIHVybD0nL2JhY2t1cC9qb2IvezB9JywKKyAgICAgICAgICAgICBleHBl Y3RlZF9jbWRfb3B0cz1bJy0tdmVyYm9zZSddLAorICAgICAgICAgICAgIG5vdF9leHBlY3RlZF9j bWRfb3B0cz1bXSwKKyAgICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGU9WzAsIE5vbmVdCisg ICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIGJhY2t1cCBnbG9iYWxzJywKKyAgICAgICAgIGRp Y3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNp ZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X2JhY2t1cF9zZXJ2ZXInLAorICAgICAg ICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcs CisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAg IGJmaWxlPSd0ZXN0X2JhY2t1cCcsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3Jl cycKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAg ICAgICAgICBmaWxlPSd0ZXN0X2JhY2t1cF9nbG9iYWxfZmlsZScsCisgICAgICAgICAgICAgICAg IGRxb3V0ZT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAg ICAgICAgICB0eXBlPSdnbG9iYWxzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgdXJs PScvYmFja3VwL2pvYi97MH0nLAorICAgICAgICAgICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnLS12 ZXJib3NlJ10sCisgICAgICAgICAgICAgbm90X2V4cGVjdGVkX2NtZF9vcHRzPVtdLAorICAgICAg ICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9uZV0KKyAgICAgICAgICkpCisgICAgXQor CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBpZiBzZWxmLnNlcnZlclsnZGVmYXVsdF9i aW5hcnlfcGF0aHMnXSBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgKKyAgICAg ICAgICAgICAgICAiZGVmYXVsdF9iaW5hcnlfcGF0aHMgaXMgbm90IHNldCBmb3IgdGhlIHNlcnZl ciB7MH0iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ25hbWUnXQor ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKworICAgIEBwYXRjaCgncGdhZG1pbi50 b29scy5iYWNrdXAuU2VydmVyJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4udG9vbHMuYmFja3VwLmN1 cnJlbnRfdXNlcicpCisgICAgQHBhdGNoKCdwZ2FkbWluLnRvb2xzLmJhY2t1cC5CYWNrdXBNZXNz YWdlJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4udG9vbHMuYmFja3VwLmZpbGVuYW1lX3dpdGhfZmls ZV9tYW5hZ2VyX3BhdGgnKQorICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5iYWNrdXAuQmF0Y2hQ cm9jZXNzJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4udXRpbHMuZHJpdmVyLnBzeWNvcGcyLnNlcnZl cl9tYW5hZ2VyLlNlcnZlck1hbmFnZXIuJworICAgICAgICAgICAnZXhwb3J0X3Bhc3N3b3JkX2Vu dicpCisgICAgZGVmIHJ1blRlc3Qoc2VsZiwgZXhwb3J0X3Bhc3N3b3JkX2Vudl9tb2NrLCBiYXRj aF9wcm9jZXNzX21vY2ssCisgICAgICAgICAgICAgICAgZmlsZW5hbWVfbW9jaywgYmFja3VwX21l c3NhZ2VfbW9jaywKKyAgICAgICAgICAgICAgICBjdXJyZW50X3VzZXJfbW9jaywgc2VydmVyX21v Y2spOgorICAgICAgICBjbGFzcyBUZXN0TW9ja1NlcnZlcigpOgorICAgICAgICAgICAgZGVmIF9f aW5pdF9fKHNlbGYsIG5hbWUsIGhvc3QsIHBvcnQsIGlkLCB1c2VybmFtZSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICBtYWludGVuYW5jZV9kYik6CisgICAgICAgICAgICAgICAgc2VsZi5uYW1l ID0gbmFtZQorICAgICAgICAgICAgICAgIHNlbGYuaG9zdCA9IGhvc3QKKyAgICAgICAgICAgICAg ICBzZWxmLnBvcnQgPSBwb3J0CisgICAgICAgICAgICAgICAgc2VsZi5pZCA9IGlkCisgICAgICAg ICAgICAgICAgc2VsZi51c2VybmFtZSA9IHVzZXJuYW1lCisgICAgICAgICAgICAgICAgc2VsZi5t YWludGVuYW5jZV9kYiA9IG1haW50ZW5hbmNlX2RiCisKKyAgICAgICAgc2VsZi5kYl9uYW1lID0g JycKKyAgICAgICAgc2VsZi5zZXJ2ZXJfaWQgPSBwYXJlbnRfbm9kZV9kaWN0WyJzZXJ2ZXIiXVst MV1bInNlcnZlcl9pZCJdCisgICAgICAgIG1vY2tfb2JqID0gVGVzdE1vY2tTZXJ2ZXIoc2VsZi5j bGFzc19wYXJhbXNbJ25hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz ZWxmLmNsYXNzX3BhcmFtc1snaG9zdCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNlbGYuY2xhc3NfcGFyYW1zWydwb3J0J10sCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2VsZi5zZXJ2ZXJfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2VsZi5jbGFzc19wYXJhbXNbJ3VzZXJuYW1lJ10sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2RhdGFiYXNlJ10KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICApCisgICAgICAgIG1vY2tfcmVzdWx0ID0gc2VydmVyX21vY2su cXVlcnkuZmlsdGVyX2J5LnJldHVybl92YWx1ZQorICAgICAgICBtb2NrX3Jlc3VsdC5maXJzdC5y ZXR1cm5fdmFsdWUgPSBtb2NrX29iagorCisgICAgICAgIGZpbGVuYW1lX21vY2sucmV0dXJuX3Zh bHVlID0gc2VsZi5wYXJhbXNbJ2ZpbGUnXQorCisgICAgICAgIGJhdGNoX3Byb2Nlc3NfbW9jay5z ZXRfZW52X3ZhcmlhYmxlcyA9IE1hZ2ljTW9jaygKKyAgICAgICAgICAgIHJldHVybl92YWx1ZT1U cnVlCisgICAgICAgICkKKyAgICAgICAgYmF0Y2hfcHJvY2Vzc19tb2NrLnN0YXJ0ID0gTWFnaWNN b2NrKAorICAgICAgICAgICAgcmV0dXJuX3ZhbHVlPVRydWUKKyAgICAgICAgKQorCisgICAgICAg IGV4cG9ydF9wYXNzd29yZF9lbnZfbW9jay5yZXR1cm5fdmFsdWUgPSBUcnVlCisKKyAgICAgICAg c2VydmVyX3Jlc3BvbnNlID0gc2VydmVyX3V0aWxzLmNvbm5lY3Rfc2VydmVyKHNlbGYsIHNlbGYu c2VydmVyX2lkKQorICAgICAgICBpZiBzZXJ2ZXJfcmVzcG9uc2VbImluZm8iXSA9PSAiU2VydmVy IGNvbm5lY3RlZC4iOgorICAgICAgICAgICAgZGJfb3duZXIgPSBzZXJ2ZXJfcmVzcG9uc2VbJ2Rh dGEnXVsndXNlciddWyduYW1lJ10KKyAgICAgICAgICAgIHNlbGYuZGF0YSA9IGRhdGFiYXNlX3V0 aWxzLmdldF9kYl9kYXRhKGRiX293bmVyKQorICAgICAgICAgICAgc2VsZi5kYl9uYW1lID0gc2Vs Zi5kYXRhWyduYW1lJ10KKworICAgICAgICB1cmwgPSBzZWxmLnVybC5mb3JtYXQoc2VsZi5zZXJ2 ZXJfaWQpCisKKyAgICAgICAgIyBDcmVhdGUgdGhlIGJhY2t1cCBqb2IKKyAgICAgICAgcmVzcG9u c2UgPSBzZWxmLnRlc3Rlci5wb3N0KHVybCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRhdGE9anNvbi5kdW1wcyhzZWxmLnBhcmFtcyksCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb250ZW50X3R5cGU9J2h0bWwvanNvbicpCisgICAgICAgIHNlbGYu YXNzZXJ0RXF1YWxzKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCisgICAgICAgIHJlc3BvbnNl X2RhdGEgPSBqc29uLmxvYWRzKHJlc3BvbnNlLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorICAgICAg ICBqb2JfaWQgPSByZXNwb25zZV9kYXRhWydkYXRhJ11bJ2pvYl9pZCddCisKKyAgICAgICAgYXNz ZXJ0IGJhY2t1cF9tZXNzYWdlX21vY2suY2FsbGVkCisgICAgICAgIGFzc2VydCBiYXRjaF9wcm9j ZXNzX21vY2suY2FsbGVkCisKKyAgICAgICAgaWYgc2VsZi5leHBlY3RlZF9jbWRfb3B0czoKKyAg ICAgICAgICAgIGZvciBvcHQgaW4gc2VsZi5leHBlY3RlZF9jbWRfb3B0czoKKyAgICAgICAgICAg ICAgICBzZWxmLmFzc2VydEluKAorICAgICAgICAgICAgICAgICAgICBvcHQsCisgICAgICAgICAg ICAgICAgICAgIGJhdGNoX3Byb2Nlc3NfbW9jay5jYWxsX2FyZ3NfbGlzdFswXVsxXVsnYXJncydd CisgICAgICAgICAgICAgICAgKQorICAgICAgICBpZiBzZWxmLm5vdF9leHBlY3RlZF9jbWRfb3B0 czoKKyAgICAgICAgICAgIGZvciBvcHQgaW4gc2VsZi5ub3RfZXhwZWN0ZWRfY21kX29wdHM6Cisg ICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigKKyAgICAgICAgICAgICAgICAgICAgb3B0 LAorICAgICAgICAgICAgICAgICAgICBiYXRjaF9wcm9jZXNzX21vY2suY2FsbF9hcmdzX2xpc3Rb MF1bMV1bJ2FyZ3MnXQorICAgICAgICAgICAgICAgICkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L3Rvb2xzL2JhY2t1cC90ZXN0cy90ZXN0X2JhY2t1cF9tZXNzYWdlLnB5IGIvd2ViL3BnYWRtaW4v dG9vbHMvYmFja3VwL3Rlc3RzL3Rlc3RfYmFja3VwX21lc3NhZ2UucHkKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uMzRlYWNjOQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2Fk bWluL3Rvb2xzL2JhY2t1cC90ZXN0cy90ZXN0X2JhY2t1cF9tZXNzYWdlLnB5CkBAIC0wLDAgKzEs MTQ5IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRv b2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3Bt ZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNR TCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworaW1wb3J0IHN5cworCitmcm9tIGZsYXNr IGltcG9ydCBSZXNwb25zZQoraW1wb3J0IHNpbXBsZWpzb24gYXMganNvbgorCitmcm9tIHBnYWRt aW4udG9vbHMuYmFja3VwIGltcG9ydCBCYWNrdXBNZXNzYWdlLCBCQUNLVVAKK2Zyb20gcGdhZG1p bi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKKworaWYgc3lzLnZlcnNpb25f aW5mbyA8ICgzLCAzKToKKyAgICBmcm9tIG1vY2sgaW1wb3J0IHBhdGNoLCBNYWdpY01vY2sKK2Vs c2U6CisgICAgZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBwYXRjaCwgTWFnaWNNb2NrCisKKwor Y2xhc3MgQmFja3VwTWVzc2FnZVRlc3QoQmFzZVRlc3RHZW5lcmF0b3IpOgorICAgICIiIlRlc3Qg dGhlIEJhY2t1cE1lc3NhZ2UgY2xhc3MiIiIKKyAgICBzY2VuYXJpb3MgPSBbCisgICAgICAgICgn V2hlbiBCYWNrdXAgc2VydmVyJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3Nf cGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHR5cGU9QkFDS1VQLlNFUlZFUiwKKyAgICAg ICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfYmFja3VwX3Nl cnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9z dD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAg ICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfcmVzdG9yZScsCisgICAgICAgICAgICAgICAgIGFy Z3M9WworICAgICAgICAgICAgICAgICAgICAgJy0tZmlsZScsCisgICAgICAgICAgICAgICAgICAg ICAiYmFja3VwX2ZpbGUiLAorICAgICAgICAgICAgICAgICAgICAgJy0taG9zdCcsCisgICAgICAg ICAgICAgICAgICAgICAibG9jYWxob3N0IiwKKyAgICAgICAgICAgICAgICAgICAgICctLXBvcnQn LAorICAgICAgICAgICAgICAgICAgICAgIjU0NDQiLAorICAgICAgICAgICAgICAgICAgICAgJy0t dXNlcm5hbWUnLAorICAgICAgICAgICAgICAgICAgICAgInBvc3RncmVzIiwKKyAgICAgICAgICAg ICAgICAgICAgICctLW5vLXBhc3N3b3JkJywKKyAgICAgICAgICAgICAgICAgICAgICctLWRhdGFi YXNlJywKKyAgICAgICAgICAgICAgICAgICAgICJwb3N0Z3JlcyIKKyAgICAgICAgICAgICAgICAg XSwKKyAgICAgICAgICAgICAgICAgY21kPSIvdGVzdF9wYXRoL3BnX2R1bXAiCisgICAgICAgICAg ICAgKSwKKyAgICAgICAgICAgICBleHRlY3RlZF9tc2c9IkJhY2tpbmcgdXAgdGhlIHNlcnZlciIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIiAndGVzdF9iYWNrdXBfc2VydmVyIChsb2NhbGhv c3Q6NTQ0NCknLi4uIiwKKyAgICAgICAgICAgICBleHBldGNlZF9kZXRhaWxzX2NtZD0nL3Rlc3Rf cGF0aC9wZ19kdW1wIC0tZmlsZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JyJiYWNrdXBfZmlsZSIgLS1ob3N0ICJsb2NhbGhvc3QiICcKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAnLS1wb3J0ICI1NDQ0IiAtLXVzZXJuYW1lICJwb3N0Z3JlcyIgJworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLW5vLXBhc3N3b3JkIC0tZGF0YWJhc2Ug InBvc3RncmVzIicKKworICAgICAgICAgKSksCisgICAgICAgICgnV2hlbiBCYWNrdXAgZ2xvYmFs JywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAg ICAgICAgICAgICAgIHR5cGU9QkFDS1VQLkdMT0JBTFMsCisgICAgICAgICAgICAgICAgIHNpZD0x LAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X2JhY2t1cF9zZXJ2ZXInLAorICAgICAgICAg ICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisg ICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGJm aWxlPSd0ZXN0X2JhY2t1cCcsCisgICAgICAgICAgICAgICAgIGFyZ3M9WworICAgICAgICAgICAg ICAgICAgICAgJy0tZmlsZScsCisgICAgICAgICAgICAgICAgICAgICAnYmFja3VwX2ZpbGUnLAor ICAgICAgICAgICAgICAgICAgICAgJy0taG9zdCcsCisgICAgICAgICAgICAgICAgICAgICAnbG9j YWxob3N0JywKKyAgICAgICAgICAgICAgICAgICAgICctLXBvcnQnLAorICAgICAgICAgICAgICAg ICAgICAgJzU0NDQnLAorICAgICAgICAgICAgICAgICAgICAgJy0tdXNlcm5hbWUnLAorICAgICAg ICAgICAgICAgICAgICAgJ3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgICAgICctLW5vLXBh c3N3b3JkJywKKyAgICAgICAgICAgICAgICAgICAgICctLWRhdGFiYXNlJywKKyAgICAgICAgICAg ICAgICAgICAgICdwb3N0Z3JlcycKKyAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAg ICAgY21kPSIvdGVzdF9wYXRoL3BnX2R1bXAiCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAg ICBleHRlY3RlZF9tc2c9IkJhY2tpbmcgdXAgdGhlIGdsb2JhbCBvYmplY3RzIG9uIHRoZSBzZXJ2 ZXIgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiJ3Rlc3RfYmFja3VwX3NlcnZlciAobG9j YWxob3N0OjU0NDQpJy4uLiIsCisgICAgICAgICAgICAgZXhwZXRjZWRfZGV0YWlsc19jbWQ9Jy90 ZXN0X3BhdGgvcGdfZHVtcCAtLWZpbGUgImJhY2t1cF9maWxlIiAnCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJy0taG9zdCAibG9jYWxob3N0IicKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnIC0tcG9ydCAiNTQ0NCIgLS11c2VybmFtZSAicG9zdGdyZXMiICcK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1uby1wYXNzd29yZCAtLWRhdGFi YXNlICJwb3N0Z3JlcyInCisKKyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gYmFja3VwIG9i amVjdCcsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAor ICAgICAgICAgICAgICAgICB0eXBlPUJBQ0tVUC5PQkpFQ1QsCisgICAgICAgICAgICAgICAgIHNp ZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X2JhY2t1cF9zZXJ2ZXInLAorICAgICAg ICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcs CisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAg IGJmaWxlPSd0ZXN0X2JhY2t1cCcsCisgICAgICAgICAgICAgICAgIGFyZ3M9WworICAgICAgICAg ICAgICAgICAgICAgJy0tZmlsZScsCisgICAgICAgICAgICAgICAgICAgICAnYmFja3VwX2ZpbGUn LAorICAgICAgICAgICAgICAgICAgICAgJy0taG9zdCcsCisgICAgICAgICAgICAgICAgICAgICAn bG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgICAgICctLXBvcnQnLAorICAgICAgICAgICAg ICAgICAgICAgJzU0NDQnLAorICAgICAgICAgICAgICAgICAgICAgJy0tdXNlcm5hbWUnLAorICAg ICAgICAgICAgICAgICAgICAgJ3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgICAgICctLW5v LXBhc3N3b3JkJywKKyAgICAgICAgICAgICAgICAgICAgICctLWRhdGFiYXNlJywKKyAgICAgICAg ICAgICAgICAgICAgICdwb3N0Z3JlcycKKyAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAg ICAgICAgY21kPSIvdGVzdF9wYXRoL3BnX2R1bXAiCisgICAgICAgICAgICAgKSwKKyAgICAgICAg ICAgICBleHRlY3RlZF9tc2c9IkJhY2tpbmcgdXAgYW4gb2JqZWN0IG9uIHRoZSBzZXJ2ZXIgIgor ICAgICAgICAgICAgICAgICAgICAgICAgICAiJ3Rlc3RfYmFja3VwX3NlcnZlciAobG9jYWxob3N0 OjU0NDQpJyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiBmcm9tIGRhdGFiYXNlICdwb3N0 Z3JlcycuLi4iLAorICAgICAgICAgICAgIGV4cGV0Y2VkX2RldGFpbHNfY21kPScvdGVzdF9wYXRo L3BnX2R1bXAgLS1maWxlICJiYWNrdXBfZmlsZSIgJworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICctLWhvc3QgImxvY2FsaG9zdCIgJworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICctLXBvcnQgIjU0NDQiIC0tdXNlcm5hbWUgInBvc3RncmVzIiAnCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tbm8tcGFzc3dvcmQgLS1kYXRhYmFzZSAicG9z dGdyZXMiJworCisgICAgICAgICApKQorICAgIF0KKworICAgIEBwYXRjaCgncGdhZG1pbi50b29s cy5iYWNrdXAuQmFja3VwTWVzc2FnZS5nZXRfc2VydmVyX2RldGFpbHMnKQorICAgIGRlZiBydW5U ZXN0KHNlbGYsIGdldF9zZXJ2ZXJfZGV0YWlsc19tb2NrKToKKyAgICAgICAgZ2V0X3NlcnZlcl9k ZXRhaWxzX21vY2sucmV0dXJuX3ZhbHVlID0gXAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJh bXNbJ25hbWUnXSxcCisgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snaG9zdCddLFwKKyAg ICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydwb3J0J10KKworICAgICAgICBiYWNrdXBfb2Jq ID0gQmFja3VwTWVzc2FnZSgKKyAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWyd0eXBlJ10s CisgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snc2lkJ10sCisgICAgICAgICAgICBzZWxm LmNsYXNzX3BhcmFtc1snYmZpbGUnXSwKKyAgICAgICAgICAgICpzZWxmLmNsYXNzX3BhcmFtc1sn YXJncyddLAorICAgICAgICAgICAgKip7J2RhdGFiYXNlJzogc2VsZi5jbGFzc19wYXJhbXNbJ2Rh dGFiYXNlJ119CisgICAgICAgICkKKworICAgICAgICAjIENoZWNrIHRoZSBleHBlY3RlZCBtZXNz YWdlIHJldHVybmVkCisgICAgICAgIGFzc2VydCBiYWNrdXBfb2JqLm1lc3NhZ2UgPT0gc2VsZi5l eHRlY3RlZF9tc2cKKworICAgICAgICAjIENoZWNrIHRoZSBjb21tYW5kCisgICAgICAgIG9ial9k ZXRhaWxzID0gYmFja3VwX29iai5kZXRhaWxzKHNlbGYuY2xhc3NfcGFyYW1zWydjbWQnXSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNb J2FyZ3MnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLmV4cGV0Y2VkX2RldGFpbHNfY21k LCBvYmpfZGV0YWlscykKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC90ZXN0 cy90ZXN0X2JhY2t1cF91dGlscy5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC90ZXN0cy90 ZXN0X2JhY2t1cF91dGlscy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45 MzEzZWU5Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3Rlc3Rz L3Rlc3RfYmFja3VwX3V0aWxzLnB5CkBAIC0wLDAgKzEsMTE5IEBACisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykg MjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2Fy ZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworCitpbXBvcnQgdGltZQoraW1wb3J0IHJhbmRvbQoraW1wb3J0IHNpbXBsZWpzb24g YXMganNvbgorCisKK2RlZiBjcmVhdGVfYmFja3VwX2pvYih0ZXN0ZXIsIHVybCwgcGFyYW1zKToK KyAgICAjIENyZWF0ZSB0aGUgYmFja3VwIGpvYgorICAgIHJlc3BvbnNlID0gdGVzdGVyLnBvc3Qo dXJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1qc29uLmR1bXBzKHBhcmFtcyks CisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50X3R5cGU9J2h0bWwvanNvbicpCisg ICAgYXNzZXJ0IHJlc3BvbnNlLnN0YXR1c19jb2RlID09IDIwMAorICAgIHJlc3BvbnNlX2RhdGEg PSBqc29uLmxvYWRzKHJlc3BvbnNlLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorICAgIGpvYl9pZCA9 IHJlc3BvbnNlX2RhdGFbJ2RhdGEnXVsnam9iX2lkJ10KKyAgICByZXR1cm4gam9iX2lkCisKKwor ZGVmIHJ1bl9iYWNrdXBfam9iKHRlc3Rlciwgam9iX2lkLCBleHBlY3RlZF9wYXJhbXMsIGFzc2Vy dEluLCBhc3NlcnROb3RJbik6CisgICAgY250ID0gMAorICAgIHdoaWxlIDE6CisgICAgICAgIGlm IGNudCA+IDE6CisgICAgICAgICAgICBicmVhaworICAgICAgICAjIENoZWNrIHRoZSBwcm9jZXNz IGxpc3QKKyAgICAgICAgcmVzcG9uc2UxID0gdGVzdGVyLmdldCgnL21pc2MvYmdwcm9jZXNzLz9f PScuZm9ybWF0KAorICAgICAgICAgICAgcmFuZG9tLnJhbmRpbnQoMSwgOTk5OTk5OSkpKQorICAg ICAgICBhc3NlcnQgcmVzcG9uc2UxLnN0YXR1c19jb2RlID09IDIwMAorICAgICAgICBwcm9jZXNz X2xpc3QgPSBqc29uLmxvYWRzKHJlc3BvbnNlMS5kYXRhLmRlY29kZSgndXRmLTgnKSkKKworICAg ICAgICBpZiBsZW4ocHJvY2Vzc19saXN0KSA+IDAgYW5kICdleGVjdXRpb25fdGltZScgaW4gcHJv Y2Vzc19saXN0WzBdOgorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgdGltZS5zbGVlcCgwLjUp CisgICAgICAgIGNudCArPSAxCisKKyAgICBhc3NlcnQgJ2V4ZWN1dGlvbl90aW1lJyBpbiBwcm9j ZXNzX2xpc3RbMF0KKyAgICBhc3NlcnQgJ3N0aW1lJyBpbiBwcm9jZXNzX2xpc3RbMF0KKyAgICBh c3NlcnQgJ2V4aXRfY29kZScgaW4gcHJvY2Vzc19saXN0WzBdCisgICAgYXNzZXJ0IHByb2Nlc3Nf bGlzdFswXVsnZXhpdF9jb2RlJ10gaW4gZXhwZWN0ZWRfcGFyYW1zWworICAgICAgICAnZXhwZWN0 ZWRfZXhpdF9jb2RlJworICAgIF0KKworICAgIGJhY2t1cF9maWxlID0gTm9uZQorICAgIGlmICdk ZXRhaWxzJyBpbiBwcm9jZXNzX2xpc3RbMF06CisgICAgICAgIGJhY2t1cF9kZXQgPSBwcm9jZXNz X2xpc3RbMF1bJ2RldGFpbHMnXQorICAgICAgICBiYWNrdXBfZmlsZSA9IGJhY2t1cF9kZXRbaW50 KGJhY2t1cF9kZXQuZmluZCgnLS1maWxlJykpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDg6aW50KGJhY2t1cF9kZXQuZmluZCgnLS1ob3N0JykpIC0gMl0KKworICAgIGlmIGV4 cGVjdGVkX3BhcmFtc1snZXhwZWN0ZWRfY21kX29wdHMnXToKKyAgICAgICAgZm9yIG9wdCBpbiBl eHBlY3RlZF9wYXJhbXNbJ2V4cGVjdGVkX2NtZF9vcHRzJ106CisgICAgICAgICAgICBhc3NlcnRJ bihvcHQsIHByb2Nlc3NfbGlzdFswXVsnZGV0YWlscyddKQorICAgIGlmIGV4cGVjdGVkX3BhcmFt c1snbm90X2V4cGVjdGVkX2NtZF9vcHRzJ106CisgICAgICAgIGZvciBvcHQgaW4gZXhwZWN0ZWRf cGFyYW1zWydub3RfZXhwZWN0ZWRfY21kX29wdHMnXToKKyAgICAgICAgICAgIGFzc2VydE5vdElu KG9wdCwgcHJvY2Vzc19saXN0WzBdWydkZXRhaWxzJ10pCisKKyAgICAjIENoZWNrIHRoZSBwcm9j ZXNzIGRldGFpbHMKKyAgICBwX2RldGFpbHMgPSB0ZXN0ZXIuZ2V0KCcvbWlzYy9iZ3Byb2Nlc3Mv ezB9P189Jy5mb3JtYXQoCisgICAgICAgIGpvYl9pZCwgcmFuZG9tLnJhbmRpbnQoMSwgOTk5OTk5 OSkpCisgICAgKQorICAgIGFzc2VydCBwX2RldGFpbHMuc3RhdHVzX2NvZGUgPT0gMjAwCisgICAg cF9kZXRhaWxzX2RhdGEgPSBqc29uLmxvYWRzKHBfZGV0YWlscy5kYXRhLmRlY29kZSgndXRmLTgn KSkKKworICAgIHBfZGV0YWlscyA9IHRlc3Rlci5nZXQoJy9taXNjL2JncHJvY2Vzcy97MH0vezF9 L3syfS8/Xz0nLmZvcm1hdCgKKyAgICAgICAgam9iX2lkLCAwLCAwLCByYW5kb20ucmFuZGludCgx LCA5OTk5OTk5KSkKKyAgICApCisgICAgYXNzZXJ0IHBfZGV0YWlscy5zdGF0dXNfY29kZSA9PSAy MDAKKyAgICBwX2RldGFpbHNfZGF0YSA9IGpzb24ubG9hZHMocF9kZXRhaWxzLmRhdGEuZGVjb2Rl KCd1dGYtOCcpKQorCisgICAgY250ID0gMAorICAgICMgUmV0cmlldmUgdGhlIGJhY2t1cCBqb2Ig cHJvY2VzcyBsb2dzCisgICAgd2hpbGUgMToKKyAgICAgICAgb3V0LCBlcnIsIHN0YXR1cyA9IGdl dF9wYXJhbXMocF9kZXRhaWxzX2RhdGEpCisgICAgICAgIGlmIHN0YXR1cyBvciBjbnQgPj0gMTA6 CisgICAgICAgICAgICBicmVhaworCisgICAgICAgIHBfZGV0YWlscyA9IHRlc3Rlci5nZXQoCisg ICAgICAgICAgICAnL21pc2MvYmdwcm9jZXNzL3swfS97MX0vezJ9Lz9fPXszfScuZm9ybWF0KAor ICAgICAgICAgICAgICAgIGpvYl9pZCwgb3V0LCBlcnIsIHJhbmRvbS5yYW5kaW50KDEsIDk5OTk5 OTkpKQorICAgICAgICApCisgICAgICAgIGFzc2VydCBwX2RldGFpbHMuc3RhdHVzX2NvZGUgPT0g MjAwCisgICAgICAgIHBfZGV0YWlsc19kYXRhID0ganNvbi5sb2FkcyhwX2RldGFpbHMuZGF0YS5k ZWNvZGUoJ3V0Zi04JykpCisKKyAgICAgICAgY250ICs9IDEKKyAgICAgICAgdGltZS5zbGVlcCgx KQorCisgICAgIyBDaGVjayB0aGUgam9iIGlzIGNvbXBsZXRlLgorICAgIGJhY2t1cF9hY2sgPSB0 ZXN0ZXIucHV0KCcvbWlzYy9iZ3Byb2Nlc3MvezB9Jy5mb3JtYXQoam9iX2lkKSkKKyAgICBhc3Nl cnQgYmFja3VwX2Fjay5zdGF0dXNfY29kZSA9PSAyMDAKKyAgICBiYWNrdXBfYWNrX3JlcyA9IGpz b24ubG9hZHMoYmFja3VwX2Fjay5kYXRhLmRlY29kZSgndXRmLTgnKSkKKworICAgIGFzc2VydCBi YWNrdXBfYWNrX3Jlc1snc3VjY2VzcyddID09IDEKKworICAgIHJldHVybiBiYWNrdXBfZmlsZQor CisKK2RlZiBnZXRfcGFyYW1zKGRhdGEpOgorICAgIG91dCA9IDAKKyAgICBvdXRfZG9uZSA9IEZh bHNlCisgICAgZXJyID0gMAorICAgIGVycl9kb25lID0gRmFsc2UKKyAgICBpZiAnb3V0JyBpbiBk YXRhOgorICAgICAgICBvdXQgPSBkYXRhWydvdXQnXSBhbmQgZGF0YVsnb3V0J11bJ3BvcyddCisK KyAgICAgICAgaWYgJ2RvbmUnIGluIGRhdGFbJ291dCddOgorICAgICAgICAgICAgb3V0X2RvbmUg PSBkYXRhWydvdXQnXVsnZG9uZSddCisKKyAgICBpZiAnZXJyJyBpbiBkYXRhOgorICAgICAgICBl cnIgPSBkYXRhWydlcnInXSBhbmQgZGF0YVsnZXJyJ11bJ3BvcyddCisKKyAgICAgICAgaWYgJ2Rv bmUnIGluIGRhdGFbJ2VyciddOgorICAgICAgICAgICAgZXJyX2RvbmUgPSBkYXRhWydlcnInXVsn ZG9uZSddCisKKyAgICByZXR1cm4gb3V0LCBlcnIsIChvdXRfZG9uZSBhbmQgZXJyX2RvbmUpCmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvdGVzdHMvdGVzdF9iYXRjaF9wcm9j ZXNzLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3Rlc3RzL3Rlc3RfYmF0Y2hfcHJvY2Vz cy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDc0Y2E1Ci0tLSAvZGV2 L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3Rlc3RzL3Rlc3RfYmF0Y2hfcHJv Y2Vzcy5weQpAQCAtMCwwICsxLDIxMiBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1p biA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBU aGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQg dW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK2ltcG9y dCBzeXMKK2ltcG9ydCBzaW1wbGVqc29uIGFzIGpzb24KKworZnJvbSBwZ2FkbWluLm1pc2MuYmdw cm9jZXNzLnByb2Nlc3NlcyBpbXBvcnQgQmF0Y2hQcm9jZXNzLCBJUHJvY2Vzc0Rlc2MKK2Zyb20g cGdhZG1pbi50b29scy5iYWNrdXAgaW1wb3J0IEJhY2t1cE1lc3NhZ2UsIEJBQ0tVUAorZnJvbSBw Z2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgorZnJvbSBwaWNrbGUg aW1wb3J0IGR1bXBzLCBsb2FkcworCitpZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDMpOgorICAg IGZyb20gbW9jayBpbXBvcnQgcGF0Y2gKK2Vsc2U6CisgICAgZnJvbSB1bml0dGVzdC5tb2NrIGlt cG9ydCBwYXRjaAorCisKK2NsYXNzIEJhdGNoUHJvY2Vzc1Rlc3QoQmFzZVRlc3RHZW5lcmF0b3Ip OgorICAgICIiIlRlc3QgdGhlIEJhdGNoUHJvY2VzcyBjbGFzcyIiIgorICAgIHNjZW5hcmlvcyA9 IFsKKyAgICAgICAgKCdXaGVuIGJhY2t1cCBzZXJ2ZXInLAorICAgICAgICAgZGljdCgKKyAgICAg ICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgdHlwZT1CQUNLVVAu U0VSVkVSLAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0n dGVzdF9iYWNrdXBfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAg ICAgICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0n cG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnLAorICAgICAg ICAgICAgICAgICBiZmlsZT0ndGVzdF9iYWNrdXAnLAorICAgICAgICAgICAgICAgICBhcmdzPVsK KyAgICAgICAgICAgICAgICAgICAgICctLWZpbGUnLAorICAgICAgICAgICAgICAgICAgICAgImJh Y2t1cF9maWxlIiwKKyAgICAgICAgICAgICAgICAgICAgICctLWhvc3QnLAorICAgICAgICAgICAg ICAgICAgICAgImxvY2FsaG9zdCIsCisgICAgICAgICAgICAgICAgICAgICAnLS1wb3J0JywKKyAg ICAgICAgICAgICAgICAgICAgICI1NDQ0IiwKKyAgICAgICAgICAgICAgICAgICAgICctLXVzZXJu YW1lJywKKyAgICAgICAgICAgICAgICAgICAgICJwb3N0Z3JlcyIsCisgICAgICAgICAgICAgICAg ICAgICAnLS1uby1wYXNzd29yZCcsCisgICAgICAgICAgICAgICAgICAgICAnLS1kYXRhYmFzZScs CisgICAgICAgICAgICAgICAgICAgICAicG9zdGdyZXMiCisgICAgICAgICAgICAgICAgIF0sCisg ICAgICAgICAgICAgICAgIGNtZD0nYmFja3VwX3NlcnZlcicKKyAgICAgICAgICAgICApCisgICAg ICAgICApKSwKKyAgICAgICAgKCdXaGVuIGJhY2t1cCBnbG9iYWxzJywKKyAgICAgICAgIGRpY3Qo CisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHR5cGU9 QkFDS1VQLkdMT0JBTFMsCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAg ICBuYW1lPSd0ZXN0X2JhY2t1cF9zZXJ2ZXInLAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQs CisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIGRh dGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3Jlcycs CisgICAgICAgICAgICAgICAgIGJmaWxlPSd0ZXN0X2JhY2t1cCcsCisgICAgICAgICAgICAgICAg IGFyZ3M9WworICAgICAgICAgICAgICAgICAgICAgJy0tZmlsZScsCisgICAgICAgICAgICAgICAg ICAgICAiYmFja3VwX2ZpbGUiLAorICAgICAgICAgICAgICAgICAgICAgJy0taG9zdCcsCisgICAg ICAgICAgICAgICAgICAgICAibG9jYWxob3N0IiwKKyAgICAgICAgICAgICAgICAgICAgICctLXBv cnQnLAorICAgICAgICAgICAgICAgICAgICAgIjU0NDQiLAorICAgICAgICAgICAgICAgICAgICAg Jy0tdXNlcm5hbWUnLAorICAgICAgICAgICAgICAgICAgICAgInBvc3RncmVzIiwKKyAgICAgICAg ICAgICAgICAgICAgICctLW5vLXBhc3N3b3JkJywKKyAgICAgICAgICAgICAgICAgICAgICctLWRh dGFiYXNlJywKKyAgICAgICAgICAgICAgICAgICAgICJwb3N0Z3JlcyIKKyAgICAgICAgICAgICAg ICAgXSwKKyAgICAgICAgICAgICAgICAgY21kPSdiYWNrdXAnCisgICAgICAgICAgICAgKQorICAg ICAgICAgKSksCisgICAgICAgICgnV2hlbiBiYWNrdXAgb2JqZWN0JywKKyAgICAgICAgIGRpY3Qo CisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHR5cGU9 QkFDS1VQLk9CSkVDVCwKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAg IG5hbWU9J3Rlc3RfYmFja3VwX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwK KyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgZGF0 YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJywK KyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfYmFja3VwJywKKyAgICAgICAgICAgICAgICAg YXJncz1bCisgICAgICAgICAgICAgICAgICAgICAnLS1maWxlJywKKyAgICAgICAgICAgICAgICAg ICAgICJiYWNrdXBfZmlsZSIsCisgICAgICAgICAgICAgICAgICAgICAnLS1ob3N0JywKKyAgICAg ICAgICAgICAgICAgICAgICJsb2NhbGhvc3QiLAorICAgICAgICAgICAgICAgICAgICAgJy0tcG9y dCcsCisgICAgICAgICAgICAgICAgICAgICAiNTQ0NCIsCisgICAgICAgICAgICAgICAgICAgICAn LS11c2VybmFtZScsCisgICAgICAgICAgICAgICAgICAgICAicG9zdGdyZXMiLAorICAgICAgICAg ICAgICAgICAgICAgJy0tbm8tcGFzc3dvcmQnLAorICAgICAgICAgICAgICAgICAgICAgJy0tZGF0 YWJhc2UnLAorICAgICAgICAgICAgICAgICAgICAgInBvc3RncmVzIgorICAgICAgICAgICAgICAg ICBdLAorICAgICAgICAgICAgICAgICBjbWQ9J2JhY2t1cCcKKyAgICAgICAgICAgICApCisgICAg ICAgICApKQorICAgIF0KKworICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5iYWNrdXAuQmFja3Vw TWVzc2FnZS5nZXRfc2VydmVyX2RldGFpbHMnKQorICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJn cHJvY2Vzcy5wcm9jZXNzZXMuUG9wZW4nKQorICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJv Y2Vzcy5wcm9jZXNzZXMuY3VycmVudF9hcHAnKQorICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJn cHJvY2Vzcy5wcm9jZXNzZXMuZGInKQorICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5iYWNrdXAu Y3VycmVudF91c2VyJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4ubWlzYy5iZ3Byb2Nlc3MucHJvY2Vz c2VzLmN1cnJlbnRfdXNlcicpCisgICAgZGVmIHJ1blRlc3Qoc2VsZiwgY3VycmVudF91c2VyX21v Y2ssIGN1cnJlbnRfdXNlciwgZGJfbW9jaywKKyAgICAgICAgICAgICAgICBjdXJyZW50X2FwcF9t b2NrLCBwb3Blbl9tb2NrLCBnZXRfc2VydmVyX2RldGFpbHNfbW9jayk6CisgICAgICAgIGN1cnJl bnRfdXNlci5pZCA9IDEKKyAgICAgICAgY3VycmVudF91c2VyX21vY2suaWQgPSAxCisgICAgICAg IGN1cnJlbnRfYXBwX21vY2suUEdBRE1JTl9SVU5USU1FID0gRmFsc2UKKworICAgICAgICBkZWYg ZGJfc2Vzc2lvbl9hZGRfbW9jayhqKToKKyAgICAgICAgICAgIGNtZF9vYmogPSBsb2FkcyhqLmRl c2MpCisgICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShjbWRfb2JqLCBJUHJvY2Vzc0Rlc2Mp CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjbWRfb2JqLmJhY2t1cF90eXBlLCBzZWxm LmNsYXNzX3BhcmFtc1sndHlwZSddKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY21k X29iai5iZmlsZSwgc2VsZi5jbGFzc19wYXJhbXNbJ2JmaWxlJ10pCisgICAgICAgICAgICBzZWxm LmFzc2VydEVxdWFscyhjbWRfb2JqLmRhdGFiYXNlLCBzZWxmLmNsYXNzX3BhcmFtc1snZGF0YWJh c2UnXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNtZF9vYmouY21kLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJyAtLWZpbGUgImJhY2t1cF9maWxlIiAnCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAnLS1ob3N0ICJ7MH0iICcKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICctLXBvcnQgInsxfSIgJworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJy0tdXNlcm5hbWUgInsyfSIgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0t bm8tcGFzc3dvcmQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tZGF0YWJhc2Ug InszfSInLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNs YXNzX3BhcmFtc1snaG9zdCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl bGYuY2xhc3NfcGFyYW1zWydwb3J0J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2VsZi5jbGFzc19wYXJhbXNbJ3VzZXJuYW1lJ10sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2RhdGFiYXNlJ10KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICkpCisKKyAgICAgICAgZGJfbW9jay5zZXNzaW9uLmFkZC5zaWRlX2Vm ZmVjdCA9IGRiX3Nlc3Npb25fYWRkX21vY2sKKworICAgICAgICBnZXRfc2VydmVyX2RldGFpbHNf bW9jay5yZXR1cm5fdmFsdWUgPSBcCisgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snbmFt ZSddLFwKKyAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydob3N0J10sXAorICAgICAgICAg ICAgc2VsZi5jbGFzc19wYXJhbXNbJ3BvcnQnXQorCisgICAgICAgIGJhY2t1cF9vYmogPSBCYWNr dXBNZXNzYWdlKAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3R5cGUnXSwKKyAgICAg ICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydzaWQnXSwKKyAgICAgICAgICAgIHNlbGYuY2xhc3Nf cGFyYW1zWydiZmlsZSddLAorICAgICAgICAgICAgKnNlbGYuY2xhc3NfcGFyYW1zWydhcmdzJ10s CisgICAgICAgICAgICAqKnsnZGF0YWJhc2UnOiBzZWxmLmNsYXNzX3BhcmFtc1snZGF0YWJhc2Un XX0KKyAgICAgICAgKQorCisgICAgICAgIHAgPSBCYXRjaFByb2Nlc3MoCisgICAgICAgICAgICBk ZXNjPWJhY2t1cF9vYmosCisgICAgICAgICAgICBjbWQ9c2VsZi5jbGFzc19wYXJhbXNbJ2NtZCdd LAorICAgICAgICAgICAgYXJncz1zZWxmLmNsYXNzX3BhcmFtc1snYXJncyddCisgICAgICAgICkK KworICAgICAgICAjIENoZWNrIHRoYXQgX2NyZWF0ZV9wcm9jZXNzIGhhcyBiZWVuIGNhbGxlZAor ICAgICAgICBhc3NlcnQgZGJfbW9jay5zZXNzaW9uLmFkZC5jYWxsZWQKKworICAgICAgICAjIENo ZWNrIHN0YXJ0IG1ldGhvZAorICAgICAgICBzZWxmLl9jaGVja19zdGFydChwb3Blbl9tb2NrLCBw KQorCisgICAgICAgICMgQ2hlY2sgbGlzdCBtZXRob2QKKyAgICAgICAgc2VsZi5fY2hlY2tfbGlz dChwLCBiYWNrdXBfb2JqKQorCisgICAgZGVmIF9jaGVja19zdGFydChzZWxmLCBwb3Blbl9tb2Nr LCBwKToKKyAgICAgICAgY21kX3Rlc3QgPSBzZWxmLmNsYXNzX3BhcmFtc1snY21kJ10KKworICAg ICAgICBjbGFzcyBwb3Blbk1vY2tTaWRlRWZmZWN0KCk6CisgICAgICAgICAgICBkZWYgX19pbml0 X18oc2VsZiwgY21kLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgYXNzZXJ0IGNtZF90ZXN0 IGluIGNtZAorICAgICAgICAgICAgICAgIGFzc2VydCAnZW52JyBpbiBrd2FyZ3MKKworICAgICAg ICAgICAgZGVmIHBvbGwoc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHBv cGVuX21vY2suc2lkZV9lZmZlY3QgPSBwb3Blbk1vY2tTaWRlRWZmZWN0CisgICAgICAgIHAuc3Rh cnQoKQorCisgICAgICAgIGFzc2VydCBwb3Blbl9tb2NrLmNhbGxlZAorCisgICAgQHBhdGNoKCdw Z2FkbWluLm1pc2MuYmdwcm9jZXNzLnByb2Nlc3Nlcy5Qcm9jZXNzJykKKyAgICBAcGF0Y2goJ3Bn YWRtaW4ubWlzYy5iZ3Byb2Nlc3MucHJvY2Vzc2VzLkJhdGNoUHJvY2Vzcy4nCisgICAgICAgICAg ICd1cGRhdGVfcHJvY2Vzc19pbmZvJykKKyAgICBkZWYgX2NoZWNrX2xpc3Qoc2VsZiwgcCwgYmFj a3VwX29iaiwgdXBkYXRlX3Byb2Nlc3NfaW5mb19tb2NrLAorICAgICAgICAgICAgICAgICAgICBw cm9jZXNzX21vY2spOgorICAgICAgICBjbGFzcyBUZXN0TW9ja1Byb2Nlc3MoKToKKyAgICAgICAg ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkZXNjLCBhcmdzLCBjbWQpOgorICAgICAgICAgICAgICAg IHNlbGYucGlkID0gMQorICAgICAgICAgICAgICAgIHNlbGYuZXhpdF9jb2RlID0gMQorICAgICAg ICAgICAgICAgIHNlbGYuc3RhcnRfdGltZSA9ICcyMDE4LTA0LTE3IDA2OjE4OjU2LjMxNTQ0NSAr MDAwMCcKKyAgICAgICAgICAgICAgICBzZWxmLmVuZF90aW1lID0gTm9uZQorICAgICAgICAgICAg ICAgIHNlbGYuZGVzYyA9IGR1bXBzKGRlc2MpCisgICAgICAgICAgICAgICAgc2VsZi5hcmd1bWVu dHMgPSAiICIuam9pbihhcmdzKQorICAgICAgICAgICAgICAgIHNlbGYuY29tbWFuZCA9IGNtZAor ICAgICAgICAgICAgICAgIHNlbGYuYWNrbm93bGVkZ2UgPSBOb25lCisKKyAgICAgICAgcHJvY2Vz c19tb2NrLnF1ZXJ5LmZpbHRlcl9ieS5yZXR1cm5fdmFsdWUgPSBbCisgICAgICAgICAgICBUZXN0 TW9ja1Byb2Nlc3MoYmFja3VwX29iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm LmNsYXNzX3BhcmFtc1snYXJncyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu Y2xhc3NfcGFyYW1zWydjbWQnXSldCisKKyAgICAgICAgdXBkYXRlX3Byb2Nlc3NfaW5mb19tb2Nr LnJldHVybl92YWx1ZSA9IFtUcnVlLCBUcnVlXQorCisgICAgICAgIHJldF92YWx1ZSA9IHAubGlz dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHJldF92YWx1ZSkpCisgICAgICAg IGFzc2VydCAnZGV0YWlscycgaW4gcmV0X3ZhbHVlWzBdCisgICAgICAgIGFzc2VydCAnZGVzYycg aW4gcmV0X3ZhbHVlWzBdCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvdGVz dHMvdGVzdF9jcmVhdGVfYmFja3VwX2pvYi5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC90 ZXN0cy90ZXN0X2NyZWF0ZV9iYWNrdXBfam9iLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjNlM2ZlOTIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9i YWNrdXAvdGVzdHMvdGVzdF9jcmVhdGVfYmFja3VwX2pvYi5weQpAQCAtMCwwICsxLDYzIEBACisj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisj IENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0K KyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNl CisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitpbXBvcnQgb3MKK2Zyb20gcGdhZG1pbi51dGlscy5y b3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKK2Zyb20gcmVncmVzc2lvbiBpbXBvcnQgcGFy ZW50X25vZGVfZGljdAorZnJvbSByZWdyZXNzaW9uLnB5dGhvbl90ZXN0X3V0aWxzIGltcG9ydCB0 ZXN0X3V0aWxzIGFzIHV0aWxzCitpbXBvcnQgcGdhZG1pbi50b29scy5iYWNrdXAudGVzdHMudGVz dF9iYWNrdXBfdXRpbHMgYXMgYmFja3VwX3V0aWxzCisKKworY2xhc3MgQmFja3VwSm9iVGVzdChC YXNlVGVzdEdlbmVyYXRvcik6CisgICAgIiIiQmFja3VwIGFwaSB0ZXN0IGNhc2VzIiIiCisgICAg c2NlbmFyaW9zID0gWworICAgICAgICAoJ1doZW4gYmFja3VwIHRoZSBvYmplY3Qgd2l0aCB0aGUg ZGVmYXVsdCBvcHRpb25zJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgcGFyYW1zPWRp Y3QoCisgICAgICAgICAgICAgICAgIGZpbGU9J3Rlc3RfYmFja3VwJywKKyAgICAgICAgICAgICAg ICAgZm9ybWF0PSdjdXN0b20nLAorICAgICAgICAgICAgICAgICB2ZXJib3NlPVRydWUsCisgICAg ICAgICAgICAgICAgIGJsb2JzPVRydWUsCisgICAgICAgICAgICAgICAgIHNjaGVtYXM9W10sCisg ICAgICAgICAgICAgICAgIHRhYmxlcz1bXSwKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bv c3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgdXJsPScvYmFja3VwL2pvYi97 MH0vb2JqZWN0JywKKyAgICAgICAgICAgICBleHBlY3RlZF9wYXJhbXM9ZGljdCgKKyAgICAgICAg ICAgICAgICAgZXhwZWN0ZWRfY21kX29wdHM9WyctLXZlcmJvc2UnLCAnLS1mb3JtYXQ9YycsICct LWJsb2JzJ10sCisgICAgICAgICAgICAgICAgIG5vdF9leHBlY3RlZF9jbWRfb3B0cz1bXSwKKyAg ICAgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXQorICAgICAgICAgICAg ICkKKyAgICAgICAgICkpCisgICAgXQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBp ZiBzZWxmLnNlcnZlclsnZGVmYXVsdF9iaW5hcnlfcGF0aHMnXSBpcyBOb25lOgorICAgICAgICAg ICAgc2VsZi5za2lwVGVzdCgKKyAgICAgICAgICAgICAgICAiZGVmYXVsdF9iaW5hcnlfcGF0aHMg aXMgbm90IHNldCBmb3IgdGhlIHNlcnZlciB7MH0iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAg ICAgc2VsZi5zZXJ2ZXJbJ25hbWUnXQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkK KworICAgIGRlZiBydW5UZXN0KHNlbGYpOgorICAgICAgICBzZWxmLnNlcnZlcl9pZCA9IHBhcmVu dF9ub2RlX2RpY3RbInNlcnZlciJdWy0xXVsic2VydmVyX2lkIl0KKyAgICAgICAgdXJsID0gc2Vs Zi51cmwuZm9ybWF0KHNlbGYuc2VydmVyX2lkKQorCisgICAgICAgICMgQ3JlYXRlIHRoZSBiYWNr dXAgam9iCisgICAgICAgIGpvYl9pZCA9IGJhY2t1cF91dGlscy5jcmVhdGVfYmFja3VwX2pvYihz ZWxmLnRlc3RlciwgdXJsLCBzZWxmLnBhcmFtcykKKyAgICAgICAgYmFja3VwX2ZpbGUgPSBiYWNr dXBfdXRpbHMucnVuX2JhY2t1cF9qb2Ioc2VsZi50ZXN0ZXIsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpvYl9pZCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5leHBlY3RlZF9wYXJhbXMsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNz ZXJ0SW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNlbGYuYXNzZXJ0Tm90SW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKQorCisgICAgICAgIGlmIGJhY2t1cF9maWxlIGlzIG5vdCBOb25lOgorICAg ICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoYmFja3VwX2ZpbGUpOgorICAgICAgICAgICAgICAg IG9zLnJlbW92ZShiYWNrdXBfZmlsZSkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL21h aW50ZW5hbmNlL3Rlc3RzL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFu Y2UvdGVzdHMvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u ZTY5ZGUyOQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFuY2UvdGVzdHMv dGVzdF9iYXRjaF9wcm9jZXNzX21haW50ZW5hbmNlLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvbWFp bnRlbmFuY2UvdGVzdHMvdGVzdF9iYXRjaF9wcm9jZXNzX21haW50ZW5hbmNlLnB5Cm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1YzNkYjgKLS0tIC9kZXYvbnVsbAorKysgYi93 ZWIvcGdhZG1pbi90b29scy9tYWludGVuYW5jZS90ZXN0cy90ZXN0X2JhdGNoX3Byb2Nlc3NfbWFp bnRlbmFuY2UucHkKQEAgLTAsMCArMSwxNTMgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBn QWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAx OCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVh c2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitp bXBvcnQgc3lzCisKK2Zyb20gcGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMgaW1wb3J0 IEJhdGNoUHJvY2VzcywgSVByb2Nlc3NEZXNjCitmcm9tIHBnYWRtaW4udG9vbHMubWFpbnRlbmFu Y2UgaW1wb3J0IE1lc3NhZ2UKK2Zyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRl c3RHZW5lcmF0b3IKK2Zyb20gcGlja2xlIGltcG9ydCBkdW1wcywgbG9hZHMKKworaWYgc3lzLnZl cnNpb25faW5mbyA8ICgzLCAzKToKKyAgICBmcm9tIG1vY2sgaW1wb3J0IHBhdGNoCitlbHNlOgor ICAgIGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgcGF0Y2gKKworCitjbGFzcyBCYXRjaFByb2Nl c3NUZXN0KEJhc2VUZXN0R2VuZXJhdG9yKToKKyAgICAiIiJUZXN0IHRoZSBCYXRjaFByb2Nlc3Mg Y2xhc3MiIiIKKyAgICBzY2VuYXJpb3MgPSBbCisgICAgICAgICgnV2hlbiBtYWludGFpbmVkIHNl cnZlcicsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAor ICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0 JywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAgICB1c2VybmFt ZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBhcmdzPVsKKyAgICAgICAgICAgICAgICAg ICAgICctLWhvc3QnLAorICAgICAgICAgICAgICAgICAgICAgImxvY2FsaG9zdCIsCisgICAgICAg ICAgICAgICAgICAgICAnLS1wb3J0JywKKyAgICAgICAgICAgICAgICAgICAgICI1NDQ0IiwKKyAg ICAgICAgICAgICAgICAgICAgICctLXVzZXJuYW1lJywKKyAgICAgICAgICAgICAgICAgICAgICct LWRibmFtZScsCisgICAgICAgICAgICAgICAgICAgICAicG9zdGdyZXMiLAorICAgICAgICAgICAg ICAgICAgICAgJy0tY29tbWFuZCcsCisgICAgICAgICAgICAgICAgICAgICAiVkFDVVVNIFZFUkJP U0U7XG4iCisgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgIGRhdGE9eworICAg ICAgICAgICAgICAgICAgICAgJ2RhdGFiYXNlJzogJ3Bvc3RncmVzJywKKyAgICAgICAgICAgICAg ICAgICAgICdvcCc6ICdWQUNVVU0nLAorICAgICAgICAgICAgICAgICAgICAgJ3ZhY3V1bV9hbmFs eXplJzogRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAndmFjdXVtX2ZyZWV6ZSc6IEZhbHNl LAorICAgICAgICAgICAgICAgICAgICAgJ3ZhY3V1bV9mdWxsJzogRmFsc2UsCisgICAgICAgICAg ICAgICAgICAgICAndmVyYm9zZSc6IFRydWUKKyAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg ICAgICAgICAgY21kPSJWQUNVVU0gVkVSQk9TRTtcbiIKKyAgICAgICAgICAgICApLAorICAgICAg ICAgICAgIGV4cGVjdGVkX21zZz0iTWFpbnRlbmFuY2UgKFZhY3V1bSkiLAorICAgICAgICAgICAg IGV4cGV0Y2VkX2RldGFpbHNfY21kPSdWQUNVVU0gVkVSQk9TRTsnCisgICAgICAgICApKQorICAg IF0KKworICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMuUG9wZW4n KQorICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMuY3VycmVudF9h cHAnKQorICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMuZGInKQor ICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5tYWludGVuYW5jZS5TZXJ2ZXInKQorICAgIEBwYXRj aCgncGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMuY3VycmVudF91c2VyJykKKyAgICBk ZWYgcnVuVGVzdChzZWxmLCBjdXJyZW50X3VzZXJfbW9jaywgc2VydmVyX21vY2ssIGRiX21vY2ss CisgICAgICAgICAgICAgICAgY3VycmVudF9hcHBfbW9jaywgcG9wZW5fbW9jayk6CisgICAgICAg IGN1cnJlbnRfdXNlcl9tb2NrLmlkID0gMQorICAgICAgICBjdXJyZW50X2FwcF9tb2NrLlBHQURN SU5fUlVOVElNRSA9IEZhbHNlCisKKyAgICAgICAgY2xhc3MgVGVzdE1vY2tTZXJ2ZXIoKToKKyAg ICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBob3N0LCBwb3J0KToKKyAgICAgICAg ICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgICAgICAgICAgc2VsZi5ob3N0ID0gaG9z dAorICAgICAgICAgICAgICAgIHNlbGYucG9ydCA9IHBvcnQKKworICAgICAgICBkZWYgZGJfc2Vz c2lvbl9hZGRfbW9jayhqKToKKyAgICAgICAgICAgIGNtZF9vYmogPSBsb2FkcyhqLmRlc2MpCisg ICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShjbWRfb2JqLCBJUHJvY2Vzc0Rlc2MpCisgICAg ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjbWRfb2JqLnF1ZXJ5LCBzZWxmLmNsYXNzX3BhcmFt c1snY21kJ10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjbWRfb2JqLm1lc3NhZ2Us IHNlbGYuZXhwZWN0ZWRfbXNnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY21kX29i ai5kYXRhLCBzZWxmLmNsYXNzX3BhcmFtc1snZGF0YSddKQorCisgICAgICAgIG1vY2tfb2JqID0g VGVzdE1vY2tTZXJ2ZXIoc2VsZi5jbGFzc19wYXJhbXNbJ3VzZXJuYW1lJ10sCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2hvc3QnXSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1sncG9ydCddKQor ICAgICAgICBtb2NrX3Jlc3VsdCA9IHNlcnZlcl9tb2NrLnF1ZXJ5LmZpbHRlcl9ieS5yZXR1cm5f dmFsdWUKKyAgICAgICAgbW9ja19yZXN1bHQuZmlyc3QucmV0dXJuX3ZhbHVlID0gbW9ja19vYmoK KworICAgICAgICBkYl9tb2NrLnNlc3Npb24uYWRkLnNpZGVfZWZmZWN0ID0gZGJfc2Vzc2lvbl9h ZGRfbW9jaworCisgICAgICAgIG1haW50ZW5hbmNlX29iaiA9IE1lc3NhZ2UoCisgICAgICAgICAg ICBzZWxmLmNsYXNzX3BhcmFtc1snc2lkJ10sCisgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFt c1snZGF0YSddLAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2NtZCddCisgICAgICAg ICkKKworICAgICAgICBwID0gQmF0Y2hQcm9jZXNzKAorICAgICAgICAgICAgZGVzYz1tYWludGVu YW5jZV9vYmosCisgICAgICAgICAgICBjbWQ9c2VsZi5jbGFzc19wYXJhbXNbJ2NtZCddLAorICAg ICAgICAgICAgYXJncz1zZWxmLmNsYXNzX3BhcmFtc1snYXJncyddCisgICAgICAgICkKKworICAg ICAgICAjIENoZWNrIHRoYXQgX2NyZWF0ZV9wcm9jZXNzIGhhcyBiZWVuIGNhbGxlZAorICAgICAg ICBhc3NlcnQgZGJfbW9jay5zZXNzaW9uLmFkZC5jYWxsZWQKKworICAgICAgICAjIENoZWNrIHN0 YXJ0IG1ldGhvZAorICAgICAgICBzZWxmLl9jaGVja19zdGFydChwb3Blbl9tb2NrLCBwKQorCisg ICAgICAgICMgQ2hlY2sgbGlzdCBtZXRob2QKKyAgICAgICAgc2VsZi5fY2hlY2tfbGlzdChwLCBt YWludGVuYW5jZV9vYmopCisKKyAgICBkZWYgX2NoZWNrX3N0YXJ0KHNlbGYsIHBvcGVuX21vY2ss IHApOgorICAgICAgICBjbWRfdGVzdCA9IHNlbGYuY2xhc3NfcGFyYW1zWydjbWQnXQorCisgICAg ICAgIGNsYXNzIHBvcGVuTW9ja1NpZGVFZmZlY3QoKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRf XyhzZWxmLCBjbWQsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICBhc3NlcnQgY21kX3Rlc3Qg aW4gY21kCisgICAgICAgICAgICAgICAgYXNzZXJ0ICdlbnYnIGluIGt3YXJncworCisgICAgICAg ICAgICBkZWYgcG9sbChzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgcG9w ZW5fbW9jay5zaWRlX2VmZmVjdCA9IHBvcGVuTW9ja1NpZGVFZmZlY3QKKyAgICAgICAgcC5zdGFy dCgpCisKKyAgICAgICAgYXNzZXJ0IHBvcGVuX21vY2suY2FsbGVkCisKKyAgICBAcGF0Y2goJ3Bn YWRtaW4ubWlzYy5iZ3Byb2Nlc3MucHJvY2Vzc2VzLlByb2Nlc3MnKQorICAgIEBwYXRjaCgncGdh ZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMuQmF0Y2hQcm9jZXNzLicKKyAgICAgICAgICAg J3VwZGF0ZV9wcm9jZXNzX2luZm8nKQorICAgIGRlZiBfY2hlY2tfbGlzdChzZWxmLCBwLCBtYWlu dGVuYW5jZV9vYmosIHVwZGF0ZV9wcm9jZXNzX2luZm9fbW9jaywKKyAgICAgICAgICAgICAgICAg ICAgcHJvY2Vzc19tb2NrKToKKyAgICAgICAgY2xhc3MgVGVzdE1vY2tQcm9jZXNzKCk6CisgICAg ICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZGVzYywgYXJncywgY21kKToKKyAgICAgICAgICAg ICAgICBzZWxmLnBpZCA9IDEKKyAgICAgICAgICAgICAgICBzZWxmLmV4aXRfY29kZSA9IDEKKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXJ0X3RpbWUgPSAnMjAxOC0wNC0xNyAwNjoxODo1Ni4zMTU0 NDUgKzAwMDAnCisgICAgICAgICAgICAgICAgc2VsZi5lbmRfdGltZSA9IE5vbmUKKyAgICAgICAg ICAgICAgICBzZWxmLmRlc2MgPSBkdW1wcyhkZXNjKQorICAgICAgICAgICAgICAgIHNlbGYuYXJn dW1lbnRzID0gIiAiLmpvaW4oYXJncykKKyAgICAgICAgICAgICAgICBzZWxmLmNvbW1hbmQgPSBj bWQKKyAgICAgICAgICAgICAgICBzZWxmLmFja25vd2xlZGdlID0gTm9uZQorCisgICAgICAgIHBy b2Nlc3NfbW9jay5xdWVyeS5maWx0ZXJfYnkucmV0dXJuX3ZhbHVlID0gWworICAgICAgICAgICAg VGVzdE1vY2tQcm9jZXNzKG1haW50ZW5hbmNlX29iaiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZWxmLmNsYXNzX3BhcmFtc1snYXJncyddLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNlbGYuY2xhc3NfcGFyYW1zWydjbWQnXSkKKyAgICAgICAgXQorCisgICAgICAgIHVwZGF0 ZV9wcm9jZXNzX2luZm9fbW9jay5yZXR1cm5fdmFsdWUgPSBbVHJ1ZSwgVHJ1ZV0KKworICAgICAg ICByZXRfdmFsdWUgPSBwLmxpc3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihy ZXRfdmFsdWUpKQorICAgICAgICBhc3NlcnQgJ2RldGFpbHMnIGluIHJldF92YWx1ZVswXQorICAg ICAgICBhc3NlcnQgJ2Rlc2MnIGluIHJldF92YWx1ZVswXQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vdG9vbHMvbWFpbnRlbmFuY2UvdGVzdHMvdGVzdF9jcmVhdGVfbWFpbnRlbmFuY2Vfam9iLnB5 IGIvd2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFuY2UvdGVzdHMvdGVzdF9jcmVhdGVfbWFpbnRl bmFuY2Vfam9iLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlMDFmMWQK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9tYWludGVuYW5jZS90ZXN0cy90 ZXN0X2NyZWF0ZV9tYWludGVuYW5jZV9qb2IucHkKQEAgLTAsMCArMSwxNDAgQEAKKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJp Z2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlz IHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCitpbXBvcnQgdGltZQoraW1wb3J0IHJhbmRvbQoraW1wb3J0IHNpbXBs ZWpzb24gYXMganNvbgorCitmcm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VUZXN0 R2VuZXJhdG9yCitmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHBhcmVudF9ub2RlX2RpY3QKK2Zyb20g cmVncmVzc2lvbi5weXRob25fdGVzdF91dGlscyBpbXBvcnQgdGVzdF91dGlscyBhcyB1dGlscwor ZnJvbSBwZ2FkbWluLnV0aWxzIGltcG9ydCBzZXJ2ZXJfdXRpbHMgYXMgc2VydmVyX3V0aWxzCitm cm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnRlc3Rz IGltcG9ydCB1dGlscyBhcyBcCisgICAgZGF0YWJhc2VfdXRpbHMKKworCitjbGFzcyBNYWludGVu YW5jZUpvYlRlc3QoQmFzZVRlc3RHZW5lcmF0b3IpOgorICAgICIiIk1haW50ZW5hbmNlIGFwaSB0 ZXN0IGNhc2VzIiIiCisgICAgc2NlbmFyaW9zID0gWworICAgICAgICAoJ1doZW4gbWFpbnRlbmFu Y2UgdGhlIG9iamVjdCB3aXRoIHRoZSBkZWZhdWx0IG9wdGlvbnMnLAorICAgICAgICAgZGljdCgK KyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgZGF0YT17CisgICAg ICAgICAgICAgICAgICAgICAnZGF0YWJhc2UnOiAncG9zdGdyZXMnLAorICAgICAgICAgICAgICAg ICAgICAgJ29wJzogJ1ZBQ1VVTScsCisgICAgICAgICAgICAgICAgICAgICAndmFjdXVtX2FuYWx5 emUnOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICd2YWN1dW1fZnJlZXplJzogRmFsc2Us CisgICAgICAgICAgICAgICAgICAgICAndmFjdXVtX2Z1bGwnOiBGYWxzZSwKKyAgICAgICAgICAg ICAgICAgICAgICd2ZXJib3NlJzogVHJ1ZQorICAgICAgICAgICAgICAgICB9LAorICAgICAgICAg ICAgICAgICBjbWQ9IlZBQ1VVTSBWRVJCT1NFO1xuIgorICAgICAgICAgICAgICksCisgICAgICAg ICAgICAgdXJsPScvbWFpbnRlbmFuY2Uvam9iL3swfS97MX0nLAorICAgICAgICAgICAgIGV4cGVj dGVkX2NtZD0nVkFDVVVNIFZFUkJPU0UnLAorICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29k ZT1bMCwgTm9uZV0KKyAgICAgICAgICkpCisgICAgXQorCisgICAgZGVmIHNldFVwKHNlbGYpOgor ICAgICAgICBpZiBzZWxmLnNlcnZlclsnZGVmYXVsdF9iaW5hcnlfcGF0aHMnXSBpcyBOb25lOgor ICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgKKyAgICAgICAgICAgICAgICAiZGVmYXVsdF9iaW5h cnlfcGF0aHMgaXMgbm90IHNldCBmb3IgdGhlIHNlcnZlciB7MH0iLmZvcm1hdCgKKyAgICAgICAg ICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ25hbWUnXQorICAgICAgICAgICAgICAgICkKKyAgICAg ICAgICAgICkKKworICAgIGRlZiBydW5UZXN0KHNlbGYpOgorICAgICAgICBzZWxmLmRiX25hbWUg PSAnJworICAgICAgICBzZWxmLnNlcnZlcl9pZCA9IHBhcmVudF9ub2RlX2RpY3RbImRhdGFiYXNl Il1bLTFdWyJzZXJ2ZXJfaWQiXQorICAgICAgICBzZWxmLmRiX2lkID0gcGFyZW50X25vZGVfZGlj dFsiZGF0YWJhc2UiXVstMV1bImRiX2lkIl0KKyAgICAgICAgdXJsID0gc2VsZi51cmwuZm9ybWF0 KHNlbGYuc2VydmVyX2lkLCBzZWxmLmRiX2lkKQorCisgICAgICAgICMgQ3JlYXRlIHRoZSBiYWNr dXAgam9iCisgICAgICAgIHJlc3BvbnNlID0gc2VsZi50ZXN0ZXIucG9zdCh1cmwsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWpzb24uZHVtcHMoc2VsZi5wYXJhbXNb J2RhdGEnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50X3R5 cGU9J2h0bWwvanNvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3BvbnNlLnN0YXR1 c19jb2RlLCAyMDApCisgICAgICAgIHJlc3BvbnNlX2RhdGEgPSBqc29uLmxvYWRzKHJlc3BvbnNl LmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorICAgICAgICBqb2JfaWQgPSByZXNwb25zZV9kYXRhWydk YXRhJ11bJ2pvYl9pZCddCisKKyAgICAgICAgY250ID0gMAorICAgICAgICB3aGlsZSAxOgorICAg ICAgICAgICAgaWYgY250ID4gMToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAg IyBDaGVjayB0aGUgcHJvY2VzcyBsaXN0CisgICAgICAgICAgICByZXNwb25zZTEgPSBzZWxmLnRl c3Rlci5nZXQoJy9taXNjL2JncHJvY2Vzcy8/Xz0nLmZvcm1hdCgKKyAgICAgICAgICAgICAgICBy YW5kb20ucmFuZGludCgxLCA5OTk5OTk5KSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs cyhyZXNwb25zZTEuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgICAgIHByb2Nlc3NfbGlzdCA9 IGpzb24ubG9hZHMocmVzcG9uc2UxLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorCisgICAgICAgICAg ICBpZiBsZW4ocHJvY2Vzc19saXN0KSA+IDAgYW5kICdleGVjdXRpb25fdGltZScgaW4gcHJvY2Vz c19saXN0WzBdOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICB0aW1lLnNsZWVw KDAuNSkKKyAgICAgICAgICAgIGNudCArPSAxCisKKyAgICAgICAgYXNzZXJ0ICdleGVjdXRpb25f dGltZScgaW4gcHJvY2Vzc19saXN0WzBdCisgICAgICAgIGFzc2VydCAnc3RpbWUnIGluIHByb2Nl c3NfbGlzdFswXQorICAgICAgICBhc3NlcnQgJ2V4aXRfY29kZScgaW4gcHJvY2Vzc19saXN0WzBd CisgICAgICAgIGFzc2VydCBwcm9jZXNzX2xpc3RbMF1bJ2V4aXRfY29kZSddIGluIHNlbGYuZXhw ZWN0ZWRfZXhpdF9jb2RlCisKKyAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLmV4cGVjdGVkX2Nt ZCwgcHJvY2Vzc19saXN0WzBdWydkZXRhaWxzJ10pCisKKyAgICAgICAgIyBDaGVjayB0aGUgcHJv Y2VzcyBkZXRhaWxzCisgICAgICAgIHBfZGV0YWlscyA9IHNlbGYudGVzdGVyLmdldCgnL21pc2Mv Ymdwcm9jZXNzL3swfT9fPScuZm9ybWF0KAorICAgICAgICAgICAgam9iX2lkLCByYW5kb20ucmFu ZGludCgxLCA5OTk5OTk5KSkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhw X2RldGFpbHMuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgcF9kZXRhaWxzX2RhdGEgPSBqc29u LmxvYWRzKHBfZGV0YWlscy5kYXRhLmRlY29kZSgndXRmLTgnKSkKKworICAgICAgICBwX2RldGFp bHMgPSBzZWxmLnRlc3Rlci5nZXQoJy9taXNjL2JncHJvY2Vzcy97MH0vezF9L3syfS8/Xz0nLmZv cm1hdCgKKyAgICAgICAgICAgIGpvYl9pZCwgMCwgMCwgcmFuZG9tLnJhbmRpbnQoMSwgOTk5OTk5 OSkpCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocF9kZXRhaWxzLnN0YXR1 c19jb2RlLCAyMDApCisgICAgICAgIHBfZGV0YWlsc19kYXRhID0ganNvbi5sb2FkcyhwX2RldGFp bHMuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisKKyAgICAgICAgIyBSZXRyaWV2ZSB0aGUgYmFja3Vw IGpvYiBwcm9jZXNzIGxvZ3MKKyAgICAgICAgd2hpbGUgMToKKyAgICAgICAgICAgIG91dCwgZXJy LCBzdGF0dXMgPSBNYWludGVuYW5jZUpvYlRlc3QuZ2V0X3BhcmFtcyhwX2RldGFpbHNfZGF0YSkK KyAgICAgICAgICAgIGlmIHN0YXR1czoKKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAg ICAgICBwX2RldGFpbHMgPSBzZWxmLnRlc3Rlci5nZXQoCisgICAgICAgICAgICAgICAgJy9taXNj L2JncHJvY2Vzcy97MH0vezF9L3syfS8/Xz17M30nLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAg ICAgam9iX2lkLCBvdXQsIGVyciwgcmFuZG9tLnJhbmRpbnQoMSwgOTk5OTk5OSkpCisgICAgICAg ICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwX2RldGFpbHMuc3RhdHVzX2Nv ZGUsIDIwMCkKKyAgICAgICAgICAgIHBfZGV0YWlsc19kYXRhID0ganNvbi5sb2FkcyhwX2RldGFp bHMuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisKKyAgICAgICAgICAgIHRpbWUuc2xlZXAoMSkKKwor ICAgICAgICAjIENoZWNrIHRoZSBqb2IgaXMgY29tcGxldGUuCisgICAgICAgIGJhY2t1cF9hY2sg PSBzZWxmLnRlc3Rlci5wdXQoJy9taXNjL2JncHJvY2Vzcy97MH0nLmZvcm1hdChqb2JfaWQpKQor ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhiYWNrdXBfYWNrLnN0YXR1c19jb2RlLCAyMDApCisg ICAgICAgIGJhY2t1cF9hY2tfcmVzID0ganNvbi5sb2FkcyhiYWNrdXBfYWNrLmRhdGEuZGVjb2Rl KCd1dGYtOCcpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGJhY2t1cF9hY2tfcmVzWydz dWNjZXNzJ10sIDEpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGdldF9wYXJhbXMoZGF0 YSk6CisgICAgICAgIG91dCA9IDAKKyAgICAgICAgb3V0X2RvbmUgPSBGYWxzZQorICAgICAgICBl cnIgPSAwCisgICAgICAgIGVycl9kb25lID0gRmFsc2UKKyAgICAgICAgaWYgJ291dCcgaW4gZGF0 YToKKyAgICAgICAgICAgIG91dCA9IGRhdGFbJ291dCddIGFuZCBkYXRhWydvdXQnXVsncG9zJ10K KworICAgICAgICAgICAgaWYgJ2RvbmUnIGluIGRhdGFbJ291dCddOgorICAgICAgICAgICAgICAg IG91dF9kb25lID0gZGF0YVsnb3V0J11bJ2RvbmUnXQorCisgICAgICAgIGlmICdlcnInIGluIGRh dGE6CisgICAgICAgICAgICBlcnIgPSBkYXRhWydlcnInXSBhbmQgZGF0YVsnZXJyJ11bJ3Bvcydd CisKKyAgICAgICAgICAgIGlmICdkb25lJyBpbiBkYXRhWydlcnInXToKKyAgICAgICAgICAgICAg ICBlcnJfZG9uZSA9IGRhdGFbJ2VyciddWydkb25lJ10KKworICAgICAgICByZXR1cm4gb3V0LCBl cnIsIChvdXRfZG9uZSBhbmQgZXJyX2RvbmUpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29s cy9tYWludGVuYW5jZS90ZXN0cy90ZXN0X21haW50ZW5hbmNlX2NyZWF0ZV9qb2JfdW5pdF90ZXN0 LnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFuY2UvdGVzdHMvdGVzdF9tYWludGVuYW5j ZV9jcmVhdGVfam9iX3VuaXRfdGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi41OGFlZjVjCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRl bmFuY2UvdGVzdHMvdGVzdF9tYWludGVuYW5jZV9jcmVhdGVfam9iX3VuaXRfdGVzdC5weQpAQCAt MCwwICsxLDE5OCBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdy ZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBE ZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBv c3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCitpbXBvcnQgc3lzCitp bXBvcnQgc2ltcGxlanNvbiBhcyBqc29uCisKKworZnJvbSBwZ2FkbWluLm1pc2MuYmdwcm9jZXNz LnByb2Nlc3NlcyBpbXBvcnQgQmF0Y2hQcm9jZXNzCitmcm9tIHBnYWRtaW4udG9vbHMubWFpbnRl bmFuY2UgaW1wb3J0IE1lc3NhZ2UKK2Zyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFz ZVRlc3RHZW5lcmF0b3IKK2Zyb20gcmVncmVzc2lvbiBpbXBvcnQgcGFyZW50X25vZGVfZGljdAor ZnJvbSByZWdyZXNzaW9uLnB5dGhvbl90ZXN0X3V0aWxzIGltcG9ydCB0ZXN0X3V0aWxzIGFzIHV0 aWxzCitmcm9tIHBnYWRtaW4udXRpbHMgaW1wb3J0IHNlcnZlcl91dGlscyBhcyBzZXJ2ZXJfdXRp bHMKK2Zyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMu dGVzdHMgaW1wb3J0IHV0aWxzIGFzIFwKKyAgICBkYXRhYmFzZV91dGlscworCisKK2lmIHN5cy52 ZXJzaW9uX2luZm8gPCAoMywgMyk6CisgICAgZnJvbSBtb2NrIGltcG9ydCBwYXRjaCwgTWFnaWNN b2NrCitlbHNlOgorICAgIGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgcGF0Y2gsIE1hZ2ljTW9j aworCisKK2NsYXNzIE1haW50ZW5hbmNlQ3JlYXRlSm9iVGVzdChCYXNlVGVzdEdlbmVyYXRvcik6 CisgICAgIiIiVGVzdCB0aGUgQmFja3VwQ3JlYXRlSm9iIGNsYXNzIiIiCisgICAgc2NlbmFyaW9z ID0gWworICAgICAgICAoJ1doZW4gbWFpbnRlbmFuY2Ugb2JqZWN0IHdpdGggZGVmYXVsdCBvcHRp b25zJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisg ICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X21haW50 ZW5hbmNlX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAg ICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3Rn cmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgcGFyYW1zPWRpY3QoCisgICAgICAg ICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIG9wPSdWQUNV VU0nLAorICAgICAgICAgICAgICAgICB2YWN1dW1fYW5hbHl6ZT1GYWxzZSwKKyAgICAgICAgICAg ICAgICAgdmFjdXVtX2ZyZWV6ZT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgdmFjdXVtX2Z1bGw9 RmFsc2UsCisgICAgICAgICAgICAgICAgIHZlcmJvc2U9VHJ1ZQorICAgICAgICAgICAgICksCisg ICAgICAgICAgICAgdXJsPScvbWFpbnRlbmFuY2Uvam9iL3swfS97MX0nLAorICAgICAgICAgICAg IGV4cGVjdGVkX2NtZF9vcHRzPVsnVkFDVVVNIFZFUkJPU0U7XG4nXSwKKyAgICAgICAgICkpLAor ICAgICAgICAoJ1doZW4gbWFpbnRlbmFuY2Ugb2JqZWN0IHdpdGggVkFDVVVNIEZVTEwnLAorICAg ICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAg ICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfbWFpbnRlbmFuY2Vfc2Vy dmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0 PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnCisgICAg ICAgICAgICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAg ZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgb3A9J1ZBQ1VVTScsCisgICAg ICAgICAgICAgICAgIHZhY3V1bV9hbmFseXplPUZhbHNlLAorICAgICAgICAgICAgICAgICB2YWN1 dW1fZnJlZXplPUZhbHNlLAorICAgICAgICAgICAgICAgICB2YWN1dW1fZnVsbD1UcnVlLAorICAg ICAgICAgICAgICAgICB2ZXJib3NlPVRydWUKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAg IHVybD0nL21haW50ZW5hbmNlL2pvYi97MH0vezF9JywKKyAgICAgICAgICAgICBleHBlY3RlZF9j bWRfb3B0cz1bJ1ZBQ1VVTSBGVUxMIFZFUkJPU0U7XG4nXSwKKyAgICAgICAgICkpLAorICAgICAg ICAoJ1doZW4gbWFpbnRlbmFuY2Ugb2JqZWN0IHdpdGggdGhlIEFOQUxZWkUnLAorICAgICAgICAg ZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAg c2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfbWFpbnRlbmFuY2Vfc2VydmVyJywK KyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0PSdsb2Nh bGhvc3QnLAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnCisgICAgICAgICAg ICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgZGF0YWJh c2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgb3A9J0FOQUxZWkUnLAorICAgICAgICAg ICAgICAgICB2YWN1dW1fYW5hbHl6ZT1UcnVlLAorICAgICAgICAgICAgICAgICB2YWN1dW1fZnJl ZXplPUZhbHNlLAorICAgICAgICAgICAgICAgICB2YWN1dW1fZnVsbD1GYWxzZSwKKyAgICAgICAg ICAgICAgICAgdmVyYm9zZT1UcnVlCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9 Jy9tYWludGVuYW5jZS9qb2IvezB9L3sxfScsCisgICAgICAgICAgICAgZXhwZWN0ZWRfY21kX29w dHM9WydBTkFMWVpFIFZFUkJPU0U7XG4nXSwKKyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4g bWFpbnRlbmFuY2UgdGhlIG9iamVjdCB3aXRoIHRoZSBSRUlOREVYJywKKyAgICAgICAgIGRpY3Qo CisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNpZD0x LAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X21haW50ZW5hbmNlX3NlcnZlcicsCisgICAg ICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0 JywKKyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAgICks CisgICAgICAgICAgICAgcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdw b3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIG9wPSdSRUlOREVYJywKKyAgICAgICAgICAgICAg ICAgdmFjdXVtX2FuYWx5emU9RmFsc2UsCisgICAgICAgICAgICAgICAgIHZhY3V1bV9mcmVlemU9 RmFsc2UsCisgICAgICAgICAgICAgICAgIHZhY3V1bV9mdWxsPUZhbHNlLAorICAgICAgICAgICAg ICAgICB2ZXJib3NlPUZhbHNlCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9Jy9t YWludGVuYW5jZS9qb2IvezB9L3sxfScsCisgICAgICAgICAgICAgZXhwZWN0ZWRfY21kX29wdHM9 WydSRUlOREVYIERBVEFCQVNFIHBvc3RncmVzO1xuJ10sCisgICAgICAgICApKSwKKyAgICAgICAg KCdXaGVuIG1haW50ZW5hbmNlIHRoZSBvYmplY3Qgd2l0aCB0aGUgQ0xVU1RFUicsCisgICAgICAg ICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAg ICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9tYWludGVuYW5jZV9zZXJ2ZXIn LAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xv Y2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAg ICAgICApLAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBkYXRh YmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBvcD0nQ0xVU1RFUicsCisgICAgICAg ICAgICAgICAgIHZhY3V1bV9hbmFseXplPUZhbHNlLAorICAgICAgICAgICAgICAgICB2YWN1dW1f ZnJlZXplPUZhbHNlLAorICAgICAgICAgICAgICAgICB2YWN1dW1fZnVsbD1GYWxzZSwKKyAgICAg ICAgICAgICAgICAgdmVyYm9zZT1GYWxzZQorICAgICAgICAgICAgICksCisgICAgICAgICAgICAg dXJsPScvbWFpbnRlbmFuY2Uvam9iL3swfS97MX0nLAorICAgICAgICAgICAgIGV4cGVjdGVkX2Nt ZF9vcHRzPVsnQ0xVU1RFUjtcbiddLAorICAgICAgICAgKSkKKyAgICBdCisKKyAgICBkZWYgc2V0 VXAoc2VsZik6CisgICAgICAgIGlmIHNlbGYuc2VydmVyWydkZWZhdWx0X2JpbmFyeV9wYXRocydd IGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KAorICAgICAgICAgICAgICAgICJk ZWZhdWx0X2JpbmFyeV9wYXRocyBpcyBub3Qgc2V0IGZvciB0aGUgc2VydmVyIHswfSIuZm9ybWF0 KAorICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlclsnbmFtZSddCisgICAgICAgICAgICAg ICAgKQorICAgICAgICAgICAgKQorCisgICAgQHBhdGNoKCdwZ2FkbWluLnRvb2xzLm1haW50ZW5h bmNlLlNlcnZlcicpCisgICAgQHBhdGNoKCdwZ2FkbWluLnRvb2xzLm1haW50ZW5hbmNlLk1lc3Nh Z2UnKQorICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5tYWludGVuYW5jZS5CYXRjaFByb2Nlc3Mn KQorICAgIEBwYXRjaCgncGdhZG1pbi51dGlscy5kcml2ZXIucHN5Y29wZzIuc2VydmVyX21hbmFn ZXIuU2VydmVyTWFuYWdlci4nCisgICAgICAgICAgICdleHBvcnRfcGFzc3dvcmRfZW52JykKKyAg ICBkZWYgcnVuVGVzdChzZWxmLCBleHBvcnRfcGFzc3dvcmRfZW52X21vY2ssCisgICAgICAgICAg ICAgICAgYmF0Y2hfcHJvY2Vzc19tb2NrLCBtZXNzYWdlX21vY2ssIHNlcnZlcl9tb2NrKToKKyAg ICAgICAgc2VsZi5zZXJ2ZXJfaWQgPSBwYXJlbnRfbm9kZV9kaWN0WyJkYXRhYmFzZSJdWy0xXVsi c2VydmVyX2lkIl0KKyAgICAgICAgc2VsZi5kYl9pZCA9IHBhcmVudF9ub2RlX2RpY3RbImRhdGFi YXNlIl1bLTFdWyJkYl9pZCJdCisgICAgICAgIHVybCA9IHNlbGYudXJsLmZvcm1hdChzZWxmLnNl cnZlcl9pZCwgc2VsZi5kYl9pZCkKKworICAgICAgICBjbGFzcyBUZXN0TW9ja1NlcnZlcigpOgor ICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnQsIGlkLCB1c2VybmFtZSk6 CisgICAgICAgICAgICAgICAgc2VsZi5ob3N0ID0gaG9zdAorICAgICAgICAgICAgICAgIHNlbGYu cG9ydCA9IHBvcnQKKyAgICAgICAgICAgICAgICBzZWxmLmlkID0gaWQKKyAgICAgICAgICAgICAg ICBzZWxmLnVzZXJuYW1lID0gdXNlcm5hbWUKKworICAgICAgICBtb2NrX29iaiA9IFRlc3RNb2Nr U2VydmVyKHNlbGYuY2xhc3NfcGFyYW1zWydob3N0J10sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3BvcnQnXSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1sndXNlcm5hbWUnXQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgbW9ja19yZXN1bHQgPSBzZXJ2ZXJfbW9jay5x dWVyeS5maWx0ZXJfYnkucmV0dXJuX3ZhbHVlCisgICAgICAgIG1vY2tfcmVzdWx0LmZpcnN0LnJl dHVybl92YWx1ZSA9IG1vY2tfb2JqCisKKyAgICAgICAgYmF0Y2hfcHJvY2Vzc19tb2NrLnNldF9l bnZfdmFyaWFibGVzID0gTWFnaWNNb2NrKAorICAgICAgICAgICAgcmV0dXJuX3ZhbHVlPVRydWUK KyAgICAgICAgKQorICAgICAgICBiYXRjaF9wcm9jZXNzX21vY2suc3RhcnQgPSBNYWdpY01vY2so CisgICAgICAgICAgICByZXR1cm5fdmFsdWU9VHJ1ZQorICAgICAgICApCisgICAgICAgIGV4cG9y dF9wYXNzd29yZF9lbnZfbW9jay5yZXR1cm5fdmFsdWUgPSBUcnVlCisKKyAgICAgICAgc2VydmVy X3Jlc3BvbnNlID0gc2VydmVyX3V0aWxzLmNvbm5lY3Rfc2VydmVyKHNlbGYsIHNlbGYuc2VydmVy X2lkKQorICAgICAgICBpZiBzZXJ2ZXJfcmVzcG9uc2VbImluZm8iXSA9PSAiU2VydmVyIGNvbm5l Y3RlZC4iOgorICAgICAgICAgICAgZGJfb3duZXIgPSBzZXJ2ZXJfcmVzcG9uc2VbJ2RhdGEnXVsn dXNlciddWyduYW1lJ10KKyAgICAgICAgICAgIHNlbGYuZGF0YSA9IGRhdGFiYXNlX3V0aWxzLmdl dF9kYl9kYXRhKGRiX293bmVyKQorICAgICAgICAgICAgc2VsZi5kYl9uYW1lID0gc2VsZi5kYXRh WyduYW1lJ10KKworICAgICAgICAjIENyZWF0ZSB0aGUgYmFja3VwIGpvYgorICAgICAgICByZXNw b25zZSA9IHNlbGYudGVzdGVyLnBvc3QodXJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZGF0YT1qc29uLmR1bXBzKHNlbGYucGFyYW1zKSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlwZT0naHRtbC9qc29uJykKKyAgICAgICAgc2Vs Zi5hc3NlcnRFcXVhbHMocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgcmVzcG9u c2VfZGF0YSA9IGpzb24ubG9hZHMocmVzcG9uc2UuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisgICAg ICAgIGpvYl9pZCA9IHJlc3BvbnNlX2RhdGFbJ2RhdGEnXVsnam9iX2lkJ10KKworICAgICAgICBh c3NlcnQgbWVzc2FnZV9tb2NrLmNhbGxlZAorICAgICAgICBhc3NlcnQgYmF0Y2hfcHJvY2Vzc19t b2NrLmNhbGxlZAorCisgICAgICAgIGlmIHNlbGYuZXhwZWN0ZWRfY21kX29wdHM6CisgICAgICAg ICAgICBmb3Igb3B0IGluIHNlbGYuZXhwZWN0ZWRfY21kX29wdHM6CisgICAgICAgICAgICAgICAg c2VsZi5hc3NlcnRJbihvcHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXRjaF9w cm9jZXNzX21vY2suY2FsbF9hcmdzX2xpc3RbMF1bMV1bJ2FyZ3MnXSkKZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL3Rvb2xzL21haW50ZW5hbmNlL3Rlc3RzL3Rlc3RfbWFpbnRlbmFuY2VfbWVzc2Fn ZS5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL21haW50ZW5hbmNlL3Rlc3RzL3Rlc3RfbWFpbnRlbmFu Y2VfbWVzc2FnZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Y2I4OWVk Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFuY2UvdGVzdHMv dGVzdF9tYWludGVuYW5jZV9tZXNzYWdlLnB5CkBAIC0wLDAgKzEsMTI0IEBACisjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdo dCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBz b2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworCitmcm9tIGZsYXNrIGltcG9ydCBSZXNwb25zZQoraW1wb3J0IHNpbXBs ZWpzb24gYXMganNvbgorCitmcm9tIHBnYWRtaW4udG9vbHMubWFpbnRlbmFuY2UgaW1wb3J0IE1l c3NhZ2UKK2Zyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IK KworCitjbGFzcyBNYWludGVuYW5jZU1lc3NhZ2VUZXN0KEJhc2VUZXN0R2VuZXJhdG9yKToKKyAg ICAiIiJUZXN0IHRoZSBNYWludGVuYW5jZSBNZXNzYWdlIGNsYXNzIiIiCisgICAgc2NlbmFyaW9z ID0gWworICAgICAgICAoJ1doZW4gbWFpbnRhaW5lZCB0aGUgc2VydmVyJywKKyAgICAgICAgIGRp Y3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNp ZD0xLAorICAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAgICAgICAgICdkYXRh YmFzZSc6ICdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgICAgICAnb3AnOiAnVkFDVVVNJywK KyAgICAgICAgICAgICAgICAgICAgICd2YWN1dW1fYW5hbHl6ZSc6IEZhbHNlLAorICAgICAgICAg ICAgICAgICAgICAgJ3ZhY3V1bV9mcmVlemUnOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAg ICd2YWN1dW1fZnVsbCc6IEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UnOiBU cnVlCisgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIGNtZD0iVkFDVVVNIFZF UkJPU0U7XG4iCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBleHRlY3RlZF9tc2c9Ik1h aW50ZW5hbmNlIChWYWN1dW0pIiwKKyAgICAgICAgICAgICBleHBldGNlZF9kZXRhaWxzX2NtZD0n VkFDVVVNIFZFUkJPU0U7JworCisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIG1haW50YWlu ZWQgdGhlIHNlcnZlciB3aXRoIEZVTEwgVkVSQk9TRSBvcHRpb25zJywKKyAgICAgICAgIGRpY3Qo CisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNpZD0x LAorICAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAgICAgICAgICdkYXRhYmFz ZSc6ICdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgICAgICAnb3AnOiAnVkFDVVVNJywKKyAg ICAgICAgICAgICAgICAgICAgICd2YWN1dW1fYW5hbHl6ZSc6IEZhbHNlLAorICAgICAgICAgICAg ICAgICAgICAgJ3ZhY3V1bV9mcmVlemUnOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICd2 YWN1dW1fZnVsbCc6IFRydWUsCisgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZSc6IFRydWUK KyAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgY21kPSJWQUNVVU0gRlVMTCBW RVJCT1NFO1xuIgorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgZXh0ZWN0ZWRfbXNnPSJN YWludGVuYW5jZSAoVmFjdXVtKSIsCisgICAgICAgICAgICAgZXhwZXRjZWRfZGV0YWlsc19jbWQ9 J1ZBQ1VVTSBGVUxMIFZFUkJPU0U7JworCisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIG1h aW50YWluZWQgdGhlIHNlcnZlciB3aXRoIEFOQUxZWkUnLAorICAgICAgICAgZGljdCgKKyAgICAg ICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAg ICAgICAgICAgICAgIGRhdGE9eworICAgICAgICAgICAgICAgICAgICAgJ2RhdGFiYXNlJzogJ3Bv c3RncmVzJywKKyAgICAgICAgICAgICAgICAgICAgICdvcCc6ICdBTkFMWVpFJywKKyAgICAgICAg ICAgICAgICAgICAgICd2YWN1dW1fYW5hbHl6ZSc6IEZhbHNlLAorICAgICAgICAgICAgICAgICAg ICAgJ3ZhY3V1bV9mcmVlemUnOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICd2YWN1dW1f ZnVsbCc6IEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UnOiBUcnVlCisgICAg ICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIGNtZD0iQU5BTFlaRSBWRVJCT1NFO1xu IgorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgZXh0ZWN0ZWRfbXNnPSJNYWludGVuYW5j ZSAoQW5hbHl6ZSkiLAorICAgICAgICAgICAgIGV4cGV0Y2VkX2RldGFpbHNfY21kPSdBTkFMWVpF IFZFUkJPU0U7JworCisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIG1haW50YWluZWQgdGhl IHNlcnZlciB3aXRoIFJFSU5ERVgnLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFz c19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAg IGRhdGE9eworICAgICAgICAgICAgICAgICAgICAgJ2RhdGFiYXNlJzogJ3Bvc3RncmVzJywKKyAg ICAgICAgICAgICAgICAgICAgICdvcCc6ICdSRUlOREVYJywKKyAgICAgICAgICAgICAgICAgICAg ICd2YWN1dW1fYW5hbHl6ZSc6IEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgJ3ZhY3V1bV9m cmVlemUnOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICd2YWN1dW1fZnVsbCc6IEZhbHNl LAorICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UnOiBGYWxzZQorICAgICAgICAgICAgICAg ICB9LAorICAgICAgICAgICAgICAgICBjbWQ9IlJFSU5ERVg7XG4iCisgICAgICAgICAgICAgKSwK KyAgICAgICAgICAgICBleHRlY3RlZF9tc2c9Ik1haW50ZW5hbmNlIChSZWluZGV4KSIsCisgICAg ICAgICAgICAgZXhwZXRjZWRfZGV0YWlsc19jbWQ9J1JFSU5ERVg7JworCisgICAgICAgICApKSwK KyAgICAgICAgKCdXaGVuIG1haW50YWluZWQgdGhlIHNlcnZlciB3aXRoIENMVVNURVInLAorICAg ICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAg ICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIGRhdGE9eworICAgICAgICAgICAgICAgICAg ICAgJ2RhdGFiYXNlJzogJ3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgICAgICdvcCc6ICdD TFVTVEVSJywKKyAgICAgICAgICAgICAgICAgICAgICd2YWN1dW1fYW5hbHl6ZSc6IEZhbHNlLAor ICAgICAgICAgICAgICAgICAgICAgJ3ZhY3V1bV9mcmVlemUnOiBGYWxzZSwKKyAgICAgICAgICAg ICAgICAgICAgICd2YWN1dW1fZnVsbCc6IEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgJ3Zl cmJvc2UnOiBUcnVlCisgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIGNtZD0i Q0xVU1RFUiBWRVJCT1NFO1xuIgorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgZXh0ZWN0 ZWRfbXNnPSJNYWludGVuYW5jZSAoQ2x1c3RlcikiLAorICAgICAgICAgICAgIGV4cGV0Y2VkX2Rl dGFpbHNfY21kPSdDTFVTVEVSIFZFUkJPU0U7JworCisgICAgICAgICApKSwKKyAgICBdCisKKyAg ICBkZWYgcnVuVGVzdChzZWxmKToKKyAgICAgICAgbWFpbnRlbmFuY2Vfb2JqID0gTWVzc2FnZSgK KyAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydzaWQnXSwKKyAgICAgICAgICAgIHNlbGYu Y2xhc3NfcGFyYW1zWydkYXRhJ10sCisgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snY21k J10KKyAgICAgICAgKQorCisgICAgICAgICMgQ2hlY2sgdGhlIGV4cGVjdGVkIG1lc3NhZ2UgcmV0 dXJuZWQKKyAgICAgICAgYXNzZXJ0IG1haW50ZW5hbmNlX29iai5tZXNzYWdlID09IHNlbGYuZXh0 ZWN0ZWRfbXNnCisKKyAgICAgICAgIyBDaGVjayB0aGUgY29tbWFuZAorICAgICAgICBvYmpfZGV0 YWlscyA9IG1haW50ZW5hbmNlX29iai5kZXRhaWxzKHNlbGYuY2xhc3NfcGFyYW1zWydjbWQnXSwg Tm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLmV4cGV0Y2VkX2RldGFpbHNfY21kLCBv YmpfZGV0YWlscykKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvX19pbml0 X18ucHkgYi93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL19faW5pdF9fLnB5CmluZGV4IDQ1ZDM4 MTYuLjU4YmMyNTEgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvX19pbml0 X18ucHkKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS9fX2luaXRfXy5weQpAQCAtODYs OCArODYsNyBAQCBjbGFzcyBSZXN0b3JlTWVzc2FnZShJUHJvY2Vzc0Rlc2MpOgogICAgICAgICAg ICAgZWxzZToKICAgICAgICAgICAgICAgICBzZWxmLmNtZCArPSBjbWRBcmcoYXJnKQogCi0gICAg QHByb3BlcnR5Ci0gICAgZGVmIG1lc3NhZ2Uoc2VsZik6CisgICAgZGVmIGdldF9zZXJ2ZXJfZGV0 YWlscyhzZWxmKToKICAgICAgICAgIyBGZXRjaCB0aGUgc2VydmVyIGRldGFpbHMgbGlrZSBob3N0 bmFtZSwgcG9ydCwgcm9sZXMgZXRjCiAgICAgICAgIHMgPSBTZXJ2ZXIucXVlcnkuZmlsdGVyX2J5 KAogICAgICAgICAgICAgaWQ9c2VsZi5zaWQsIHVzZXJfaWQ9Y3VycmVudF91c2VyLmlkCkBAIC0x MDAsMzAgKzk5LDI1IEBAIGNsYXNzIFJlc3RvcmVNZXNzYWdlKElQcm9jZXNzRGVzYyk6CiAgICAg ICAgIGhvc3QgPSBtYW5hZ2VyLmxvY2FsX2JpbmRfaG9zdCBpZiBtYW5hZ2VyLnVzZV9zc2hfdHVu bmVsIGVsc2Ugcy5ob3N0CiAgICAgICAgIHBvcnQgPSBtYW5hZ2VyLmxvY2FsX2JpbmRfcG9ydCBp ZiBtYW5hZ2VyLnVzZV9zc2hfdHVubmVsIGVsc2Ugcy5wb3J0CiAKKyAgICAgICAgcmV0dXJuIHMu bmFtZSwgaG9zdCwgcG9ydAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG1lc3NhZ2Uoc2VsZik6 CisgICAgICAgIG5hbWUsIGhvc3QsIHBvcnQgPSBzZWxmLmdldF9zZXJ2ZXJfZGV0YWlscygpCisK ICAgICAgICAgcmV0dXJuIF8oIlJlc3RvcmluZyBiYWNrdXAgb24gdGhlIHNlcnZlciAnezB9Jy4u LiIpLmZvcm1hdCgKLSAgICAgICAgICAgICJ7MH0gKHsxfTp7Mn0pIi5mb3JtYXQocy5uYW1lLCBo b3N0LCBwb3J0KSwKKyAgICAgICAgICAgICJ7MH0gKHsxfTp7Mn0pIi5mb3JtYXQobmFtZSwgaG9z dCwgcG9ydCksCiAgICAgICAgICkKIAogICAgIGRlZiBkZXRhaWxzKHNlbGYsIGNtZCwgYXJncyk6 Ci0gICAgICAgICMgRmV0Y2ggdGhlIHNlcnZlciBkZXRhaWxzIGxpa2UgaG9zdG5hbWUsIHBvcnQs IHJvbGVzIGV0YwotICAgICAgICBzID0gU2VydmVyLnF1ZXJ5LmZpbHRlcl9ieSgKLSAgICAgICAg ICAgIGlkPXNlbGYuc2lkLCB1c2VyX2lkPWN1cnJlbnRfdXNlci5pZAotICAgICAgICApLmZpcnN0 KCkKLQotICAgICAgICBmcm9tIHBnYWRtaW4udXRpbHMuZHJpdmVyIGltcG9ydCBnZXRfZHJpdmVy Ci0gICAgICAgIGRyaXZlciA9IGdldF9kcml2ZXIoUEdfREVGQVVMVF9EUklWRVIpCi0gICAgICAg IG1hbmFnZXIgPSBkcml2ZXIuY29ubmVjdGlvbl9tYW5hZ2VyKHNlbGYuc2lkKQotCi0gICAgICAg IGhvc3QgPSBtYW5hZ2VyLmxvY2FsX2JpbmRfaG9zdCBpZiBtYW5hZ2VyLnVzZV9zc2hfdHVubmVs IGVsc2Ugcy5ob3N0Ci0gICAgICAgIHBvcnQgPSBtYW5hZ2VyLmxvY2FsX2JpbmRfcG9ydCBpZiBt YW5hZ2VyLnVzZV9zc2hfdHVubmVsIGVsc2Ugcy5wb3J0Ci0KKyAgICAgICAgbmFtZSwgaG9zdCwg cG9ydCA9IHNlbGYuZ2V0X3NlcnZlcl9kZXRhaWxzKCkKICAgICAgICAgcmVzID0gJzxkaXYgY2xh c3M9Img1Ij4nCiAKICAgICAgICAgcmVzICs9IGh0bWwuc2FmZV9zdHIoCiAgICAgICAgICAgICBf KAogICAgICAgICAgICAgICAgICJSZXN0b3JpbmcgYmFja3VwIG9uIHRoZSBzZXJ2ZXIgJ3swfScu Li4iCiAgICAgICAgICAgICApLmZvcm1hdCgKLSAgICAgICAgICAgICAgICAiezB9ICh7MX06ezJ9 KSIuZm9ybWF0KHMubmFtZSwgaG9zdCwgcG9ydCkKKyAgICAgICAgICAgICAgICAiezB9ICh7MX06 ezJ9KSIuZm9ybWF0KG5hbWUsIGhvc3QsIHBvcnQpCiAgICAgICAgICAgICApCiAgICAgICAgICkK IApAQCAtMjA2LDYgKzIwMCw3IEBAIGRlZiBjcmVhdGVfcmVzdG9yZV9qb2Ioc2lkKToKIAogICAg IGlmIF9maWxlIGlzIE5vbmU6CiAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisg ICAgICAgICAgICBzdGF0dXM9NDEwLAogICAgICAgICAgICAgc3VjY2Vzcz0wLAogICAgICAgICAg ICAgZXJyb3Jtc2c9XygiRmlsZSBjb3VsZCBub3QgYmUgZm91bmQuIikKICAgICAgICAgKQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS90ZXN0cy9fX2luaXRfXy5weSBiL3dl Yi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvdGVzdHMvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9v bHMvcmVzdG9yZS90ZXN0cy90ZXN0X2JhdGNoX3Byb2Nlc3MucHkgYi93ZWIvcGdhZG1pbi90b29s cy9yZXN0b3JlL3Rlc3RzL3Rlc3RfYmF0Y2hfcHJvY2Vzcy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi4yOGQ2OTJhCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4v dG9vbHMvcmVzdG9yZS90ZXN0cy90ZXN0X2JhdGNoX3Byb2Nlc3MucHkKQEAgLTAsMCArMSwxNTQg QEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMK KyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQg VGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExp Y2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitpbXBvcnQgc3lzCisKK2Zyb20gcGdhZG1pbi5t aXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMgaW1wb3J0IEJhdGNoUHJvY2VzcywgSVByb2Nlc3NEZXNj Citmcm9tIHBnYWRtaW4udG9vbHMucmVzdG9yZSBpbXBvcnQgUmVzdG9yZU1lc3NhZ2UKK2Zyb20g cGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKK2Zyb20gcGlja2xl IGltcG9ydCBkdW1wcywgbG9hZHMKKworaWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCAzKToKKyAg ICBmcm9tIG1vY2sgaW1wb3J0IHBhdGNoCitlbHNlOgorICAgIGZyb20gdW5pdHRlc3QubW9jayBp bXBvcnQgcGF0Y2gKKworCitjbGFzcyBCYXRjaFByb2Nlc3NUZXN0KEJhc2VUZXN0R2VuZXJhdG9y KToKKyAgICAiIiJUZXN0IHRoZSBCYXRjaFByb2Nlc3MgY2xhc3MiIiIKKyAgICBzY2VuYXJpb3Mg PSBbCisgICAgICAgICgnV2hlbiByZXN0b3JlIHNlcnZlcicsCisgICAgICAgICBkaWN0KAorICAg ICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAg ICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9yZXN0b3JlX3NlcnZlcicsCisgICAgICAgICAgICAg ICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAg ICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgdXNlcm5h bWU9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfcmVzdG9yZScsCisg ICAgICAgICAgICAgICAgIGFyZ3M9WworICAgICAgICAgICAgICAgICAgICAgJy0tZmlsZScsCisg ICAgICAgICAgICAgICAgICAgICAicmVzdG9yZV9maWxlIiwKKyAgICAgICAgICAgICAgICAgICAg ICctLWhvc3QnLAorICAgICAgICAgICAgICAgICAgICAgImxvY2FsaG9zdCIsCisgICAgICAgICAg ICAgICAgICAgICAnLS1wb3J0JywKKyAgICAgICAgICAgICAgICAgICAgICI1NDQ0IiwKKyAgICAg ICAgICAgICAgICAgICAgICctLXVzZXJuYW1lJywKKyAgICAgICAgICAgICAgICAgICAgICJwb3N0 Z3JlcyIsCisgICAgICAgICAgICAgICAgICAgICAnLS1uby1wYXNzd29yZCcsCisgICAgICAgICAg ICAgICAgICAgICAnLS1kYXRhYmFzZScsCisgICAgICAgICAgICAgICAgICAgICAicG9zdGdyZXMi CisgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgIGNtZD0ncmVzdG9yZV9zZXJ2 ZXInCisgICAgICAgICAgICAgKQorICAgICAgICAgKSkKKyAgICBdCisKKyAgICBAcGF0Y2goJ3Bn YWRtaW4udG9vbHMucmVzdG9yZS5SZXN0b3JlTWVzc2FnZS5nZXRfc2VydmVyX2RldGFpbHMnKQor ICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMuUG9wZW4nKQorICAg IEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMuY3VycmVudF9hcHAnKQor ICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMuZGInKQorICAgIEBw YXRjaCgncGdhZG1pbi50b29scy5yZXN0b3JlLmN1cnJlbnRfdXNlcicpCisgICAgQHBhdGNoKCdw Z2FkbWluLm1pc2MuYmdwcm9jZXNzLnByb2Nlc3Nlcy5jdXJyZW50X3VzZXInKQorICAgIGRlZiBy dW5UZXN0KHNlbGYsIGN1cnJlbnRfdXNlcl9tb2NrLCBjdXJyZW50X3VzZXIsIGRiX21vY2ssCisg ICAgICAgICAgICAgICAgY3VycmVudF9hcHBfbW9jaywgcG9wZW5fbW9jaywgZ2V0X3NlcnZlcl9k ZXRhaWxzX21vY2spOgorICAgICAgICBjdXJyZW50X3VzZXIuaWQgPSAxCisgICAgICAgIGN1cnJl bnRfdXNlcl9tb2NrLmlkID0gMQorICAgICAgICBjdXJyZW50X2FwcF9tb2NrLlBHQURNSU5fUlVO VElNRSA9IEZhbHNlCisKKyAgICAgICAgZGVmIGRiX3Nlc3Npb25fYWRkX21vY2soaik6CisgICAg ICAgICAgICBjbWRfb2JqID0gbG9hZHMoai5kZXNjKQorICAgICAgICAgICAgYXNzZXJ0IGlzaW5z dGFuY2UoY21kX29iaiwgSVByb2Nlc3NEZXNjKQorICAgICAgICAgICAgcHJpbnQoY21kX29iaikK KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNtZF9vYmouYmZpbGUsIHNlbGYuY2xhc3Nf cGFyYW1zWydiZmlsZSddKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY21kX29iai5j bWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIC0tZmlsZSAicmVzdG9yZV9maWxl IiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1ob3N0ICJ7MH0iICcKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICctLXBvcnQgInsxfSIgJworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJy0tdXNlcm5hbWUgInsyfSIgJworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJy0tbm8tcGFzc3dvcmQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Jy0tZGF0YWJhc2UgInszfSInLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZWxmLmNsYXNzX3BhcmFtc1snaG9zdCddLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydwb3J0J10sCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3VzZXJuYW1lJ10sCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2RhdGFiYXNlJ10KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpCisKKyAgICAgICAgZ2V0X3NlcnZlcl9kZXRh aWxzX21vY2sucmV0dXJuX3ZhbHVlID0gXAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNb J25hbWUnXSxcCisgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snaG9zdCddLFwKKyAgICAg ICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydwb3J0J10KKworICAgICAgICBkYl9tb2NrLnNlc3Np b24uYWRkLnNpZGVfZWZmZWN0ID0gZGJfc2Vzc2lvbl9hZGRfbW9jaworCisgICAgICAgIHJlc3Rv cmVfb2JqID0gUmVzdG9yZU1lc3NhZ2UoCisgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1sn c2lkJ10sCisgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snYmZpbGUnXSwKKyAgICAgICAg ICAgICpzZWxmLmNsYXNzX3BhcmFtc1snYXJncyddCisgICAgICAgICkKKworICAgICAgICBwID0g QmF0Y2hQcm9jZXNzKAorICAgICAgICAgICAgZGVzYz1yZXN0b3JlX29iaiwKKyAgICAgICAgICAg IGNtZD1zZWxmLmNsYXNzX3BhcmFtc1snY21kJ10sCisgICAgICAgICAgICBhcmdzPXNlbGYuY2xh c3NfcGFyYW1zWydhcmdzJ10KKyAgICAgICAgKQorCisgICAgICAgICMgQ2hlY2sgdGhhdCBfY3Jl YXRlX3Byb2Nlc3MgaGFzIGJlZW4gY2FsbGVkCisgICAgICAgIGFzc2VydCBkYl9tb2NrLnNlc3Np b24uYWRkLmNhbGxlZAorCisgICAgICAgICMgQ2hlY2sgc3RhcnQgbWV0aG9kCisgICAgICAgIHNl bGYuX2NoZWNrX3N0YXJ0KHBvcGVuX21vY2ssIHApCisKKyAgICAgICAgIyBDaGVjayBsaXN0IG1l dGhvZAorICAgICAgICBzZWxmLl9jaGVja19saXN0KHAsIHJlc3RvcmVfb2JqKQorCisgICAgZGVm IF9jaGVja19zdGFydChzZWxmLCBwb3Blbl9tb2NrLCBwKToKKyAgICAgICAgY21kX3Rlc3QgPSBz ZWxmLmNsYXNzX3BhcmFtc1snY21kJ10KKworICAgICAgICBjbGFzcyBwb3Blbk1vY2tTaWRlRWZm ZWN0KCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgY21kLCAqKmt3YXJncyk6Cisg ICAgICAgICAgICAgICAgYXNzZXJ0IGNtZF90ZXN0IGluIGNtZAorICAgICAgICAgICAgICAgIGFz c2VydCAnZW52JyBpbiBrd2FyZ3MKKworICAgICAgICAgICAgZGVmIHBvbGwoc2VsZik6CisgICAg ICAgICAgICAgICAgcGFzcworCisgICAgICAgIHBvcGVuX21vY2suc2lkZV9lZmZlY3QgPSBwb3Bl bk1vY2tTaWRlRWZmZWN0CisgICAgICAgIHAuc3RhcnQoKQorCisgICAgICAgIGFzc2VydCBwb3Bl bl9tb2NrLmNhbGxlZAorCisgICAgQHBhdGNoKCdwZ2FkbWluLm1pc2MuYmdwcm9jZXNzLnByb2Nl c3Nlcy5Qcm9jZXNzJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4ubWlzYy5iZ3Byb2Nlc3MucHJvY2Vz c2VzLkJhdGNoUHJvY2Vzcy4nCisgICAgICAgICAgICd1cGRhdGVfcHJvY2Vzc19pbmZvJykKKyAg ICBkZWYgX2NoZWNrX2xpc3Qoc2VsZiwgcCwgcmVzdG9yZV9vYmosIHVwZGF0ZV9wcm9jZXNzX2lu Zm9fbW9jaywKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc19tb2NrKToKKyAgICAgICAgY2xh c3MgVGVzdE1vY2tQcm9jZXNzKCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZGVz YywgYXJncywgY21kKToKKyAgICAgICAgICAgICAgICBzZWxmLnBpZCA9IDEKKyAgICAgICAgICAg ICAgICBzZWxmLmV4aXRfY29kZSA9IDEKKyAgICAgICAgICAgICAgICBzZWxmLnN0YXJ0X3RpbWUg PSAnMjAxOC0wNC0xNyAwNjoxODo1Ni4zMTU0NDUgKzAwMDAnCisgICAgICAgICAgICAgICAgc2Vs Zi5lbmRfdGltZSA9IE5vbmUKKyAgICAgICAgICAgICAgICBzZWxmLmRlc2MgPSBkdW1wcyhkZXNj KQorICAgICAgICAgICAgICAgIHNlbGYuYXJndW1lbnRzID0gIiAiLmpvaW4oYXJncykKKyAgICAg ICAgICAgICAgICBzZWxmLmNvbW1hbmQgPSBjbWQKKyAgICAgICAgICAgICAgICBzZWxmLmFja25v d2xlZGdlID0gTm9uZQorCisgICAgICAgIHByb2Nlc3NfbW9jay5xdWVyeS5maWx0ZXJfYnkucmV0 dXJuX3ZhbHVlID0gWworICAgICAgICAgICAgVGVzdE1vY2tQcm9jZXNzKHJlc3RvcmVfb2JqLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydhcmdzJ10sCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2NtZCddKQorICAg ICAgICBdCisKKyAgICAgICAgdXBkYXRlX3Byb2Nlc3NfaW5mb19tb2NrLnJldHVybl92YWx1ZSA9 IFtUcnVlLCBUcnVlXQorCisgICAgICAgIHJldF92YWx1ZSA9IHAubGlzdCgpCisgICAgICAgIHNl bGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHJldF92YWx1ZSkpCisgICAgICAgIGFzc2VydCAnZGV0YWls cycgaW4gcmV0X3ZhbHVlWzBdCisgICAgICAgIGFzc2VydCAnZGVzYycgaW4gcmV0X3ZhbHVlWzBd CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL3Rlc3RzL3Rlc3RfY3JlYXRl X3Jlc3RvcmVfam9iLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS90ZXN0cy90ZXN0X2Ny ZWF0ZV9yZXN0b3JlX2pvYi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5j YTFhYjJjCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS90ZXN0 cy90ZXN0X2NyZWF0ZV9yZXN0b3JlX2pvYi5weQpAQCAtMCwwICsxLDIwMyBAQAorIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmln aHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMg c29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKK2ltcG9ydCBzeXMKK2ltcG9ydCB0aW1lCitpbXBvcnQgcmFuZG9tCitp bXBvcnQgb3MKKworaW1wb3J0IHNpbXBsZWpzb24gYXMganNvbgorCitmcm9tIHBnYWRtaW4udXRp bHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCitmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0 IHBhcmVudF9ub2RlX2RpY3QKK2Zyb20gcmVncmVzc2lvbi5weXRob25fdGVzdF91dGlscyBpbXBv cnQgdGVzdF91dGlscyBhcyB1dGlscworZnJvbSBwZ2FkbWluLnV0aWxzIGltcG9ydCBzZXJ2ZXJf dXRpbHMgYXMgc2VydmVyX3V0aWxzCitpbXBvcnQgcGdhZG1pbi50b29scy5iYWNrdXAudGVzdHMu dGVzdF9iYWNrdXBfdXRpbHMgYXMgYmFja3VwX3V0aWxzCisKKworaWYgc3lzLnZlcnNpb25faW5m byA8ICgzLCAzKToKKyAgICBmcm9tIG1vY2sgaW1wb3J0IHBhdGNoLCBNYWdpY01vY2sKK2Vsc2U6 CisgICAgZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBwYXRjaCwgTWFnaWNNb2NrCisKKworY2xh c3MgUmVzdG9yZUpvYlRlc3QoQmFzZVRlc3RHZW5lcmF0b3IpOgorICAgICIiIkJhY2t1cCBhcGkg dGVzdCBjYXNlcyIiIgorICAgIHNjZW5hcmlvcyA9IFsKKyAgICAgICAgKCdXaGVuIHJlc3RvcmUg dGhlIG9iamVjdCB3aXRoIHRoZSBkZWZhdWx0IG9wdGlvbnMnLAorICAgICAgICAgZGljdCgKKyAg ICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgZmlsZT0ndGVzdF9yZXN0 b3JlX2ZpbGUnLAorICAgICAgICAgICAgICAgICBmb3JtYXQ9J2N1c3RvbScsCisgICAgICAgICAg ICAgICAgIGN1c3RvbT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAg ICAgICAgICAgICAgICBibG9icz1UcnVlLAorICAgICAgICAgICAgICAgICBzY2hlbWFzPVtdLAor ICAgICAgICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSd0 ZXN0X3Jlc3RvcmVfZGF0YWJhc2UnCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9 Jy9yZXN0b3JlL2pvYi97MH0nLAorICAgICAgICAgICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnLS12 ZXJib3NlJ10sCisgICAgICAgICAgICAgbm90X2V4cGVjdGVkX2NtZF9vcHRzPVtdLAorICAgICAg ICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9uZV0sCisgICAgICAgICAgICAgYmFja3Vw X29wdGlvbnM9ZGljdCgKKyAgICAgICAgICAgICAgICAgcGFyYW1zPWRpY3QoCisgICAgICAgICAg ICAgICAgICAgICBmaWxlPSd0ZXN0X3Jlc3RvcmVfZmlsZScsCisgICAgICAgICAgICAgICAgICAg ICBmb3JtYXQ9J2N1c3RvbScsCisgICAgICAgICAgICAgICAgICAgICB2ZXJib3NlPVRydWUsCisg ICAgICAgICAgICAgICAgICAgICBibG9icz1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgc2No ZW1hcz1bXSwKKyAgICAgICAgICAgICAgICAgICAgIHRhYmxlcz1bXSwKKyAgICAgICAgICAgICAg ICAgICAgIGRhdGFiYXNlPSd0ZXN0X3Jlc3RvcmVfZGF0YWJhc2UnCisgICAgICAgICAgICAgICAg ICksCisgICAgICAgICAgICAgICAgIHVybD0nL2JhY2t1cC9qb2IvezB9L29iamVjdCcsCisgICAg ICAgICAgICAgICAgIGV4cGVjdGVkX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICAgICAg ZXhwZWN0ZWRfY21kX29wdHM9WyctLXZlcmJvc2UnLCAnLS1mb3JtYXQ9YycsICctLWJsb2JzJ10s CisgICAgICAgICAgICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21kX29wdHM9W10sCisgICAgICAg ICAgICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGU9WzAsIE5vbmVdCisgICAgICAgICAgICAg ICAgICkKKworICAgICAgICAgICAgICkKKyAgICAgICAgICkpCisgICAgXQorCisgICAgZGVmIHNl dFVwKHNlbGYpOgorICAgICAgICBpZiBzZWxmLnNlcnZlclsnZGVmYXVsdF9iaW5hcnlfcGF0aHMn XSBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgKKyAgICAgICAgICAgICAgICAi ZGVmYXVsdF9iaW5hcnlfcGF0aHMgaXMgbm90IHNldCBmb3IgdGhlIHNlcnZlciB7MH0iLmZvcm1h dCgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ25hbWUnXQorICAgICAgICAgICAg ICAgICkKKyAgICAgICAgICAgICkKKworICAgIGRlZiBjcmVhdGVfYmFja3VwKHNlbGYpOgorICAg ICAgICB1cmwgPSBzZWxmLmJhY2t1cF9vcHRpb25zWyd1cmwnXS5mb3JtYXQoc2VsZi5zZXJ2ZXJf aWQpCisgICAgICAgIGpvYl9pZCA9IGJhY2t1cF91dGlscy5jcmVhdGVfYmFja3VwX2pvYihzZWxm LnRlc3RlciwgdXJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2VsZi5iYWNrdXBfb3B0aW9uc1sncGFyYW1zJ10pCisgICAgICAgIHNlbGYuYmFja3Vw X2ZpbGUgPSBiYWNrdXBfdXRpbHMucnVuX2JhY2t1cF9qb2IoCisgICAgICAgICAgICBzZWxmLnRl c3RlciwKKyAgICAgICAgICAgIGpvYl9pZCwKKyAgICAgICAgICAgIHNlbGYuYmFja3VwX29wdGlv bnNbJ2V4cGVjdGVkX3BhcmFtcyddLAorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbiwKKyAgICAg ICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4KKyAgICAgICAgKQorCisgICAgZGVmIHJ1blRlc3Qoc2Vs Zik6CisgICAgICAgIHNlbGYuZGJfbmFtZSA9ICcnCisgICAgICAgIHNlbGYuc2VydmVyX2lkID0g cGFyZW50X25vZGVfZGljdFsic2VydmVyIl1bLTFdWyJzZXJ2ZXJfaWQiXQorICAgICAgICBzZXJ2 ZXJfcmVzcG9uc2UgPSBzZXJ2ZXJfdXRpbHMuY29ubmVjdF9zZXJ2ZXIoc2VsZiwgc2VsZi5zZXJ2 ZXJfaWQpCisgICAgICAgIGRiX2lkID0gdXRpbHMuY3JlYXRlX2RhdGFiYXNlKHNlbGYuc2VydmVy LCBzZWxmLnBhcmFtc1snZGF0YWJhc2UnXSkKKworICAgICAgICBzZWxmLmNyZWF0ZV9iYWNrdXAo KQorICAgICAgICB1cmwgPSBzZWxmLnVybC5mb3JtYXQoc2VsZi5zZXJ2ZXJfaWQpCisKKyAgICAg ICAgIyBDcmVhdGUgdGhlIHJlc3RvcmUgam9iCisgICAgICAgIHJlc3BvbnNlID0gc2VsZi50ZXN0 ZXIucG9zdCh1cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWpz b24uZHVtcHMoc2VsZi5wYXJhbXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29udGVudF90eXBlPSdodG1sL2pzb24nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhy ZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQorICAgICAgICByZXNwb25zZV9kYXRhID0ganNvbi5s b2FkcyhyZXNwb25zZS5kYXRhLmRlY29kZSgndXRmLTgnKSkKKyAgICAgICAgam9iX2lkID0gcmVz cG9uc2VfZGF0YVsnZGF0YSddWydqb2JfaWQnXQorCisgICAgICAgIGNudCA9IDAKKyAgICAgICAg d2hpbGUgMToKKyAgICAgICAgICAgIGlmIGNudCA+IDE6CisgICAgICAgICAgICAgICAgYnJlYWsK KyAgICAgICAgICAgICMgQ2hlY2sgdGhlIHByb2Nlc3MgbGlzdAorICAgICAgICAgICAgcmVzcG9u c2UxID0gc2VsZi50ZXN0ZXIuZ2V0KCcvbWlzYy9iZ3Byb2Nlc3MvP189Jy5mb3JtYXQoCisgICAg ICAgICAgICAgICAgcmFuZG9tLnJhbmRpbnQoMSwgOTk5OTk5OSkpKQorICAgICAgICAgICAgc2Vs Zi5hc3NlcnRFcXVhbHMocmVzcG9uc2UxLnN0YXR1c19jb2RlLCAyMDApCisgICAgICAgICAgICBw cm9jZXNzX2xpc3QgPSBqc29uLmxvYWRzKHJlc3BvbnNlMS5kYXRhLmRlY29kZSgndXRmLTgnKSkK KworICAgICAgICAgICAgaWYgbGVuKHByb2Nlc3NfbGlzdCkgPiAwIGFuZCAnZXhlY3V0aW9uX3Rp bWUnIGluIHByb2Nlc3NfbGlzdFswXToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAg ICAgdGltZS5zbGVlcCgwLjUpCisgICAgICAgICAgICBjbnQgKz0gMQorCisgICAgICAgIGFzc2Vy dCAnZXhlY3V0aW9uX3RpbWUnIGluIHByb2Nlc3NfbGlzdFswXQorICAgICAgICBhc3NlcnQgJ3N0 aW1lJyBpbiBwcm9jZXNzX2xpc3RbMF0KKyAgICAgICAgYXNzZXJ0ICdleGl0X2NvZGUnIGluIHBy b2Nlc3NfbGlzdFswXQorICAgICAgICBhc3NlcnQgcHJvY2Vzc19saXN0WzBdWydleGl0X2NvZGUn XSBpbiBzZWxmLmV4cGVjdGVkX2V4aXRfY29kZQorCisgICAgICAgIGlmIHNlbGYuZXhwZWN0ZWRf Y21kX29wdHM6CisgICAgICAgICAgICBmb3Igb3B0IGluIHNlbGYuZXhwZWN0ZWRfY21kX29wdHM6 CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihvcHQsIHByb2Nlc3NfbGlzdFswXVsnZGV0 YWlscyddKQorICAgICAgICBpZiBzZWxmLm5vdF9leHBlY3RlZF9jbWRfb3B0czoKKyAgICAgICAg ICAgIGZvciBvcHQgaW4gc2VsZi5ub3RfZXhwZWN0ZWRfY21kX29wdHM6CisgICAgICAgICAgICAg ICAgc2VsZi5hc3NlcnROb3RJbihvcHQsIHByb2Nlc3NfbGlzdFswXVsnZGV0YWlscyddKQorCisg ICAgICAgICMgQ2hlY2sgdGhlIHByb2Nlc3MgZGV0YWlscworICAgICAgICBwX2RldGFpbHMgPSBz ZWxmLnRlc3Rlci5nZXQoJy9taXNjL2JncHJvY2Vzcy97MH0/Xz0nLmZvcm1hdCgKKyAgICAgICAg ICAgIGpvYl9pZCwgcmFuZG9tLnJhbmRpbnQoMSwgOTk5OTk5OSkpCisgICAgICAgICkKKyAgICAg ICAgc2VsZi5hc3NlcnRFcXVhbHMocF9kZXRhaWxzLnN0YXR1c19jb2RlLCAyMDApCisgICAgICAg IHBfZGV0YWlsc19kYXRhID0ganNvbi5sb2FkcyhwX2RldGFpbHMuZGF0YS5kZWNvZGUoJ3V0Zi04 JykpCisKKyAgICAgICAgcF9kZXRhaWxzID0gc2VsZi50ZXN0ZXIuZ2V0KCcvbWlzYy9iZ3Byb2Nl c3MvezB9L3sxfS97Mn0vP189Jy5mb3JtYXQoCisgICAgICAgICAgICBqb2JfaWQsIDAsIDAsIHJh bmRvbS5yYW5kaW50KDEsIDk5OTk5OTkpKQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0 RXF1YWxzKHBfZGV0YWlscy5zdGF0dXNfY29kZSwgMjAwKQorICAgICAgICBwX2RldGFpbHNfZGF0 YSA9IGpzb24ubG9hZHMocF9kZXRhaWxzLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorCisgICAgICAg ICMgUmV0cmlldmUgdGhlIHJlc3RvcmUgam9iIHByb2Nlc3MgbG9ncworICAgICAgICBjbnQgPSAw CisgICAgICAgIHdoaWxlIDE6CisgICAgICAgICAgICBvdXQsIGVyciwgc3RhdHVzID0gUmVzdG9y ZUpvYlRlc3QuZ2V0X3BhcmFtcyhwX2RldGFpbHNfZGF0YSkKKyAgICAgICAgICAgIGlmIHN0YXR1 cyBvciBjbnQgPj0gMTA6CisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAgICAgcF9k ZXRhaWxzID0gc2VsZi50ZXN0ZXIuZ2V0KAorICAgICAgICAgICAgICAgICcvbWlzYy9iZ3Byb2Nl c3MvezB9L3sxfS97Mn0vP189ezN9Jy5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgIGpvYl9p ZCwgb3V0LCBlcnIsIHJhbmRvbS5yYW5kaW50KDEsIDk5OTk5OTkpKQorICAgICAgICAgICAgKQor ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocF9kZXRhaWxzLnN0YXR1c19jb2RlLCAyMDAp CisgICAgICAgICAgICBwX2RldGFpbHNfZGF0YSA9IGpzb24ubG9hZHMocF9kZXRhaWxzLmRhdGEu ZGVjb2RlKCd1dGYtOCcpKQorCisgICAgICAgICAgICBjbnQgKz0gMQorICAgICAgICAgICAgdGlt ZS5zbGVlcCgxKQorCisgICAgICAgICMgQ2hlY2sgdGhlIGpvYiBpcyBjb21wbGV0ZS4KKyAgICAg ICAgcmVzdG9yZV9hY2sgPSBzZWxmLnRlc3Rlci5wdXQoJy9taXNjL2JncHJvY2Vzcy97MH0nLmZv cm1hdChqb2JfaWQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXN0b3JlX2Fjay5zdGF0 dXNfY29kZSwgMjAwKQorICAgICAgICByZXN0b3JlX2Fja19yZXMgPSBqc29uLmxvYWRzKHJlc3Rv cmVfYWNrLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz KHJlc3RvcmVfYWNrX3Jlc1snc3VjY2VzcyddLCAxKQorCisgICAgICAgIGlmIHNlbGYuYmFja3Vw X2ZpbGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShzZWxmLmJh Y2t1cF9maWxlKToKKyAgICAgICAgICAgICAgICBvcy5yZW1vdmUoc2VsZi5iYWNrdXBfZmlsZSkK KworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgZ2V0X3BhcmFtcyhkYXRhKToKKyAgICAgICAg b3V0ID0gMAorICAgICAgICBvdXRfZG9uZSA9IEZhbHNlCisgICAgICAgIGVyciA9IDAKKyAgICAg ICAgZXJyX2RvbmUgPSBGYWxzZQorICAgICAgICBpZiAnb3V0JyBpbiBkYXRhOgorICAgICAgICAg ICAgb3V0ID0gZGF0YVsnb3V0J10gYW5kIGRhdGFbJ291dCddWydwb3MnXQorCisgICAgICAgICAg ICBpZiAnZG9uZScgaW4gZGF0YVsnb3V0J106CisgICAgICAgICAgICAgICAgb3V0X2RvbmUgPSBk YXRhWydvdXQnXVsnZG9uZSddCisKKyAgICAgICAgaWYgJ2VycicgaW4gZGF0YToKKyAgICAgICAg ICAgIGVyciA9IGRhdGFbJ2VyciddIGFuZCBkYXRhWydlcnInXVsncG9zJ10KKworICAgICAgICAg ICAgaWYgJ2RvbmUnIGluIGRhdGFbJ2VyciddOgorICAgICAgICAgICAgICAgIGVycl9kb25lID0g ZGF0YVsnZXJyJ11bJ2RvbmUnXQorCisgICAgICAgIHJldHVybiBvdXQsIGVyciwgKG91dF9kb25l IGFuZCBlcnJfZG9uZSkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgY29ubmVj dGlvbiA9IHV0aWxzLmdldF9kYl9jb25uZWN0aW9uKAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJb J2RiJ10sCisgICAgICAgICAgICBzZWxmLnNlcnZlclsndXNlcm5hbWUnXSwKKyAgICAgICAgICAg IHNlbGYuc2VydmVyWydkYl9wYXNzd29yZCddLAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ2hv c3QnXSwKKyAgICAgICAgICAgIHNlbGYuc2VydmVyWydwb3J0J10sCisgICAgICAgICAgICBzZWxm LnNlcnZlclsnc3NsbW9kZSddCisgICAgICAgICkKKyAgICAgICAgdXRpbHMuZHJvcF9kYXRhYmFz ZShjb25uZWN0aW9uLCBzZWxmLnBhcmFtc1snZGF0YWJhc2UnXSkKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL3Rvb2xzL3Jlc3RvcmUvdGVzdHMvdGVzdF9yZXN0b3JlX2NyZWF0ZV9qb2JfdW5pdF90 ZXN0LnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS90ZXN0cy90ZXN0X3Jlc3RvcmVfY3Jl YXRlX2pvYl91bml0X3Rlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u MjgyOWNkOAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvdGVz dHMvdGVzdF9yZXN0b3JlX2NyZWF0ZV9qb2JfdW5pdF90ZXN0LnB5CkBAIC0wLDAgKzEsMzE4IEBA CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisj CisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRl YW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNl bmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitpbXBvcnQgc3lzCitpbXBvcnQgc2ltcGxlanNv biBhcyBqc29uCisKK2Zyb20gcGdhZG1pbi50b29scy5yZXN0b3JlIGltcG9ydCBSZXN0b3JlTWVz c2FnZQorZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgor ZnJvbSByZWdyZXNzaW9uIGltcG9ydCBwYXJlbnRfbm9kZV9kaWN0Citmcm9tIHJlZ3Jlc3Npb24u cHl0aG9uX3Rlc3RfdXRpbHMgaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMKK2Zyb20gcGdhZG1p bi51dGlscyBpbXBvcnQgc2VydmVyX3V0aWxzIGFzIHNlcnZlcl91dGlscworZnJvbSBwZ2FkbWlu LmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy50ZXN0cyBpbXBvcnQgdXRp bHMgYXMgXAorICAgIGRhdGFiYXNlX3V0aWxzCisKK2lmIHN5cy52ZXJzaW9uX2luZm8gPCAoMywg Myk6CisgICAgZnJvbSBtb2NrIGltcG9ydCBwYXRjaCwgTWFnaWNNb2NrCitlbHNlOgorICAgIGZy b20gdW5pdHRlc3QubW9jayBpbXBvcnQgcGF0Y2gsIE1hZ2ljTW9jaworCisKK2NsYXNzIFJlc3Rv cmVDcmVhdGVKb2JUZXN0KEJhc2VUZXN0R2VuZXJhdG9yKToKKyAgICAiIiJUZXN0IHRoZSBSZXN0 b3JlQ3JlYXRlSm9iIGNsYXNzIiIiCisgICAgc2NlbmFyaW9zID0gWworICAgICAgICAoJ1doZW4g cmVzdG9yZSBvYmplY3Qgd2l0aCBkZWZhdWx0IG9wdGlvbnMnLAorICAgICAgICAgZGljdCgKKyAg ICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisg ICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfcmVzdG9yZV9zZXJ2ZXInLAorICAgICAgICAgICAg ICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAg ICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGJmaWxl PSd0ZXN0X3Jlc3RvcmUnLAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnCisg ICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAg ICAgZmlsZT0ndGVzdF9yZXN0b3JlX2ZpbGUnLAorICAgICAgICAgICAgICAgICBmb3JtYXQ9J2N1 c3RvbScsCisgICAgICAgICAgICAgICAgIGN1c3RvbT1GYWxzZSwKKyAgICAgICAgICAgICAgICAg dmVyYm9zZT1UcnVlLAorICAgICAgICAgICAgICAgICBibG9icz1UcnVlLAorICAgICAgICAgICAg ICAgICBzY2hlbWFzPVtdLAorICAgICAgICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAgICAg ICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAg IHVybD0nL3Jlc3RvcmUvam9iL3swfScsCisgICAgICAgICAgICAgZXhwZWN0ZWRfY21kX29wdHM9 WyctLXZlcmJvc2UnXSwKKyAgICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21kX29wdHM9W10sCisg ICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXQorICAgICAgICAgKSksCisg ICAgICAgICgnV2hlbiByZXN0b3JlIG9iamVjdCB3aXRoIHRoZSBzZWN0aW9ucyBvcHRpb25zJywK KyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAg ICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X3Jlc3RvcmVfc2Vy dmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0 PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAg ICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9yZXN0b3JlJywKKyAgICAgICAgICAgICAgICAgdXNl cm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgcGFyYW1zPWRp Y3QoCisgICAgICAgICAgICAgICAgIGZpbGU9J3Rlc3RfcmVzdG9yZV9maWxlJywKKyAgICAgICAg ICAgICAgICAgZm9ybWF0PSdjdXN0b20nLAorICAgICAgICAgICAgICAgICBub19vZl9qb2JzPScy JywKKyAgICAgICAgICAgICAgICAgY3VzdG9tPUZhbHNlLAorICAgICAgICAgICAgICAgICB2ZXJi b3NlPVRydWUsCisgICAgICAgICAgICAgICAgIHNjaGVtYXM9W10sCisgICAgICAgICAgICAgICAg IHRhYmxlcz1bXSwKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAg ICAgICAgICAgICAgZGF0YT1UcnVlLAorICAgICAgICAgICAgICAgICBwcmVfZGF0YT1UcnVlLAor ICAgICAgICAgICAgICAgICBwb3N0X2RhdGE9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgb25seV9k YXRhPVRydWUsCisgICAgICAgICAgICAgICAgIG9ubHlfc2NoZW1hPVRydWUKKyAgICAgICAgICAg ICApLAorICAgICAgICAgICAgIHVybD0nL3Jlc3RvcmUvam9iL3swfScsCisgICAgICAgICAgICAg IyBQbGVhc2UgaW5jbHVkZSBzZWN0aW9ucyBkYXRhIGhlcmUsIHJpZ2h0IG5vdyB0aGlzIGlzIGEg YnVnCisgICAgICAgICAgICAgZXhwZWN0ZWRfY21kX29wdHM9WyctLXZlcmJvc2UnLCAnLS1qb2Jz JywgJzInXSwKKyAgICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21kX29wdHM9W10sCisgICAgICAg ICAgICAgIyBCZWxvdyBvcHRpb25zIHNob3VsZCBiZSBlbmFibGVkIG9uY2Ugd2UgZml4IHRoZSBp c3N1ZSAjMzM2OAorICAgICAgICAgICAgICMgbm90X2V4cGVjdGVkX2NtZF9vcHRzPVsnLS1kYXRh LW9ubHknLCAnLS1zY2hlbWEtb25seSddLAorICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29k ZT1bMCwgTm9uZV0sCisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIHJlc3RvcmUgdGhlIG9i amVjdCB3aXRoIFR5cGUgb2Ygb2JqZWN0cycsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAg IGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAg ICAgICAgbmFtZT0ndGVzdF9yZXN0b3JlX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9 NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAg ICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfcmVz dG9yZScsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAgICAg ICApLAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBmaWxlPSd0 ZXN0X3Jlc3RvcmVfZmlsZScsCisgICAgICAgICAgICAgICAgIGZvcm1hdD0nY3VzdG9tJywKKyAg ICAgICAgICAgICAgICAgbm9fb2Zfam9icz0nMicsCisgICAgICAgICAgICAgICAgIGN1c3RvbT1G YWxzZSwKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAgICAgICAgICBz Y2hlbWFzPVtdLAorICAgICAgICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAgICAgICAgICAg IGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIG9ubHlfZGF0YT1UcnVlLAor ICAgICAgICAgICAgICAgICBvbmx5X3NjaGVtYT1UcnVlLAorICAgICAgICAgICAgICAgICBkbnNf b3duZXI9VHJ1ZQorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgdXJsPScvcmVzdG9yZS9q b2IvezB9JywKKyAgICAgICAgICAgICBleHBlY3RlZF9jbWRfb3B0cz1bJy0tdmVyYm9zZScsICct LWRhdGEtb25seSddLAorICAgICAgICAgICAgIG5vdF9leHBlY3RlZF9jbWRfb3B0cz1bXSwKKyAg ICAgICAgICAgICAjIEJlbG93IG9wdGlvbnMgc2hvdWxkIGJlIGVuYWJsZWQgb25jZSB3ZSBmaXgg dGhlIGlzc3VlICMzMzY4CisgICAgICAgICAgICAgIyBub3RfZXhwZWN0ZWRfY21kX29wdHM9Wyct LXNjaGVtYS1vbmx5JywgJy0tbm8tb3duZXInXSwKKyAgICAgICAgICAgICBleHBlY3RlZF9leGl0 X2NvZGU9WzAsIE5vbmVdLAorICAgICAgICAgKSksCisgICAgICAgICgnV2hlbiByZXN0b3JlIG9i amVjdCB3aXRoIG9wdGlvbiAtIERvIG5vdCBzYXZlJywKKyAgICAgICAgIGRpY3QoCisgICAgICAg ICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAg ICAgICAgICAgICBuYW1lPSd0ZXN0X3Jlc3RvcmVfc2VydmVyJywKKyAgICAgICAgICAgICAgICAg cG9ydD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAg ICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVz dF9yZXN0b3JlJywKKyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAg ICAgICAgICksCisgICAgICAgICAgICAgcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGZp bGU9J3Rlc3RfcmVzdG9yZV9maWxlJywKKyAgICAgICAgICAgICAgICAgZm9ybWF0PSdjdXN0b20n LAorICAgICAgICAgICAgICAgICB2ZXJib3NlPVRydWUsCisgICAgICAgICAgICAgICAgIGN1c3Rv bT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgc2NoZW1hcz1bXSwKKyAgICAgICAgICAgICAgICAg dGFibGVzPVtdLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAg ICAgICAgICAgICBkbnNfb3duZXI9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgZG5zX3ByaXZpbGVn ZT1UcnVlLAorICAgICAgICAgICAgICAgICBkbnNfdGFibGVzcGFjZT1UcnVlLAorICAgICAgICAg ICAgICAgICBvbmx5X2RhdGE9RmFsc2UKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHVy bD0nL3Jlc3RvcmUvam9iL3swfScsCisgICAgICAgICAgICAgIyBBZGQgJy0tbm8tcHJpdmlsZWdl cycgdG8gdGhlIGV4cGVjdGVkX2NtZCBvbmNlICMzMzYzIGZpeGVkCisgICAgICAgICAgICAgZXhw ZWN0ZWRfY21kX29wdHM9WyctLW5vLW93bmVyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJy0tbm8tdGFibGVzcGFjZXMnXSwKKyAgICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21k X29wdHM9W10sCisgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXQorICAg ICAgICAgKSksCisgICAgICAgICgnV2hlbiByZXN0b3JlIG9iamVjdCB3aXRoIG9wdGlvbiAtIFF1 ZXJpZXMnLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgK KyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfcmVz dG9yZV9maWxlJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAg ICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMn LAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9yZXN0b3JlJywKKyAgICAgICAgICAgICAg ICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgcGFy YW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGZpbGU9J3Rlc3RfYmFja3VwX2ZpbGUnLAorICAg ICAgICAgICAgICAgICBmb3JtYXQ9J2N1c3RvbScsCisgICAgICAgICAgICAgICAgIHZlcmJvc2U9 VHJ1ZSwKKyAgICAgICAgICAgICAgICAgc2NoZW1hcz1bXSwKKyAgICAgICAgICAgICAgICAgdGFi bGVzPVtdLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAg ICAgICAgICBjbGVhbj1UcnVlLAorICAgICAgICAgICAgICAgICBpbmNsdWRlX2NyZWF0ZV9kYXRh YmFzZT1UcnVlLAorICAgICAgICAgICAgICAgICBzaW5nbGVfdHJhbnNhY3Rpb249VHJ1ZSwKKyAg ICAgICAgICAgICApLAorICAgICAgICAgICAgIHVybD0nL3Jlc3RvcmUvam9iL3swfScsCisgICAg ICAgICAgICAgZXhwZWN0ZWRfY21kX29wdHM9WyctLWNyZWF0ZScsICctLWNsZWFuJywKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tc2luZ2xlLXRyYW5zYWN0aW9uJ10sCisgICAg ICAgICAgICAgbm90X2V4cGVjdGVkX2NtZF9vcHRzPVtdLAorICAgICAgICAgICAgIGV4cGVjdGVk X2V4aXRfY29kZT1bMCwgTm9uZV0KKyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gcmVzdG9y ZSBvYmplY3Qgd2l0aCBvcHRpb24gLSBEaXNiYWxlJywKKyAgICAgICAgIGRpY3QoCisgICAgICAg ICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAg ICAgICAgICAgICBuYW1lPSd0ZXN0X3Jlc3RvcmVfZmlsZScsCisgICAgICAgICAgICAgICAgIHBv cnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAg ICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3Rf cmVzdG9yZScsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAg ICAgICApLAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBmaWxl PSd0ZXN0X2JhY2t1cF9maWxlJywKKyAgICAgICAgICAgICAgICAgZm9ybWF0PSdjdXN0b20nLAor ICAgICAgICAgICAgICAgICB2ZXJib3NlPVRydWUsCisgICAgICAgICAgICAgICAgIHNjaGVtYXM9 W10sCisgICAgICAgICAgICAgICAgIHRhYmxlcz1bXSwKKyAgICAgICAgICAgICAgICAgZGF0YWJh c2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgZGlzYWJsZV90cmlnZ2VyPVRydWUsCisg ICAgICAgICAgICAgICAgIG5vX2RhdGFfZmFpbF90YWJsZT1UcnVlLAorICAgICAgICAgICAgICAg ICBvbmx5X3NjaGVtYT1GYWxzZQorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgdXJsPScv cmVzdG9yZS9qb2IvezB9JywKKyAgICAgICAgICAgICAjIEFkZCAnLS1uby1kYXRhLWZvci1mYWls ZWQtdGFibGVzJyBpbnRvCisgICAgICAgICAgICAgIyBleHBlY3RlZF9jbWRfb3B0cyBvbmNlICMz MzYzIGZpeGVkCisgICAgICAgICAgICAgZXhwZWN0ZWRfY21kX29wdHM9WyctLWRpc2FibGUtdHJp Z2dlcnMnXSwKKyAgICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21kX29wdHM9W10sCisgICAgICAg ICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXQorICAgICAgICAgKSksCisgICAgICAg ICgnV2hlbiByZXN0b3JlIG9iamVjdCB3aXRoIG9wdGlvbiAtIE1pc2NlbGxhbmVvdXMnLAorICAg ICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAg ICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfcmVzdG9yZV9maWxlJywK KyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0PSdsb2Nh bGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAg ICAgICAgICBiZmlsZT0ndGVzdF9yZXN0b3JlJywKKyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9 J3Bvc3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgcGFyYW1zPWRpY3QoCisg ICAgICAgICAgICAgICAgIGZpbGU9J3Rlc3RfYmFja3VwX2ZpbGUnLAorICAgICAgICAgICAgICAg ICBmb3JtYXQ9J2N1c3RvbScsCisgICAgICAgICAgICAgICAgIHZlcmJvc2U9VHJ1ZSwKKyAgICAg ICAgICAgICAgICAgc2NoZW1hcz1bXSwKKyAgICAgICAgICAgICAgICAgdGFibGVzPVtdLAorICAg ICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICB1c2Vf c2V0X3Nlc3Npb25fYXV0aD1UcnVlLAorICAgICAgICAgICAgICAgICBleGl0X29uX2Vycm9yPVRy dWUsCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9Jy9yZXN0b3JlL2pvYi97MH0n LAorICAgICAgICAgICAgICMgQWRkICctLXVzZV9zZXRfc2Vzc2lvbl9hdXRoJyBpbnRvCisgICAg ICAgICAgICAgIyBleHBlY3RlZF9jbWRfb3B0cyBvbmNlICMzMzYzIGZpeGVkCisgICAgICAgICAg ICAgZXhwZWN0ZWRfY21kX29wdHM9WyctLWV4aXQtb24tZXJyb3InXSwKKyAgICAgICAgICAgICBu b3RfZXhwZWN0ZWRfY21kX29wdHM9W10sCisgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2Rl PVswLCBOb25lXQorICAgICAgICAgKSksCisgICAgXQorCisgICAgZGVmIHNldFVwKHNlbGYpOgor ICAgICAgICBpZiBzZWxmLnNlcnZlclsnZGVmYXVsdF9iaW5hcnlfcGF0aHMnXSBpcyBOb25lOgor ICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgKKyAgICAgICAgICAgICAgICAiZGVmYXVsdF9iaW5h cnlfcGF0aHMgaXMgbm90IHNldCBmb3IgdGhlIHNlcnZlciB7MH0iLmZvcm1hdCgKKyAgICAgICAg ICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ25hbWUnXQorICAgICAgICAgICAgICAgICkKKyAgICAg ICAgICAgICkKKworICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5yZXN0b3JlLlNlcnZlcicpCisg ICAgQHBhdGNoKCdwZ2FkbWluLnRvb2xzLnJlc3RvcmUuY3VycmVudF91c2VyJykKKyAgICBAcGF0 Y2goJ3BnYWRtaW4udG9vbHMucmVzdG9yZS5SZXN0b3JlTWVzc2FnZScpCisgICAgQHBhdGNoKCdw Z2FkbWluLnRvb2xzLnJlc3RvcmUuZmlsZW5hbWVfd2l0aF9maWxlX21hbmFnZXJfcGF0aCcpCisg ICAgQHBhdGNoKCdwZ2FkbWluLnRvb2xzLnJlc3RvcmUuQmF0Y2hQcm9jZXNzJykKKyAgICBAcGF0 Y2goJ3BnYWRtaW4udXRpbHMuZHJpdmVyLnBzeWNvcGcyLnNlcnZlcl9tYW5hZ2VyLlNlcnZlck1h bmFnZXIuJworICAgICAgICAgICAnZXhwb3J0X3Bhc3N3b3JkX2VudicpCisgICAgZGVmIHJ1blRl c3Qoc2VsZiwgZXhwb3J0X3Bhc3N3b3JkX2Vudl9tb2NrLCBiYXRjaF9wcm9jZXNzX21vY2ssCisg ICAgICAgICAgICAgICAgZmlsZW5hbWVfbW9jaywgcmVzdG9yZV9tZXNzYWdlX21vY2ssCisgICAg ICAgICAgICAgICAgY3VycmVudF91c2VyX21vY2ssIHNlcnZlcl9tb2NrKToKKyAgICAgICAgY2xh c3MgVGVzdE1vY2tTZXJ2ZXIoKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1l LCBob3N0LCBwb3J0LCBpZCwgdXNlcm5hbWUpOgorICAgICAgICAgICAgICAgIHNlbGYubmFtZSA9 IG5hbWUKKyAgICAgICAgICAgICAgICBzZWxmLmhvc3QgPSBob3N0CisgICAgICAgICAgICAgICAg c2VsZi5wb3J0ID0gcG9ydAorICAgICAgICAgICAgICAgIHNlbGYuaWQgPSBpZAorICAgICAgICAg ICAgICAgIHNlbGYudXNlcm5hbWUgPSB1c2VybmFtZQorCisgICAgICAgIHNlbGYuZGJfbmFtZSA9 ICcnCisgICAgICAgIHNlbGYuc2VydmVyX2lkID0gcGFyZW50X25vZGVfZGljdFsic2VydmVyIl1b LTFdWyJzZXJ2ZXJfaWQiXQorCisgICAgICAgIG1vY2tfb2JqID0gVGVzdE1vY2tTZXJ2ZXIoc2Vs Zi5jbGFzc19wYXJhbXNbJ25hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzZWxmLmNsYXNzX3BhcmFtc1snaG9zdCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydwb3J0J10sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3VzZXJuYW1lJ10KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICApCisgICAgICAgIG1vY2tfcmVzdWx0ID0gc2VydmVyX21vY2sucXVlcnku ZmlsdGVyX2J5LnJldHVybl92YWx1ZQorICAgICAgICBtb2NrX3Jlc3VsdC5maXJzdC5yZXR1cm5f dmFsdWUgPSBtb2NrX29iagorCisgICAgICAgIGZpbGVuYW1lX21vY2sucmV0dXJuX3ZhbHVlID0g c2VsZi5wYXJhbXNbJ2ZpbGUnXQorCisgICAgICAgIGJhdGNoX3Byb2Nlc3NfbW9jay5zZXRfZW52 X3ZhcmlhYmxlcyA9IE1hZ2ljTW9jaygKKyAgICAgICAgICAgIHJldHVybl92YWx1ZT1UcnVlCisg ICAgICAgICkKKyAgICAgICAgYmF0Y2hfcHJvY2Vzc19tb2NrLnN0YXJ0ID0gTWFnaWNNb2NrKAor ICAgICAgICAgICAgcmV0dXJuX3ZhbHVlPVRydWUKKyAgICAgICAgKQorCisgICAgICAgIGV4cG9y dF9wYXNzd29yZF9lbnZfbW9jay5yZXR1cm5fdmFsdWUgPSBUcnVlCisKKyAgICAgICAgc2VydmVy X3Jlc3BvbnNlID0gc2VydmVyX3V0aWxzLmNvbm5lY3Rfc2VydmVyKHNlbGYsIHNlbGYuc2VydmVy X2lkKQorICAgICAgICBpZiBzZXJ2ZXJfcmVzcG9uc2VbImluZm8iXSA9PSAiU2VydmVyIGNvbm5l Y3RlZC4iOgorICAgICAgICAgICAgZGJfb3duZXIgPSBzZXJ2ZXJfcmVzcG9uc2VbJ2RhdGEnXVsn dXNlciddWyduYW1lJ10KKyAgICAgICAgICAgIHNlbGYuZGF0YSA9IGRhdGFiYXNlX3V0aWxzLmdl dF9kYl9kYXRhKGRiX293bmVyKQorICAgICAgICAgICAgc2VsZi5kYl9uYW1lID0gc2VsZi5kYXRh WyduYW1lJ10KKworICAgICAgICB1cmwgPSBzZWxmLnVybC5mb3JtYXQoc2VsZi5zZXJ2ZXJfaWQp CisKKyAgICAgICAgIyBDcmVhdGUgdGhlIHJlc3RvcmUgam9iCisgICAgICAgIHJlc3BvbnNlID0g c2VsZi50ZXN0ZXIucG9zdCh1cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkYXRhPWpzb24uZHVtcHMoc2VsZi5wYXJhbXMpLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29udGVudF90eXBlPSdodG1sL2pzb24nKQorICAgICAgICBzZWxmLmFzc2Vy dEVxdWFscyhyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQorICAgICAgICByZXNwb25zZV9kYXRh ID0ganNvbi5sb2FkcyhyZXNwb25zZS5kYXRhLmRlY29kZSgndXRmLTgnKSkKKyAgICAgICAgam9i X2lkID0gcmVzcG9uc2VfZGF0YVsnZGF0YSddWydqb2JfaWQnXQorCisgICAgICAgIGFzc2VydCBy ZXN0b3JlX21lc3NhZ2VfbW9jay5jYWxsZWQKKyAgICAgICAgYXNzZXJ0IGJhdGNoX3Byb2Nlc3Nf bW9jay5jYWxsZWQKKworICAgICAgICBpZiBzZWxmLmV4cGVjdGVkX2NtZF9vcHRzOgorICAgICAg ICAgICAgZm9yIG9wdCBpbiBzZWxmLmV4cGVjdGVkX2NtZF9vcHRzOgorICAgICAgICAgICAgICAg IHNlbGYuYXNzZXJ0SW4oCisgICAgICAgICAgICAgICAgICAgIG9wdCwKKyAgICAgICAgICAgICAg ICAgICAgYmF0Y2hfcHJvY2Vzc19tb2NrLmNhbGxfYXJnc19saXN0WzBdWzFdWydhcmdzJ10KKyAg ICAgICAgICAgICAgICApCisgICAgICAgIGlmIHNlbGYubm90X2V4cGVjdGVkX2NtZF9vcHRzOgor ICAgICAgICAgICAgZm9yIG9wdCBpbiBzZWxmLm5vdF9leHBlY3RlZF9jbWRfb3B0czoKKyAgICAg ICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKAorICAgICAgICAgICAgICAgICAgICBvcHQsCisg ICAgICAgICAgICAgICAgICAgIGJhdGNoX3Byb2Nlc3NfbW9jay5jYWxsX2FyZ3NfbGlzdFswXVsx XVsnYXJncyddCisgICAgICAgICAgICAgICAgKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9v bHMvcmVzdG9yZS90ZXN0cy90ZXN0X3Jlc3RvcmVfbWVzc2FnZS5weSBiL3dlYi9wZ2FkbWluL3Rv b2xzL3Jlc3RvcmUvdGVzdHMvdGVzdF9yZXN0b3JlX21lc3NhZ2UucHkKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uYmI0NTI4NgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2Fk bWluL3Rvb2xzL3Jlc3RvcmUvdGVzdHMvdGVzdF9yZXN0b3JlX21lc3NhZ2UucHkKQEAgLTAsMCAr MSw3NiBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBU b29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9w bWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVT UUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK2ltcG9ydCBzeXMKKworZnJvbSBwZ2Fk bWluLnRvb2xzLnJlc3RvcmUgaW1wb3J0IFJlc3RvcmVNZXNzYWdlCitmcm9tIHBnYWRtaW4udXRp bHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCisKK2lmIHN5cy52ZXJzaW9uX2luZm8g PCAoMywgMyk6CisgICAgZnJvbSBtb2NrIGltcG9ydCBwYXRjaAorZWxzZToKKyAgICBmcm9tIHVu aXR0ZXN0Lm1vY2sgaW1wb3J0IHBhdGNoCisKKworY2xhc3MgUmVzdG9yZU1lc3NhZ2VUZXN0KEJh c2VUZXN0R2VuZXJhdG9yKToKKyAgICAiIiJUZXN0IHRoZSBSZXN0b3JlTWVzc2FnZSBjbGFzcyIi IgorICAgIHNjZW5hcmlvcyA9IFsKKyAgICAgICAgKCdXaGVuIHJlc3RvcmUgb2JqZWN0JywKKyAg ICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAg ICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X3Jlc3RvcmVfc2VydmVy JywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0PSds b2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAg ICAgICAgICAgICBiZmlsZT0ndGVzdF9yZXN0b3JlJywKKyAgICAgICAgICAgICAgICAgYXJncz1b CisgICAgICAgICAgICAgICAgICAgICAnLS1maWxlJywKKyAgICAgICAgICAgICAgICAgICAgICdy ZXN0b3JlX2ZpbGUnLAorICAgICAgICAgICAgICAgICAgICAgJy0taG9zdCcsCisgICAgICAgICAg ICAgICAgICAgICAnbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgICAgICctLXBvcnQnLAor ICAgICAgICAgICAgICAgICAgICAgJzU0NDQnLAorICAgICAgICAgICAgICAgICAgICAgJy0tdXNl cm5hbWUnLAorICAgICAgICAgICAgICAgICAgICAgJ3Bvc3RncmVzJywKKyAgICAgICAgICAgICAg ICAgICAgICctLW5vLXBhc3N3b3JkJywKKyAgICAgICAgICAgICAgICAgICAgICctLWRhdGFiYXNl JywKKyAgICAgICAgICAgICAgICAgICAgICdwb3N0Z3JlcycKKyAgICAgICAgICAgICAgICAgXSwK KyAgICAgICAgICAgICAgICAgY21kPSIvdGVzdF9wYXRoL3BnX3Jlc3RvcmUiCisgICAgICAgICAg ICAgKSwKKyAgICAgICAgICAgICBleHRlY3RlZF9tc2c9IlJlc3RvcmluZyBiYWNrdXAgb24gdGhl IHNlcnZlciAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICIndGVzdF9yZXN0b3JlX3NlcnZl ciAobG9jYWxob3N0OjU0NDQpJy4uLiIsCisgICAgICAgICAgICAgZXhwZXRjZWRfZGV0YWlsc19j bWQ9Jy90ZXN0X3BhdGgvcGdfcmVzdG9yZSAtLWZpbGUgJworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICcicmVzdG9yZV9maWxlIiAtLWhvc3QgImxvY2FsaG9zdCInCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAtLXBvcnQgIjU0NDQiIC0tdXNlcm5hbWUgInBv c3RncmVzIiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tbm8tcGFzc3dv cmQgLS1kYXRhYmFzZSAicG9zdGdyZXMiJworCisgICAgICAgICApKQorICAgIF0KKworICAgIEBw YXRjaCgncGdhZG1pbi50b29scy5yZXN0b3JlLlJlc3RvcmVNZXNzYWdlLmdldF9zZXJ2ZXJfZGV0 YWlscycpCisgICAgZGVmIHJ1blRlc3Qoc2VsZiwgZ2V0X3NlcnZlcl9kZXRhaWxzX21vY2spOgor ICAgICAgICBnZXRfc2VydmVyX2RldGFpbHNfbW9jay5yZXR1cm5fdmFsdWUgPSBcCisgICAgICAg ICAgICBzZWxmLmNsYXNzX3BhcmFtc1snbmFtZSddLFwKKyAgICAgICAgICAgIHNlbGYuY2xhc3Nf cGFyYW1zWydob3N0J10sXAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3BvcnQnXQor CisgICAgICAgIHJlc3RvcmVfb2JqID0gUmVzdG9yZU1lc3NhZ2UoCisgICAgICAgICAgICBzZWxm LmNsYXNzX3BhcmFtc1snc2lkJ10sCisgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snYmZp bGUnXSwKKyAgICAgICAgICAgICpzZWxmLmNsYXNzX3BhcmFtc1snYXJncyddCisgICAgICAgICkK KworICAgICAgICAjIENoZWNrIHRoZSBleHBlY3RlZCBtZXNzYWdlIHJldHVybmVkCisgICAgICAg IGFzc2VydCByZXN0b3JlX29iai5tZXNzYWdlID09IHNlbGYuZXh0ZWN0ZWRfbXNnCisKKyAgICAg ICAgIyBDaGVjayB0aGUgY29tbWFuZAorICAgICAgICBvYmpfZGV0YWlscyA9IHJlc3RvcmVfb2Jq LmRldGFpbHMoc2VsZi5jbGFzc19wYXJhbXNbJ2NtZCddLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2FyZ3MnXSkKKyAgICAgICAg c2VsZi5hc3NlcnRJbihzZWxmLmV4cGV0Y2VkX2RldGFpbHNfY21kLCBvYmpfZGV0YWlscykKZGlm ZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL3B5dGhvbl90ZXN0X3V0aWxzL3Rlc3RfdXRpbHMucHkg Yi93ZWIvcmVncmVzc2lvbi9weXRob25fdGVzdF91dGlscy90ZXN0X3V0aWxzLnB5CmluZGV4IDNl NTE3YjYuLjZmNTdjNjcgMTAwNjQ0Ci0tLSBhL3dlYi9yZWdyZXNzaW9uL3B5dGhvbl90ZXN0X3V0 aWxzL3Rlc3RfdXRpbHMucHkKKysrIGIvd2ViL3JlZ3Jlc3Npb24vcHl0aG9uX3Rlc3RfdXRpbHMv dGVzdF91dGlscy5weQpAQCAtMjEsNiArMjEsOCBAQCBpbXBvcnQgY29uZmlnCiBpbXBvcnQgcmVn cmVzc2lvbgogZnJvbSByZWdyZXNzaW9uIGltcG9ydCB0ZXN0X3NldHVwCiAKK2Zyb20gcGdhZG1p bi51dGlscy5wcmVmZXJlbmNlcyBpbXBvcnQgUHJlZmVyZW5jZXMKKwogU0VSVkVSX0dST1VQID0g dGVzdF9zZXR1cC5jb25maWdfZGF0YVsnc2VydmVyX2dyb3VwJ10KIGZpbGVfbmFtZSA9IG9zLnBh dGgucmVhbHBhdGgoX19maWxlX18pCiAKQEAgLTg2LDcgKzg4LDggQEAgZGVmIGdldF9jb25maWdf ZGF0YSgpOgogICAgICAgICAgICAgICAgICJkYl9wYXNzd29yZCI6IHNydlsnZGJfcGFzc3dvcmQn XSwKICAgICAgICAgICAgICAgICAicm9sZSI6ICIiLAogICAgICAgICAgICAgICAgICJzc2xtb2Rl Ijogc3J2Wydzc2xtb2RlJ10sCi0gICAgICAgICAgICAgICAgInRhYmxlc3BhY2VfcGF0aCI6IHNy di5nZXQoJ3RhYmxlc3BhY2VfcGF0aCcsIE5vbmUpCisgICAgICAgICAgICAgICAgInRhYmxlc3Bh Y2VfcGF0aCI6IHNydi5nZXQoJ3RhYmxlc3BhY2VfcGF0aCcsIE5vbmUpLAorICAgICAgICAgICAg ICAgICJkZWZhdWx0X2JpbmFyeV9wYXRocyI6IHNydi5nZXQoJ2RlZmF1bHRfYmluYXJ5X3BhdGhz JywgTm9uZSkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICdkYl90eXBlJyBpbiBzcnY6 CiAgICAgICAgICAgICAgICAgZGF0YVsnZGJfdHlwZSddID0gc3J2WydkYl90eXBlJ10KQEAgLTQ0 NSw2ICs0NDgsMTMgQEAgZGVmIGRlbGV0ZV9zZXJ2ZXJfd2l0aF9hcGkodGVzdGVyLCBzaWQpOgog ICAgICAgICB1cmwgPSAnL2Jyb3dzZXIvc2VydmVyL29iai8nICsgc3RyKFNFUlZFUl9HUk9VUCkg KyAiLyIKICAgICAgICAgIyBDYWxsIEFQSSB0byBkZWxldGUgdGhlIHNlcnZlcgogICAgICAgICBy ZXNwb25zZSA9IHRlc3Rlci5kZWxldGUodXJsICsgc3RyKHNpZCkpCisKKyAgICAgICAgY250ID0g MAorICAgICAgICBmb3IgcyBpbiByZWdyZXNzaW9uLnBhcmVudF9ub2RlX2RpY3RbInNlcnZlciJd OgorICAgICAgICAgICAgaWYgc1snc2VydmVyX2lkJ10gPT0gaW50KHNpZCk6CisgICAgICAgICAg ICAgICAgZGVsIHJlZ3Jlc3Npb24ucGFyZW50X25vZGVfZGljdFsic2VydmVyIl1bY250XQorICAg ICAgICAgICAgY250ICs9IDEKKwogICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgIHRyYWNl YmFjay5wcmludF9leGMoZmlsZT1zeXMuc3RkZXJyKQogCkBAIC01OTYsNiArNjA2LDY0IEBAIGRl ZiBnZXRfZGJfc2VydmVyKHNpZCk6CiAgICAgcmV0dXJuIGNvbm5lY3Rpb24KIAogCitkZWYgc2V0 X3ByZWZlcmVuY2UoZGVmYXVsdF9iaW5hcnlfcGF0aCk6CisgICAgY29ubiA9IHNxbGl0ZTMuY29u bmVjdChjb25maWcuVEVTVF9TUUxJVEVfUEFUSCkKKyAgICBjdXIgPSBjb25uLmN1cnNvcigpCisK KyAgICBwZXJmID0gUHJlZmVyZW5jZXMubW9kdWxlKCdwYXRocycpCisgICAgcGdfcGF0aF9wcmVm ID0gcGVyZi5wcmVmZXJlbmNlKCdwZ19iaW5fZGlyJykKKworICAgIHVzZXJfcHJlZiA9IGN1ci5l eGVjdXRlKAorICAgICAgICAnU0VMRUNUIHBpZCwgdWlkIEZST00gdXNlcl9wcmVmZXJlbmNlcyB3 aGVyZSBwaWQ9JXMnICUgcGdfcGF0aF9wcmVmLnBpZAorICAgICkKKyAgICB1c2VyX3ByZWYgPSB1 c2VyX3ByZWYuZmV0Y2hvbmUoKQorCisgICAgaWYgdXNlcl9wcmVmOgorICAgICAgICBjdXIuZXhl Y3V0ZSgnVVBEQVRFIHVzZXJfcHJlZmVyZW5jZXMgU0VUIHZhbHVlID0gPyBXSEVSRSBwaWQgPSA/ JywKKyAgICAgICAgICAgICAgICAgICAgKGRlZmF1bHRfYmluYXJ5X3BhdGhbJ3BnJ10sIHBnX3Bh dGhfcHJlZi5waWQpKQorICAgIGVsc2U6CisgICAgICAgIHBnX3ByZWZfZGV0YWlscyA9IChwZ19w YXRoX3ByZWYucGlkLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdF9iaW5h cnlfcGF0aFsncGcnXSkKKyAgICAgICAgY3VyLmV4ZWN1dGUoJ0lOU0VSVCBJTlRPIHVzZXJfcHJl ZmVyZW5jZXMocGlkLCB1aWQsIHZhbHVlKScKKyAgICAgICAgICAgICAgICAgICAgJyBWQUxVRVMg KD8sPyw/KScsIHBnX3ByZWZfZGV0YWlscykKKworICAgIHBwYXNfcGF0aF9wcmVmID0gcGVyZi5w cmVmZXJlbmNlKCdwcGFzX2Jpbl9kaXInKQorCisgICAgdXNlcl9wcmVmID0gY3VyLmV4ZWN1dGUo CisgICAgICAgICdTRUxFQ1QgcGlkLCB1aWQgRlJPTSB1c2VyX3ByZWZlcmVuY2VzIHdoZXJlIHBp ZD0lcycgJQorICAgICAgICBwcGFzX3BhdGhfcHJlZi5waWQKKyAgICApCisgICAgdXNlcl9wcmVm ID0gdXNlcl9wcmVmLmZldGNob25lKCkKKworICAgIGlmIHVzZXJfcHJlZjoKKyAgICAgICAgY3Vy LmV4ZWN1dGUoJ1VQREFURSB1c2VyX3ByZWZlcmVuY2VzIFNFVCB2YWx1ZSA9ID8gV0hFUkUgcGlk ID0gPyAnLAorICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdF9iaW5hcnlfcGF0aFsncHBhcydd LCBwcGFzX3BhdGhfcHJlZi5waWQpKQorICAgIGVsc2U6CisgICAgICAgIHBwYXNfcHJlZl9kZXRh aWxzID0gKHBwYXNfcGF0aF9wcmVmLnBpZCwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZGVmYXVsdF9iaW5hcnlfcGF0aFsncHBhcyddKQorICAgICAgICBjdXIuZXhlY3V0ZSgnSU5T RVJUIElOVE8gdXNlcl9wcmVmZXJlbmNlcyhwaWQsIHVpZCwgdmFsdWUpJworICAgICAgICAgICAg ICAgICAgICAnIFZBTFVFUyAoPyw/LD8pJywgcHBhc19wcmVmX2RldGFpbHMpCisKKyAgICBncGRi X3BhdGhfcHJlZiA9IHBlcmYucHJlZmVyZW5jZSgnZ3BkYl9iaW5fZGlyJykKKworICAgIHVzZXJf cHJlZiA9IGN1ci5leGVjdXRlKAorICAgICAgICAnU0VMRUNUIHBpZCwgdWlkIEZST00gdXNlcl9w cmVmZXJlbmNlcyB3aGVyZSBwaWQ9JXMnICUKKyAgICAgICAgZ3BkYl9wYXRoX3ByZWYucGlkCisg ICAgKQorICAgIHVzZXJfcHJlZiA9IHVzZXJfcHJlZi5mZXRjaG9uZSgpCisKKyAgICBpZiB1c2Vy X3ByZWY6CisgICAgICAgIGN1ci5leGVjdXRlKCdVUERBVEUgdXNlcl9wcmVmZXJlbmNlcyBTRVQg dmFsdWUgPSA/IFdIRVJFIHBpZCA9ID8gJywKKyAgICAgICAgICAgICAgICAgICAgKGRlZmF1bHRf YmluYXJ5X3BhdGhbJ2dwZGInXSwgZ3BkYl9wYXRoX3ByZWYucGlkKSkKKyAgICBlbHNlOgorICAg ICAgICBncGRiX3ByZWZfZGV0YWlscyA9IChncGRiX3BhdGhfcHJlZi5waWQsIDEsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRfYmluYXJ5X3BhdGhbJ2dwZGInXSkKKyAgICAg ICAgY3VyLmV4ZWN1dGUoJ0lOU0VSVCBJTlRPIHVzZXJfcHJlZmVyZW5jZXMocGlkLCB1aWQsIHZh bHVlKScKKyAgICAgICAgICAgICAgICAgICAgJyBWQUxVRVMgKD8sPyw/KScsIGdwZGJfcHJlZl9k ZXRhaWxzKQorCisgICAgY29ubi5jb21taXQoKQorCisKIGRlZiByZW1vdmVfZGJfZmlsZSgpOgog ICAgICIiIlRoaXMgZnVuY3Rpb24gdXNlIHRvIHJlbW92ZSBTUUxpdGUgREIgZmlsZSIiIgogICAg IGlmIG9zLnBhdGguaXNmaWxlKGNvbmZpZy5URVNUX1NRTElURV9QQVRIKToKZGlmZiAtLWdpdCBh L3dlYi9yZWdyZXNzaW9uL3J1bnRlc3RzLnB5IGIvd2ViL3JlZ3Jlc3Npb24vcnVudGVzdHMucHkK aW5kZXggZDc4NjY5Mi4uNjllOWY0ZCAxMDA2NDQKLS0tIGEvd2ViL3JlZ3Jlc3Npb24vcnVudGVz dHMucHkKKysrIGIvd2ViL3JlZ3Jlc3Npb24vcnVudGVzdHMucHkKQEAgLTExNCw2ICsxMTQsOSBA QCB0ZXN0X2NsaWVudCA9IGFwcC50ZXN0X2NsaWVudCgpCiBkcml2ZXIgPSBOb25lCiBhcHBfc3Rh cnRlciA9IE5vbmUKIGhhbmRsZV9jbGVhbnVwID0gTm9uZQorYXBwLlBHQURNSU5fUlVOVElNRSA9 IFRydWUKK2lmIGNvbmZpZy5TRVJWRVJfTU9ERSBpcyBUcnVlOgorICAgIGFwcC5QR0FETUlOX1JV TlRJTUUgPSBGYWxzZQogCiBzZXRhdHRyKHVuaXRfdGVzdC5yZXN1bHQuVGVzdFJlc3VsdCwgInBh c3NlZCIsIFtdKQogCkBAIC0yMTMsOCArMjE2LDE5IEBAIGRlZiBnZXRfdGVzdF9tb2R1bGVzKGFy Z3VtZW50cyk6CiAgICAgICAgICAgICAgICAgaWYgJ2hlYWRsZXNzX2Nocm9tZScgaW4gdGVzdF9z ZXR1cC5jb25maWdfZGF0YToKICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdF9zZXR1cC5jb25m aWdfZGF0YVsnaGVhZGxlc3NfY2hyb21lJ106CiAgICAgICAgICAgICAgICAgICAgICAgICBvcHRp b25zLmFkZF9hcmd1bWVudCgiLS1oZWFkbGVzcyIpCi0gICAgICAgICAgICBvcHRpb25zLmFkZF9h cmd1bWVudCgiLS13aW5kb3ctc2l6ZT0xMjgweDEwMjQiKQogICAgICAgICAgICAgZHJpdmVyID0g d2ViZHJpdmVyLkNocm9tZShjaHJvbWVfb3B0aW9ucz1vcHRpb25zKQorICAgICAgICAgICAgdHJ5 OgorICAgICAgICAgICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm9bMF0gPCAzOgorICAgICAgICAg ICAgICAgICAgICBpbXBvcnQgVGtpbnRlciBhcyB0a2ludGVyCisgICAgICAgICAgICAgICAgZWxz ZToKKyAgICAgICAgICAgICAgICAgICAgaW1wb3J0IHRraW50ZXIgYXMgdGtpbnRlcgorCisgICAg ICAgICAgICAgICAgcm9vdCA9IHRraW50ZXIuVGsoKQorICAgICAgICAgICAgICAgIHdpZHRoID0g cm9vdC53aW5mb19zY3JlZW53aWR0aCgpCisgICAgICAgICAgICAgICAgaGVpZ2h0ID0gcm9vdC53 aW5mb19zY3JlZW5oZWlnaHQoKQorICAgICAgICAgICAgICAgIGRyaXZlci5zZXRfd2luZG93X3Np emUod2lkdGgsIGhlaWdodCkKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBk cml2ZXIuc2V0X3dpbmRvd19zaXplKDEyODAsIDgwMCkKIAogICAgICAgICBhcHBfc3RhcnRlciA9 IEFwcFN0YXJ0ZXIoZHJpdmVyLCBjb25maWcpCiAgICAgICAgIGFwcF9zdGFydGVyLnN0YXJ0X2Fw cCgpCkBAIC0yMzQsNyArMjQ4LDYgQEAgZGVmIGdldF90ZXN0X21vZHVsZXMoYXJndW1lbnRzKToK ICAgICAjIFNvcnQgbW9kdWxlIGxpc3Qgc28gdGhhdCB0ZXN0IHN1aXRlIGV4ZWN1dGVzIHRoZSB0 ZXN0IGNhc2VzIHNlcXVlbnRpYWxseQogICAgIG1vZHVsZV9saXN0ID0gVGVzdHNHZW5lcmF0b3JS ZWdpc3RyeS5yZWdpc3RyeS5pdGVtcygpCiAgICAgbW9kdWxlX2xpc3QgPSBzb3J0ZWQobW9kdWxl X2xpc3QsIGtleT1sYW1iZGEgbW9kdWxlX3R1cGxlOiBtb2R1bGVfdHVwbGVbMF0pCi0KICAgICBy ZXR1cm4gbW9kdWxlX2xpc3QKIAogCkBAIC0zOTMsNiArNDA2LDkgQEAgaWYgX19uYW1lX18gPT0g J19fbWFpbl9fJzoKICAgICAgICAgICAgICMgQ3JlYXRlIHRlc3Qgc2VydmVyCiAgICAgICAgICAg ICBzZXJ2ZXJfaW5mb3JtYXRpb24gPSB0ZXN0X3V0aWxzLmNyZWF0ZV9wYXJlbnRfc2VydmVyX25v ZGUoc2VydmVyKQogCisgICAgICAgICAgICBpZiBzZXJ2ZXJbJ2RlZmF1bHRfYmluYXJ5X3BhdGhz J10gaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgdGVzdF91dGlscy5zZXRfcHJlZmVyZW5j ZShzZXJ2ZXJbJ2RlZmF1bHRfYmluYXJ5X3BhdGhzJ10pCisKICAgICAgICAgICAgIHN1aXRlID0g Z2V0X3N1aXRlKHRlc3RfbW9kdWxlX2xpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzZXJ2ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2NsaWVudCwKZGlm ZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL3Rlc3RfY29uZmlnLmpzb24uaW4gYi93ZWIvcmVncmVz c2lvbi90ZXN0X2NvbmZpZy5qc29uLmluCmluZGV4IGViYzE0NjYuLjE1YjEzM2EgMTAwNjQ0Ci0t LSBhL3dlYi9yZWdyZXNzaW9uL3Rlc3RfY29uZmlnLmpzb24uaW4KKysrIGIvd2ViL3JlZ3Jlc3Np b24vdGVzdF9jb25maWcuanNvbi5pbgpAQCAtMjMsNyArMjMsMTIgQEAKICAgICAgICJtYWludGVu YW5jZV9kYiI6ICJwb3N0Z3JlcyIsCiAgICAgICAic3NsbW9kZSI6ICJwcmVmZXIiLAogICAgICAg InRhYmxlc3BhY2VfcGF0aCI6ICIiLAotICAgICAgImVuYWJsZWQiOiB0cnVlCisgICAgICAiZW5h YmxlZCI6IHRydWUsCisgICAgICAiZGVmYXVsdF9iaW5hcnlfcGF0aHMiOiB7CisgICAgICAgICJw ZyI6ICIvb3B0L1Bvc3RncmVTUUwvOS40L2Jpbi8iLAorICAgICAgICAicHBhcyI6ICIvb3B0L2Vk Yi9hczEwL2Jpbi8iLAorICAgICAgICAiZ3BkYiI6ICIiCisgICAgICB9CiAgICAgfQogICBdLAog ICAic2VydmVyX3VwZGF0ZV9kYXRhIjogWwo= --000000000000f3b132056e6f4637--