From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp2.migadu.com ([2001:41d0:403:58f0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms13.migadu.com with LMTPS id oDRiAHTGcWcYHwEAe85BDQ:P1 (envelope-from ) for ; Sun, 29 Dec 2024 22:00:20 +0000 Received: from aspmx1.migadu.com ([2001:41d0:403:58f0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp2.migadu.com with LMTPS id oDRiAHTGcWcYHwEAe85BDQ (envelope-from ) for ; Sun, 29 Dec 2024 23:00:20 +0100 X-Envelope-To: larch@yhetil.org Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=debbugs.gnu.org header.s=debbugs-gnu-org header.b=FhJsp9XN; dkim=fail ("headers rsa verify failed") header.d=gmail.com header.s=20230601 header.b=MoDAzTF4; spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org"; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=gmail.com (policy=none) ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1735509619; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type:resent-cc:resent-from:resent-sender: resent-message-id:in-reply-to:in-reply-to:references:references: list-id:list-help:list-unsubscribe:list-subscribe:list-post: dkim-signature; bh=1O/4P0g06DFTMGOWlUtrj87JRq+B7/i3BoQ5LSubkBQ=; b=MBRycx8L6/VN4xl48cjgUAYHS/yE0iy/C0aaKRneaDtOZxp1d34uk5uJx3Z/XjH2iVc+Y6 FIklPtiNdUl5xnlepCRO1NNIM+ak/rlvmE+gCHzLSszLXo/Z29S41PeT2sWWoIdrECbhGR TtaKEvPINCcDodm/6tYLFwzu0GUMTT7NF+/TOVDg4qUyCyPA2Xovu4wwD319wd2RPHZYqX 91BCuB63IOmINRjbCKuk78lt2vtEXET4k6yYzAAjXOFFjVH8JczLF51cqKsPIp0wMlD2J0 JpvD/aErOlTctpyfsSYRCh8KfgrK6nAHp1gcbX/Q1WlC9E/C1G591RdGHzytIw== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=debbugs.gnu.org header.s=debbugs-gnu-org header.b=FhJsp9XN; dkim=fail ("headers rsa verify failed") header.d=gmail.com header.s=20230601 header.b=MoDAzTF4; spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org"; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=gmail.com (policy=none) ARC-Seal: i=1; s=key1; d=yhetil.org; t=1735509619; a=rsa-sha256; cv=none; b=SDaJzvzkyLbaxb5TjQfR3JMMCGeL0WnKxRQbNsom1ZEyS7mJLRuKGFCpxIEeVaRArEVQFW 4IbZz2+a+jBmF0kvjss/nZjpmJqM3YueEUk7ogksrLfM0eSBNEP9DcbwWKEm6yQwyZOsVs Ful0rIrHt1ynUmuyERrJki34bRNQAnRwMM32uhvGmpjq6lxnZ6k/Ufdmj4t5NNYzDuCVNx Wfn7p8R9ouG1aY17G85QTHlOKwSf8cu1U8VunCTju1g9924eROKgRJWS3MAKjAr0IiMr1P dvgOnw9qwP1jc2pgA1WFUj1DIv0CuX6dUqpt1HzgYdvXRCE3wSR88otDPwjyIQ== Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 7F4AB8DE92 for ; Sun, 29 Dec 2024 23:00:19 +0100 (CET) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tS1KR-0000KU-9f; Sun, 29 Dec 2024 17:00:07 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tS1KM-0000Hk-JE for guix-patches@gnu.org; Sun, 29 Dec 2024 17:00:03 -0500 Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tS1KM-0008Es-8y for guix-patches@gnu.org; Sun, 29 Dec 2024 17:00:02 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=Date:From:MIME-Version:To:In-Reply-To:References:Subject; bh=1O/4P0g06DFTMGOWlUtrj87JRq+B7/i3BoQ5LSubkBQ=; b=FhJsp9XNTtiq3hINkiZK1d7QmW9s5z9IlxJ8IDvWqQoChqoBtag+a6qvDO0jnIuoGGPbaBFnsG3+4u2q3rinwxwHfPStvHaNMRb8XNLHaeRFAh2GQGN0xL8pGlo013VA/E3th1rtJLaxiL9focD5jlcuyBsnuNHwbFBhOk64+4gU28xpBXgjn7p2P/w9h1n5EjbjRdoPqtvOnZyoeJX6nFdpJPRf/t9rZhrl1RSqKY5FlTiEoyv27vDzOF5IapFSX53YlMr8VUTEi6pGlAXHG/a7+zEndpukUYHi8rr8ppM9dlYMZMFz5cTRkOaDQWolHDGzBL2kYqBdb6snaPmrJg==; Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1tS1KM-0007vJ-3D for guix-patches@gnu.org; Sun, 29 Dec 2024 17:00:02 -0500 X-Loop: help-debbugs@gnu.org Subject: [bug#74900] [PATCH 2/2] Introduce (modify-json), (delete-fields), and (replace-fields) to node-build-system References: In-Reply-To: Resent-From: Daniel Khodabakhsh Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Sun, 29 Dec 2024 22:00:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 74900 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 74900@debbugs.gnu.org Received: via spool by 74900-submit@debbugs.gnu.org id=B74900.173550959530415 (code B ref 74900); Sun, 29 Dec 2024 22:00:01 +0000 Received: (at 74900) by debbugs.gnu.org; 29 Dec 2024 21:59:55 +0000 Received: from localhost ([127.0.0.1]:56449 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tS1KF-0007uV-GP for submit@debbugs.gnu.org; Sun, 29 Dec 2024 16:59:55 -0500 Received: from mail-vs1-f48.google.com ([209.85.217.48]:60643) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tS1KD-0007uG-Cz for 74900@debbugs.gnu.org; Sun, 29 Dec 2024 16:59:53 -0500 Received: by mail-vs1-f48.google.com with SMTP id ada2fe7eead31-4b24d969db1so2071944137.0 for <74900@debbugs.gnu.org>; Sun, 29 Dec 2024 13:59:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1735509528; x=1736114328; darn=debbugs.gnu.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=1O/4P0g06DFTMGOWlUtrj87JRq+B7/i3BoQ5LSubkBQ=; b=MoDAzTF4csxfeGO+76v1MihF3OSf4/AifxTlaJyRovvh37wiSmOEg8zl2u3K46PWrO rd5dN3XKvVFjP/72LD9t2dabin83IPCj5sBYEfMxEC2e30Q/gvqC5ACfBCeUEAEwtgdJ WdfFUEiA9dA2BFlLLww+P71/+mPXHOYGYoD8S1OJFkfik4lYmruz1Gf+9K0KXsCPa9ia VJ/ECJQ4ig7jWTD3NoDeKTtIufbQsBcJIjV1LrZpT+xWG2J4zdeAT14kqxVtio4pZkUz Rv3MzXKXYblsuAkUWEZ8FfUdFqZG/kZW6d6Qv6NwTiIUWviKWYq8TAzqUl+EeH8iFBpC 1wug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1735509528; x=1736114328; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=1O/4P0g06DFTMGOWlUtrj87JRq+B7/i3BoQ5LSubkBQ=; b=W4ziomaU56OxfMu9W8m5iBBRX+EhueAyBwJBe2q22IMe00slR4vax9OSZCStxYpAIN 9fqbkYtstKnMBOxA1kq0xgZZkZLEEWo4YhgeDBE9KR8FspUFiPREYBI9HHeWh2/RjQ8U 6SEzkktyvHPLGpUNwCjsg8JPk8R7kYg/ytgAofqoB5OkQEz5WLFPJRZMs8Rq3U4wzAhH Zy6mA2nkbiiV955bIKL2P60Ufz9Aal4c8bryuFViXKuJ5T/UjbTrN1V+WQUD80+A5fLx R9YfSgM25rSrnhOnZ7T/W2cQ+s+nmU74BMJGtfMO4nlOdEIyFx3WdhVjlrjneTw1xFR0 xxkQ== X-Gm-Message-State: AOJu0Yyt6Aoh5A5P/sw7x7n2yBPtma4WF2x1IPS6w6090EfxvtGYxIfd PpKPGa8kJxI2UrCvFvpPP3pp7Dx2giE8hGWJmNGxUVhIT8/PblC7ymIccHzkYyfa4Z59rjY5ISD LoEkvUY4rLD4ODk2r9YvIghRkoR7pKVsX X-Gm-Gg: ASbGncsj1w+FtkdH9sVLkyqNm2WGXSXThu1Jis58KFmijHmePM0Ym1iMWkXOSbz7jM1 dyVWwSYuxd5Ezaplci2WOofGDZmy20yhwaaZCTZ/e X-Google-Smtp-Source: AGHT+IGVwYnGldx1yjnjNxN4ffk6MLaWjomGZWW1Qfed+j3avGkTyMAwRqLQfXn/JbjZO6TeGDket2k9zKQ0eYOtiaE= X-Received: by 2002:a05:6102:3e83:b0:4b2:af6e:5fef with SMTP id ada2fe7eead31-4b2cc35c2d5mr26478081137.9.1735509527302; Sun, 29 Dec 2024 13:58:47 -0800 (PST) MIME-Version: 1.0 From: Daniel Khodabakhsh Date: Sun, 29 Dec 2024 21:58:35 +0000 Message-ID: Content-Type: multipart/mixed; boundary="000000000000e12ff3062a6fccd4" X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+larch=yhetil.org@gnu.org Sender: guix-patches-bounces+larch=yhetil.org@gnu.org X-Migadu-Flow: FLOW_IN X-Migadu-Country: US X-Migadu-Scanner: mx11.migadu.com X-Migadu-Spam-Score: -0.07 X-Spam-Score: -0.07 X-Migadu-Queue-Id: 7F4AB8DE92 X-TUID: VHdIBWDX7G8i --000000000000e12ff3062a6fccd4 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable This change introduces helper procedures (modify-json) which takes in lambd= as which modify the target json #:file which defaults to package.json This change also includes (delete-fields) and (replace-fields) to help dele= ting and replacing the value of fields in a package.json file. Signed-off-by: Daniel Khodabakhsh Change-Id: I957f7ca814078d2136d5261985174820235f1369 --- gnu/packages/node-xyz.scm | 324 ++++++++++++++----------------- gnu/packages/node.scm | 86 ++++---- guix/build/node-build-system.scm | 198 +++++++++++++++---- 3 files changed, 355 insertions(+), 253 deletions(-) diff --git a/gnu/packages/node-xyz.scm b/gnu/packages/node-xyz.scm index ec3f9fbfb1..cdc69de0c1 100644 --- a/gnu/packages/node-xyz.scm +++ b/gnu/packages/node-xyz.scm @@ -69,18 +69,7 @@ (define-public node-acorn ;; We need to remove the prepare script from "package.json", = as ;; it would try to use the build environment and would block = the ;; automatic building by other packages making use of node-ac= orn. - ;; TODO: Add utility function - (with-atomic-json-file-replacement (lambda (pkg-meta-alist) - (map - (match-lambda - (("scripts" . scripts-alist) - (cons "scripts" (filter - (match-lambda - (("prepare" . _) #f) - (_ #t)) - scripts-alist))) - (other other)) - pkg-meta-alist))))) + (modify-json (delete-fields '(("scripts" "prepare")))))) (replace 'build (lambda* (#:key inputs native-inputs #:allow-other-keys) (let ((esbuild (search-input-file (or native-inputs inputs) @@ -136,38 +125,26 @@ (define-public node-addon-api (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies - `("benchmark" - "bindings" - "clang-format" - "eslint" - "eslint-config-semistandard" - "eslint-config-standard" - "eslint-plugin-import" - "eslint-plugin-node" - "eslint-plugin-promise" - "fs-extra" - "neostandard" - "path" - "pre-commit" - "semver")))) - (add-after 'unpack 'skip-js-tests - ;; We can't run the js-based tests, - ;; but we can still do the C++ parts - (lambda args - (define new-test-script - "echo stopping after pretest on Guix") - (with-atomic-json-file-replacement (lambda (pkg-meta-alist) - (map - (match-lambda - (("scripts" . scripts-alist) - (cons "scripts" (map - (match-lambda - (("test" . _) (cons "test" new-test-script)) - (other other)) - scripts-alist))) - (other other)) - pkg-meta-alist)))))))) + (modify-json + (delete-dependencies `( + "benchmark" + "bindings" + "clang-format" + "eslint" + "eslint-config-semistandard" + "eslint-config-standard" + "eslint-plugin-import" + "eslint-plugin-node" + "eslint-plugin-promise" + "fs-extra" + "neostandard" + "path" + "pre-commit" + "semver")) + ;; We can't run the js-based tests, + ;; but we can still do the C++ parts + (replace-fields (list (cons + "scripts.test" "echo stopping after pretest on Guix")))))= )))) (home-page "https://github.com/nodejs/node-addon-api") (synopsis "Node.js API (Node-API) header-only C++ wrappers") (description "This module contains header-only C++ wrapper classes whi= ch @@ -232,7 +209,7 @@ (define-public node-buffer-crc32 #:phases (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda _ - (delete-dependencies '("tap"))))))) + (modify-json (delete-dependencies '("tap")))))))) (home-page "https://github.com/brianloveswords/buffer-crc32") (synopsis "CRC32 implementation in Javascript") (description @@ -288,14 +265,15 @@ (define-public node-crx3 "minimist")))) (add-after 'patch-dependencies 'delete-dependencies (lambda _ - (delete-dependencies '("c8" - "docdash" - "eslint" - "eslint-plugin-jsdoc" - "jsdoc" - "tap-diff" - "tape" - "tape-catch"))))))) + (modify-json (delete-dependencies + '("c8" + "docdash" + "eslint" + "eslint-plugin-jsdoc" + "jsdoc" + "tap-diff" + "tape" + "tape-catch")))))))) (inputs (list node-minimist node-pbf node-yazl)) (home-page "https://github.com/ahwayakchih/crx3") (synopsis "Create CRXv3 browser extensions with Javascript") @@ -325,18 +303,19 @@ (define-public node-debug (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies `("brfs" - "browserify" - "coveralls" - "istanbul" - "karma" - "karma-browserify" - "karma-chrome-launcher" - "karma-mocha" - "mocha" - "mocha-lcov-reporter" - "xo" - "supports-color"))))) + (modify-json (delete-dependencies + `("brfs" + "browserify" + "coveralls" + "istanbul" + "karma" + "karma-browserify" + "karma-chrome-launcher" + "karma-mocha" + "mocha" + "mocha-lcov-reporter" + "xo" + "supports-color")))))) #:tests? #f)) (home-page "https://github.com/debug-js/debug") (synopsis "Debugging utility for Node.js") @@ -421,21 +400,22 @@ (define-public node-file-uri-to-path (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies `("@types/mocha" - "@types/node" - "@typescript-eslint/eslint-plugin" - "@typescript-eslint/parser" - "cpy-cli" - "eslint" - "eslint-config-airbnb" - "eslint-config-prettier" - "eslint-import-resolver-typescript" - "eslint-plugin-import" - "eslint-plugin-jsx-a11y" - "eslint-plugin-react" - "mocha" - "rimraf" - "typescript")))) + (modify-json (delete-dependencies + `("@types/mocha" + "@types/node" + "@typescript-eslint/eslint-plugin" + "@typescript-eslint/parser" + "cpy-cli" + "eslint" + "eslint-config-airbnb" + "eslint-config-prettier" + "eslint-import-resolver-typescript" + "eslint-plugin-import" + "eslint-plugin-jsx-a11y" + "eslint-plugin-react" + "mocha" + "rimraf" + "typescript"))))) (replace 'build (lambda* (#:key inputs native-inputs #:allow-other-keys) (copy-recursively "src" "dist") @@ -497,7 +477,8 @@ (define-public node-ieee754 #:phases (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda _ - (delete-dependencies '("airtap" "standard" "tape")))= )))) + (modify-json (delete-dependencies + '("airtap" "standard" "tape")))))))) (home-page "https://github.com/feross/ieee754") (synopsis "Read/write IEEE754 floating point numbers in Javascript") (description "This package can read and write IEEE754 floating point @@ -524,7 +505,7 @@ (define-public node-inherits (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies '("tap"))))) + (modify-json (delete-dependencies '("tap")))))) ;; FIXME: Tests depend on node-tap #:tests? #f)) (home-page "https://github.com/isaacs/inherits") @@ -553,8 +534,8 @@ (define-public node-irc (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies - `("ansi-color" "faucet" "jscs" "tape"))))) + (modify-json (delete-dependencies + `("ansi-color" "faucet" "jscs" "tape")))))) #:tests? #f)) (inputs (list node-irc-colors)) @@ -583,7 +564,7 @@ (define-public node-irc-colors (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies `("istanbul" "vows"))))) + (modify-json (delete-dependencies `("istanbul" "vows")))))) #:tests? #f)) (home-page "https://github.com/fent/irc-colors.js") (synopsis "Node.js module providing color and formatting for IRC") @@ -657,7 +638,8 @@ (define-public node-minimist #:phases (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda _ - (delete-dependencies '("covert" "tap" "tape"))))))) + (modify-json (delete-dependencies + '("covert" "tap" "tape")))))))) (home-page "https://github.com/substack/minimist") (synopsis "Parse CLI arguments in Javascript") (description "This package can scan for CLI flags and arguments in @@ -683,12 +665,13 @@ (define-public node-ms (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies `("eslint" - "expect.js" - "husky" - "lint-staged" - "mocha" - "prettier"))))) + (modify-json (delete-dependencies + `("eslint" + "expect.js" + "husky" + "lint-staged" + "mocha" + "prettier")))))) #:tests? #f)) (home-page "https://github.com/vercel/ms") (synopsis "Convert time to milliseconds") @@ -716,14 +699,14 @@ (define-public node-nan (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies + (modify-json (delete-dependencies '("bindings" "commander" "glob" "request" "node-gyp" ;; would be needed for tests "tap" - "xtend"))))) + "xtend")))))) ;; tests need tap and other dependencies #:tests? #f)) (inputs @@ -755,7 +738,8 @@ (define-public node-normalize-path #:phases (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda _ - (delete-dependencies '("gulp-format-md" "mocha")))))= )) + (modify-json (delete-dependencies + '("gulp-format-md" "mocha")))))))) (native-inputs (list node-minimist)) (home-page "https://github.com/jonschlinkert/normalize-path") (synopsis "Normalize slashes in a file path") @@ -784,7 +768,7 @@ (define-public node-once (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies '("tap"))))) + (modify-json (delete-dependencies '("tap")))))) ;; FIXME: Tests depend on node-tap #:tests? #f)) (inputs @@ -841,7 +825,8 @@ (define-public node-path-key #:phases (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda _ - (delete-dependencies '("@types/node" "ava" "tsd" "xo"))))))) + (modify-json (delete-dependencies + '("@types/node" "ava" "tsd" "xo")))))))) (home-page "https://github.com/sindresorhus/path-key") (synopsis "Cross-platform utility to compute the PATH environment variable key") (description "@code{path-key} provides an implementation to compute th= e @@ -867,7 +852,7 @@ (define-public node-pbf #:phases (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda _ - (delete-dependencies + (modify-json (delete-dependencies '("benchmark" "browserify" "eslint" @@ -877,7 +862,7 @@ (define-public node-pbf "protocol-buffers" "tap" "tile-stats-runner" - "uglify-js"))))))) + "uglify-js")))))))) (inputs (list node-ieee754 node-resolve-protobuf-schema)) (home-page "https://github.com/mapbox/pbf") (synopsis "Decode and encode protocol buffers in Javascript") @@ -908,7 +893,8 @@ (define-public node-protocol-buffers-schema #:phases (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda _ - (delete-dependencies '("standard" "tape"))))))) + (modify-json (delete-dependencies + '("standard" "tape")))))))) (home-page "https://github.com/mafintosh/protocol-buffers-schema") (synopsis "Protocol buffers schema parser written in Javascript") (description "This package provides a protocol buffers schema parser @@ -935,26 +921,27 @@ (define-public node-readable-stream (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies `("@babel/cli" - "@babel/core" - "@babel/polyfill" - "@babel/preset-env" - "airtap" - "assert" - "bl" - "deep-strict-equal" - "events.once" - "glob" - "gunzip-maybe" - "hyperquest" - "lolex" - "nyc" - "pump" - "rimraf" - "tap" - "tape" - "tar-fs" - "util-promisify"))))) + (modify-json (delete-dependencies + `("@babel/cli" + "@babel/core" + "@babel/polyfill" + "@babel/preset-env" + "airtap" + "assert" + "bl" + "deep-strict-equal" + "events.once" + "glob" + "gunzip-maybe" + "hyperquest" + "lolex" + "nyc" + "pump" + "rimraf" + "tap" + "tape" + "tar-fs" + "util-promisify")))))) #:tests? #f)) (inputs (list node-util-deprecate node-string-decoder node-inherits)) (home-page "https://github.com/nodejs/readable-stream") @@ -983,7 +970,8 @@ (define-public node-resolve-protobuf-schema #:phases (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda _ - (delete-dependencies '("standard" "tape"))))))) + (modify-json (delete-dependencies + '("standard" "tape")))))))) (inputs (list node-protocol-buffers-schema)) (home-page "https://github.com/mafintosh/resolve-protobuf-schema") (synopsis "Resolve protobuf imports") @@ -1012,7 +1000,7 @@ (define-public node-safe-buffer (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies '("tape" "standard"))))) + (modify-json (delete-dependencies '("tape" "standard")))))) #:tests? #f)) (home-page "https://github.com/feross/safe-buffer") (synopsis "Buffer creation with explicit semantics") @@ -1040,20 +1028,21 @@ (define-public node-safe-stable-stringify #:phases (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda _ - (delete-dependencies '("benchmark" "clone" - "fast-json-stable-stringify" - "fast-safe-stringify" - "fast-stable-stringify" - "faster-stable-stringify" - "fastest-stable-stringify" - "json-stable-stringify" - "json-stringify-deterministic= " - "json-stringify-safe" - "standard" - "tap" - "typescript" - "@types/node" - "@types/json-stable-stringify"))))))) + (modify-json (delete-dependencies + '("benchmark" "clone" + "fast-json-stable-stringify" + "fast-safe-stringify" + "fast-stable-stringify" + "faster-stable-stringify" + "fastest-stable-stringify" + "json-stable-stringify" + "json-stringify-deterministic" + "json-stringify-safe" + "standard" + "tap" + "typescript" + "@types/node" + "@types/json-stable-stringify")))))))) (home-page "https://github.com/BridgeAR/safe-stable-stringify") (synopsis "Serialization of javascript objects") (description @@ -1111,7 +1100,7 @@ (define-public node-semver (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies '("tap"))))) + (modify-json (delete-dependencies '("tap")))))) ;; FIXME: Tests depend on node-tap #:tests? #f)) (home-page "https://github.com/npm/node-semver") @@ -1151,7 +1140,8 @@ (define-public node-serialport (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies `("@serialport/binding-mock")))) + (modify-json (delete-dependencies + `("@serialport/binding-mock"))))) (add-after 'unpack 'chdir (lambda args (chdir "packages/serialport")))) @@ -1210,25 +1200,10 @@ (define-public node-serialport-bindings (chdir "packages/bindings"))) (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies `("prebuild-install" - ;; devDependencies - "@serialport/binding-mock" - "node-abi")))) - (add-after 'chdir 'avoid-prebuild-install - (lambda args - (with-atomic-json-file-replacement (lambda (pkg-meta-alist) - (map - (match-lambda - (("scripts" . scripts-alist) - (cons "scripts" (filter - (match-lambda - (("install" . _) #f) - (_ #t)) - scripts-alist))) - (("gypfile" . _) - (cons "gypfile" #f)) - (other other)) - pkg-meta-alist)))))) + (modify-json + (delete-dependencies `( + ;; devDependencies + "node-abi")))))) #:tests? #f)) (synopsis "Abstract base class for Node SerialPort bindings") (description "Node SerialPort is a modular suite of Node.js packages f= or @@ -1409,8 +1384,9 @@ (define-public node-serialport-stream (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies `(;; devDependencies - "@serialport/binding-mock")))) + (modify-json + (delete-dependencies ;; devDependencies + `("@serialport/binding-mock"))))) (add-after 'unpack 'chdir (lambda args (chdir "packages/stream")))) @@ -1461,7 +1437,7 @@ (define-public node-sqlite3 (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies + (modify-json (delete-dependencies `(;; Normally, this is "built" using @mapbox/node-pre-gyp, ;; which publishes or downloads pre-built binaries or ;; falls back to building from source. Here, we patch out @@ -1480,7 +1456,7 @@ (define-public node-sqlite3 "node-gyp" ;; These we'd like, we just don't have them yet: "eslint" - "mocha")))) + "mocha"))))) (add-before 'configure 'npm-config-sqlite ;; We need this step even if we do replace @mapbox/node-pre-gyp ;; because the package expects to build its bundled sqlite @@ -1514,8 +1490,9 @@ (define-public node-sqlite3 (substitute* ".npmignore" (("lib/binding") "#lib/binding # <- patched for Guix")) - (with-atomic-json-file-replacement (lambda (pkg-meta-alist) - (let ((binary-alist (assoc-ref pkg-meta-alist "binary"))) + (modify-json + (lambda (pkg-meta-alist) + (let ((binary-alist (assoc-ref pkg-meta-alist "binary"))) ;; When it builds from source, node-pre-gyp supplies ;; module_name and module_path based on the entries under ;; "binary" from "package.json", so this package's @@ -1528,19 +1505,11 @@ (define-public node-sqlite3 (assoc-ref binary-alist "module_name") " module_path=3D" (assoc-ref binary-alist "module_path")))) + pkg-meta-alist) ;; We need to remove the install script from "package.json"= , ;; as it would try to use node-pre-gyp and would block the ;; automatic building performed by `npm install`. - (map - (match-lambda - (("scripts" . scripts-alist) - (cons "scripts" (filter - (match-lambda - (("install" . _) #f) - (_ #t)) - scripts-alist))) - (other other)) - pkg-meta-alist)))))))) + (delete-fields `(("scripts" "install"))))))))) (home-page "https://github.com/mapbox/node-sqlite3") (synopsis "Node.js bindings for SQLite3") (description @@ -1623,8 +1592,8 @@ (define-public node-string-decoder (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies - '("tap" "core-util-is" "babel-polyfill"))))) + (modify-json (delete-dependencies + '("tap" "core-util-is" "babel-polyfill")))))) ;; FIXME: Tests depend on node-tap #:tests? #f)) (inputs (list node-safe-buffer node-inherits)) @@ -1678,7 +1647,7 @@ (define-public node-wrappy (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies '("tap"))))))) + (modify-json (delete-dependencies '("tap")))))))) (home-page "https://github.com/npm/wrappy") (synopsis "Callback wrapping utility") (description "@code{wrappy} is a utility for Node.js to wrap callbacks= .") @@ -1703,7 +1672,8 @@ (define-public node-yazl #:phases (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda _ - (delete-dependencies '("airtap" "bl" "istanbul" "yauzl"))))))) + (modify-json (delete-dependencies + '("airtap" "bl" "istanbul" "yauzl")))))))) (inputs (list node-buffer-crc32)) (home-page "https://github.com/thejoshwolfe/yazl") (synopsis "Yet another zip library for node") diff --git a/gnu/packages/node.scm b/gnu/packages/node.scm index 20acffb3df..a13ec5d077 100644 --- a/gnu/packages/node.scm +++ b/gnu/packages/node.scm @@ -13,6 +13,7 @@ ;;; Copyright =C2=A9 2021, 2022 Philip McGrath ;;; Copyright =C2=A9 2022 Hilton Chain ;;; Copyright =C2=A9 2024 Efraim Flashner +;;; Copyright =C2=A9 2024 Daniel Khodabakhsh ;;; ;;; This file is part of GNU Guix. ;;; @@ -366,7 +367,7 @@ (define-public node-semver-bootstrap (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies '("tap"))))))) + (modify-json (delete-dependencies '("tap")))))))) (home-page "https://github.com/npm/node-semver") (properties '((hidden? . #t))) (synopsis "Parses semantic versions strings") @@ -397,11 +398,12 @@ (define-public node-ms-bootstrap (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies '("eslint" - "expect.js" - "husky" - "lint-staged" - "mocha"))))))) + (modify-json (delete-dependencies + '("eslint" + "expect.js" + "husky" + "lint-staged" + "mocha")))))))) (home-page "https://github.com/zeit/ms#readme") (properties '((hidden? . #t))) (synopsis "Tiny millisecond conversion utility") @@ -431,7 +433,7 @@ (define-public node-binary-search-bootstrap (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies `("chai" "mocha"))))))) + (modify-json (delete-dependencies `("chai" "mocha")))))))) (home-page "https://github.com/darkskyapp/binary-search#readme") (properties '((hidden? . #t))) (synopsis "Tiny binary search function with comparators") @@ -460,17 +462,18 @@ (define-public node-debug-bootstrap (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies `("brfs" - "browserify" - "coveralls" - "istanbul" - "karma" - "karma-browserify" - "karma-chrome-launcher" - "karma-mocha" - "mocha" - "mocha-lcov-reporter" - "xo"))))))) + (modify-json (delete-dependencies + `("brfs" + "browserify" + "coveralls" + "istanbul" + "karma" + "karma-browserify" + "karma-chrome-launcher" + "karma-mocha" + "mocha" + "mocha-lcov-reporter" + "xo")))))))) (inputs (list node-ms-bootstrap)) (home-page "https://github.com/visionmedia/debug#readme") (properties '((hidden? . #t))) @@ -526,12 +529,13 @@ (define-public node-llparse-builder-bootstrap (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda _ - (delete-dependencies `("@types/mocha" - "@types/node" - "mocha" - "ts-node" - "tslint" - "typescript")))) + (modify-json (delete-dependencies + `("@types/mocha" + "@types/node" + "mocha" + "ts-node" + "tslint" + "typescript"))))) (replace 'build (lambda* (#:key inputs #:allow-other-keys) (let ((esbuild (search-input-file inputs "/bin/esbuild"))) @@ -587,13 +591,14 @@ (define-public node-llparse-frontend-bootstrap (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies `("@types/debug" - "@types/mocha" - "@types/node" - "mocha" - "ts-node" - "tslint" - "typescript")))) + (modify-json (delete-dependencies + `("@types/debug" + "@types/mocha" + "@types/node" + "mocha" + "ts-node" + "tslint" + "typescript"))))) (replace 'build (lambda* (#:key inputs #:allow-other-keys) (let ((esbuild (search-input-file inputs "/bin/esbuild"))) @@ -648,15 +653,16 @@ (define-public node-llparse-bootstrap (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies `("@types/debug" - "@types/mocha" - "@types/node" - "esm" - "llparse-test-fixture" - "mocha" - "ts-node" - "tslint" - "typescript")))) + (modify-json (delete-dependencies + `("@types/debug" + "@types/mocha" + "@types/node" + "esm" + "llparse-test-fixture" + "mocha" + "ts-node" + "tslint" + "typescript"))))) (replace 'build (lambda* (#:key inputs #:allow-other-keys) (let ((esbuild (search-input-file inputs "/bin/esbuild"))) diff --git a/guix/build/node-build-system.scm b/guix/build/node-build-syste= m.scm index df7ea7774c..ea23d92a05 100644 --- a/guix/build/node-build-system.scm +++ b/guix/build/node-build-system.scm @@ -31,18 +31,14 @@ (define-module (guix build node-build-system) #:use-module (srfi srfi-1) #:use-module (srfi srfi-71) #:export (%standard-phases - with-atomic-json-file-replacement delete-dependencies - node-build)) - -(define* (with-atomic-json-file-replacement proc - #:optional (file "package.json")) - "Like 'with-atomic-file-replacement', but PROC is called with a single -argument---the result of parsing FILE's contents as json---and should a va= lue -to be written as json to the replacement FILE." - (with-atomic-file-replacement file - (lambda (in out) - (scm->json (proc (json->scm in)) out)))) + delete-dev-dependencies + delete-fields + modify-json + modify-json-fields + node-build + replace-fields + with-atomic-json-file-replacement)) (define* (assoc-ref* alist key #:optional default) "Like assoc-ref, but return DEFAULT instead of #f if no value exists." @@ -72,6 +68,161 @@ (define* (alist-update alist key proc #:optional (=3D e= qual?)) (acons key (proc (cdr pair)) rest) alist))) +;;; +;;; package.json modification procedures +;;; + +(define* (with-atomic-json-file-replacement proc + #:optional (file "package.json")) + "Like 'with-atomic-file-replacement', but PROC is called with a single +argument---the result of parsing FILE's contents as json---and should a va= lue +to be written as json to the replacement FILE." + (with-atomic-file-replacement file + (lambda (in out) + (scm->json (proc (json->scm in)) out)))) + +(define* (modify-json #:key (file "package.json") #:rest all-arguments) + "Provide package.json modifying callbacks such as (delete-dependencies .= ..)" + (let + ( + (modifications + (let loop ((arguments all-arguments)) + (cond + ((null? arguments) '()) + ((keyword? (car arguments)) (loop (cddr arguments))) + (else (cons (car arguments) (loop (cdr arguments)))))))) + (with-atomic-json-file-replacement + (lambda (package) + (fold + (lambda (modification package) + (modification package)) + package + modifications)) + file))) + +(define (delete-dependencies dependencies-to-remove) + "Rewrite 'package.json' to allow the build to proceed without packages +listed in 'dependencies-to-remove', a list of strings naming npm packages. + +To prevent the deleted dependencies from being reintroduced, use this func= tion +only after the 'patch-dependencies' phase." + (lambda (pkg-meta) + (fold + (lambda (dependency-key pkg-meta) + (alist-update + pkg-meta + dependency-key + (lambda (dependencies) + (remove + (lambda (dependency) + (member (car dependency) dependencies-to-remove)) + dependencies)))) + pkg-meta + (list + "devDependencies" + "dependencies" + "peerDependencies" + "optionalDependencies")))) + +(define* (modify-json-fields + fields + field-modifier + #:key + (field-path-mapper (lambda (field) field)) + (insert? #f) + (strict? #t)) + "Provides a lambda to supply to modify-json which modifies the specified + json file. +- `fields` is a list procedure-specific data structures which should inclu= de + the definition of a `field-path` in one of two syntaxes: dot-syntax strin= g + such as `\"devDependencies.esbuild\"`, or a list of strings such as + `(list \"devDependencies\" \"esbuild\")`. +- `field-modifier` is a lambda which is invoked at the position of the fie= ld. + It is supplied with the current field definition, the association list (a= list) + at the field location in the json file, and the field name, also called `= key`. +- `field-path-mapper` is a lambda which instructs where the field-path is + located within the field structure. +- `insert?` allows the creation of the field and any missing intermediate + fields. +- `strict?` causes an error to be thrown if the exact field-path is not fo= und + in the data" + (lambda (package) + (fold + (lambda (field package) + (let* + ( + (field-path (field-path-mapper field)) + ( + field-path + (cond + ((string? field-path) + (string-split field-path #\.)) + ((and (list? field-path) (every string? field-path)) + field-path) + (else + (error + (string-append + "Invalid field value provided, expecting a string or= a " + "list of string but instead got: " + (with-output-to-string (lambda _ (display field-path)))))) + ))) + (let loop + ( + (data package) + (field-path field-path)) + (let* + ( + (key (car field-path)) + (data + (if (and (not (assoc key data)) insert?) + (acons key '() data) + data))) + (if (not (assoc key data)) + (if strict? + (error (string-append + "Key '" key "' was not found in data: " + (with-output-to-string (lambda _ (display data))))) + data) + (if (=3D (length field-path) 1) + (field-modifier field data key) + (assoc-set! + data + key + (loop (assoc-ref data key) (cdr field-path))))))))) + package + fields))) + +(define* (delete-fields fields #:key (strict? #t)) + "Provides a lambda to supply to modify-json which deletes the specified + `fields` which is a list of field-paths as mentioned in `modify-json-fiel= ds`. + Examples: + (delete-fields '( + (\"path\" \"to\" \"field\") + \"path.to.other.field\"))" + (modify-json-fields + fields + (lambda (_ data key) + (assoc-remove! data key)) + #:strict? strict?)) + +(define* (replace-fields fields #:key (strict? #t)) + "Provides a lambda to supply to modify-json which replaces the value of = the + supplied field. `fields` is a list of pairs, where the first element is t= he + field-path and the second element is the value to replace the target with= . + Examples: + (replace-fields '( + ((\"path\" \"to\" \"field\") \"new field value\") + (\"path.to.other.field\" \"new field value\")))" + (modify-json-fields + fields + (lambda (field data key) + (assoc-set! data key (cdr field))) + #:field-path-mapper (lambda (field) (car field)) + #:strict? strict?)) + +(define (delete-dev-dependencies) + (delete-fields (list "devDependencies") #:strict #f)) + ;;; ;;; Phases. ;;; @@ -144,31 +295,6 @@ (define* (patch-dependencies #:key inputs #:allow-other-keys) (assoc-ref* pkg-meta "dependencies" '()))))))))) #t) -(define (delete-dependencies dependencies-to-remove) - "Rewrite 'package.json' to allow the build to proceed without packages -listed in 'dependencies-to-remove', a list of strings naming npm packages. - -To prevent the deleted dependencies from being reintroduced, use this func= tion -only after the 'patch-dependencies' phase." - (with-atomic-json-file-replacement - (lambda (pkg-meta) - (fold - (lambda (dependency-key pkg-meta) - (alist-update - pkg-meta - dependency-key - (lambda (dependencies) - (remove - (lambda (dependency) - (member (car dependency) dependencies-to-remove)) - dependencies)))) - pkg-meta - (list - "devDependencies" - "dependencies" - "peerDependencies" - "optionalDependencies"))))) - (define* (delete-lockfiles #:key inputs #:allow-other-keys) "Delete 'package-lock.json', 'yarn.lock', and 'npm-shrinkwrap.json', if = they exist." --=20 2.46.0 --000000000000e12ff3062a6fccd4 Content-Type: text/x-patch; charset="UTF-8"; name="0002-Introduce-modify-json-delete-fields-and-replace-fields.patch" Content-Disposition: attachment; filename="0002-Introduce-modify-json-delete-fields-and-replace-fields.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m5a5il660 RnJvbSBhYzU0NDMzYThhYWU0Y2Q2ZTZjNjYwMjYzNTAzYjk2NjYwYTM1ZmE4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpNZXNzYWdlLUlEOiA8YWM1NDQzM2E4YWFlNGNkNmU2YzY2MDI2MzUwM2I5 NjY2MGEzNWZhOC4xNzM1NDk4MTgzLmdpdC5kLmtob2RhYmFraHNoQGdtYWlsLmNvbT4KSW4tUmVw bHktVG86IDxlNGVhN2I4OGNlMzliMWY1YjI0ODE4MTc0ZjJlNWMxNzQyNGYzYWRjLjE3MzU0OTgx ODMuZ2l0LmQua2hvZGFiYWtoc2hAZ21haWwuY29tPgpSZWZlcmVuY2VzOiA8ZTRlYTdiODhjZTM5 YjFmNWIyNDgxODE3NGYyZTVjMTc0MjRmM2FkYy4xNzM1NDk4MTgzLmdpdC5kLmtob2RhYmFraHNo QGdtYWlsLmNvbT4KRnJvbTogRGFuaWVsIEtob2RhYmFraHNoIDxkLmtob2RhYmFraHNoQGdtYWls LmNvbT4KRGF0ZTogU3VuLCAyOSBEZWMgMjAyNCAxMDoyNDoyMyAtMDgwMApTdWJqZWN0OiBbUEFU Q0ggMi8yXSBJbnRyb2R1Y2UgKG1vZGlmeS1qc29uKSwgKGRlbGV0ZS1maWVsZHMpLCBhbmQKIChy ZXBsYWNlLWZpZWxkcykgdG8gbm9kZS1idWlsZC1zeXN0ZW0KClRoaXMgY2hhbmdlIGludHJvZHVj ZXMgaGVscGVyIHByb2NlZHVyZXMgKG1vZGlmeS1qc29uKSB3aGljaCB0YWtlcyBpbiBsYW1iZGFz CiB3aGljaCBtb2RpZnkgdGhlIHRhcmdldCBqc29uICM6ZmlsZSB3aGljaCBkZWZhdWx0cyB0byBw YWNrYWdlLmpzb24KVGhpcyBjaGFuZ2UgYWxzbyBpbmNsdWRlcyAoZGVsZXRlLWZpZWxkcykgYW5k IChyZXBsYWNlLWZpZWxkcykgdG8gaGVscCBkZWxldGluZwogYW5kIHJlcGxhY2luZyB0aGUgdmFs dWUgb2YgZmllbGRzIGluIGEgcGFja2FnZS5qc29uIGZpbGUuCgpTaWduZWQtb2ZmLWJ5OiBEYW5p ZWwgS2hvZGFiYWtoc2ggPGQua2hvZGFiYWtoc2hAZ21haWwuY29tPgpDaGFuZ2UtSWQ6IEk5NTdm N2NhODE0MDc4ZDIxMzZkNTI2MTk4NTE3NDgyMDIzNWYxMzY5Ci0tLQogZ251L3BhY2thZ2VzL25v ZGUteHl6LnNjbSAgICAgICAgfCAzMjQgKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQog Z251L3BhY2thZ2VzL25vZGUuc2NtICAgICAgICAgICAgfCAgODYgKysrKy0tLS0KIGd1aXgvYnVp bGQvbm9kZS1idWlsZC1zeXN0ZW0uc2NtIHwgMTk4ICsrKysrKysrKysrKysrKy0tLS0KIDMgZmls ZXMgY2hhbmdlZCwgMzU1IGluc2VydGlvbnMoKyksIDI1MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9nbnUvcGFja2FnZXMvbm9kZS14eXouc2NtIGIvZ251L3BhY2thZ2VzL25vZGUteHl6LnNj bQppbmRleCBlYzNmOWZiZmIxLi5jZGM2OWRlMGMxIDEwMDY0NAotLS0gYS9nbnUvcGFja2FnZXMv bm9kZS14eXouc2NtCisrKyBiL2dudS9wYWNrYWdlcy9ub2RlLXh5ei5zY20KQEAgLTY5LDE4ICs2 OSw3IEBAIChkZWZpbmUtcHVibGljIG5vZGUtYWNvcm4KICAgICAgICAgICAgICA7OyBXZSBuZWVk IHRvIHJlbW92ZSB0aGUgcHJlcGFyZSBzY3JpcHQgZnJvbSAicGFja2FnZS5qc29uIiwgYXMKICAg ICAgICAgICAgICA7OyBpdCB3b3VsZCB0cnkgdG8gdXNlIHRoZSBidWlsZCBlbnZpcm9ubWVudCBh bmQgd291bGQgYmxvY2sgdGhlCiAgICAgICAgICAgICAgOzsgYXV0b21hdGljIGJ1aWxkaW5nIGJ5 IG90aGVyIHBhY2thZ2VzIG1ha2luZyB1c2Ugb2Ygbm9kZS1hY29ybi4KLSAgICAgICAgICAgICA7 OyBUT0RPOiBBZGQgdXRpbGl0eSBmdW5jdGlvbgotICAgICAgICAgICAgICh3aXRoLWF0b21pYy1q c29uLWZpbGUtcmVwbGFjZW1lbnQgKGxhbWJkYSAocGtnLW1ldGEtYWxpc3QpCi0gICAgICAgICAg ICAgICAobWFwCi0gICAgICAgICAgICAgICAgIChtYXRjaC1sYW1iZGEKLSAgICAgICAgICAgICAg ICAgICAoKCJzY3JpcHRzIiAuIHNjcmlwdHMtYWxpc3QpCi0gICAgICAgICAgICAgICAgICAgICAo Y29ucyAic2NyaXB0cyIgKGZpbHRlcgotICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2gtbGFt YmRhCi0gICAgICAgICAgICAgICAgICAgICAgICAgKCgicHJlcGFyZSIgLiBfKSAjZikKLSAgICAg ICAgICAgICAgICAgICAgICAgICAoXyAjdCkpCi0gICAgICAgICAgICAgICAgICAgICAgIHNjcmlw dHMtYWxpc3QpKSkKLSAgICAgICAgICAgICAgICAgICAob3RoZXIgb3RoZXIpKQotICAgICAgICAg ICAgICAgICBwa2ctbWV0YS1hbGlzdCkpKSkpCisgICAgICAgICAgICAgKG1vZGlmeS1qc29uIChk ZWxldGUtZmllbGRzICcoKCJzY3JpcHRzIiAicHJlcGFyZSIpKSkpKSkKICAgICAgICAgIChyZXBs YWNlICdidWlsZAogICAgICAgICAgICAobGFtYmRhKiAoIzprZXkgaW5wdXRzIG5hdGl2ZS1pbnB1 dHMgIzphbGxvdy1vdGhlci1rZXlzKQogICAgICAgICAgICAgIChsZXQgKChlc2J1aWxkIChzZWFy Y2gtaW5wdXQtZmlsZSAob3IgbmF0aXZlLWlucHV0cyBpbnB1dHMpCkBAIC0xMzYsMzggKzEyNSwy NiBAQCAoZGVmaW5lLXB1YmxpYyBub2RlLWFkZG9uLWFwaQogICAgICAgIChtb2RpZnktcGhhc2Vz ICVzdGFuZGFyZC1waGFzZXMKICAgICAgICAgIChhZGQtYWZ0ZXIgJ3BhdGNoLWRlcGVuZGVuY2ll cyAnZGVsZXRlLWRlcGVuZGVuY2llcwogICAgICAgICAgICAobGFtYmRhIGFyZ3MKLSAgICAgICAg ICAgICAoZGVsZXRlLWRlcGVuZGVuY2llcwotICAgICAgICAgICAgICBgKCJiZW5jaG1hcmsiCi0g ICAgICAgICAgICAgICAgImJpbmRpbmdzIgotICAgICAgICAgICAgICAgICJjbGFuZy1mb3JtYXQi Ci0gICAgICAgICAgICAgICAgImVzbGludCIKLSAgICAgICAgICAgICAgICAiZXNsaW50LWNvbmZp Zy1zZW1pc3RhbmRhcmQiCi0gICAgICAgICAgICAgICAgImVzbGludC1jb25maWctc3RhbmRhcmQi Ci0gICAgICAgICAgICAgICAgImVzbGludC1wbHVnaW4taW1wb3J0IgotICAgICAgICAgICAgICAg ICJlc2xpbnQtcGx1Z2luLW5vZGUiCi0gICAgICAgICAgICAgICAgImVzbGludC1wbHVnaW4tcHJv bWlzZSIKLSAgICAgICAgICAgICAgICAiZnMtZXh0cmEiCi0gICAgICAgICAgICAgICAgIm5lb3N0 YW5kYXJkIgotICAgICAgICAgICAgICAgICJwYXRoIgotICAgICAgICAgICAgICAgICJwcmUtY29t bWl0IgotICAgICAgICAgICAgICAgICJzZW12ZXIiKSkpKQotICAgICAgICAgKGFkZC1hZnRlciAn dW5wYWNrICdza2lwLWpzLXRlc3RzCi0gICAgICAgICAgIDs7IFdlIGNhbid0IHJ1biB0aGUganMt YmFzZWQgdGVzdHMsCi0gICAgICAgICAgIDs7IGJ1dCB3ZSBjYW4gc3RpbGwgZG8gdGhlIEMrKyBw YXJ0cwotICAgICAgICAgICAobGFtYmRhIGFyZ3MKLSAgICAgICAgICAgICAoZGVmaW5lIG5ldy10 ZXN0LXNjcmlwdAotICAgICAgICAgICAgICAgImVjaG8gc3RvcHBpbmcgYWZ0ZXIgcHJldGVzdCBv biBHdWl4IikKLSAgICAgICAgICAgICAod2l0aC1hdG9taWMtanNvbi1maWxlLXJlcGxhY2VtZW50 IChsYW1iZGEgKHBrZy1tZXRhLWFsaXN0KQotICAgICAgICAgICAgICAgKG1hcAotICAgICAgICAg ICAgICAgICAobWF0Y2gtbGFtYmRhCi0gICAgICAgICAgICAgICAgICAgKCgic2NyaXB0cyIgLiBz Y3JpcHRzLWFsaXN0KQotICAgICAgICAgICAgICAgICAgICAgKGNvbnMgInNjcmlwdHMiIChtYXAK LSAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoLWxhbWJkYQotICAgICAgICAgICAgICAgICAg ICAgICAgICgoInRlc3QiIC4gXykgKGNvbnMgInRlc3QiIG5ldy10ZXN0LXNjcmlwdCkpCi0gICAg ICAgICAgICAgICAgICAgICAgICAgKG90aGVyIG90aGVyKSkKLSAgICAgICAgICAgICAgICAgICAg ICAgc2NyaXB0cy1hbGlzdCkpKQotICAgICAgICAgICAgICAgICAgIChvdGhlciBvdGhlcikpCi0g ICAgICAgICAgICAgICAgIHBrZy1tZXRhLWFsaXN0KSkpKSkpKSkKKyAgICAgICAgICAgICAobW9k aWZ5LWpzb24KKyAgICAgICAgICAgICAgIChkZWxldGUtZGVwZW5kZW5jaWVzIGAoCisgICAgICAg ICAgICAgICAgICJiZW5jaG1hcmsiCisgICAgICAgICAgICAgICAgICJiaW5kaW5ncyIKKyAgICAg ICAgICAgICAgICAgImNsYW5nLWZvcm1hdCIKKyAgICAgICAgICAgICAgICAgImVzbGludCIKKyAg ICAgICAgICAgICAgICAgImVzbGludC1jb25maWctc2VtaXN0YW5kYXJkIgorICAgICAgICAgICAg ICAgICAiZXNsaW50LWNvbmZpZy1zdGFuZGFyZCIKKyAgICAgICAgICAgICAgICAgImVzbGludC1w bHVnaW4taW1wb3J0IgorICAgICAgICAgICAgICAgICAiZXNsaW50LXBsdWdpbi1ub2RlIgorICAg ICAgICAgICAgICAgICAiZXNsaW50LXBsdWdpbi1wcm9taXNlIgorICAgICAgICAgICAgICAgICAi ZnMtZXh0cmEiCisgICAgICAgICAgICAgICAgICJuZW9zdGFuZGFyZCIKKyAgICAgICAgICAgICAg ICAgInBhdGgiCisgICAgICAgICAgICAgICAgICJwcmUtY29tbWl0IgorICAgICAgICAgICAgICAg ICAic2VtdmVyIikpCisgICAgICAgICAgICAgICA7OyBXZSBjYW4ndCBydW4gdGhlIGpzLWJhc2Vk IHRlc3RzLAorICAgICAgICAgICAgICAgOzsgYnV0IHdlIGNhbiBzdGlsbCBkbyB0aGUgQysrIHBh cnRzCisgICAgICAgICAgICAgICAocmVwbGFjZS1maWVsZHMgKGxpc3QgKGNvbnMKKyAgICAgICAg ICAgICAgICAgInNjcmlwdHMudGVzdCIgImVjaG8gc3RvcHBpbmcgYWZ0ZXIgcHJldGVzdCBvbiBH dWl4IikpKSkpKSkpKQogICAgIChob21lLXBhZ2UgImh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMv bm9kZS1hZGRvbi1hcGkiKQogICAgIChzeW5vcHNpcyAiTm9kZS5qcyBBUEkgKE5vZGUtQVBJKSBo ZWFkZXItb25seSBDKysgd3JhcHBlcnMiKQogICAgIChkZXNjcmlwdGlvbiAiVGhpcyBtb2R1bGUg Y29udGFpbnMgaGVhZGVyLW9ubHkgQysrIHdyYXBwZXIgY2xhc3NlcyB3aGljaApAQCAtMjMyLDcg KzIwOSw3IEBAIChkZWZpbmUtcHVibGljIG5vZGUtYnVmZmVyLWNyYzMyCiAgICAgICAgIzpwaGFz ZXMgKG1vZGlmeS1waGFzZXMgJXN0YW5kYXJkLXBoYXNlcwogICAgICAgICAgICAgICAgICAgKGFk ZC1hZnRlciAncGF0Y2gtZGVwZW5kZW5jaWVzICdkZWxldGUtZGVwZW5kZW5jaWVzCiAgICAgICAg ICAgICAgICAgICAgIChsYW1iZGEgXwotICAgICAgICAgICAgICAgICAgICAgIChkZWxldGUtZGVw ZW5kZW5jaWVzICcoInRhcCIpKSkpKSkpCisgICAgICAgICAgICAgICAgICAgICAgKG1vZGlmeS1q c29uIChkZWxldGUtZGVwZW5kZW5jaWVzICcoInRhcCIpKSkpKSkpKQogICAgIChob21lLXBhZ2Ug Imh0dHBzOi8vZ2l0aHViLmNvbS9icmlhbmxvdmVzd29yZHMvYnVmZmVyLWNyYzMyIikKICAgICAo c3lub3BzaXMgIkNSQzMyIGltcGxlbWVudGF0aW9uIGluIEphdmFzY3JpcHQiKQogICAgIChkZXNj cmlwdGlvbgpAQCAtMjg4LDE0ICsyNjUsMTUgQEAgKGRlZmluZS1wdWJsaWMgbm9kZS1jcngzCiAg ICAgICAgICAgICAgICAgICAgICAgICAgIm1pbmltaXN0IikpKSkKICAgICAgICAgICAgICAgICAg IChhZGQtYWZ0ZXIgJ3BhdGNoLWRlcGVuZGVuY2llcyAnZGVsZXRlLWRlcGVuZGVuY2llcwogICAg ICAgICAgICAgICAgICAgICAobGFtYmRhIF8KLSAgICAgICAgICAgICAgICAgICAgICAoZGVsZXRl LWRlcGVuZGVuY2llcyAnKCJjOCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJkb2NkYXNoIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgImVzbGludCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICJlc2xpbnQtcGx1Z2luLWpzZG9jIgotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgImpzZG9jIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgInRhcC1kaWZmIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgInRhcGUiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAidGFwZS1jYXRjaCIpKSkpKSkpCisgICAgICAgICAgICAgICAgICAgICAgKG1v ZGlmeS1qc29uIChkZWxldGUtZGVwZW5kZW5jaWVzCisgICAgICAgICAgICAgICAgICAgICAgICAn KCJjOCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImRvY2Rhc2giCisgICAgICAgICAgICAg ICAgICAgICAgICAgICJlc2xpbnQiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJlc2xpbnQt cGx1Z2luLWpzZG9jIgorICAgICAgICAgICAgICAgICAgICAgICAgICAianNkb2MiCisgICAgICAg ICAgICAgICAgICAgICAgICAgICJ0YXAtZGlmZiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg InRhcGUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJ0YXBlLWNhdGNoIikpKSkpKSkpCiAg ICAgKGlucHV0cyAobGlzdCBub2RlLW1pbmltaXN0IG5vZGUtcGJmIG5vZGUteWF6bCkpCiAgICAg KGhvbWUtcGFnZSAiaHR0cHM6Ly9naXRodWIuY29tL2Fod2F5YWtjaGloL2NyeDMiKQogICAgIChz eW5vcHNpcyAiQ3JlYXRlIENSWHYzIGJyb3dzZXIgZXh0ZW5zaW9ucyB3aXRoIEphdmFzY3JpcHQi KQpAQCAtMzI1LDE4ICszMDMsMTkgQEAgKGRlZmluZS1wdWJsaWMgbm9kZS1kZWJ1ZwogICAgICAg IChtb2RpZnktcGhhc2VzICVzdGFuZGFyZC1waGFzZXMKICAgICAgICAgIChhZGQtYWZ0ZXIgJ3Bh dGNoLWRlcGVuZGVuY2llcyAnZGVsZXRlLWRlcGVuZGVuY2llcwogICAgICAgICAgICAobGFtYmRh IGFyZ3MKLSAgICAgICAgICAgICAoZGVsZXRlLWRlcGVuZGVuY2llcyBgKCJicmZzIgotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJyb3dzZXJpZnkiCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAiY292ZXJhbGxzIgotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgImlzdGFuYnVsIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgImthcm1hIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImthcm1h LWJyb3dzZXJpZnkiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAia2FybWEt Y2hyb21lLWxhdW5jaGVyIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImth cm1hLW1vY2hhIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vY2hhIgot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vY2hhLWxjb3YtcmVwb3J0ZXIi Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieG8iCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAic3VwcG9ydHMtY29sb3IiKSkpKSkKKyAgICAgICAgICAg ICAobW9kaWZ5LWpzb24gKGRlbGV0ZS1kZXBlbmRlbmNpZXMKKyAgICAgICAgICAgICAgIGAoImJy ZnMiCisgICAgICAgICAgICAgICAgICJicm93c2VyaWZ5IgorICAgICAgICAgICAgICAgICAiY292 ZXJhbGxzIgorICAgICAgICAgICAgICAgICAiaXN0YW5idWwiCisgICAgICAgICAgICAgICAgICJr YXJtYSIKKyAgICAgICAgICAgICAgICAgImthcm1hLWJyb3dzZXJpZnkiCisgICAgICAgICAgICAg ICAgICJrYXJtYS1jaHJvbWUtbGF1bmNoZXIiCisgICAgICAgICAgICAgICAgICJrYXJtYS1tb2No YSIKKyAgICAgICAgICAgICAgICAgIm1vY2hhIgorICAgICAgICAgICAgICAgICAibW9jaGEtbGNv di1yZXBvcnRlciIKKyAgICAgICAgICAgICAgICAgInhvIgorICAgICAgICAgICAgICAgICAic3Vw cG9ydHMtY29sb3IiKSkpKSkpCiAgICAgICAgIzp0ZXN0cz8gI2YpKQogICAgIChob21lLXBhZ2Ug Imh0dHBzOi8vZ2l0aHViLmNvbS9kZWJ1Zy1qcy9kZWJ1ZyIpCiAgICAgKHN5bm9wc2lzICJEZWJ1 Z2dpbmcgdXRpbGl0eSBmb3IgTm9kZS5qcyIpCkBAIC00MjEsMjEgKzQwMCwyMiBAQCAoZGVmaW5l LXB1YmxpYyBub2RlLWZpbGUtdXJpLXRvLXBhdGgKICAgICAgICAobW9kaWZ5LXBoYXNlcyAlc3Rh bmRhcmQtcGhhc2VzCiAgICAgICAgICAoYWRkLWFmdGVyICdwYXRjaC1kZXBlbmRlbmNpZXMgJ2Rl bGV0ZS1kZXBlbmRlbmNpZXMKICAgICAgICAgICAgKGxhbWJkYSBhcmdzCi0gICAgICAgICAgICAg KGRlbGV0ZS1kZXBlbmRlbmNpZXMgYCgiQHR5cGVzL21vY2hhIgotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIkB0eXBlcy9ub2RlIgotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIkB0eXBlc2NyaXB0LWVzbGludC9lc2xpbnQtcGx1Z2luIgotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIkB0eXBlc2NyaXB0LWVzbGludC9wYXJzZXIiCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY3B5LWNsaSIKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJlc2xpbnQiCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiZXNsaW50LWNvbmZpZy1haXJibmIiCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiZXNsaW50LWNvbmZpZy1wcmV0dGllciIKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJlc2xpbnQtaW1wb3J0LXJlc29sdmVyLXR5cGVzY3JpcHQi Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXNsaW50LXBsdWdpbi1pbXBv cnQiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXNsaW50LXBsdWdpbi1q c3gtYTExeSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlc2xpbnQtcGx1 Z2luLXJlYWN0IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vY2hhIgot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJpbXJhZiIKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlc2NyaXB0IikpKSkKKyAgICAgICAgICAgICAo bW9kaWZ5LWpzb24gKGRlbGV0ZS1kZXBlbmRlbmNpZXMKKyAgICAgICAgICAgICAgIGAoIkB0eXBl cy9tb2NoYSIKKyAgICAgICAgICAgICAgICAgIkB0eXBlcy9ub2RlIgorICAgICAgICAgICAgICAg ICAiQHR5cGVzY3JpcHQtZXNsaW50L2VzbGludC1wbHVnaW4iCisgICAgICAgICAgICAgICAgICJA dHlwZXNjcmlwdC1lc2xpbnQvcGFyc2VyIgorICAgICAgICAgICAgICAgICAiY3B5LWNsaSIKKyAg ICAgICAgICAgICAgICAgImVzbGludCIKKyAgICAgICAgICAgICAgICAgImVzbGludC1jb25maWct YWlyYm5iIgorICAgICAgICAgICAgICAgICAiZXNsaW50LWNvbmZpZy1wcmV0dGllciIKKyAgICAg ICAgICAgICAgICAgImVzbGludC1pbXBvcnQtcmVzb2x2ZXItdHlwZXNjcmlwdCIKKyAgICAgICAg ICAgICAgICAgImVzbGludC1wbHVnaW4taW1wb3J0IgorICAgICAgICAgICAgICAgICAiZXNsaW50 LXBsdWdpbi1qc3gtYTExeSIKKyAgICAgICAgICAgICAgICAgImVzbGludC1wbHVnaW4tcmVhY3Qi CisgICAgICAgICAgICAgICAgICJtb2NoYSIKKyAgICAgICAgICAgICAgICAgInJpbXJhZiIKKyAg ICAgICAgICAgICAgICAgInR5cGVzY3JpcHQiKSkpKSkKICAgICAgICAgIChyZXBsYWNlICdidWls ZAogICAgICAgICAgICAobGFtYmRhKiAoIzprZXkgaW5wdXRzIG5hdGl2ZS1pbnB1dHMgIzphbGxv dy1vdGhlci1rZXlzKQogICAgICAgICAgICAgIChjb3B5LXJlY3Vyc2l2ZWx5ICJzcmMiICJkaXN0 IikKQEAgLTQ5Nyw3ICs0NzcsOCBAQCAoZGVmaW5lLXB1YmxpYyBub2RlLWllZWU3NTQKICAgICAg ICAjOnBoYXNlcyAobW9kaWZ5LXBoYXNlcyAlc3RhbmRhcmQtcGhhc2VzCiAgICAgICAgICAgICAg ICAgICAoYWRkLWFmdGVyICdwYXRjaC1kZXBlbmRlbmNpZXMgJ2RlbGV0ZS1kZXBlbmRlbmNpZXMK ICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSBfCi0gICAgICAgICAgICAgICAgICAgICAgKGRl bGV0ZS1kZXBlbmRlbmNpZXMgJygiYWlydGFwIiAic3RhbmRhcmQiICJ0YXBlIikpKSkpKSkKKyAg ICAgICAgICAgICAgICAgICAgICAobW9kaWZ5LWpzb24gKGRlbGV0ZS1kZXBlbmRlbmNpZXMKKyAg ICAgICAgICAgICAgICAgICAgICAgICcoImFpcnRhcCIgInN0YW5kYXJkIiAidGFwZSIpKSkpKSkp KQogICAgIChob21lLXBhZ2UgImh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvaWVlZTc1NCIpCiAg ICAgKHN5bm9wc2lzICJSZWFkL3dyaXRlIElFRUU3NTQgZmxvYXRpbmcgcG9pbnQgbnVtYmVycyBp biBKYXZhc2NyaXB0IikKICAgICAoZGVzY3JpcHRpb24gIlRoaXMgcGFja2FnZSBjYW4gcmVhZCBh bmQgd3JpdGUgSUVFRTc1NCBmbG9hdGluZyBwb2ludApAQCAtNTI0LDcgKzUwNSw3IEBAIChkZWZp bmUtcHVibGljIG5vZGUtaW5oZXJpdHMKICAgICAgICAobW9kaWZ5LXBoYXNlcyAlc3RhbmRhcmQt cGhhc2VzCiAgICAgICAgICAoYWRkLWFmdGVyICdwYXRjaC1kZXBlbmRlbmNpZXMgJ2RlbGV0ZS1k ZXBlbmRlbmNpZXMKICAgICAgICAgICAgKGxhbWJkYSBhcmdzCi0gICAgICAgICAgICAgKGRlbGV0 ZS1kZXBlbmRlbmNpZXMgJygidGFwIikpKSkpCisgICAgICAgICAgICAgKG1vZGlmeS1qc29uIChk ZWxldGUtZGVwZW5kZW5jaWVzICcoInRhcCIpKSkpKSkKICAgICAgICA7OyBGSVhNRTogVGVzdHMg ZGVwZW5kIG9uIG5vZGUtdGFwCiAgICAgICAgIzp0ZXN0cz8gI2YpKQogICAgIChob21lLXBhZ2Ug Imh0dHBzOi8vZ2l0aHViLmNvbS9pc2FhY3MvaW5oZXJpdHMiKQpAQCAtNTUzLDggKzUzNCw4IEBA IChkZWZpbmUtcHVibGljIG5vZGUtaXJjCiAgICAgICAgKG1vZGlmeS1waGFzZXMgJXN0YW5kYXJk LXBoYXNlcwogICAgICAgICAgKGFkZC1hZnRlciAncGF0Y2gtZGVwZW5kZW5jaWVzICdkZWxldGUt ZGVwZW5kZW5jaWVzCiAgICAgICAgICAgIChsYW1iZGEgYXJncwotICAgICAgICAgICAgIChkZWxl dGUtZGVwZW5kZW5jaWVzCi0gICAgICAgICAgICAgIGAoImFuc2ktY29sb3IiICJmYXVjZXQiICJq c2NzIiAidGFwZSIpKSkpKQorICAgICAgICAgICAgIChtb2RpZnktanNvbiAoZGVsZXRlLWRlcGVu ZGVuY2llcworICAgICAgICAgICAgICBgKCJhbnNpLWNvbG9yIiAiZmF1Y2V0IiAianNjcyIgInRh cGUiKSkpKSkpCiAgICAgICAgIzp0ZXN0cz8gI2YpKQogICAgIChpbnB1dHMKICAgICAgKGxpc3Qg bm9kZS1pcmMtY29sb3JzKSkKQEAgLTU4Myw3ICs1NjQsNyBAQCAoZGVmaW5lLXB1YmxpYyBub2Rl LWlyYy1jb2xvcnMKICAgICAgICAobW9kaWZ5LXBoYXNlcyAlc3RhbmRhcmQtcGhhc2VzCiAgICAg ICAgICAoYWRkLWFmdGVyICdwYXRjaC1kZXBlbmRlbmNpZXMgJ2RlbGV0ZS1kZXBlbmRlbmNpZXMK ICAgICAgICAgICAgKGxhbWJkYSBhcmdzCi0gICAgICAgICAgICAgKGRlbGV0ZS1kZXBlbmRlbmNp ZXMgYCgiaXN0YW5idWwiICJ2b3dzIikpKSkpCisgICAgICAgICAgICAgKG1vZGlmeS1qc29uIChk ZWxldGUtZGVwZW5kZW5jaWVzIGAoImlzdGFuYnVsIiAidm93cyIpKSkpKSkKICAgICAgICAjOnRl c3RzPyAjZikpCiAgICAgKGhvbWUtcGFnZSAiaHR0cHM6Ly9naXRodWIuY29tL2ZlbnQvaXJjLWNv bG9ycy5qcyIpCiAgICAgKHN5bm9wc2lzICJOb2RlLmpzIG1vZHVsZSBwcm92aWRpbmcgY29sb3Ig YW5kIGZvcm1hdHRpbmcgZm9yIElSQyIpCkBAIC02NTcsNyArNjM4LDggQEAgKGRlZmluZS1wdWJs aWMgbm9kZS1taW5pbWlzdAogICAgICAgICM6cGhhc2VzIChtb2RpZnktcGhhc2VzICVzdGFuZGFy ZC1waGFzZXMKICAgICAgICAgICAgICAgICAgIChhZGQtYWZ0ZXIgJ3BhdGNoLWRlcGVuZGVuY2ll cyAnZGVsZXRlLWRlcGVuZGVuY2llcwogICAgICAgICAgICAgICAgICAgICAobGFtYmRhIF8KLSAg ICAgICAgICAgICAgICAgICAgICAoZGVsZXRlLWRlcGVuZGVuY2llcyAnKCJjb3ZlcnQiICJ0YXAi ICJ0YXBlIikpKSkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAobW9kaWZ5LWpzb24gKGRlbGV0 ZS1kZXBlbmRlbmNpZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICcoImNvdmVydCIgInRhcCIg InRhcGUiKSkpKSkpKSkKICAgICAoaG9tZS1wYWdlICJodHRwczovL2dpdGh1Yi5jb20vc3Vic3Rh Y2svbWluaW1pc3QiKQogICAgIChzeW5vcHNpcyAiUGFyc2UgQ0xJIGFyZ3VtZW50cyBpbiBKYXZh c2NyaXB0IikKICAgICAoZGVzY3JpcHRpb24gIlRoaXMgcGFja2FnZSBjYW4gc2NhbiBmb3IgQ0xJ IGZsYWdzIGFuZCBhcmd1bWVudHMgaW4KQEAgLTY4MywxMiArNjY1LDEzIEBAIChkZWZpbmUtcHVi bGljIG5vZGUtbXMKICAgICAgICAobW9kaWZ5LXBoYXNlcyAlc3RhbmRhcmQtcGhhc2VzCiAgICAg ICAgICAoYWRkLWFmdGVyICdwYXRjaC1kZXBlbmRlbmNpZXMgJ2RlbGV0ZS1kZXBlbmRlbmNpZXMK ICAgICAgICAgICAgKGxhbWJkYSBhcmdzCi0gICAgICAgICAgICAgKGRlbGV0ZS1kZXBlbmRlbmNp ZXMgYCgiZXNsaW50IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVj dC5qcyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJodXNreSIKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW50LXN0YWdlZCIKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJtb2NoYSIKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJwcmV0dGllciIpKSkpKQorICAgICAgICAgICAgIChtb2RpZnktanNvbiAo ZGVsZXRlLWRlcGVuZGVuY2llcworICAgICAgICAgICAgICAgYCgiZXNsaW50IgorICAgICAgICAg ICAgICAgICAiZXhwZWN0LmpzIgorICAgICAgICAgICAgICAgICAiaHVza3kiCisgICAgICAgICAg ICAgICAgICJsaW50LXN0YWdlZCIKKyAgICAgICAgICAgICAgICAgIm1vY2hhIgorICAgICAgICAg ICAgICAgICAicHJldHRpZXIiKSkpKSkpCiAgICAgICAgIzp0ZXN0cz8gI2YpKQogICAgIChob21l LXBhZ2UgImh0dHBzOi8vZ2l0aHViLmNvbS92ZXJjZWwvbXMiKQogICAgIChzeW5vcHNpcyAiQ29u dmVydCB0aW1lIHRvIG1pbGxpc2Vjb25kcyIpCkBAIC03MTYsMTQgKzY5OSwxNCBAQCAoZGVmaW5l LXB1YmxpYyBub2RlLW5hbgogICAgICAgIChtb2RpZnktcGhhc2VzICVzdGFuZGFyZC1waGFzZXMK ICAgICAgICAgIChhZGQtYWZ0ZXIgJ3BhdGNoLWRlcGVuZGVuY2llcyAnZGVsZXRlLWRlcGVuZGVu Y2llcwogICAgICAgICAgICAobGFtYmRhIGFyZ3MKLSAgICAgICAgICAgICAoZGVsZXRlLWRlcGVu ZGVuY2llcworICAgICAgICAgICAgIChtb2RpZnktanNvbiAoZGVsZXRlLWRlcGVuZGVuY2llcwog ICAgICAgICAgICAgICAnKCJiaW5kaW5ncyIKICAgICAgICAgICAgICAgICAiY29tbWFuZGVyIgog ICAgICAgICAgICAgICAgICJnbG9iIgogICAgICAgICAgICAgICAgICJyZXF1ZXN0IgogICAgICAg ICAgICAgICAgICJub2RlLWd5cCIgOzsgd291bGQgYmUgbmVlZGVkIGZvciB0ZXN0cwogICAgICAg ICAgICAgICAgICJ0YXAiCi0gICAgICAgICAgICAgICAgInh0ZW5kIikpKSkpCisgICAgICAgICAg ICAgICAgInh0ZW5kIikpKSkpKQogICAgICAgIDs7IHRlc3RzIG5lZWQgdGFwIGFuZCBvdGhlciBk ZXBlbmRlbmNpZXMKICAgICAgICAjOnRlc3RzPyAjZikpCiAgICAgKGlucHV0cwpAQCAtNzU1LDcg KzczOCw4IEBAIChkZWZpbmUtcHVibGljIG5vZGUtbm9ybWFsaXplLXBhdGgKICAgICAgICAjOnBo YXNlcyAobW9kaWZ5LXBoYXNlcyAlc3RhbmRhcmQtcGhhc2VzCiAgICAgICAgICAgICAgICAgICAo YWRkLWFmdGVyICdwYXRjaC1kZXBlbmRlbmNpZXMgJ2RlbGV0ZS1kZXBlbmRlbmNpZXMKICAgICAg ICAgICAgICAgICAgICAgKGxhbWJkYSBfCi0gICAgICAgICAgICAgICAgICAgICAgKGRlbGV0ZS1k ZXBlbmRlbmNpZXMgJygiZ3VscC1mb3JtYXQtbWQiICJtb2NoYSIpKSkpKSkpCisgICAgICAgICAg ICAgICAgICAgICAgKG1vZGlmeS1qc29uIChkZWxldGUtZGVwZW5kZW5jaWVzCisgICAgICAgICAg ICAgICAgICAgICAgICAnKCJndWxwLWZvcm1hdC1tZCIgIm1vY2hhIikpKSkpKSkpCiAgICAgKG5h dGl2ZS1pbnB1dHMgKGxpc3Qgbm9kZS1taW5pbWlzdCkpCiAgICAgKGhvbWUtcGFnZSAiaHR0cHM6 Ly9naXRodWIuY29tL2pvbnNjaGxpbmtlcnQvbm9ybWFsaXplLXBhdGgiKQogICAgIChzeW5vcHNp cyAiTm9ybWFsaXplIHNsYXNoZXMgaW4gYSBmaWxlIHBhdGgiKQpAQCAtNzg0LDcgKzc2OCw3IEBA IChkZWZpbmUtcHVibGljIG5vZGUtb25jZQogICAgICAgIChtb2RpZnktcGhhc2VzICVzdGFuZGFy ZC1waGFzZXMKICAgICAgICAgIChhZGQtYWZ0ZXIgJ3BhdGNoLWRlcGVuZGVuY2llcyAnZGVsZXRl LWRlcGVuZGVuY2llcwogICAgICAgICAgICAobGFtYmRhIGFyZ3MKLSAgICAgICAgICAgICAoZGVs ZXRlLWRlcGVuZGVuY2llcyAnKCJ0YXAiKSkpKSkKKyAgICAgICAgICAgICAobW9kaWZ5LWpzb24g KGRlbGV0ZS1kZXBlbmRlbmNpZXMgJygidGFwIikpKSkpKQogICAgICAgIDs7IEZJWE1FOiBUZXN0 cyBkZXBlbmQgb24gbm9kZS10YXAKICAgICAgICAjOnRlc3RzPyAjZikpCiAgICAgKGlucHV0cwpA QCAtODQxLDcgKzgyNSw4IEBAIChkZWZpbmUtcHVibGljIG5vZGUtcGF0aC1rZXkKICAgICAgICAj OnBoYXNlcyAobW9kaWZ5LXBoYXNlcyAlc3RhbmRhcmQtcGhhc2VzCiAgICAgICAgICAgICAgICAg ICAoYWRkLWFmdGVyICdwYXRjaC1kZXBlbmRlbmNpZXMgJ2RlbGV0ZS1kZXBlbmRlbmNpZXMKICAg ICAgICAgICAgICAgICAgICAgKGxhbWJkYSBfCi0gICAgICAgICAgICAgICAgICAgICAgKGRlbGV0 ZS1kZXBlbmRlbmNpZXMgJygiQHR5cGVzL25vZGUiICJhdmEiICJ0c2QiICJ4byIpKSkpKSkpCisg ICAgICAgICAgICAgICAgICAgICAgKG1vZGlmeS1qc29uIChkZWxldGUtZGVwZW5kZW5jaWVzCisg ICAgICAgICAgICAgICAgICAgICAgICAnKCJAdHlwZXMvbm9kZSIgImF2YSIgInRzZCIgInhvIikp KSkpKSkpCiAgICAgKGhvbWUtcGFnZSAiaHR0cHM6Ly9naXRodWIuY29tL3NpbmRyZXNvcmh1cy9w YXRoLWtleSIpCiAgICAgKHN5bm9wc2lzICJDcm9zcy1wbGF0Zm9ybSB1dGlsaXR5IHRvIGNvbXB1 dGUgdGhlIFBBVEggZW52aXJvbm1lbnQgdmFyaWFibGUga2V5IikKICAgICAoZGVzY3JpcHRpb24g IkBjb2Rle3BhdGgta2V5fSBwcm92aWRlcyBhbiBpbXBsZW1lbnRhdGlvbiB0byBjb21wdXRlIHRo ZQpAQCAtODY3LDcgKzg1Miw3IEBAIChkZWZpbmUtcHVibGljIG5vZGUtcGJmCiAgICAgICAgIzpw aGFzZXMgKG1vZGlmeS1waGFzZXMgJXN0YW5kYXJkLXBoYXNlcwogICAgICAgICAgICAgICAgICAg KGFkZC1hZnRlciAncGF0Y2gtZGVwZW5kZW5jaWVzICdkZWxldGUtZGVwZW5kZW5jaWVzCiAgICAg ICAgICAgICAgICAgICAgIChsYW1iZGEgXwotICAgICAgICAgICAgICAgICAgICAgIChkZWxldGUt ZGVwZW5kZW5jaWVzCisgICAgICAgICAgICAgICAgICAgICAgKG1vZGlmeS1qc29uIChkZWxldGUt ZGVwZW5kZW5jaWVzCiAgICAgICAgICAgICAgICAgICAgICAgICcoImJlbmNobWFyayIKICAgICAg ICAgICAgICAgICAgICAgICAgICAiYnJvd3NlcmlmeSIKICAgICAgICAgICAgICAgICAgICAgICAg ICAiZXNsaW50IgpAQCAtODc3LDcgKzg2Miw3IEBAIChkZWZpbmUtcHVibGljIG5vZGUtcGJmCiAg ICAgICAgICAgICAgICAgICAgICAgICAgInByb3RvY29sLWJ1ZmZlcnMiCiAgICAgICAgICAgICAg ICAgICAgICAgICAgInRhcCIKICAgICAgICAgICAgICAgICAgICAgICAgICAidGlsZS1zdGF0cy1y dW5uZXIiCi0gICAgICAgICAgICAgICAgICAgICAgICAgInVnbGlmeS1qcyIpKSkpKSkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgInVnbGlmeS1qcyIpKSkpKSkpKQogICAgIChpbnB1dHMgKGxp c3Qgbm9kZS1pZWVlNzU0IG5vZGUtcmVzb2x2ZS1wcm90b2J1Zi1zY2hlbWEpKQogICAgIChob21l LXBhZ2UgImh0dHBzOi8vZ2l0aHViLmNvbS9tYXBib3gvcGJmIikKICAgICAoc3lub3BzaXMgIkRl Y29kZSBhbmQgZW5jb2RlIHByb3RvY29sIGJ1ZmZlcnMgaW4gSmF2YXNjcmlwdCIpCkBAIC05MDgs NyArODkzLDggQEAgKGRlZmluZS1wdWJsaWMgbm9kZS1wcm90b2NvbC1idWZmZXJzLXNjaGVtYQog ICAgICAgICM6cGhhc2VzIChtb2RpZnktcGhhc2VzICVzdGFuZGFyZC1waGFzZXMKICAgICAgICAg ICAgICAgICAgIChhZGQtYWZ0ZXIgJ3BhdGNoLWRlcGVuZGVuY2llcyAnZGVsZXRlLWRlcGVuZGVu Y2llcwogICAgICAgICAgICAgICAgICAgICAobGFtYmRhIF8KLSAgICAgICAgICAgICAgICAgICAg ICAoZGVsZXRlLWRlcGVuZGVuY2llcyAnKCJzdGFuZGFyZCIgInRhcGUiKSkpKSkpKQorICAgICAg ICAgICAgICAgICAgICAgIChtb2RpZnktanNvbiAoZGVsZXRlLWRlcGVuZGVuY2llcworICAgICAg ICAgICAgICAgICAgICAgICAgJygic3RhbmRhcmQiICJ0YXBlIikpKSkpKSkpCiAgICAgKGhvbWUt cGFnZSAiaHR0cHM6Ly9naXRodWIuY29tL21hZmludG9zaC9wcm90b2NvbC1idWZmZXJzLXNjaGVt YSIpCiAgICAgKHN5bm9wc2lzICJQcm90b2NvbCBidWZmZXJzIHNjaGVtYSBwYXJzZXIgd3JpdHRl biBpbiBKYXZhc2NyaXB0IikKICAgICAoZGVzY3JpcHRpb24gIlRoaXMgcGFja2FnZSBwcm92aWRl cyBhIHByb3RvY29sIGJ1ZmZlcnMgc2NoZW1hIHBhcnNlcgpAQCAtOTM1LDI2ICs5MjEsMjcgQEAg KGRlZmluZS1wdWJsaWMgbm9kZS1yZWFkYWJsZS1zdHJlYW0KICAgICAgICAobW9kaWZ5LXBoYXNl cyAlc3RhbmRhcmQtcGhhc2VzCiAgICAgICAgICAoYWRkLWFmdGVyICdwYXRjaC1kZXBlbmRlbmNp ZXMgJ2RlbGV0ZS1kZXBlbmRlbmNpZXMKICAgICAgICAgICAgKGxhbWJkYSBhcmdzCi0gICAgICAg ICAgICAgKGRlbGV0ZS1kZXBlbmRlbmNpZXMgYCgiQGJhYmVsL2NsaSIKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJAYmFiZWwvY29yZSIKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJAYmFiZWwvcG9seWZpbGwiCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiQGJhYmVsL3ByZXNldC1lbnYiCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiYWlydGFwIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgImFzc2VydCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJibCIKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWVwLXN0cmljdC1lcXVhbCIKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJldmVudHMub25jZSIKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iIgotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgImd1bnppcC1tYXliZSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJoeXBlcnF1ZXN0IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgImxvbGV4IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm55YyIKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwdW1wIgotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgInJpbXJhZiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJ0YXAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGFw ZSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0YXItZnMiCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidXRpbC1wcm9taXNpZnkiKSkpKSkKKyAgICAg ICAgICAgICAobW9kaWZ5LWpzb24gKGRlbGV0ZS1kZXBlbmRlbmNpZXMKKyAgICAgICAgICAgICAg IGAoIkBiYWJlbC9jbGkiCisgICAgICAgICAgICAgICAgICJAYmFiZWwvY29yZSIKKyAgICAgICAg ICAgICAgICAgIkBiYWJlbC9wb2x5ZmlsbCIKKyAgICAgICAgICAgICAgICAgIkBiYWJlbC9wcmVz ZXQtZW52IgorICAgICAgICAgICAgICAgICAiYWlydGFwIgorICAgICAgICAgICAgICAgICAiYXNz ZXJ0IgorICAgICAgICAgICAgICAgICAiYmwiCisgICAgICAgICAgICAgICAgICJkZWVwLXN0cmlj dC1lcXVhbCIKKyAgICAgICAgICAgICAgICAgImV2ZW50cy5vbmNlIgorICAgICAgICAgICAgICAg ICAiZ2xvYiIKKyAgICAgICAgICAgICAgICAgImd1bnppcC1tYXliZSIKKyAgICAgICAgICAgICAg ICAgImh5cGVycXVlc3QiCisgICAgICAgICAgICAgICAgICJsb2xleCIKKyAgICAgICAgICAgICAg ICAgIm55YyIKKyAgICAgICAgICAgICAgICAgInB1bXAiCisgICAgICAgICAgICAgICAgICJyaW1y YWYiCisgICAgICAgICAgICAgICAgICJ0YXAiCisgICAgICAgICAgICAgICAgICJ0YXBlIgorICAg ICAgICAgICAgICAgICAidGFyLWZzIgorICAgICAgICAgICAgICAgICAidXRpbC1wcm9taXNpZnki KSkpKSkpCiAgICAgICAgIzp0ZXN0cz8gI2YpKQogICAgIChpbnB1dHMgKGxpc3Qgbm9kZS11dGls LWRlcHJlY2F0ZSBub2RlLXN0cmluZy1kZWNvZGVyIG5vZGUtaW5oZXJpdHMpKQogICAgIChob21l LXBhZ2UgImh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvcmVhZGFibGUtc3RyZWFtIikKQEAgLTk4 Myw3ICs5NzAsOCBAQCAoZGVmaW5lLXB1YmxpYyBub2RlLXJlc29sdmUtcHJvdG9idWYtc2NoZW1h CiAgICAgICAgIzpwaGFzZXMgKG1vZGlmeS1waGFzZXMgJXN0YW5kYXJkLXBoYXNlcwogICAgICAg ICAgICAgICAgICAgKGFkZC1hZnRlciAncGF0Y2gtZGVwZW5kZW5jaWVzICdkZWxldGUtZGVwZW5k ZW5jaWVzCiAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgXwotICAgICAgICAgICAgICAgICAg ICAgIChkZWxldGUtZGVwZW5kZW5jaWVzICcoInN0YW5kYXJkIiAidGFwZSIpKSkpKSkpCisgICAg ICAgICAgICAgICAgICAgICAgKG1vZGlmeS1qc29uIChkZWxldGUtZGVwZW5kZW5jaWVzCisgICAg ICAgICAgICAgICAgICAgICAgICAnKCJzdGFuZGFyZCIgInRhcGUiKSkpKSkpKSkKICAgICAoaW5w dXRzIChsaXN0IG5vZGUtcHJvdG9jb2wtYnVmZmVycy1zY2hlbWEpKQogICAgIChob21lLXBhZ2Ug Imh0dHBzOi8vZ2l0aHViLmNvbS9tYWZpbnRvc2gvcmVzb2x2ZS1wcm90b2J1Zi1zY2hlbWEiKQog ICAgIChzeW5vcHNpcyAiUmVzb2x2ZSBwcm90b2J1ZiBpbXBvcnRzIikKQEAgLTEwMTIsNyArMTAw MCw3IEBAIChkZWZpbmUtcHVibGljIG5vZGUtc2FmZS1idWZmZXIKICAgICAgICAobW9kaWZ5LXBo YXNlcyAlc3RhbmRhcmQtcGhhc2VzCiAgICAgICAgICAoYWRkLWFmdGVyICdwYXRjaC1kZXBlbmRl bmNpZXMgJ2RlbGV0ZS1kZXBlbmRlbmNpZXMKICAgICAgICAgICAgKGxhbWJkYSBhcmdzCi0gICAg ICAgICAgICAgKGRlbGV0ZS1kZXBlbmRlbmNpZXMgJygidGFwZSIgInN0YW5kYXJkIikpKSkpCisg ICAgICAgICAgICAgKG1vZGlmeS1qc29uIChkZWxldGUtZGVwZW5kZW5jaWVzICcoInRhcGUiICJz dGFuZGFyZCIpKSkpKSkKICAgICAgICAjOnRlc3RzPyAjZikpCiAgICAgKGhvbWUtcGFnZSAiaHR0 cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9zYWZlLWJ1ZmZlciIpCiAgICAgKHN5bm9wc2lzICJCdWZm ZXIgY3JlYXRpb24gd2l0aCBleHBsaWNpdCBzZW1hbnRpY3MiKQpAQCAtMTA0MCwyMCArMTAyOCwy MSBAQCAoZGVmaW5lLXB1YmxpYyBub2RlLXNhZmUtc3RhYmxlLXN0cmluZ2lmeQogICAgICAgICM6 cGhhc2VzIChtb2RpZnktcGhhc2VzICVzdGFuZGFyZC1waGFzZXMKICAgICAgICAgICAgICAgICAg IChhZGQtYWZ0ZXIgJ3BhdGNoLWRlcGVuZGVuY2llcyAnZGVsZXRlLWRlcGVuZGVuY2llcwogICAg ICAgICAgICAgICAgICAgICAobGFtYmRhIF8KLSAgICAgICAgICAgICAgICAgICAgICAoZGVsZXRl LWRlcGVuZGVuY2llcyAnKCJiZW5jaG1hcmsiICJjbG9uZSIKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJmYXN0LWpzb24tc3RhYmxlLXN0cmluZ2lmeSIKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmYXN0LXNhZmUtc3Ry aW5naWZ5IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZh c3Qtc3RhYmxlLXN0cmluZ2lmeSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJmYXN0ZXItc3RhYmxlLXN0cmluZ2lmeSIKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJmYXN0ZXN0LXN0YWJsZS1zdHJpbmdpZnkiCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAianNvbi1zdGFibGUtc3Ry aW5naWZ5IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImpz b24tc3RyaW5naWZ5LWRldGVybWluaXN0aWMiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAianNvbi1zdHJpbmdpZnktc2FmZSIKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGFuZGFyZCIKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0YXAiCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAidHlwZXNjcmlwdCIKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJAdHlwZXMvbm9kZSIKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJAdHlwZXMvanNvbi1zdGFibGUtc3RyaW5naWZ5 IikpKSkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAobW9kaWZ5LWpzb24gKGRlbGV0ZS1kZXBl bmRlbmNpZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICcoImJlbmNobWFyayIgImNsb25lIgor ICAgICAgICAgICAgICAgICAgICAgICAgICAiZmFzdC1qc29uLXN0YWJsZS1zdHJpbmdpZnkiCisg ICAgICAgICAgICAgICAgICAgICAgICAgICJmYXN0LXNhZmUtc3RyaW5naWZ5IgorICAgICAgICAg ICAgICAgICAgICAgICAgICAiZmFzdC1zdGFibGUtc3RyaW5naWZ5IgorICAgICAgICAgICAgICAg ICAgICAgICAgICAiZmFzdGVyLXN0YWJsZS1zdHJpbmdpZnkiCisgICAgICAgICAgICAgICAgICAg ICAgICAgICJmYXN0ZXN0LXN0YWJsZS1zdHJpbmdpZnkiCisgICAgICAgICAgICAgICAgICAgICAg ICAgICJqc29uLXN0YWJsZS1zdHJpbmdpZnkiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJq c29uLXN0cmluZ2lmeS1kZXRlcm1pbmlzdGljIgorICAgICAgICAgICAgICAgICAgICAgICAgICAi anNvbi1zdHJpbmdpZnktc2FmZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInN0YW5kYXJk IgorICAgICAgICAgICAgICAgICAgICAgICAgICAidGFwIgorICAgICAgICAgICAgICAgICAgICAg ICAgICAidHlwZXNjcmlwdCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkB0eXBlcy9ub2Rl IgorICAgICAgICAgICAgICAgICAgICAgICAgICAiQHR5cGVzL2pzb24tc3RhYmxlLXN0cmluZ2lm eSIpKSkpKSkpKQogICAgIChob21lLXBhZ2UgImh0dHBzOi8vZ2l0aHViLmNvbS9CcmlkZ2VBUi9z YWZlLXN0YWJsZS1zdHJpbmdpZnkiKQogICAgIChzeW5vcHNpcyAiU2VyaWFsaXphdGlvbiBvZiBq YXZhc2NyaXB0IG9iamVjdHMiKQogICAgIChkZXNjcmlwdGlvbgpAQCAtMTExMSw3ICsxMTAwLDcg QEAgKGRlZmluZS1wdWJsaWMgbm9kZS1zZW12ZXIKICAgICAgICAobW9kaWZ5LXBoYXNlcyAlc3Rh bmRhcmQtcGhhc2VzCiAgICAgICAgICAoYWRkLWFmdGVyICdwYXRjaC1kZXBlbmRlbmNpZXMgJ2Rl bGV0ZS1kZXBlbmRlbmNpZXMKICAgICAgICAgICAgKGxhbWJkYSBhcmdzCi0gICAgICAgICAgICAg KGRlbGV0ZS1kZXBlbmRlbmNpZXMgJygidGFwIikpKSkpCisgICAgICAgICAgICAgKG1vZGlmeS1q c29uIChkZWxldGUtZGVwZW5kZW5jaWVzICcoInRhcCIpKSkpKSkKICAgICAgICA7OyBGSVhNRTog VGVzdHMgZGVwZW5kIG9uIG5vZGUtdGFwCiAgICAgICAgIzp0ZXN0cz8gI2YpKQogICAgIChob21l LXBhZ2UgImh0dHBzOi8vZ2l0aHViLmNvbS9ucG0vbm9kZS1zZW12ZXIiKQpAQCAtMTE1MSw3ICsx MTQwLDggQEAgKGRlZmluZS1wdWJsaWMgbm9kZS1zZXJpYWxwb3J0CiAgICAgICAgKG1vZGlmeS1w aGFzZXMgJXN0YW5kYXJkLXBoYXNlcwogICAgICAgICAgKGFkZC1hZnRlciAncGF0Y2gtZGVwZW5k ZW5jaWVzICdkZWxldGUtZGVwZW5kZW5jaWVzCiAgICAgICAgICAgIChsYW1iZGEgYXJncwotICAg ICAgICAgICAgIChkZWxldGUtZGVwZW5kZW5jaWVzIGAoIkBzZXJpYWxwb3J0L2JpbmRpbmctbW9j ayIpKSkpCisgICAgICAgICAgICAgKG1vZGlmeS1qc29uIChkZWxldGUtZGVwZW5kZW5jaWVzCisg ICAgICAgICAgICAgICBgKCJAc2VyaWFscG9ydC9iaW5kaW5nLW1vY2siKSkpKSkKICAgICAgICAg IChhZGQtYWZ0ZXIgJ3VucGFjayAnY2hkaXIKICAgICAgICAgICAgKGxhbWJkYSBhcmdzCiAgICAg ICAgICAgICAgKGNoZGlyICJwYWNrYWdlcy9zZXJpYWxwb3J0IikpKSkKQEAgLTEyMTAsMjUgKzEy MDAsMTAgQEAgKGRlZmluZS1wdWJsaWMgbm9kZS1zZXJpYWxwb3J0LWJpbmRpbmdzCiAgICAgICAg ICAgICAgKGNoZGlyICJwYWNrYWdlcy9iaW5kaW5ncyIpKSkKICAgICAgICAgIChhZGQtYWZ0ZXIg J3BhdGNoLWRlcGVuZGVuY2llcyAnZGVsZXRlLWRlcGVuZGVuY2llcwogICAgICAgICAgICAobGFt YmRhIGFyZ3MKLSAgICAgICAgICAgICAoZGVsZXRlLWRlcGVuZGVuY2llcyBgKCJwcmVidWlsZC1p bnN0YWxsIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgZGV2RGVwZW5k ZW5jaWVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQHNlcmlhbHBvcnQv YmluZGluZy1tb2NrIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vZGUt YWJpIikpKSkKLSAgICAgICAgIChhZGQtYWZ0ZXIgJ2NoZGlyICdhdm9pZC1wcmVidWlsZC1pbnN0 YWxsCi0gICAgICAgICAgIChsYW1iZGEgYXJncwotICAgICAgICAgICAgICh3aXRoLWF0b21pYy1q c29uLWZpbGUtcmVwbGFjZW1lbnQgKGxhbWJkYSAocGtnLW1ldGEtYWxpc3QpCi0gICAgICAgICAg ICAgICAobWFwCi0gICAgICAgICAgICAgICAgIChtYXRjaC1sYW1iZGEKLSAgICAgICAgICAgICAg ICAgICAoKCJzY3JpcHRzIiAuIHNjcmlwdHMtYWxpc3QpCi0gICAgICAgICAgICAgICAgICAgICAo Y29ucyAic2NyaXB0cyIgKGZpbHRlcgotICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2gtbGFt YmRhCi0gICAgICAgICAgICAgICAgICAgICAgICAgKCgiaW5zdGFsbCIgLiBfKSAjZikKLSAgICAg ICAgICAgICAgICAgICAgICAgICAoXyAjdCkpCi0gICAgICAgICAgICAgICAgICAgICAgIHNjcmlw dHMtYWxpc3QpKSkKLSAgICAgICAgICAgICAgICAgICAoKCJneXBmaWxlIiAuIF8pCi0gICAgICAg ICAgICAgICAgICAgICAoY29ucyAiZ3lwZmlsZSIgI2YpKQotICAgICAgICAgICAgICAgICAgIChv dGhlciBvdGhlcikpCi0gICAgICAgICAgICAgICAgIHBrZy1tZXRhLWFsaXN0KSkpKSkpCisgICAg ICAgICAgICAgKG1vZGlmeS1qc29uCisgICAgICAgICAgICAgICAoZGVsZXRlLWRlcGVuZGVuY2ll cyBgKAorICAgICAgICAgICAgICAgICA7OyBkZXZEZXBlbmRlbmNpZXMKKyAgICAgICAgICAgICAg ICAgIm5vZGUtYWJpIikpKSkpKQogICAgICAgICM6dGVzdHM/ICNmKSkKICAgICAoc3lub3BzaXMg IkFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIE5vZGUgU2VyaWFsUG9ydCBiaW5kaW5ncyIpCiAgICAg KGRlc2NyaXB0aW9uICJOb2RlIFNlcmlhbFBvcnQgaXMgYSBtb2R1bGFyIHN1aXRlIG9mIE5vZGUu anMgcGFja2FnZXMgZm9yCkBAIC0xNDA5LDggKzEzODQsOSBAQCAoZGVmaW5lLXB1YmxpYyBub2Rl LXNlcmlhbHBvcnQtc3RyZWFtCiAgICAgICAgKG1vZGlmeS1waGFzZXMgJXN0YW5kYXJkLXBoYXNl cwogICAgICAgICAgKGFkZC1hZnRlciAncGF0Y2gtZGVwZW5kZW5jaWVzICdkZWxldGUtZGVwZW5k ZW5jaWVzCiAgICAgICAgICAgIChsYW1iZGEgYXJncwotICAgICAgICAgICAgIChkZWxldGUtZGVw ZW5kZW5jaWVzIGAoOzsgZGV2RGVwZW5kZW5jaWVzCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiQHNlcmlhbHBvcnQvYmluZGluZy1tb2NrIikpKSkKKyAgICAgICAgICAgICAo bW9kaWZ5LWpzb24KKyAgICAgICAgICAgICAgIChkZWxldGUtZGVwZW5kZW5jaWVzIDs7IGRldkRl cGVuZGVuY2llcworICAgICAgICAgICAgICAgICBgKCJAc2VyaWFscG9ydC9iaW5kaW5nLW1vY2si KSkpKSkKICAgICAgICAgIChhZGQtYWZ0ZXIgJ3VucGFjayAnY2hkaXIKICAgICAgICAgICAgKGxh bWJkYSBhcmdzCiAgICAgICAgICAgICAgKGNoZGlyICJwYWNrYWdlcy9zdHJlYW0iKSkpKQpAQCAt MTQ2MSw3ICsxNDM3LDcgQEAgKGRlZmluZS1wdWJsaWMgbm9kZS1zcWxpdGUzCiAgICAgICAgKG1v ZGlmeS1waGFzZXMgJXN0YW5kYXJkLXBoYXNlcwogICAgICAgICAgKGFkZC1hZnRlciAncGF0Y2gt ZGVwZW5kZW5jaWVzICdkZWxldGUtZGVwZW5kZW5jaWVzCiAgICAgICAgICAgIChsYW1iZGEgYXJn cwotICAgICAgICAgICAgIChkZWxldGUtZGVwZW5kZW5jaWVzCisgICAgICAgICAgICAgKG1vZGlm eS1qc29uIChkZWxldGUtZGVwZW5kZW5jaWVzCiAgICAgICAgICAgICAgIGAoOzsgTm9ybWFsbHks IHRoaXMgaXMgImJ1aWx0IiB1c2luZyBAbWFwYm94L25vZGUtcHJlLWd5cCwKICAgICAgICAgICAg ICAgICA7OyB3aGljaCBwdWJsaXNoZXMgb3IgZG93bmxvYWRzIHByZS1idWlsdCBiaW5hcmllcyBv cgogICAgICAgICAgICAgICAgIDs7IGZhbGxzIGJhY2sgdG8gYnVpbGRpbmcgZnJvbSBzb3VyY2Uu ICBIZXJlLCB3ZSBwYXRjaCBvdXQKQEAgLTE0ODAsNyArMTQ1Niw3IEBAIChkZWZpbmUtcHVibGlj IG5vZGUtc3FsaXRlMwogICAgICAgICAgICAgICAgICJub2RlLWd5cCIKICAgICAgICAgICAgICAg ICA7OyBUaGVzZSB3ZSdkIGxpa2UsIHdlIGp1c3QgZG9uJ3QgaGF2ZSB0aGVtIHlldDoKICAgICAg ICAgICAgICAgICAiZXNsaW50IgotICAgICAgICAgICAgICAgICJtb2NoYSIpKSkpCisgICAgICAg ICAgICAgICAgIm1vY2hhIikpKSkpCiAgICAgICAgICAoYWRkLWJlZm9yZSAnY29uZmlndXJlICdu cG0tY29uZmlnLXNxbGl0ZQogICAgICAgICAgICA7OyBXZSBuZWVkIHRoaXMgc3RlcCBldmVuIGlm IHdlIGRvIHJlcGxhY2UgQG1hcGJveC9ub2RlLXByZS1neXAKICAgICAgICAgICAgOzsgYmVjYXVz ZSB0aGUgcGFja2FnZSBleHBlY3RzIHRvIGJ1aWxkIGl0cyBidW5kbGVkIHNxbGl0ZQpAQCAtMTUx NCw4ICsxNDkwLDkgQEAgKGRlZmluZS1wdWJsaWMgbm9kZS1zcWxpdGUzCiAgICAgICAgICAgICAg KHN1YnN0aXR1dGUqICIubnBtaWdub3JlIgogICAgICAgICAgICAgICAgKCgibGliL2JpbmRpbmci KQogICAgICAgICAgICAgICAgICIjbGliL2JpbmRpbmcgIyA8LSBwYXRjaGVkIGZvciBHdWl4Iikp Ci0gICAgICAgICAgICAgKHdpdGgtYXRvbWljLWpzb24tZmlsZS1yZXBsYWNlbWVudCAobGFtYmRh IChwa2ctbWV0YS1hbGlzdCkKLSAgICAgICAgICAgICAgIChsZXQgKChiaW5hcnktYWxpc3QgKGFz c29jLXJlZiBwa2ctbWV0YS1hbGlzdCAiYmluYXJ5IikpKQorICAgICAgICAgICAgIChtb2RpZnkt anNvbgorICAgICAgICAgICAgICAgKGxhbWJkYSAocGtnLW1ldGEtYWxpc3QpCisgICAgICAgICAg ICAgICAgIChsZXQgKChiaW5hcnktYWxpc3QgKGFzc29jLXJlZiBwa2ctbWV0YS1hbGlzdCAiYmlu YXJ5IikpKQogICAgICAgICAgICAgICAgICA7OyBXaGVuIGl0IGJ1aWxkcyBmcm9tIHNvdXJjZSwg bm9kZS1wcmUtZ3lwIHN1cHBsaWVzCiAgICAgICAgICAgICAgICAgIDs7IG1vZHVsZV9uYW1lIGFu ZCBtb2R1bGVfcGF0aCBiYXNlZCBvbiB0aGUgZW50cmllcyB1bmRlcgogICAgICAgICAgICAgICAg ICA7OyAiYmluYXJ5IiBmcm9tICJwYWNrYWdlLmpzb24iLCBzbyB0aGlzIHBhY2thZ2UncwpAQCAt MTUyOCwxOSArMTUwNSwxMSBAQCAoZGVmaW5lLXB1YmxpYyBub2RlLXNxbGl0ZTMKICAgICAgICAg ICAgICAgICAgICAoYXNzb2MtcmVmIGJpbmFyeS1hbGlzdCAibW9kdWxlX25hbWUiKQogICAgICAg ICAgICAgICAgICAgICIgbW9kdWxlX3BhdGg9IgogICAgICAgICAgICAgICAgICAgIChhc3NvYy1y ZWYgYmluYXJ5LWFsaXN0ICJtb2R1bGVfcGF0aCIpKSkpCisgICAgICAgICAgICAgICAgIHBrZy1t ZXRhLWFsaXN0KQogICAgICAgICAgICAgICAgOzsgV2UgbmVlZCB0byByZW1vdmUgdGhlIGluc3Rh bGwgc2NyaXB0IGZyb20gInBhY2thZ2UuanNvbiIsCiAgICAgICAgICAgICAgICA7OyBhcyBpdCB3 b3VsZCB0cnkgdG8gdXNlIG5vZGUtcHJlLWd5cCBhbmQgd291bGQgYmxvY2sgdGhlCiAgICAgICAg ICAgICAgICA7OyBhdXRvbWF0aWMgYnVpbGRpbmcgcGVyZm9ybWVkIGJ5IGBucG0gaW5zdGFsbGAu Ci0gICAgICAgICAgICAgICAobWFwCi0gICAgICAgICAgICAgICAgIChtYXRjaC1sYW1iZGEKLSAg ICAgICAgICAgICAgICAgICAoKCJzY3JpcHRzIiAuIHNjcmlwdHMtYWxpc3QpCi0gICAgICAgICAg ICAgICAgICAgICAoY29ucyAic2NyaXB0cyIgKGZpbHRlcgotICAgICAgICAgICAgICAgICAgICAg ICAobWF0Y2gtbGFtYmRhCi0gICAgICAgICAgICAgICAgICAgICAgICAgKCgiaW5zdGFsbCIgLiBf KSAjZikKLSAgICAgICAgICAgICAgICAgICAgICAgICAoXyAjdCkpCi0gICAgICAgICAgICAgICAg ICAgICAgIHNjcmlwdHMtYWxpc3QpKSkKLSAgICAgICAgICAgICAgICAgICAob3RoZXIgb3RoZXIp KQotICAgICAgICAgICAgICAgICBwa2ctbWV0YS1hbGlzdCkpKSkpKSkpCisgICAgICAgICAgICAg ICAoZGVsZXRlLWZpZWxkcyBgKCgic2NyaXB0cyIgImluc3RhbGwiKSkpKSkpKSkpCiAgICAgKGhv bWUtcGFnZSAiaHR0cHM6Ly9naXRodWIuY29tL21hcGJveC9ub2RlLXNxbGl0ZTMiKQogICAgIChz eW5vcHNpcyAiTm9kZS5qcyBiaW5kaW5ncyBmb3IgU1FMaXRlMyIpCiAgICAgKGRlc2NyaXB0aW9u CkBAIC0xNjIzLDggKzE1OTIsOCBAQCAoZGVmaW5lLXB1YmxpYyBub2RlLXN0cmluZy1kZWNvZGVy CiAgICAgICAgKG1vZGlmeS1waGFzZXMgJXN0YW5kYXJkLXBoYXNlcwogICAgICAgICAgKGFkZC1h ZnRlciAncGF0Y2gtZGVwZW5kZW5jaWVzICdkZWxldGUtZGVwZW5kZW5jaWVzCiAgICAgICAgICAg IChsYW1iZGEgYXJncwotICAgICAgICAgICAgIChkZWxldGUtZGVwZW5kZW5jaWVzCi0gICAgICAg ICAgICAgICcoInRhcCIgImNvcmUtdXRpbC1pcyIgImJhYmVsLXBvbHlmaWxsIikpKSkpCisgICAg ICAgICAgICAgKG1vZGlmeS1qc29uIChkZWxldGUtZGVwZW5kZW5jaWVzCisgICAgICAgICAgICAg ICcoInRhcCIgImNvcmUtdXRpbC1pcyIgImJhYmVsLXBvbHlmaWxsIikpKSkpKQogICAgICAgIDs7 IEZJWE1FOiBUZXN0cyBkZXBlbmQgb24gbm9kZS10YXAKICAgICAgICAjOnRlc3RzPyAjZikpCiAg ICAgKGlucHV0cyAobGlzdCBub2RlLXNhZmUtYnVmZmVyIG5vZGUtaW5oZXJpdHMpKQpAQCAtMTY3 OCw3ICsxNjQ3LDcgQEAgKGRlZmluZS1wdWJsaWMgbm9kZS13cmFwcHkKICAgICAgICAobW9kaWZ5 LXBoYXNlcyAlc3RhbmRhcmQtcGhhc2VzCiAgICAgICAgICAoYWRkLWFmdGVyICdwYXRjaC1kZXBl bmRlbmNpZXMgJ2RlbGV0ZS1kZXBlbmRlbmNpZXMKICAgICAgICAgICAgKGxhbWJkYSBhcmdzCi0g ICAgICAgICAgICAgKGRlbGV0ZS1kZXBlbmRlbmNpZXMgJygidGFwIikpKSkpKSkKKyAgICAgICAg ICAgICAobW9kaWZ5LWpzb24gKGRlbGV0ZS1kZXBlbmRlbmNpZXMgJygidGFwIikpKSkpKSkpCiAg ICAgKGhvbWUtcGFnZSAiaHR0cHM6Ly9naXRodWIuY29tL25wbS93cmFwcHkiKQogICAgIChzeW5v cHNpcyAiQ2FsbGJhY2sgd3JhcHBpbmcgdXRpbGl0eSIpCiAgICAgKGRlc2NyaXB0aW9uICJAY29k ZXt3cmFwcHl9IGlzIGEgdXRpbGl0eSBmb3IgTm9kZS5qcyB0byB3cmFwIGNhbGxiYWNrcy4iKQpA QCAtMTcwMyw3ICsxNjcyLDggQEAgKGRlZmluZS1wdWJsaWMgbm9kZS15YXpsCiAgICAgICAgIzpw aGFzZXMgKG1vZGlmeS1waGFzZXMgJXN0YW5kYXJkLXBoYXNlcwogICAgICAgICAgICAgICAgICAg KGFkZC1hZnRlciAncGF0Y2gtZGVwZW5kZW5jaWVzICdkZWxldGUtZGVwZW5kZW5jaWVzCiAgICAg ICAgICAgICAgICAgICAgIChsYW1iZGEgXwotICAgICAgICAgICAgICAgICAgICAgIChkZWxldGUt ZGVwZW5kZW5jaWVzICcoImFpcnRhcCIgImJsIiAiaXN0YW5idWwiICJ5YXV6bCIpKSkpKSkpCisg ICAgICAgICAgICAgICAgICAgICAgKG1vZGlmeS1qc29uIChkZWxldGUtZGVwZW5kZW5jaWVzCisg ICAgICAgICAgICAgICAgICAgICAgICAnKCJhaXJ0YXAiICJibCIgImlzdGFuYnVsIiAieWF1emwi KSkpKSkpKSkKICAgICAoaW5wdXRzIChsaXN0IG5vZGUtYnVmZmVyLWNyYzMyKSkKICAgICAoaG9t ZS1wYWdlICJodHRwczovL2dpdGh1Yi5jb20vdGhlam9zaHdvbGZlL3lhemwiKQogICAgIChzeW5v cHNpcyAiWWV0IGFub3RoZXIgemlwIGxpYnJhcnkgZm9yIG5vZGUiKQpkaWZmIC0tZ2l0IGEvZ251 L3BhY2thZ2VzL25vZGUuc2NtIGIvZ251L3BhY2thZ2VzL25vZGUuc2NtCmluZGV4IDIwYWNmZmIz ZGYuLmExM2VjNWQwNzcgMTAwNjQ0Ci0tLSBhL2dudS9wYWNrYWdlcy9ub2RlLnNjbQorKysgYi9n bnUvcGFja2FnZXMvbm9kZS5zY20KQEAgLTEzLDYgKzEzLDcgQEAKIDs7OyBDb3B5cmlnaHQgwqkg MjAyMSwgMjAyMiBQaGlsaXAgTWNHcmF0aCA8cGhpbGlwQHBoaWxpcG1jZ3JhdGguY29tPgogOzs7 IENvcHlyaWdodCDCqSAyMDIyIEhpbHRvbiBDaGFpbiA8aGFrb0B1bHRyYXJhcmUuc3BhY2U+CiA7 OzsgQ29weXJpZ2h0IMKpIDIwMjQgRWZyYWltIEZsYXNobmVyIDxlZnJhaW1AZmxhc2huZXIuY28u aWw+Cis7OzsgQ29weXJpZ2h0IMKpIDIwMjQgRGFuaWVsIEtob2RhYmFraHNoIDxkLmtob2RhYmFr aHNoQGdtYWlsLmNvbT4KIDs7OwogOzs7IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBHdWl4Lgog Ozs7CkBAIC0zNjYsNyArMzY3LDcgQEAgKGRlZmluZS1wdWJsaWMgbm9kZS1zZW12ZXItYm9vdHN0 cmFwCiAgICAgICAgKG1vZGlmeS1waGFzZXMgJXN0YW5kYXJkLXBoYXNlcwogICAgICAgICAgKGFk ZC1hZnRlciAncGF0Y2gtZGVwZW5kZW5jaWVzICdkZWxldGUtZGVwZW5kZW5jaWVzCiAgICAgICAg ICAgIChsYW1iZGEgYXJncwotICAgICAgICAgICAgIChkZWxldGUtZGVwZW5kZW5jaWVzICcoInRh cCIpKSkpKSkpCisgICAgICAgICAgICAgKG1vZGlmeS1qc29uIChkZWxldGUtZGVwZW5kZW5jaWVz ICcoInRhcCIpKSkpKSkpKQogICAgIChob21lLXBhZ2UgImh0dHBzOi8vZ2l0aHViLmNvbS9ucG0v bm9kZS1zZW12ZXIiKQogICAgIChwcm9wZXJ0aWVzICcoKGhpZGRlbj8gLiAjdCkpKQogICAgIChz eW5vcHNpcyAiUGFyc2VzIHNlbWFudGljIHZlcnNpb25zIHN0cmluZ3MiKQpAQCAtMzk3LDExICsz OTgsMTIgQEAgKGRlZmluZS1wdWJsaWMgbm9kZS1tcy1ib290c3RyYXAKICAgICAgICAobW9kaWZ5 LXBoYXNlcyAlc3RhbmRhcmQtcGhhc2VzCiAgICAgICAgICAoYWRkLWFmdGVyICdwYXRjaC1kZXBl bmRlbmNpZXMgJ2RlbGV0ZS1kZXBlbmRlbmNpZXMKICAgICAgICAgICAgKGxhbWJkYSBhcmdzCi0g ICAgICAgICAgICAgKGRlbGV0ZS1kZXBlbmRlbmNpZXMgJygiZXNsaW50IgotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdC5qcyIKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJodXNreSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJsaW50LXN0YWdlZCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJt b2NoYSIpKSkpKSkpCisgICAgICAgICAgICAgKG1vZGlmeS1qc29uIChkZWxldGUtZGVwZW5kZW5j aWVzCisgICAgICAgICAgICAgICAnKCJlc2xpbnQiCisgICAgICAgICAgICAgICAgICJleHBlY3Qu anMiCisgICAgICAgICAgICAgICAgICJodXNreSIKKyAgICAgICAgICAgICAgICAgImxpbnQtc3Rh Z2VkIgorICAgICAgICAgICAgICAgICAibW9jaGEiKSkpKSkpKSkKICAgICAoaG9tZS1wYWdlICJo dHRwczovL2dpdGh1Yi5jb20vemVpdC9tcyNyZWFkbWUiKQogICAgIChwcm9wZXJ0aWVzICcoKGhp ZGRlbj8gLiAjdCkpKQogICAgIChzeW5vcHNpcyAiVGlueSBtaWxsaXNlY29uZCBjb252ZXJzaW9u IHV0aWxpdHkiKQpAQCAtNDMxLDcgKzQzMyw3IEBAIChkZWZpbmUtcHVibGljIG5vZGUtYmluYXJ5 LXNlYXJjaC1ib290c3RyYXAKICAgICAgICAobW9kaWZ5LXBoYXNlcyAlc3RhbmRhcmQtcGhhc2Vz CiAgICAgICAgICAoYWRkLWFmdGVyICdwYXRjaC1kZXBlbmRlbmNpZXMgJ2RlbGV0ZS1kZXBlbmRl bmNpZXMKICAgICAgICAgICAgKGxhbWJkYSBhcmdzCi0gICAgICAgICAgICAgKGRlbGV0ZS1kZXBl bmRlbmNpZXMgYCgiY2hhaSIgIm1vY2hhIikpKSkpKSkKKyAgICAgICAgICAgICAobW9kaWZ5LWpz b24gKGRlbGV0ZS1kZXBlbmRlbmNpZXMgYCgiY2hhaSIgIm1vY2hhIikpKSkpKSkpCiAgICAgKGhv bWUtcGFnZSAiaHR0cHM6Ly9naXRodWIuY29tL2Rhcmtza3lhcHAvYmluYXJ5LXNlYXJjaCNyZWFk bWUiKQogICAgIChwcm9wZXJ0aWVzICcoKGhpZGRlbj8gLiAjdCkpKQogICAgIChzeW5vcHNpcyAi VGlueSBiaW5hcnkgc2VhcmNoIGZ1bmN0aW9uIHdpdGggY29tcGFyYXRvcnMiKQpAQCAtNDYwLDE3 ICs0NjIsMTggQEAgKGRlZmluZS1wdWJsaWMgbm9kZS1kZWJ1Zy1ib290c3RyYXAKICAgICAgICAo bW9kaWZ5LXBoYXNlcyAlc3RhbmRhcmQtcGhhc2VzCiAgICAgICAgICAoYWRkLWFmdGVyICdwYXRj aC1kZXBlbmRlbmNpZXMgJ2RlbGV0ZS1kZXBlbmRlbmNpZXMKICAgICAgICAgICAgKGxhbWJkYSBh cmdzCi0gICAgICAgICAgICAgKGRlbGV0ZS1kZXBlbmRlbmNpZXMgYCgiYnJmcyIKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJicm93c2VyaWZ5IgotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgImNvdmVyYWxscyIKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJpc3RhbmJ1bCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJrYXJtYSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJrYXJtYS1i cm93c2VyaWZ5IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImthcm1hLWNo cm9tZS1sYXVuY2hlciIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJrYXJt YS1tb2NoYSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2NoYSIKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2NoYS1sY292LXJlcG9ydGVyIgot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInhvIikpKSkpKSkKKyAgICAgICAg ICAgICAobW9kaWZ5LWpzb24gKGRlbGV0ZS1kZXBlbmRlbmNpZXMKKyAgICAgICAgICAgICAgIGAo ImJyZnMiCisgICAgICAgICAgICAgICAgICJicm93c2VyaWZ5IgorICAgICAgICAgICAgICAgICAi Y292ZXJhbGxzIgorICAgICAgICAgICAgICAgICAiaXN0YW5idWwiCisgICAgICAgICAgICAgICAg ICJrYXJtYSIKKyAgICAgICAgICAgICAgICAgImthcm1hLWJyb3dzZXJpZnkiCisgICAgICAgICAg ICAgICAgICJrYXJtYS1jaHJvbWUtbGF1bmNoZXIiCisgICAgICAgICAgICAgICAgICJrYXJtYS1t b2NoYSIKKyAgICAgICAgICAgICAgICAgIm1vY2hhIgorICAgICAgICAgICAgICAgICAibW9jaGEt bGNvdi1yZXBvcnRlciIKKyAgICAgICAgICAgICAgICAgInhvIikpKSkpKSkpCiAgICAgKGlucHV0 cyAobGlzdCBub2RlLW1zLWJvb3RzdHJhcCkpCiAgICAgKGhvbWUtcGFnZSAiaHR0cHM6Ly9naXRo dWIuY29tL3Zpc2lvbm1lZGlhL2RlYnVnI3JlYWRtZSIpCiAgICAgKHByb3BlcnRpZXMgJygoaGlk ZGVuPyAuICN0KSkpCkBAIC01MjYsMTIgKzUyOSwxMyBAQCAoZGVmaW5lLXB1YmxpYyBub2RlLWxs cGFyc2UtYnVpbGRlci1ib290c3RyYXAKICAgICAgICAobW9kaWZ5LXBoYXNlcyAlc3RhbmRhcmQt cGhhc2VzCiAgICAgICAgICAoYWRkLWFmdGVyICdwYXRjaC1kZXBlbmRlbmNpZXMgJ2RlbGV0ZS1k ZXBlbmRlbmNpZXMKICAgICAgICAgICAgKGxhbWJkYSBfCi0gICAgICAgICAgICAgKGRlbGV0ZS1k ZXBlbmRlbmNpZXMgYCgiQHR5cGVzL21vY2hhIgotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIkB0eXBlcy9ub2RlIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIm1vY2hhIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRzLW5vZGUi Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHNsaW50IgotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVzY3JpcHQiKSkpKQorICAgICAgICAgICAg IChtb2RpZnktanNvbiAoZGVsZXRlLWRlcGVuZGVuY2llcworICAgICAgICAgICAgICAgYCgiQHR5 cGVzL21vY2hhIgorICAgICAgICAgICAgICAgICAiQHR5cGVzL25vZGUiCisgICAgICAgICAgICAg ICAgICJtb2NoYSIKKyAgICAgICAgICAgICAgICAgInRzLW5vZGUiCisgICAgICAgICAgICAgICAg ICJ0c2xpbnQiCisgICAgICAgICAgICAgICAgICJ0eXBlc2NyaXB0IikpKSkpCiAgICAgICAgICAo cmVwbGFjZSAnYnVpbGQKICAgICAgICAgICAgKGxhbWJkYSogKCM6a2V5IGlucHV0cyAjOmFsbG93 LW90aGVyLWtleXMpCiAgICAgICAgICAgICAgKGxldCAoKGVzYnVpbGQgKHNlYXJjaC1pbnB1dC1m aWxlIGlucHV0cyAiL2Jpbi9lc2J1aWxkIikpKQpAQCAtNTg3LDEzICs1OTEsMTQgQEAgKGRlZmlu ZS1wdWJsaWMgbm9kZS1sbHBhcnNlLWZyb250ZW5kLWJvb3RzdHJhcAogICAgICAgIChtb2RpZnkt cGhhc2VzICVzdGFuZGFyZC1waGFzZXMKICAgICAgICAgIChhZGQtYWZ0ZXIgJ3BhdGNoLWRlcGVu ZGVuY2llcyAnZGVsZXRlLWRlcGVuZGVuY2llcwogICAgICAgICAgICAobGFtYmRhIGFyZ3MKLSAg ICAgICAgICAgICAoZGVsZXRlLWRlcGVuZGVuY2llcyBgKCJAdHlwZXMvZGVidWciCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQHR5cGVzL21vY2hhIgotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIkB0eXBlcy9ub2RlIgotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIm1vY2hhIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgInRzLW5vZGUiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHNs aW50IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVzY3JpcHQiKSkp KQorICAgICAgICAgICAgIChtb2RpZnktanNvbiAoZGVsZXRlLWRlcGVuZGVuY2llcworICAgICAg ICAgICAgICAgYCgiQHR5cGVzL2RlYnVnIgorICAgICAgICAgICAgICAgICAiQHR5cGVzL21vY2hh IgorICAgICAgICAgICAgICAgICAiQHR5cGVzL25vZGUiCisgICAgICAgICAgICAgICAgICJtb2No YSIKKyAgICAgICAgICAgICAgICAgInRzLW5vZGUiCisgICAgICAgICAgICAgICAgICJ0c2xpbnQi CisgICAgICAgICAgICAgICAgICJ0eXBlc2NyaXB0IikpKSkpCiAgICAgICAgICAocmVwbGFjZSAn YnVpbGQKICAgICAgICAgICAgKGxhbWJkYSogKCM6a2V5IGlucHV0cyAjOmFsbG93LW90aGVyLWtl eXMpCiAgICAgICAgICAgICAgKGxldCAoKGVzYnVpbGQgKHNlYXJjaC1pbnB1dC1maWxlIGlucHV0 cyAiL2Jpbi9lc2J1aWxkIikpKQpAQCAtNjQ4LDE1ICs2NTMsMTYgQEAgKGRlZmluZS1wdWJsaWMg bm9kZS1sbHBhcnNlLWJvb3RzdHJhcAogICAgICAgIChtb2RpZnktcGhhc2VzICVzdGFuZGFyZC1w aGFzZXMKICAgICAgICAgIChhZGQtYWZ0ZXIgJ3BhdGNoLWRlcGVuZGVuY2llcyAnZGVsZXRlLWRl cGVuZGVuY2llcwogICAgICAgICAgICAobGFtYmRhIGFyZ3MKLSAgICAgICAgICAgICAoZGVsZXRl LWRlcGVuZGVuY2llcyBgKCJAdHlwZXMvZGVidWciCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiQHR5cGVzL21vY2hhIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIkB0eXBlcy9ub2RlIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ImVzbSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsbHBhcnNlLXRlc3Qt Zml4dHVyZSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2NoYSIKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0cy1ub2RlIgotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgInRzbGludCIKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJ0eXBlc2NyaXB0IikpKSkKKyAgICAgICAgICAgICAobW9kaWZ5LWpzb24g KGRlbGV0ZS1kZXBlbmRlbmNpZXMKKyAgICAgICAgICAgICAgIGAoIkB0eXBlcy9kZWJ1ZyIKKyAg ICAgICAgICAgICAgICAgIkB0eXBlcy9tb2NoYSIKKyAgICAgICAgICAgICAgICAgIkB0eXBlcy9u b2RlIgorICAgICAgICAgICAgICAgICAiZXNtIgorICAgICAgICAgICAgICAgICAibGxwYXJzZS10 ZXN0LWZpeHR1cmUiCisgICAgICAgICAgICAgICAgICJtb2NoYSIKKyAgICAgICAgICAgICAgICAg InRzLW5vZGUiCisgICAgICAgICAgICAgICAgICJ0c2xpbnQiCisgICAgICAgICAgICAgICAgICJ0 eXBlc2NyaXB0IikpKSkpCiAgICAgICAgICAocmVwbGFjZSAnYnVpbGQKICAgICAgICAgICAgKGxh bWJkYSogKCM6a2V5IGlucHV0cyAjOmFsbG93LW90aGVyLWtleXMpCiAgICAgICAgICAgICAgKGxl dCAoKGVzYnVpbGQgKHNlYXJjaC1pbnB1dC1maWxlIGlucHV0cyAiL2Jpbi9lc2J1aWxkIikpKQpk aWZmIC0tZ2l0IGEvZ3VpeC9idWlsZC9ub2RlLWJ1aWxkLXN5c3RlbS5zY20gYi9ndWl4L2J1aWxk L25vZGUtYnVpbGQtc3lzdGVtLnNjbQppbmRleCBkZjdlYTc3NzRjLi5lYTIzZDkyYTA1IDEwMDY0 NAotLS0gYS9ndWl4L2J1aWxkL25vZGUtYnVpbGQtc3lzdGVtLnNjbQorKysgYi9ndWl4L2J1aWxk L25vZGUtYnVpbGQtc3lzdGVtLnNjbQpAQCAtMzEsMTggKzMxLDE0IEBAIChkZWZpbmUtbW9kdWxl IChndWl4IGJ1aWxkIG5vZGUtYnVpbGQtc3lzdGVtKQogICAjOnVzZS1tb2R1bGUgKHNyZmkgc3Jm aS0xKQogICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS03MSkKICAgIzpleHBvcnQgKCVzdGFuZGFy ZC1waGFzZXMKLSAgICAgICAgICAgIHdpdGgtYXRvbWljLWpzb24tZmlsZS1yZXBsYWNlbWVudAog ICAgICAgICAgICAgZGVsZXRlLWRlcGVuZGVuY2llcwotICAgICAgICAgICAgbm9kZS1idWlsZCkp Ci0KLShkZWZpbmUqICh3aXRoLWF0b21pYy1qc29uLWZpbGUtcmVwbGFjZW1lbnQgcHJvYwotICAj Om9wdGlvbmFsIChmaWxlICJwYWNrYWdlLmpzb24iKSkKLSAgIkxpa2UgJ3dpdGgtYXRvbWljLWZp bGUtcmVwbGFjZW1lbnQnLCBidXQgUFJPQyBpcyBjYWxsZWQgd2l0aCBhIHNpbmdsZQotYXJndW1l bnQtLS10aGUgcmVzdWx0IG9mIHBhcnNpbmcgRklMRSdzIGNvbnRlbnRzIGFzIGpzb24tLS1hbmQg c2hvdWxkIGEgdmFsdWUKLXRvIGJlIHdyaXR0ZW4gYXMganNvbiB0byB0aGUgcmVwbGFjZW1lbnQg RklMRS4iCi0gICh3aXRoLWF0b21pYy1maWxlLXJlcGxhY2VtZW50IGZpbGUKLSAgICAobGFtYmRh IChpbiBvdXQpCi0gICAgICAoc2NtLT5qc29uIChwcm9jIChqc29uLT5zY20gaW4pKSBvdXQpKSkp CisgICAgICAgICAgICBkZWxldGUtZGV2LWRlcGVuZGVuY2llcworICAgICAgICAgICAgZGVsZXRl LWZpZWxkcworICAgICAgICAgICAgbW9kaWZ5LWpzb24KKyAgICAgICAgICAgIG1vZGlmeS1qc29u LWZpZWxkcworICAgICAgICAgICAgbm9kZS1idWlsZAorICAgICAgICAgICAgcmVwbGFjZS1maWVs ZHMKKyAgICAgICAgICAgIHdpdGgtYXRvbWljLWpzb24tZmlsZS1yZXBsYWNlbWVudCkpCiAKIChk ZWZpbmUqIChhc3NvYy1yZWYqIGFsaXN0IGtleSAjOm9wdGlvbmFsIGRlZmF1bHQpCiAgICJMaWtl IGFzc29jLXJlZiwgYnV0IHJldHVybiBERUZBVUxUIGluc3RlYWQgb2YgI2YgaWYgbm8gdmFsdWUg ZXhpc3RzLiIKQEAgLTcyLDYgKzY4LDE2MSBAQCAoZGVmaW5lKiAoYWxpc3QtdXBkYXRlIGFsaXN0 IGtleSBwcm9jICM6b3B0aW9uYWwgKD0gZXF1YWw/KSkKICAgICAgIChhY29ucyBrZXkgKHByb2Mg KGNkciBwYWlyKSkgcmVzdCkKICAgICAgIGFsaXN0KSkpCiAKKzs7OworOzs7IHBhY2thZ2UuanNv biBtb2RpZmljYXRpb24gcHJvY2VkdXJlcworOzs7CisKKyhkZWZpbmUqICh3aXRoLWF0b21pYy1q c29uLWZpbGUtcmVwbGFjZW1lbnQgcHJvYworICAjOm9wdGlvbmFsIChmaWxlICJwYWNrYWdlLmpz b24iKSkKKyAgIkxpa2UgJ3dpdGgtYXRvbWljLWZpbGUtcmVwbGFjZW1lbnQnLCBidXQgUFJPQyBp cyBjYWxsZWQgd2l0aCBhIHNpbmdsZQorYXJndW1lbnQtLS10aGUgcmVzdWx0IG9mIHBhcnNpbmcg RklMRSdzIGNvbnRlbnRzIGFzIGpzb24tLS1hbmQgc2hvdWxkIGEgdmFsdWUKK3RvIGJlIHdyaXR0 ZW4gYXMganNvbiB0byB0aGUgcmVwbGFjZW1lbnQgRklMRS4iCisgICh3aXRoLWF0b21pYy1maWxl LXJlcGxhY2VtZW50IGZpbGUKKyAgICAobGFtYmRhIChpbiBvdXQpCisgICAgICAoc2NtLT5qc29u IChwcm9jIChqc29uLT5zY20gaW4pKSBvdXQpKSkpCisKKyhkZWZpbmUqIChtb2RpZnktanNvbiAj OmtleSAoZmlsZSAicGFja2FnZS5qc29uIikgIzpyZXN0IGFsbC1hcmd1bWVudHMpCisgICJQcm92 aWRlIHBhY2thZ2UuanNvbiBtb2RpZnlpbmcgY2FsbGJhY2tzIHN1Y2ggYXMgKGRlbGV0ZS1kZXBl bmRlbmNpZXMgLi4uKSIKKyAgKGxldAorICAgICgKKyAgICAgIChtb2RpZmljYXRpb25zCisgICAg ICAgIChsZXQgbG9vcCAoKGFyZ3VtZW50cyBhbGwtYXJndW1lbnRzKSkKKyAgICAgICAgICAoY29u ZAorICAgICAgICAgICAgKChudWxsPyBhcmd1bWVudHMpICcoKSkKKyAgICAgICAgICAgICgoa2V5 d29yZD8gKGNhciBhcmd1bWVudHMpKSAobG9vcCAoY2RkciBhcmd1bWVudHMpKSkKKyAgICAgICAg ICAgIChlbHNlIChjb25zIChjYXIgYXJndW1lbnRzKSAobG9vcCAoY2RyIGFyZ3VtZW50cykpKSkp KSkpCisgICAgKHdpdGgtYXRvbWljLWpzb24tZmlsZS1yZXBsYWNlbWVudAorICAgICAgKGxhbWJk YSAocGFja2FnZSkKKyAgICAgICAgKGZvbGQKKyAgICAgICAgICAobGFtYmRhIChtb2RpZmljYXRp b24gcGFja2FnZSkKKyAgICAgICAgICAgIChtb2RpZmljYXRpb24gcGFja2FnZSkpCisgICAgICAg ICAgcGFja2FnZQorICAgICAgICAgIG1vZGlmaWNhdGlvbnMpKQorICAgICAgZmlsZSkpKQorCiso ZGVmaW5lIChkZWxldGUtZGVwZW5kZW5jaWVzIGRlcGVuZGVuY2llcy10by1yZW1vdmUpCisgICJS ZXdyaXRlICdwYWNrYWdlLmpzb24nIHRvIGFsbG93IHRoZSBidWlsZCB0byBwcm9jZWVkIHdpdGhv dXQgcGFja2FnZXMKK2xpc3RlZCBpbiAnZGVwZW5kZW5jaWVzLXRvLXJlbW92ZScsIGEgbGlzdCBv ZiBzdHJpbmdzIG5hbWluZyBucG0gcGFja2FnZXMuCisKK1RvIHByZXZlbnQgdGhlIGRlbGV0ZWQg ZGVwZW5kZW5jaWVzIGZyb20gYmVpbmcgcmVpbnRyb2R1Y2VkLCB1c2UgdGhpcyBmdW5jdGlvbgor b25seSBhZnRlciB0aGUgJ3BhdGNoLWRlcGVuZGVuY2llcycgcGhhc2UuIgorICAobGFtYmRhIChw a2ctbWV0YSkKKyAgICAoZm9sZAorICAgICAgKGxhbWJkYSAoZGVwZW5kZW5jeS1rZXkgcGtnLW1l dGEpCisgICAgICAgIChhbGlzdC11cGRhdGUKKyAgICAgICAgICBwa2ctbWV0YQorICAgICAgICAg IGRlcGVuZGVuY3kta2V5CisgICAgICAgICAgKGxhbWJkYSAoZGVwZW5kZW5jaWVzKQorICAgICAg ICAgICAgKHJlbW92ZQorICAgICAgICAgICAgICAobGFtYmRhIChkZXBlbmRlbmN5KQorICAgICAg ICAgICAgICAgIChtZW1iZXIgKGNhciBkZXBlbmRlbmN5KSBkZXBlbmRlbmNpZXMtdG8tcmVtb3Zl KSkKKyAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzKSkpKQorICAgICAgcGtnLW1ldGEKKyAgICAg IChsaXN0CisgICAgICAgICJkZXZEZXBlbmRlbmNpZXMiCisgICAgICAgICJkZXBlbmRlbmNpZXMi CisgICAgICAgICJwZWVyRGVwZW5kZW5jaWVzIgorICAgICAgICAib3B0aW9uYWxEZXBlbmRlbmNp ZXMiKSkpKQorCisoZGVmaW5lKiAobW9kaWZ5LWpzb24tZmllbGRzCisgICAgZmllbGRzCisgICAg ZmllbGQtbW9kaWZpZXIKKyAgICAjOmtleQorICAgICAgKGZpZWxkLXBhdGgtbWFwcGVyIChsYW1i ZGEgKGZpZWxkKSBmaWVsZCkpCisgICAgICAoaW5zZXJ0PyAjZikKKyAgICAgIChzdHJpY3Q/ICN0 KSkKKyAgIlByb3ZpZGVzIGEgbGFtYmRhIHRvIHN1cHBseSB0byBtb2RpZnktanNvbiB3aGljaCBt b2RpZmllcyB0aGUgc3BlY2lmaWVkCisganNvbiBmaWxlLgorLSBgZmllbGRzYCBpcyBhIGxpc3Qg cHJvY2VkdXJlLXNwZWNpZmljIGRhdGEgc3RydWN0dXJlcyB3aGljaCBzaG91bGQgaW5jbHVkZQor IHRoZSBkZWZpbml0aW9uIG9mIGEgYGZpZWxkLXBhdGhgIGluIG9uZSBvZiB0d28gc3ludGF4ZXM6 IGRvdC1zeW50YXggc3RyaW5nCisgc3VjaCBhcyBgXCJkZXZEZXBlbmRlbmNpZXMuZXNidWlsZFwi YCwgb3IgYSBsaXN0IG9mIHN0cmluZ3Mgc3VjaCBhcworIGAobGlzdCBcImRldkRlcGVuZGVuY2ll c1wiIFwiZXNidWlsZFwiKWAuCistIGBmaWVsZC1tb2RpZmllcmAgaXMgYSBsYW1iZGEgd2hpY2gg aXMgaW52b2tlZCBhdCB0aGUgcG9zaXRpb24gb2YgdGhlIGZpZWxkLgorIEl0IGlzIHN1cHBsaWVk IHdpdGggdGhlIGN1cnJlbnQgZmllbGQgZGVmaW5pdGlvbiwgdGhlIGFzc29jaWF0aW9uIGxpc3Qg KGFsaXN0KQorIGF0IHRoZSBmaWVsZCBsb2NhdGlvbiBpbiB0aGUganNvbiBmaWxlLCBhbmQgdGhl IGZpZWxkIG5hbWUsIGFsc28gY2FsbGVkIGBrZXlgLgorLSBgZmllbGQtcGF0aC1tYXBwZXJgIGlz IGEgbGFtYmRhIHdoaWNoIGluc3RydWN0cyB3aGVyZSB0aGUgZmllbGQtcGF0aCBpcworIGxvY2F0 ZWQgd2l0aGluIHRoZSBmaWVsZCBzdHJ1Y3R1cmUuCistIGBpbnNlcnQ/YCBhbGxvd3MgdGhlIGNy ZWF0aW9uIG9mIHRoZSBmaWVsZCBhbmQgYW55IG1pc3NpbmcgaW50ZXJtZWRpYXRlCisgZmllbGRz LgorLSBgc3RyaWN0P2AgY2F1c2VzIGFuIGVycm9yIHRvIGJlIHRocm93biBpZiB0aGUgZXhhY3Qg ZmllbGQtcGF0aCBpcyBub3QgZm91bmQKKyBpbiB0aGUgZGF0YSIKKyAgKGxhbWJkYSAocGFja2Fn ZSkKKyAgICAoZm9sZAorICAgICAgKGxhbWJkYSAoZmllbGQgcGFja2FnZSkKKyAgICAgICAgKGxl dCoKKyAgICAgICAgICAoCisgICAgICAgICAgICAoZmllbGQtcGF0aCAoZmllbGQtcGF0aC1tYXBw ZXIgZmllbGQpKQorICAgICAgICAgICAgKAorICAgICAgICAgICAgICBmaWVsZC1wYXRoCisgICAg ICAgICAgICAgIChjb25kCisgICAgICAgICAgICAgICAgKChzdHJpbmc/IGZpZWxkLXBhdGgpCisg ICAgICAgICAgICAgICAgICAoc3RyaW5nLXNwbGl0IGZpZWxkLXBhdGggI1wuKSkKKyAgICAgICAg ICAgICAgICAoKGFuZCAobGlzdD8gZmllbGQtcGF0aCkgKGV2ZXJ5IHN0cmluZz8gZmllbGQtcGF0 aCkpCisgICAgICAgICAgICAgICAgICBmaWVsZC1wYXRoKQorICAgICAgICAgICAgICAgIChlbHNl CisgICAgICAgICAgICAgICAgICAoZXJyb3IKKyAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1h cHBlbmQKKyAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBmaWVsZCB2YWx1ZSBwcm92aWRl ZCwgZXhwZWN0aW5nIGEgc3RyaW5nIG9yIGEgIgorICAgICAgICAgICAgICAgICAgICAgICJsaXN0 IG9mIHN0cmluZyBidXQgaW5zdGVhZCBnb3Q6ICIKKyAgICAgICAgICAgICAgICAgICAgICAod2l0 aC1vdXRwdXQtdG8tc3RyaW5nIChsYW1iZGEgXyAoZGlzcGxheSBmaWVsZC1wYXRoKSkpKSkpCisg ICAgICAgICAgICAgICkpKQorICAgICAgICAgIChsZXQgbG9vcAorICAgICAgICAgICAgKAorICAg ICAgICAgICAgICAoZGF0YSBwYWNrYWdlKQorICAgICAgICAgICAgICAoZmllbGQtcGF0aCBmaWVs ZC1wYXRoKSkKKyAgICAgICAgICAgIChsZXQqCisgICAgICAgICAgICAgICgKKyAgICAgICAgICAg ICAgICAoa2V5IChjYXIgZmllbGQtcGF0aCkpCisgICAgICAgICAgICAgICAgKGRhdGEKKyAgICAg ICAgICAgICAgICAgIChpZiAoYW5kIChub3QgKGFzc29jIGtleSBkYXRhKSkgaW5zZXJ0PykKKyAg ICAgICAgICAgICAgICAgICAgKGFjb25zIGtleSAnKCkgZGF0YSkKKyAgICAgICAgICAgICAgICAg ICAgZGF0YSkpKQorICAgICAgICAgICAgICAoaWYgKG5vdCAoYXNzb2Mga2V5IGRhdGEpKQorICAg ICAgICAgICAgICAgIChpZiBzdHJpY3Q/CisgICAgICAgICAgICAgICAgICAoZXJyb3IgKHN0cmlu Zy1hcHBlbmQKKyAgICAgICAgICAgICAgICAgICAgIktleSAnIiBrZXkgIicgd2FzIG5vdCBmb3Vu ZCBpbiBkYXRhOiAiCisgICAgICAgICAgICAgICAgICAgICh3aXRoLW91dHB1dC10by1zdHJpbmcg KGxhbWJkYSBfIChkaXNwbGF5IGRhdGEpKSkpKQorICAgICAgICAgICAgICAgICAgZGF0YSkKKyAg ICAgICAgICAgICAgICAoaWYgKD0gKGxlbmd0aCBmaWVsZC1wYXRoKSAxKQorICAgICAgICAgICAg ICAgICAgKGZpZWxkLW1vZGlmaWVyIGZpZWxkIGRhdGEga2V5KQorICAgICAgICAgICAgICAgICAg KGFzc29jLXNldCEKKyAgICAgICAgICAgICAgICAgICAgZGF0YQorICAgICAgICAgICAgICAgICAg ICBrZXkKKyAgICAgICAgICAgICAgICAgICAgKGxvb3AgKGFzc29jLXJlZiBkYXRhIGtleSkgKGNk ciBmaWVsZC1wYXRoKSkpKSkpKSkpCisgICAgICBwYWNrYWdlCisgICAgICBmaWVsZHMpKSkKKwor KGRlZmluZSogKGRlbGV0ZS1maWVsZHMgZmllbGRzICM6a2V5IChzdHJpY3Q/ICN0KSkKKyAgIlBy b3ZpZGVzIGEgbGFtYmRhIHRvIHN1cHBseSB0byBtb2RpZnktanNvbiB3aGljaCBkZWxldGVzIHRo ZSBzcGVjaWZpZWQKKyBgZmllbGRzYCB3aGljaCBpcyBhIGxpc3Qgb2YgZmllbGQtcGF0aHMgYXMg bWVudGlvbmVkIGluIGBtb2RpZnktanNvbi1maWVsZHNgLgorIEV4YW1wbGVzOgorICAoZGVsZXRl LWZpZWxkcyAnKAorICAgIChcInBhdGhcIiBcInRvXCIgXCJmaWVsZFwiKQorICAgIFwicGF0aC50 by5vdGhlci5maWVsZFwiKSkiCisgIChtb2RpZnktanNvbi1maWVsZHMKKyAgICBmaWVsZHMKKyAg ICAobGFtYmRhIChfIGRhdGEga2V5KQorICAgICAgKGFzc29jLXJlbW92ZSEgZGF0YSBrZXkpKQor ICAgICM6c3RyaWN0PyBzdHJpY3Q/KSkKKworKGRlZmluZSogKHJlcGxhY2UtZmllbGRzIGZpZWxk cyAjOmtleSAoc3RyaWN0PyAjdCkpCisgICJQcm92aWRlcyBhIGxhbWJkYSB0byBzdXBwbHkgdG8g bW9kaWZ5LWpzb24gd2hpY2ggcmVwbGFjZXMgdGhlIHZhbHVlIG9mIHRoZQorIHN1cHBsaWVkIGZp ZWxkLiBgZmllbGRzYCBpcyBhIGxpc3Qgb2YgcGFpcnMsIHdoZXJlIHRoZSBmaXJzdCBlbGVtZW50 IGlzIHRoZQorIGZpZWxkLXBhdGggYW5kIHRoZSBzZWNvbmQgZWxlbWVudCBpcyB0aGUgdmFsdWUg dG8gcmVwbGFjZSB0aGUgdGFyZ2V0IHdpdGguCisgRXhhbXBsZXM6CisgIChyZXBsYWNlLWZpZWxk cyAnKAorICAgICgoXCJwYXRoXCIgXCJ0b1wiIFwiZmllbGRcIikgXCJuZXcgZmllbGQgdmFsdWVc IikKKyAgICAoXCJwYXRoLnRvLm90aGVyLmZpZWxkXCIgXCJuZXcgZmllbGQgdmFsdWVcIikpKSIK KyAgKG1vZGlmeS1qc29uLWZpZWxkcworICAgIGZpZWxkcworICAgIChsYW1iZGEgKGZpZWxkIGRh dGEga2V5KQorICAgICAgKGFzc29jLXNldCEgZGF0YSBrZXkgKGNkciBmaWVsZCkpKQorICAgICM6 ZmllbGQtcGF0aC1tYXBwZXIgKGxhbWJkYSAoZmllbGQpIChjYXIgZmllbGQpKQorICAgICM6c3Ry aWN0PyBzdHJpY3Q/KSkKKworKGRlZmluZSAoZGVsZXRlLWRldi1kZXBlbmRlbmNpZXMpCisgIChk ZWxldGUtZmllbGRzIChsaXN0ICJkZXZEZXBlbmRlbmNpZXMiKSAjOnN0cmljdCAjZikpCisKIDs7 OwogOzs7IFBoYXNlcy4KIDs7OwpAQCAtMTQ0LDMxICsyOTUsNiBAQCAoZGVmaW5lKiAocGF0Y2gt ZGVwZW5kZW5jaWVzICM6a2V5IGlucHV0cyAjOmFsbG93LW90aGVyLWtleXMpCiAgICAgICAgICAg ICAgICAgICAoYXNzb2MtcmVmKiBwa2ctbWV0YSAiZGVwZW5kZW5jaWVzIiAnKCkpKSkpKSkpKSkK ICAgI3QpCiAKLShkZWZpbmUgKGRlbGV0ZS1kZXBlbmRlbmNpZXMgZGVwZW5kZW5jaWVzLXRvLXJl bW92ZSkKLSAgIlJld3JpdGUgJ3BhY2thZ2UuanNvbicgdG8gYWxsb3cgdGhlIGJ1aWxkIHRvIHBy b2NlZWQgd2l0aG91dCBwYWNrYWdlcwotbGlzdGVkIGluICdkZXBlbmRlbmNpZXMtdG8tcmVtb3Zl JywgYSBsaXN0IG9mIHN0cmluZ3MgbmFtaW5nIG5wbSBwYWNrYWdlcy4KLQotVG8gcHJldmVudCB0 aGUgZGVsZXRlZCBkZXBlbmRlbmNpZXMgZnJvbSBiZWluZyByZWludHJvZHVjZWQsIHVzZSB0aGlz IGZ1bmN0aW9uCi1vbmx5IGFmdGVyIHRoZSAncGF0Y2gtZGVwZW5kZW5jaWVzJyBwaGFzZS4iCi0g ICh3aXRoLWF0b21pYy1qc29uLWZpbGUtcmVwbGFjZW1lbnQKLSAgICAobGFtYmRhIChwa2ctbWV0 YSkKLSAgICAgIChmb2xkCi0gICAgICAgIChsYW1iZGEgKGRlcGVuZGVuY3kta2V5IHBrZy1tZXRh KQotICAgICAgICAgIChhbGlzdC11cGRhdGUKLSAgICAgICAgICAgIHBrZy1tZXRhCi0gICAgICAg ICAgICBkZXBlbmRlbmN5LWtleQotICAgICAgICAgICAgKGxhbWJkYSAoZGVwZW5kZW5jaWVzKQot ICAgICAgICAgICAgICAocmVtb3ZlCi0gICAgICAgICAgICAgICAgKGxhbWJkYSAoZGVwZW5kZW5j eSkKLSAgICAgICAgICAgICAgICAgIChtZW1iZXIgKGNhciBkZXBlbmRlbmN5KSBkZXBlbmRlbmNp ZXMtdG8tcmVtb3ZlKSkKLSAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMpKSkpCi0gICAgICAg IHBrZy1tZXRhCi0gICAgICAgIChsaXN0Ci0gICAgICAgICAgImRldkRlcGVuZGVuY2llcyIKLSAg ICAgICAgICAiZGVwZW5kZW5jaWVzIgotICAgICAgICAgICJwZWVyRGVwZW5kZW5jaWVzIgotICAg ICAgICAgICJvcHRpb25hbERlcGVuZGVuY2llcyIpKSkpKQotCiAoZGVmaW5lKiAoZGVsZXRlLWxv Y2tmaWxlcyAjOmtleSBpbnB1dHMgIzphbGxvdy1vdGhlci1rZXlzKQogICAiRGVsZXRlICdwYWNr YWdlLWxvY2suanNvbicsICd5YXJuLmxvY2snLCBhbmQgJ25wbS1zaHJpbmt3cmFwLmpzb24nLCBp ZiB0aGV5CiBleGlzdC4iCi0tIAoyLjQ2LjAKCg== --000000000000e12ff3062a6fccd4--