diff --git a/src/client/build.js b/src/client/build.js index c9a25810f..21e3f61f8 100644 --- a/src/client/build.js +++ b/src/client/build.js @@ -137,9 +137,9 @@ async function setBuildTempToUI() { {% endfor %} {% endwith %} - + - +
`; diff --git a/src/client/tests/globalconfig.json b/src/client/tests/globalconfig.json index 07f18c6e7..0a84eb0b2 100644 --- a/src/client/tests/globalconfig.json +++ b/src/client/tests/globalconfig.json @@ -1,8965 +1 @@ -[ - { - "type": "card", - "containerColumns": { - "pc": 12, - "tablet": 12, - "mobile": 12 - }, - "widgets": [ - { - "type": "Title", - "data": { - "title": "global_config_title", - "type": "container" - } - }, - { - "type": "Subtitle", - "data": { - "subtitle": "global_config_subtitle", - "type": "container" - } - }, - { - "type": "Templates", - "data": { - "templates": { - "advanced": { - "default": [ - { - "id": "general", - "stream": "partial", - "name": "General", - "description": "The general settings for the server", - "version": "0.1", - "type": "core", - "method": "manual", - "page": false, - "settings": { - "IS_LOADING": { - "context": "global", - "default": "no", - "help": "Internal use : set to yes when BW is loading.", - "id": "internal-use-loading", - "label": "internal use loading", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-33", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "internal use loading", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "no", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Internal use : set to yes when BW is loading." - } - ] - }, - "NGINX_PREFIX": { - "context": "global", - "default": "/etc/nginx/", - "help": "Where nginx will search for configurations.", - "id": "nginx-prefix", - "label": "nginx prefix", - "regex": "^(\\/[\\-\\w.\\s]+)*\\/$", - "type": "text", - "containerClass": "z-32", - "pattern": "^(\\/[\\-\\w.\\s]+)*\\/$", - "inpType": "input", - "name": "nginx prefix", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "/etc/nginx/", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Where nginx will search for configurations." - } - ] - }, - "HTTP_PORT": { - "context": "global", - "default": "8080", - "help": "HTTP port number which bunkerweb binds to.", - "id": "http-port", - "label": "HTTP port", - "regex": "^\\d+$", - "type": "text", - "containerClass": "z-31", - "pattern": "^\\d+$", - "inpType": "input", - "name": "HTTP port", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "8080", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "HTTP port number which bunkerweb binds to." - } - ] - }, - "HTTPS_PORT": { - "context": "global", - "default": "8443", - "help": "HTTPS port number which bunkerweb binds to.", - "id": "https-port", - "label": "HTTPS port", - "regex": "^\\d+$", - "type": "text", - "containerClass": "z-30", - "pattern": "^\\d+$", - "inpType": "input", - "name": "HTTPS port", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "8443", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "HTTPS port number which bunkerweb binds to." - } - ] - }, - "MULTISITE": { - "context": "global", - "default": "no", - "help": "Multi site activation.", - "id": "multisite", - "label": "Multisite", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-29", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Multisite", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "no", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Multi site activation." - } - ] - }, - "SERVER_NAME": { - "context": "multisite", - "default": "www.example.com", - "help": "List of the virtual hosts served by bunkerweb.", - "id": "server-name", - "label": "Server name", - "regex": "^((\\S{1,255})(?!.*\\s\\2(\\s|$)))?(\\s(\\S{1,255})(?!.*\\s\\5(\\s|$)))*$", - "type": "text", - "containerClass": "z-28", - "pattern": "^((\\S{1,255})(?!.*\\s\\2(\\s|$)))?(\\s(\\S{1,255})(?!.*\\s\\5(\\s|$)))*$", - "inpType": "input", - "name": "Server name", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "www.example.com", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "List of the virtual hosts served by bunkerweb." - } - ] - }, - "WORKER_PROCESSES": { - "context": "global", - "default": "auto", - "help": "Number of worker processes.", - "id": "worker-processes", - "label": "Worker processes", - "regex": "^(auto|\\d+)$", - "type": "text", - "containerClass": "z-27", - "pattern": "^(auto|\\d+)$", - "inpType": "input", - "name": "Worker processes", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "auto", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Number of worker processes." - } - ] - }, - "WORKER_RLIMIT_NOFILE": { - "context": "global", - "default": "2048", - "help": "Maximum number of open files for worker processes.", - "id": "worker-rlimit-nofile", - "label": "Open files per worker", - "regex": "^\\d+$", - "type": "text", - "containerClass": "z-26", - "pattern": "^\\d+$", - "inpType": "input", - "name": "Open files per worker", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "2048", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Maximum number of open files for worker processes." - } - ] - }, - "WORKER_CONNECTIONS": { - "context": "global", - "default": "1024", - "help": "Maximum number of connections per worker.", - "id": "worker-connections", - "label": "Connections per worker", - "regex": "^\\d+$", - "type": "text", - "containerClass": "z-25", - "pattern": "^\\d+$", - "inpType": "input", - "name": "Connections per worker", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "1024", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Maximum number of connections per worker." - } - ] - }, - "LOG_FORMAT": { - "context": "global", - "default": "$host $remote_addr - $remote_user [$time_local] \"$request\" $status $body_bytes_sent \"$http_referer\" \"$http_user_agent\"", - "help": "The format to use for access logs.", - "id": "log-format", - "label": "Log format", - "regex": "^.*$", - "type": "text", - "containerClass": "z-24", - "pattern": "^.*$", - "inpType": "input", - "name": "Log format", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "$host $remote_addr - $remote_user [$time_local] \"$request\" $status $body_bytes_sent \"$http_referer\" \"$http_user_agent\"", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "The format to use for access logs." - } - ] - }, - "LOG_LEVEL": { - "context": "global", - "default": "notice", - "help": "The level to use for error logs.", - "id": "log-level", - "label": "Log level", - "regex": "^(debug|info|notice|warn|error|crit|alert|emerg)$", - "type": "select", - "containerClass": "z-23", - "pattern": "^(debug|info|notice|warn|error|crit|alert|emerg)$", - "inpType": "select", - "name": "Log level", - "values": [ - "alert", - "crit", - "debug", - "emerg", - "error", - "info", - "notice", - "warn" - ], - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "notice", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "The level to use for error logs." - } - ] - }, - "DNS_RESOLVERS": { - "context": "global", - "default": "127.0.0.11", - "help": "DNS addresses of resolvers to use.", - "id": "dns-resolvers", - "label": "DNS resolvers", - "regex": "^(?! )(( *[^ ]+)(?!.*\\2))*$", - "type": "text", - "containerClass": "z-22", - "pattern": "^(?! )(( *[^ ]+)(?!.*\\2))*$", - "inpType": "input", - "name": "DNS resolvers", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "127.0.0.11", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "DNS addresses of resolvers to use." - } - ] - }, - "DATASTORE_MEMORY_SIZE": { - "context": "global", - "default": "64m", - "help": "Size of the internal datastore.", - "id": "datastore-memory-size", - "label": "Datastore memory size", - "regex": "^\\d+[kKmMgG]?$", - "type": "text", - "containerClass": "z-21", - "pattern": "^\\d+[kKmMgG]?$", - "inpType": "input", - "name": "Datastore memory size", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "64m", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Size of the internal datastore." - } - ] - }, - "CACHESTORE_MEMORY_SIZE": { - "context": "global", - "default": "64m", - "help": "Size of the internal cachestore.", - "id": "cachestore-memory-size", - "label": "Cachestore memory size", - "regex": "^\\d+[kKmMgG]?$", - "type": "text", - "containerClass": "z-20", - "pattern": "^\\d+[kKmMgG]?$", - "inpType": "input", - "name": "Cachestore memory size", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "64m", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Size of the internal cachestore." - } - ] - }, - "CACHESTORE_IPC_MEMORY_SIZE": { - "context": "global", - "default": "16m", - "help": "Size of the internal cachestore (ipc).", - "id": "cachestore-ipc-memory-size", - "label": "Cachestore ipc memory size", - "regex": "^\\d+[kKmMgG]?$", - "type": "text", - "containerClass": "z-19", - "pattern": "^\\d+[kKmMgG]?$", - "inpType": "input", - "name": "Cachestore ipc memory size", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "16m", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Size of the internal cachestore (ipc)." - } - ] - }, - "CACHESTORE_MISS_MEMORY_SIZE": { - "context": "global", - "default": "16m", - "help": "Size of the internal cachestore (miss).", - "id": "cachestore-miss-memory-size", - "label": "Cachestore miss memory size", - "regex": "^\\d+[kKmMgG]?$", - "type": "text", - "containerClass": "z-18", - "pattern": "^\\d+[kKmMgG]?$", - "inpType": "input", - "name": "Cachestore miss memory size", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "16m", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Size of the internal cachestore (miss)." - } - ] - }, - "CACHESTORE_LOCKS_MEMORY_SIZE": { - "context": "global", - "default": "16m", - "help": "Size of the internal cachestore (locks).", - "id": "cachestore-locks-memory-size", - "label": "Cachestore locks memory size", - "regex": "^\\d+[kKmMgG]?$", - "type": "text", - "containerClass": "z-17", - "pattern": "^\\d+[kKmMgG]?$", - "inpType": "input", - "name": "Cachestore locks memory size", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "16m", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Size of the internal cachestore (locks)." - } - ] - }, - "USE_API": { - "context": "global", - "default": "yes", - "help": "Activate the API to control BunkerWeb.", - "id": "use-api", - "label": "Activate API", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-16", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Activate API", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "yes", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Activate the API to control BunkerWeb." - } - ] - }, - "API_HTTP_PORT": { - "context": "global", - "default": "5000", - "help": "Listen port number for the API.", - "id": "api-http-listen", - "label": "API port number", - "regex": "^\\d+$", - "type": "text", - "containerClass": "z-15", - "pattern": "^\\d+$", - "inpType": "input", - "name": "API port number", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "5000", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Listen port number for the API." - } - ] - }, - "API_LISTEN_IP": { - "context": "global", - "default": "0.0.0.0", - "help": "Listen IP address for the API.", - "id": "api-ip-listen", - "label": "API listen IP", - "regex": "^.*$", - "type": "text", - "containerClass": "z-14", - "pattern": "^.*$", - "inpType": "input", - "name": "API listen IP", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "0.0.0.0", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Listen IP address for the API." - } - ] - }, - "API_SERVER_NAME": { - "context": "global", - "default": "bwapi", - "help": "Server name (virtual host) for the API.", - "id": "api-server-name", - "label": "API server name", - "regex": "^[^ ]{1,255}$", - "type": "text", - "containerClass": "z-13", - "pattern": "^[^ ]{1,255}$", - "inpType": "input", - "name": "API server name", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "bwapi", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Server name (virtual host) for the API." - } - ] - }, - "API_WHITELIST_IP": { - "context": "global", - "default": "127.0.0.0/8", - "help": "List of IP/network allowed to contact the API.", - "id": "api-whitelist-ip", - "label": "API whitelist IP", - "regex": "^(?! )( *(((\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3})(\\/([1-2][0-9]?|3[0-2]?|[04-9]))?|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d))(\\/(12[0-8]|1[01][0-9]|[0-9][0-9]?))?)(?!.*\\D\\2([^\\d\\/]|$)) *)*$", - "type": "text", - "containerClass": "z-12", - "pattern": "^(?! )( *(((\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3})(\\/([1-2][0-9]?|3[0-2]?|[04-9]))?|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d))(\\/(12[0-8]|1[01][0-9]|[0-9][0-9]?))?)(?!.*\\D\\2([^\\d\\/]|$)) *)*$", - "inpType": "input", - "name": "API whitelist IP", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "127.0.0.0/8", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "List of IP/network allowed to contact the API." - } - ] - }, - "AUTOCONF_MODE": { - "context": "global", - "default": "no", - "help": "Enable Autoconf Docker integration.", - "id": "autoconf-mode", - "label": "Autoconf mode", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-11", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Autoconf mode", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "no", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Enable Autoconf Docker integration." - } - ] - }, - "SWARM_MODE": { - "context": "global", - "default": "no", - "help": "Enable Docker Swarm integration.", - "id": "swarm-mode", - "label": "Swarm mode", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-10", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Swarm mode", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "no", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Enable Docker Swarm integration." - } - ] - }, - "KUBERNETES_MODE": { - "context": "global", - "default": "no", - "help": "Enable Kubernetes integration.", - "id": "kubernetes-mode", - "label": "Kubernetes mode", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-9", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Kubernetes mode", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "no", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Enable Kubernetes integration." - } - ] - }, - "SERVER_TYPE": { - "context": "multisite", - "default": "http", - "help": "Server type : http or stream.", - "id": "server-type", - "label": "Server type", - "regex": "^(http|stream)$", - "type": "select", - "containerClass": "z-8", - "pattern": "^(http|stream)$", - "inpType": "select", - "name": "Server type", - "values": [ - "http", - "stream" - ], - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "http", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Server type : http or stream." - } - ] - }, - "LISTEN_STREAM": { - "context": "multisite", - "default": "yes", - "help": "Enable listening for non-ssl (passthrough).", - "id": "listen-stream", - "label": "Listen stream", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-7", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Listen stream", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "yes", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Enable listening for non-ssl (passthrough)." - } - ] - }, - "LISTEN_STREAM_PORT": { - "context": "multisite", - "default": "1337", - "help": "Listening port for non-ssl (passthrough).", - "id": "listen-stream-port", - "label": "Listen stream port", - "regex": "^[0-9]+$", - "type": "text", - "containerClass": "z-6", - "pattern": "^[0-9]+$", - "inpType": "input", - "name": "Listen stream port", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "1337", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Listening port for non-ssl (passthrough)." - } - ] - }, - "LISTEN_STREAM_PORT_SSL": { - "context": "multisite", - "default": "4242", - "help": "Listening port for ssl (passthrough).", - "id": "listen-stream-port-ssl", - "label": "Listen stream port ssl", - "regex": "^[0-9]+$", - "type": "text", - "containerClass": "z-5", - "pattern": "^[0-9]+$", - "inpType": "input", - "name": "Listen stream port ssl", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "4242", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Listening port for ssl (passthrough)." - } - ] - }, - "USE_UDP": { - "context": "multisite", - "default": "no", - "help": "UDP listen instead of TCP (stream).", - "id": "use-udp", - "label": "Listen UDP", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-4", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Listen UDP", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "no", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "UDP listen instead of TCP (stream)." - } - ] - }, - "USE_IPV6": { - "context": "global", - "default": "no", - "help": "Enable IPv6 connectivity.", - "id": "use-ipv6", - "label": "Use IPv6", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-3", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Use IPv6", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "no", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Enable IPv6 connectivity." - } - ] - }, - "IS_DRAFT": { - "context": "multisite", - "default": "no", - "help": "Internal use : set to yes when the service is in draft mode.", - "id": "internal-use-draft", - "label": "internal use draft", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-2", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "internal use draft", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "no", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Internal use : set to yes when the service is in draft mode." - } - ] - }, - "TIMERS_LOG_LEVEL": { - "context": "global", - "default": "debug", - "help": "Log level for timers.", - "id": "timers-log-level", - "label": "Timers log level", - "regex": "^(debug|info|notice|warn|err|crit|alert|emerg)$", - "type": "select", - "containerClass": "z-1", - "pattern": "^(debug|info|notice|warn|err|crit|alert|emerg)$", - "inpType": "select", - "name": "Timers log level", - "values": [ - "alert", - "crit", - "debug", - "emerg", - "err", - "info", - "notice", - "warn" - ], - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "debug", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Log level for timers." - } - ] - }, - "BUNKERWEB_INSTANCES": { - "context": "global", - "default": "127.0.0.1", - "help": "List of BunkerWeb instances separated with spaces (format : fqdn-or-ip:5000 http://fqdn-or-ip:5000)", - "id": "bunkerweb-instances", - "label": "BunkerWeb instances", - "regex": "^.*$", - "type": "text", - "containerClass": "z-0", - "pattern": "^.*$", - "inpType": "input", - "name": "BunkerWeb instances", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "127.0.0.1", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "List of BunkerWeb instances separated with spaces (format : fqdn-or-ip:5000 http://fqdn-or-ip:5000)" - } - ] - } - }, - "checksum": null - }, - { - "id": "antibot", - "stream": "no", - "name": "Antibot", - "description": "Bot detection by using a challenge.", - "version": "1.0", - "type": "core", - "method": "manual", - "page": true, - "settings": { - "USE_ANTIBOT": { - "context": "multisite", - "default": "no", - "help": "Activate antibot feature.", - "id": "use-antibot", - "label": "Antibot challenge", - "regex": "^(no|cookie|javascript|captcha|recaptcha|hcaptcha|turnstile)$", - "type": "select", - "containerClass": "z-10", - "pattern": "^(no|cookie|javascript|captcha|recaptcha|hcaptcha|turnstile)$", - "inpType": "select", - "name": "Antibot challenge", - "values": [ - "captcha", - "cookie", - "hcaptcha", - "javascript", - "no", - "recaptcha", - "turnstile" - ], - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "no", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Activate antibot feature." - } - ] - }, - "ANTIBOT_URI": { - "context": "multisite", - "default": "/challenge", - "help": "Unused URI that clients will be redirected to to solve the challenge.", - "id": "antibot-uri", - "label": "Antibot URL", - "regex": "^\\/[\\w\\].~:\\/?#\\[@!$\\&'\\(\\)*+,;=\\-]*$", - "type": "text", - "containerClass": "z-9", - "pattern": "^\\/[\\w\\].~:\\/?#\\[@!$\\&'\\(\\)*+,;=\\-]*$", - "inpType": "input", - "name": "Antibot URL", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "/challenge", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Unused URI that clients will be redirected to to solve the challenge." - } - ] - }, - "ANTIBOT_TIME_RESOLVE": { - "context": "multisite", - "default": "60", - "help": "Maximum time (in seconds) clients have to resolve the challenge. Once this time has passed, a new challenge will be generated.", - "id": "antibot-time-resolve", - "label": "Time to resolve", - "regex": "^[0-9]+$", - "type": "text", - "containerClass": "z-8", - "pattern": "^[0-9]+$", - "inpType": "input", - "name": "Time to resolve", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "60", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Maximum time (in seconds) clients have to resolve the challenge. Once this time has passed, a new challenge will be generated." - } - ] - }, - "ANTIBOT_TIME_VALID": { - "context": "multisite", - "default": "86400", - "help": "Maximum validity time of solved challenges. Once this time has passed, clients will need to resolve a new one.", - "id": "antibot-time-valid", - "label": "Time valid", - "regex": "^[0-9]+$", - "type": "text", - "containerClass": "z-7", - "pattern": "^[0-9]+$", - "inpType": "input", - "name": "Time valid", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "86400", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Maximum validity time of solved challenges. Once this time has passed, clients will need to resolve a new one." - } - ] - }, - "ANTIBOT_RECAPTCHA_SCORE": { - "context": "multisite", - "default": "0.7", - "help": "Minimum score required for reCAPTCHA challenge.", - "id": "antibot-recaptcha-score", - "label": "reCAPTCHA score", - "regex": "^(0\\.[1-9]|1\\.0)$", - "type": "text", - "containerClass": "z-6", - "pattern": "^(0\\.[1-9]|1\\.0)$", - "inpType": "input", - "name": "reCAPTCHA score", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "0.7", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Minimum score required for reCAPTCHA challenge." - } - ] - }, - "ANTIBOT_RECAPTCHA_SITEKEY": { - "context": "multisite", - "default": "", - "help": "Sitekey for reCAPTCHA challenge.", - "id": "antibot-recaptcha-sitekey", - "label": "reCAPTCHA sitekey", - "regex": "^[\\w\\-]*$", - "type": "text", - "containerClass": "z-5", - "pattern": "^[\\w\\-]*$", - "inpType": "input", - "name": "reCAPTCHA sitekey", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Sitekey for reCAPTCHA challenge." - } - ] - }, - "ANTIBOT_RECAPTCHA_SECRET": { - "context": "multisite", - "default": "", - "help": "Secret for reCAPTCHA challenge.", - "id": "antibot-recaptcha-secret", - "label": "reCAPTCHA secret", - "regex": "^[\\w\\-]*$", - "type": "password", - "containerClass": "z-4", - "pattern": "^[\\w\\-]*$", - "inpType": "input", - "name": "reCAPTCHA secret", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Secret for reCAPTCHA challenge." - } - ] - }, - "ANTIBOT_HCAPTCHA_SITEKEY": { - "context": "multisite", - "default": "", - "help": "Sitekey for hCaptcha challenge.", - "id": "antibot-hcaptcha-sitekey", - "label": "hCaptcha sitekey", - "regex": "^[a-zA-Z0-9\\-]*$", - "type": "text", - "containerClass": "z-3", - "pattern": "^[a-zA-Z0-9\\-]*$", - "inpType": "input", - "name": "hCaptcha sitekey", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Sitekey for hCaptcha challenge." - } - ] - }, - "ANTIBOT_HCAPTCHA_SECRET": { - "context": "multisite", - "default": "", - "help": "Secret for hCaptcha challenge.", - "id": "antibot-hcaptcha-secret", - "label": "hCaptcha secret", - "regex": "^\\w*$", - "type": "password", - "containerClass": "z-2", - "pattern": "^\\w*$", - "inpType": "input", - "name": "hCaptcha secret", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Secret for hCaptcha challenge." - } - ] - }, - "ANTIBOT_TURNSTILE_SITEKEY": { - "context": "multisite", - "default": "", - "help": "Sitekey for Turnstile challenge.", - "id": "antibot-turnstile-sitekey", - "label": "Turnstile sitekey", - "regex": "^(0x[\\w\\-]+)?$", - "type": "text", - "containerClass": "z-1", - "pattern": "^(0x[\\w\\-]+)?$", - "inpType": "input", - "name": "Turnstile sitekey", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Sitekey for Turnstile challenge." - } - ] - }, - "ANTIBOT_TURNSTILE_SECRET": { - "context": "multisite", - "default": "", - "help": "Secret for Turnstile challenge.", - "id": "antibot-turnstile-secret", - "label": "Turnstile secret", - "regex": "^(0x[\\w\\-]+)?$", - "type": "password", - "containerClass": "z-0", - "pattern": "^(0x[\\w\\-]+)?$", - "inpType": "input", - "name": "Turnstile secret", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Secret for Turnstile challenge." - } - ] - } - }, - "checksum": null - }, - { - "id": "authbasic", - "stream": "no", - "name": "Auth basic", - "description": "Enforce login before accessing a resource or the whole site using HTTP basic auth method.", - "version": "1.0", - "type": "core", - "method": "manual", - "page": false, - "settings": { - "USE_AUTH_BASIC": { - "context": "multisite", - "default": "no", - "help": "Use HTTP basic auth", - "id": "use-auth-basic", - "label": "Use HTTP basic auth", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-4", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Use HTTP basic auth", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "no", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Use HTTP basic auth" - } - ] - }, - "AUTH_BASIC_LOCATION": { - "context": "multisite", - "default": "sitewide", - "help": "URL of the protected resource or sitewide value.", - "id": "auth-basic-location", - "label": "Auth basic Location", - "regex": "^(sitewide|/[a-zA-Z0-9.\\/\\-]*)$", - "type": "text", - "containerClass": "z-3", - "pattern": "^(sitewide|/[a-zA-Z0-9.\\/\\-]*)$", - "inpType": "input", - "name": "Auth basic Location", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "sitewide", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "URL of the protected resource or sitewide value." - } - ] - }, - "AUTH_BASIC_USER": { - "context": "multisite", - "default": "changeme", - "help": "Username", - "id": "auth-basic-user", - "label": "Auth basic Username", - "regex": "^[\\w\\-]+", - "type": "text", - "containerClass": "z-2", - "pattern": "^[\\w\\-]+", - "inpType": "input", - "name": "Auth basic Username", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "changeme", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Username" - } - ] - }, - "AUTH_BASIC_PASSWORD": { - "context": "multisite", - "default": "changeme", - "help": "Password", - "id": "auth-basic-password", - "label": "Password", - "regex": "^.+", - "type": "password", - "containerClass": "z-1", - "pattern": "^.+", - "inpType": "input", - "name": "Password", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "changeme", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Password" - } - ] - }, - "AUTH_BASIC_TEXT": { - "context": "multisite", - "default": "Restricted area", - "help": "Text to display", - "id": "auth-basic-text", - "label": "Text", - "regex": "^.+", - "type": "text", - "containerClass": "z-0", - "pattern": "^.+", - "inpType": "input", - "name": "Text", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "Restricted area", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Text to display" - } - ] - } - }, - "checksum": null - }, - { - "id": "backup", - "stream": "yes", - "name": "Backup", - "description": "Backup your data to a custom location. Ensure the safety and availability of your important files by creating regular backups.", - "version": "1.0", - "type": "core", - "method": "manual", - "page": true, - "settings": { - "USE_BACKUP": { - "context": "global", - "default": "yes", - "help": "Enable or disable the backup feature", - "id": "use-backup", - "label": "Activate automatic backup", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-3", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Activate automatic backup", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "yes", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Enable or disable the backup feature" - } - ] - }, - "BACKUP_SCHEDULE": { - "context": "global", - "default": "daily", - "help": "The frequency of the backup (daily, weekly or monthly)", - "id": "backup-schedule", - "label": "Backup schedule", - "regex": "^(daily|weekly|monthly)$", - "type": "select", - "containerClass": "z-2", - "pattern": "^(daily|weekly|monthly)$", - "inpType": "select", - "name": "Backup schedule", - "values": [ - "daily", - "monthly", - "weekly" - ], - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "daily", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "The frequency of the backup (daily, weekly or monthly)" - } - ] - }, - "BACKUP_ROTATION": { - "context": "global", - "default": "7", - "help": "The number of backups to keep", - "id": "backup-rotation", - "label": "Backup rotation", - "regex": "^[1-9][0-9]*$", - "type": "text", - "containerClass": "z-1", - "pattern": "^[1-9][0-9]*$", - "inpType": "input", - "name": "Backup rotation", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "7", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "The number of backups to keep" - } - ] - }, - "BACKUP_DIRECTORY": { - "context": "global", - "default": "/var/lib/bunkerweb/backups", - "help": "The directory where the backup will be stored", - "id": "backup-directory", - "label": "Backup directory", - "regex": "^.*$", - "type": "text", - "containerClass": "z-0", - "pattern": "^.*$", - "inpType": "input", - "name": "Backup directory", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "/var/lib/bunkerweb/backups", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "The directory where the backup will be stored" - } - ] - } - }, - "checksum": null, - "bwcli": { - "list": "list.py", - "restore": "restore.py", - "save": "save.py" - } - }, - { - "id": "badbehavior", - "stream": "yes", - "name": "Bad behavior", - "description": "Ban IP generating too much 'bad' HTTP status code in a period of time.", - "version": "1.0", - "type": "core", - "method": "manual", - "page": true, - "settings": { - "USE_BAD_BEHAVIOR": { - "context": "multisite", - "default": "yes", - "help": "Activate Bad behavior feature.", - "id": "use-bad-behavior", - "label": "Activate bad behavior", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-4", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Activate bad behavior", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "yes", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Activate Bad behavior feature." - } - ] - }, - "BAD_BEHAVIOR_STATUS_CODES": { - "context": "multisite", - "default": "400 401 403 404 405 429 444", - "help": "List of HTTP status codes considered as 'bad'.", - "id": "bad-behavior-status-code", - "label": "Bad status codes", - "regex": "^( *([1-5]\\d{2})(?!.*\\2) *)+$", - "type": "text", - "containerClass": "z-3", - "pattern": "^( *([1-5]\\d{2})(?!.*\\2) *)+$", - "inpType": "input", - "name": "Bad status codes", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "400 401 403 404 405 429 444", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "List of HTTP status codes considered as 'bad'." - } - ] - }, - "BAD_BEHAVIOR_THRESHOLD": { - "context": "multisite", - "default": "10", - "help": "Maximum number of 'bad' HTTP status codes within the period of time before IP is banned.", - "id": "bad-behavior-threshold", - "label": "Threshold", - "regex": "^[1-9][0-9]*", - "type": "text", - "containerClass": "z-2", - "pattern": "^[1-9][0-9]*", - "inpType": "input", - "name": "Threshold", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "10", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Maximum number of 'bad' HTTP status codes within the period of time before IP is banned." - } - ] - }, - "BAD_BEHAVIOR_COUNT_TIME": { - "context": "multisite", - "default": "60", - "help": "Period of time (in seconds) during which we count 'bad' HTTP status codes.", - "id": "bad-behavior-period", - "label": "Period (in seconds)", - "regex": "^\\d+", - "type": "text", - "containerClass": "z-1", - "pattern": "^\\d+", - "inpType": "input", - "name": "Period (in seconds)", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "60", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Period of time (in seconds) during which we count 'bad' HTTP status codes." - } - ] - }, - "BAD_BEHAVIOR_BAN_TIME": { - "context": "multisite", - "default": "86400", - "help": "The duration time (in seconds) of a ban when the corresponding IP has reached the threshold.", - "id": "bad-behavior-ban-time", - "label": "Ban duration (in seconds)", - "regex": "^\\d+", - "type": "text", - "containerClass": "z-0", - "pattern": "^\\d+", - "inpType": "input", - "name": "Ban duration (in seconds)", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "86400", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "The duration time (in seconds) of a ban when the corresponding IP has reached the threshold." - } - ] - } - }, - "checksum": null - }, - { - "id": "blacklist", - "stream": "partial", - "name": "Blacklist", - "description": "Deny access based on internal and external IP/network/rDNS/ASN blacklists.", - "version": "1.0", - "type": "core", - "method": "manual", - "page": true, - "settings": { - "USE_BLACKLIST": { - "context": "multisite", - "default": "yes", - "help": "Activate blacklist feature.", - "id": "use-blacklist", - "label": "Activate blacklisting", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-21", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Activate blacklisting", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "yes", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Activate blacklist feature." - } - ] - }, - "BLACKLIST_IP": { - "context": "multisite", - "default": "", - "help": "List of IP/network, separated with spaces, to block.", - "id": "blacklist-ip", - "label": "Blacklist IP/network", - "regex": "^(?! )( *(((\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3})(\\/([1-2][0-9]?|3[0-2]?|[04-9]))?|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d))(\\/(12[0-8]|1[01][0-9]|[0-9][0-9]?))?)(?!.*\\D\\2([^\\d\\/]|$)) *)*$", - "type": "text", - "containerClass": "z-20", - "pattern": "^(?! )( *(((\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3})(\\/([1-2][0-9]?|3[0-2]?|[04-9]))?|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d))(\\/(12[0-8]|1[01][0-9]|[0-9][0-9]?))?)(?!.*\\D\\2([^\\d\\/]|$)) *)*$", - "inpType": "input", - "name": "Blacklist IP/network", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "List of IP/network, separated with spaces, to block." - } - ] - }, - "BLACKLIST_RDNS": { - "context": "multisite", - "default": ".shodan.io .censys.io", - "help": "List of reverse DNS suffixes, separated with spaces, to block.", - "id": "blacklist-rdns", - "label": "Blacklist reverse DNS", - "regex": "^( *(([^ ]+)(?!.*\\3( |$))) *)*$", - "type": "text", - "containerClass": "z-19", - "pattern": "^( *(([^ ]+)(?!.*\\3( |$))) *)*$", - "inpType": "input", - "name": "Blacklist reverse DNS", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": ".shodan.io .censys.io", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "List of reverse DNS suffixes, separated with spaces, to block." - } - ] - }, - "BLACKLIST_RDNS_GLOBAL": { - "context": "multisite", - "default": "yes", - "help": "Only perform RDNS blacklist checks on global IP addresses.", - "id": "blacklist-rdns-global", - "label": "Blacklist reverse DNS global IPs", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-18", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Blacklist reverse DNS global IPs", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "yes", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Only perform RDNS blacklist checks on global IP addresses." - } - ] - }, - "BLACKLIST_ASN": { - "context": "multisite", - "default": "", - "help": "List of ASN numbers, separated with spaces, to block.", - "id": "blacklist-asn", - "label": "Blacklist ASN", - "regex": "^^( *((ASN?)?(\\d+)\\b(?!.*[SN ]\\4\\b)) *)*$", - "type": "text", - "containerClass": "z-17", - "pattern": "^^( *((ASN?)?(\\d+)\\b(?!.*[SN ]\\4\\b)) *)*$", - "inpType": "input", - "name": "Blacklist ASN", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "List of ASN numbers, separated with spaces, to block." - } - ] - }, - "BLACKLIST_USER_AGENT": { - "context": "multisite", - "default": "", - "help": "List of User-Agent (PCRE regex), separated with spaces, to block.", - "id": "blacklist-user-agent", - "label": "Blacklist User-Agent", - "regex": "^.*$", - "type": "text", - "containerClass": "z-16", - "pattern": "^.*$", - "inpType": "input", - "name": "Blacklist User-Agent", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "List of User-Agent (PCRE regex), separated with spaces, to block." - } - ] - }, - "BLACKLIST_URI": { - "context": "multisite", - "default": "", - "help": "List of URI (PCRE regex), separated with spaces, to block.", - "id": "blacklist-uri", - "label": "Blacklist URI", - "regex": "^( *(.*)(?!.*\\2(?!.)) *)*$", - "type": "text", - "containerClass": "z-15", - "pattern": "^( *(.*)(?!.*\\2(?!.)) *)*$", - "inpType": "input", - "name": "Blacklist URI", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "List of URI (PCRE regex), separated with spaces, to block." - } - ] - }, - "BLACKLIST_IGNORE_IP": { - "context": "multisite", - "default": "", - "help": "List of IP/network, separated with spaces, to ignore in the blacklist.", - "id": "blacklist-ignore-ip", - "label": "Blacklist ignore IP/network", - "regex": "^(?! )( *(((\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3})(\\/([1-2][0-9]?|3[0-2]?|[04-9]))?|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d))(\\/(12[0-8]|1[01][0-9]|[0-9][0-9]?))?)(?!.*\\D\\2([^\\d\\/]|$)) *)*$", - "type": "text", - "containerClass": "z-14", - "pattern": "^(?! )( *(((\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3})(\\/([1-2][0-9]?|3[0-2]?|[04-9]))?|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d))(\\/(12[0-8]|1[01][0-9]|[0-9][0-9]?))?)(?!.*\\D\\2([^\\d\\/]|$)) *)*$", - "inpType": "input", - "name": "Blacklist ignore IP/network", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "List of IP/network, separated with spaces, to ignore in the blacklist." - } - ] - }, - "BLACKLIST_IGNORE_RDNS": { - "context": "multisite", - "default": "", - "help": "List of reverse DNS suffixes, separated with spaces, to ignore in the blacklist.", - "id": "blacklist-ignore-rdns", - "label": "Blacklist ignore reverse DNS", - "regex": "^( *(([^ ]+)(?!.*\\3( |$))) *)*$", - "type": "text", - "containerClass": "z-13", - "pattern": "^( *(([^ ]+)(?!.*\\3( |$))) *)*$", - "inpType": "input", - "name": "Blacklist ignore reverse DNS", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "List of reverse DNS suffixes, separated with spaces, to ignore in the blacklist." - } - ] - }, - "BLACKLIST_IGNORE_ASN": { - "context": "multisite", - "default": "", - "help": "List of ASN numbers, separated with spaces, to ignore in the blacklist.", - "id": "blacklist-ignore-asn", - "label": "Blacklist ignore ASN", - "regex": "^^( *((ASN?)?(\\d+)\\b(?!.*[SN ]\\4\\b)) *)*$", - "type": "text", - "containerClass": "z-12", - "pattern": "^^( *((ASN?)?(\\d+)\\b(?!.*[SN ]\\4\\b)) *)*$", - "inpType": "input", - "name": "Blacklist ignore ASN", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "List of ASN numbers, separated with spaces, to ignore in the blacklist." - } - ] - }, - "BLACKLIST_IGNORE_USER_AGENT": { - "context": "multisite", - "default": "", - "help": "List of User-Agent (PCRE regex), separated with spaces, to ignore in the blacklist.", - "id": "blacklist-ignore-user-agent", - "label": "Blacklist ignore User-Agent", - "regex": "^.*$", - "type": "text", - "containerClass": "z-11", - "pattern": "^.*$", - "inpType": "input", - "name": "Blacklist ignore User-Agent", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "List of User-Agent (PCRE regex), separated with spaces, to ignore in the blacklist." - } - ] - }, - "BLACKLIST_IGNORE_URI": { - "context": "multisite", - "default": "", - "help": "List of URI (PCRE regex), separated with spaces, to ignore in the blacklist.", - "id": "blacklist-ignore-uri", - "label": "Blacklist ignore URI", - "regex": "^( *(.*)(?!.*\\2(?!.)) *)*$", - "type": "text", - "containerClass": "z-10", - "pattern": "^( *(.*)(?!.*\\2(?!.)) *)*$", - "inpType": "input", - "name": "Blacklist ignore URI", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "List of URI (PCRE regex), separated with spaces, to ignore in the blacklist." - } - ] - }, - "BLACKLIST_IP_URLS": { - "context": "global", - "default": "https://www.dan.me.uk/torlist/?exit", - "help": "List of URLs, separated with spaces, containing bad IP/network to block.", - "id": "blacklist-ip-urls", - "label": "Blacklist IP/network URLs", - "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - "type": "text", - "containerClass": "z-9", - "pattern": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - "inpType": "input", - "name": "Blacklist IP/network URLs", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "https://www.dan.me.uk/torlist/?exit", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "List of URLs, separated with spaces, containing bad IP/network to block." - } - ] - }, - "BLACKLIST_RDNS_URLS": { - "context": "global", - "default": "", - "help": "List of URLs, separated with spaces, containing reverse DNS suffixes to block.", - "id": "blacklist-rdns-urls", - "label": "Blacklist reverse DNS URLs", - "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - "type": "text", - "containerClass": "z-8", - "pattern": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - "inpType": "input", - "name": "Blacklist reverse DNS URLs", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "List of URLs, separated with spaces, containing reverse DNS suffixes to block." - } - ] - }, - "BLACKLIST_ASN_URLS": { - "context": "global", - "default": "", - "help": "List of URLs, separated with spaces, containing ASN to block.", - "id": "blacklist-asn-urls", - "label": "Blacklist ASN URLs", - "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - "type": "text", - "containerClass": "z-7", - "pattern": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - "inpType": "input", - "name": "Blacklist ASN URLs", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "List of URLs, separated with spaces, containing ASN to block." - } - ] - }, - "BLACKLIST_USER_AGENT_URLS": { - "context": "global", - "default": "https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/_generator_lists/bad-user-agents.list", - "help": "List of URLs, separated with spaces, containing bad User-Agent to block.", - "id": "blacklist-user-agent-urls", - "label": "Blacklist User-Agent URLs", - "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - "type": "text", - "containerClass": "z-6", - "pattern": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - "inpType": "input", - "name": "Blacklist User-Agent URLs", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/_generator_lists/bad-user-agents.list", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "List of URLs, separated with spaces, containing bad User-Agent to block." - } - ] - }, - "BLACKLIST_URI_URLS": { - "context": "global", - "default": "", - "help": "List of URLs, separated with spaces, containing bad URI to block.", - "id": "blacklist-uri-urls", - "label": "Blacklist URI URLs", - "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - "type": "text", - "containerClass": "z-5", - "pattern": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - "inpType": "input", - "name": "Blacklist URI URLs", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "List of URLs, separated with spaces, containing bad URI to block." - } - ] - }, - "BLACKLIST_IGNORE_IP_URLS": { - "context": "global", - "default": "", - "help": "List of URLs, separated with spaces, containing IP/network to ignore in the blacklist.", - "id": "blacklist-ignore-ip-urls", - "label": "Blacklist ignore IP/network URLs", - "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - "type": "text", - "containerClass": "z-4", - "pattern": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - "inpType": "input", - "name": "Blacklist ignore IP/network URLs", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "List of URLs, separated with spaces, containing IP/network to ignore in the blacklist." - } - ] - }, - "BLACKLIST_IGNORE_RDNS_URLS": { - "context": "global", - "default": "", - "help": "List of URLs, separated with spaces, containing reverse DNS suffixes to ignore in the blacklist.", - "id": "blacklist-ignore-rdns-urls", - "label": "Blacklist ignore reverse DNS URLs", - "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - "type": "text", - "containerClass": "z-3", - "pattern": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - "inpType": "input", - "name": "Blacklist ignore reverse DNS URLs", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "List of URLs, separated with spaces, containing reverse DNS suffixes to ignore in the blacklist." - } - ] - }, - "BLACKLIST_IGNORE_ASN_URLS": { - "context": "global", - "default": "", - "help": "List of URLs, separated with spaces, containing ASN to ignore in the blacklist.", - "id": "blacklist-ignore-asn-urls", - "label": "Blacklist ignore ASN URLs", - "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - "type": "text", - "containerClass": "z-2", - "pattern": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - "inpType": "input", - "name": "Blacklist ignore ASN URLs", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "List of URLs, separated with spaces, containing ASN to ignore in the blacklist." - } - ] - }, - "BLACKLIST_IGNORE_USER_AGENT_URLS": { - "context": "global", - "default": "", - "help": "List of URLs, separated with spaces, containing User-Agent to ignore in the blacklist.", - "id": "blacklist-ignore-user-agent-urls", - "label": "Blacklist ignore User-Agent URLs", - "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - "type": "text", - "containerClass": "z-1", - "pattern": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - "inpType": "input", - "name": "Blacklist ignore User-Agent URLs", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "List of URLs, separated with spaces, containing User-Agent to ignore in the blacklist." - } - ] - }, - "BLACKLIST_IGNORE_URI_URLS": { - "context": "global", - "default": "", - "help": "List of URLs, separated with spaces, containing URI to ignore in the blacklist.", - "id": "blacklist-ignore-uri-urls", - "label": "Blacklist ignore URI URLs", - "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - "type": "text", - "containerClass": "z-0", - "pattern": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - "inpType": "input", - "name": "Blacklist ignore URI URLs", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "List of URLs, separated with spaces, containing URI to ignore in the blacklist." - } - ] - } - }, - "checksum": null - }, - { - "id": "brotli", - "stream": "no", - "name": "Brotli", - "description": "Compress HTTP requests with the brotli algorithm.", - "version": "1.0", - "type": "core", - "method": "manual", - "page": false, - "settings": { - "USE_BROTLI": { - "context": "multisite", - "default": "no", - "help": "Use brotli", - "id": "use-brotli", - "label": "Use brotli", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-3", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Use brotli", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "no", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Use brotli" - } - ] - }, - "BROTLI_TYPES": { - "context": "multisite", - "default": "application/atom+xml application/javascript application/json application/rss+xml application/vnd.ms-fontobject application/x-font-opentype application/x-font-truetype application/x-font-ttf application/x-javascript application/xhtml+xml application/xml font/eot font/opentype font/otf font/truetype image/svg+xml image/vnd.microsoft.icon image/x-icon image/x-win-bitmap text/css text/javascript text/plain text/xml", - "help": "List of MIME types that will be compressed with brotli.", - "id": "brotli-types", - "label": "MIME types", - "regex": "^(?! )( ?([\\-\\w.]+/[\\-\\w.+]+)(?!.*\\2(?!.)))+$", - "type": "text", - "containerClass": "z-2", - "pattern": "^(?! )( ?([\\-\\w.]+/[\\-\\w.+]+)(?!.*\\2(?!.)))+$", - "inpType": "input", - "name": "MIME types", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "application/atom+xml application/javascript application/json application/rss+xml application/vnd.ms-fontobject application/x-font-opentype application/x-font-truetype application/x-font-ttf application/x-javascript application/xhtml+xml application/xml font/eot font/opentype font/otf font/truetype image/svg+xml image/vnd.microsoft.icon image/x-icon image/x-win-bitmap text/css text/javascript text/plain text/xml", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "List of MIME types that will be compressed with brotli." - } - ] - }, - "BROTLI_MIN_LENGTH": { - "context": "multisite", - "default": "1000", - "help": "Minimum length for brotli compression.", - "id": "brotli-min-length", - "label": "Minimum length", - "regex": "^\\d+", - "type": "text", - "containerClass": "z-1", - "pattern": "^\\d+", - "inpType": "input", - "name": "Minimum length", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "1000", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Minimum length for brotli compression." - } - ] - }, - "BROTLI_COMP_LEVEL": { - "context": "multisite", - "default": "6", - "help": "The compression level of the brotli algorithm.", - "id": "brotli-comp-level", - "label": "Compression level", - "regex": "^([02-9]|1[01]?)$", - "type": "select", - "containerClass": "z-0", - "pattern": "^([02-9]|1[01]?)$", - "inpType": "select", - "name": "Compression level", - "values": [ - "0", - "1", - "10", - "11", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9" - ], - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "6", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "The compression level of the brotli algorithm." - } - ] - } - }, - "checksum": null - }, - { - "id": "bunkernet", - "stream": "yes", - "name": "BunkerNet", - "description": "Share threat data with other BunkerWeb instances via BunkerNet.", - "version": "1.0", - "type": "core", - "method": "manual", - "page": true, - "settings": { - "USE_BUNKERNET": { - "context": "multisite", - "default": "yes", - "help": "Activate BunkerNet feature.", - "id": "use-bunkernet", - "label": "Activate BunkerNet", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-1", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Activate BunkerNet", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "yes", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Activate BunkerNet feature." - } - ] - }, - "BUNKERNET_SERVER": { - "context": "global", - "default": "https://api.bunkerweb.io", - "help": "Address of the BunkerNet API.", - "id": "bunkernet-server", - "label": "BunkerNet server", - "regex": "^https?:\\/\\/[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*$", - "type": "text", - "containerClass": "z-0", - "pattern": "^https?:\\/\\/[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*$", - "inpType": "input", - "name": "BunkerNet server", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "https://api.bunkerweb.io", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Address of the BunkerNet API." - } - ] - } - }, - "checksum": null - }, - { - "id": "cors", - "stream": "no", - "name": "CORS", - "description": "Cross-Origin Resource Sharing.", - "version": "1.0", - "type": "core", - "method": "manual", - "page": true, - "settings": { - "USE_CORS": { - "context": "multisite", - "default": "no", - "help": "Use CORS", - "id": "use-cors", - "label": "Use CORS", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-10", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Use CORS", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": true, - "value": "yes", - "popovers": [ - { - "iconName": "trespass", - "text": "inp_popover_method_disabled" - }, - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Use CORS" - } - ] - }, - "CORS_ALLOW_ORIGIN": { - "context": "multisite", - "default": "*", - "help": "Allowed origins to make CORS requests : PCRE regex or *.", - "id": "cors-allow-origin", - "label": "Allowed origins", - "regex": "^.*$", - "type": "text", - "containerClass": "z-9", - "pattern": "^.*$", - "inpType": "input", - "name": "Allowed origins", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "*", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Allowed origins to make CORS requests : PCRE regex or *." - } - ] - }, - "CORS_ALLOW_METHODS": { - "context": "multisite", - "default": "GET, POST, OPTIONS", - "help": "Value of the Access-Control-Allow-Methods header.", - "id": "cors-allow-methods", - "label": "Access-Control-Allow-Methods value", - "regex": "^(\\*|(?![, ])(,? ?(GET|HEAD|POST|PUT|DELETE|CONNECT|OPTIONS|TRACE|PATCH)(?!.*\\3))*)?$", - "type": "text", - "containerClass": "z-8", - "pattern": "^(\\*|(?![, ])(,? ?(GET|HEAD|POST|PUT|DELETE|CONNECT|OPTIONS|TRACE|PATCH)(?!.*\\3))*)?$", - "inpType": "input", - "name": "Access-Control-Allow-Methods value", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "GET, POST, OPTIONS", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Value of the Access-Control-Allow-Methods header." - } - ] - }, - "CORS_ALLOW_HEADERS": { - "context": "multisite", - "default": "DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range", - "help": "Value of the Access-Control-Allow-Headers header.", - "id": "cors-allow-headers", - "label": "Access-Control-Allow-Headers value", - "regex": "^(\\*|(?![, ])(,? ?([\\w\\-]+)(?!.*\\3(?!.)))*)?$", - "type": "text", - "containerClass": "z-7", - "pattern": "^(\\*|(?![, ])(,? ?([\\w\\-]+)(?!.*\\3(?!.)))*)?$", - "inpType": "input", - "name": "Access-Control-Allow-Headers value", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Value of the Access-Control-Allow-Headers header." - } - ] - }, - "CORS_ALLOW_CREDENTIALS": { - "context": "multisite", - "default": "no", - "help": "Send the Access-Control-Allow-Credentials header.", - "id": "cors-allow-credentials", - "label": "Send Access-Control-Allow-Credentials", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-6", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Send Access-Control-Allow-Credentials", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "no", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Send the Access-Control-Allow-Credentials header." - } - ] - }, - "CORS_EXPOSE_HEADERS": { - "context": "multisite", - "default": "Content-Length,Content-Range", - "help": "Value of the Access-Control-Expose-Headers header.", - "id": "cors-expose-headers", - "label": "Access-Control-Expose-Headers value", - "regex": "^(\\*|(?![, ]+)(,? ?([\\w\\-]+)(?!.*\\3(?!.)))*)?$", - "type": "text", - "containerClass": "z-5", - "pattern": "^(\\*|(?![, ]+)(,? ?([\\w\\-]+)(?!.*\\3(?!.)))*)?$", - "inpType": "input", - "name": "Access-Control-Expose-Headers value", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "Content-Length,Content-Range", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Value of the Access-Control-Expose-Headers header." - } - ] - }, - "CROSS_ORIGIN_OPENER_POLICY": { - "context": "multisite", - "default": "", - "help": "Value for the Cross-Origin-Opener-Policy header.", - "id": "cross-origin-opener-policy", - "label": "Cross-Origin-Opener-Policy", - "regex": "^(unsafe-none|same-origin-allow-popups|same-origin)?$", - "type": "select", - "containerClass": "z-4", - "pattern": "^(unsafe-none|same-origin-allow-popups|same-origin)?$", - "inpType": "select", - "name": "Cross-Origin-Opener-Policy", - "values": [ - "", - "same-origin", - "same-origin-allow-popups", - "unsafe-none" - ], - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Value for the Cross-Origin-Opener-Policy header." - } - ] - }, - "CROSS_ORIGIN_EMBEDDER_POLICY": { - "context": "multisite", - "default": "", - "help": "Value for the Cross-Origin-Embedder-Policy header.", - "id": "cross-origin-embedder-policy", - "label": "Cross-Origin-Embedder-Policy", - "regex": "^(unsafe-none|require-corp|credentialless)?$", - "type": "select", - "containerClass": "z-3", - "pattern": "^(unsafe-none|require-corp|credentialless)?$", - "inpType": "select", - "name": "Cross-Origin-Embedder-Policy", - "values": [ - "", - "credentialless", - "require-corp", - "unsafe-none" - ], - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Value for the Cross-Origin-Embedder-Policy header." - } - ] - }, - "CROSS_ORIGIN_RESOURCE_POLICY": { - "context": "multisite", - "default": "", - "help": "Value for the Cross-Origin-Resource-Policy header.", - "id": "cross-origin-resource-policy", - "label": "Cross-Origin-Resource-Policy", - "regex": "^(same-site|same-origin|cross-origin)?$", - "type": "select", - "containerClass": "z-2", - "pattern": "^(same-site|same-origin|cross-origin)?$", - "inpType": "select", - "name": "Cross-Origin-Resource-Policy", - "values": [ - "", - "cross-origin", - "same-origin", - "same-site" - ], - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Value for the Cross-Origin-Resource-Policy header." - } - ] - }, - "CORS_MAX_AGE": { - "context": "multisite", - "default": "86400", - "help": "Value of the Access-Control-Max-Age header.", - "id": "cors-max-age", - "label": "Access-Control-Max-Age value", - "regex": "^\\d+$", - "type": "text", - "containerClass": "z-1", - "pattern": "^\\d+$", - "inpType": "input", - "name": "Access-Control-Max-Age value", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "86400", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Value of the Access-Control-Max-Age header." - } - ] - }, - "CORS_DENY_REQUEST": { - "context": "multisite", - "default": "yes", - "help": "Deny request and don't send it to backend if Origin is not allowed.", - "id": "cors-deny-request", - "label": "Deny request", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-0", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Deny request", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "yes", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Deny request and don't send it to backend if Origin is not allowed." - } - ] - } - }, - "checksum": null - }, - { - "id": "clientcache", - "stream": "no", - "name": "Client cache", - "description": "Manage caching for clients.", - "version": "1.0", - "type": "core", - "method": "manual", - "page": false, - "settings": { - "USE_CLIENT_CACHE": { - "context": "multisite", - "default": "no", - "help": "Tell client to store locally static files.", - "id": "use-client-cache", - "label": "Use client cache", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-3", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Use client cache", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "no", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Tell client to store locally static files." - } - ] - }, - "CLIENT_CACHE_EXTENSIONS": { - "context": "global", - "default": "jpg|jpeg|png|bmp|ico|svg|tif|css|js|otf|ttf|eot|woff|woff2", - "help": "List of file extensions, separated with pipes that should be cached.", - "id": "client-cache-extensions", - "label": "Extensions that should be cached by the client", - "regex": "^(?!\\|)(\\|?([a-z0-9]+)(?!.*\\2(?!.)))+$", - "type": "text", - "containerClass": "z-2", - "pattern": "^(?!\\|)(\\|?([a-z0-9]+)(?!.*\\2(?!.)))+$", - "inpType": "input", - "name": "Extensions that should be cached by the client", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "jpg|jpeg|png|bmp|ico|svg|tif|css|js|otf|ttf|eot|woff|woff2", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "List of file extensions, separated with pipes that should be cached." - } - ] - }, - "CLIENT_CACHE_ETAG": { - "context": "multisite", - "default": "yes", - "help": "Send the HTTP ETag header for static resources.", - "id": "client-cache-etag", - "label": "ETag", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-1", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "ETag", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "yes", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Send the HTTP ETag header for static resources." - } - ] - }, - "CLIENT_CACHE_CONTROL": { - "context": "multisite", - "default": "public, max-age=15552000", - "help": "Value of the Cache-Control HTTP header.", - "id": "client-cache-control", - "label": "Cache-Control header", - "regex": "^(?!(, ?| ))((, )?(((max-age|s-maxage|stale-while-revalidate|stale-if-error)=\\d+(?!.*\\6))|((?!.*public)private|(?!.*private)public)|(must|proxy)-revalidate|must-understand|immutable|no-(cache|store|transform))(?!.*\\4))+$", - "type": "text", - "containerClass": "z-0", - "pattern": "^(?!(, ?| ))((, )?(((max-age|s-maxage|stale-while-revalidate|stale-if-error)=\\d+(?!.*\\6))|((?!.*public)private|(?!.*private)public)|(must|proxy)-revalidate|must-understand|immutable|no-(cache|store|transform))(?!.*\\4))+$", - "inpType": "input", - "name": "Cache-Control header", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "public, max-age=15552000", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Value of the Cache-Control HTTP header." - } - ] - } - }, - "checksum": null - }, - { - "id": "country", - "stream": "yes", - "name": "Country", - "description": "Deny access based on the country of the client IP.", - "version": "1.0", - "type": "core", - "method": "manual", - "page": true, - "settings": { - "BLACKLIST_COUNTRY": { - "context": "multisite", - "default": "", - "help": "Deny access if the country of the client is in the list (ISO 3166-1 alpha-2 format separated with spaces).", - "id": "country-blacklist", - "label": "Country blacklist", - "regex": "^(?! )( *([A-Z]{2})(?!.*\\2) *)*$", - "type": "text", - "containerClass": "z-1", - "pattern": "^(?! )( *([A-Z]{2})(?!.*\\2) *)*$", - "inpType": "input", - "name": "Country blacklist", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Deny access if the country of the client is in the list (ISO 3166-1 alpha-2 format separated with spaces)." - } - ] - }, - "WHITELIST_COUNTRY": { - "context": "multisite", - "default": "", - "help": "Deny access if the country of the client is not in the list (ISO 3166-1 alpha-2 format separated with spaces).", - "id": "country-whitelist", - "label": "Country whitelist", - "regex": "^(?! )( *([A-Z]{2})(?!.*\\2) *)*$", - "type": "text", - "containerClass": "z-0", - "pattern": "^(?! )( *([A-Z]{2})(?!.*\\2) *)*$", - "inpType": "input", - "name": "Country whitelist", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Deny access if the country of the client is not in the list (ISO 3166-1 alpha-2 format separated with spaces)." - } - ] - } - }, - "checksum": null - }, - { - "id": "customcert", - "stream": "yes", - "name": "Custom HTTPS certificate", - "description": "Choose custom certificate for HTTPS.", - "version": "1.0", - "type": "core", - "method": "manual", - "page": false, - "settings": { - "USE_CUSTOM_SSL": { - "context": "multisite", - "default": "no", - "help": "Use custom HTTPS certificate.", - "id": "use-custom-https", - "label": "Use custom certificate", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-4", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Use custom certificate", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "no", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Use custom HTTPS certificate." - } - ] - }, - "CUSTOM_SSL_CERT": { - "context": "multisite", - "default": "", - "help": "Full path of the certificate or bundle file (must be readable by the scheduler).", - "id": "custom-https-cert", - "label": "Certificate path", - "regex": "^(/[\\w. \\-]+)*/?$", - "type": "text", - "containerClass": "z-3", - "pattern": "^(/[\\w. \\-]+)*/?$", - "inpType": "input", - "name": "Certificate path", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Full path of the certificate or bundle file (must be readable by the scheduler)." - } - ] - }, - "CUSTOM_SSL_KEY": { - "context": "multisite", - "default": "", - "help": "Full path of the key file (must be readable by the scheduler).", - "id": "custom-https-key", - "label": "Key path", - "regex": "^(/[\\w. \\-]+)*/?$", - "type": "text", - "containerClass": "z-2", - "pattern": "^(/[\\w. \\-]+)*/?$", - "inpType": "input", - "name": "Key path", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Full path of the key file (must be readable by the scheduler)." - } - ] - }, - "CUSTOM_SSL_CERT_DATA": { - "context": "multisite", - "default": "", - "help": "Certificate data encoded in base64.", - "id": "custom-https-cert-data", - "label": "Certificate data (base64)", - "regex": "^.*$", - "type": "text", - "containerClass": "z-1", - "pattern": "^.*$", - "inpType": "input", - "name": "Certificate data (base64)", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Certificate data encoded in base64." - } - ] - }, - "CUSTOM_SSL_KEY_DATA": { - "context": "multisite", - "default": "", - "help": "Key data encoded in base64.", - "id": "custom-https-key-data", - "label": "Key data (base64)", - "regex": "^.*$", - "type": "text", - "containerClass": "z-0", - "pattern": "^.*$", - "inpType": "input", - "name": "Key data (base64)", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Key data encoded in base64." - } - ] - } - }, - "checksum": null - }, - { - "id": "db", - "stream": "yes", - "name": "DB", - "description": "Integrate easily the Database.", - "version": "1.0", - "type": "core", - "method": "manual", - "page": false, - "settings": { - "DATABASE_URI": { - "context": "global", - "default": "sqlite:////var/lib/bunkerweb/db.sqlite3", - "help": "The database URI, following the sqlalchemy format.", - "id": "database-uri", - "label": "The database URI", - "regex": "^((postgresql|mysql|mariadb|sqlite)(\\+[\\w\\-]+)?:.+)?$", - "type": "text", - "containerClass": "z-2", - "pattern": "^((postgresql|mysql|mariadb|sqlite)(\\+[\\w\\-]+)?:.+)?$", - "inpType": "input", - "name": "The database URI", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "sqlite:////var/lib/bunkerweb/db.sqlite3", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "The database URI, following the sqlalchemy format." - } - ] - }, - "DATABASE_URI_READONLY": { - "context": "global", - "default": "", - "help": "The database URI for read-only operations, it can also serve as a fallback if the main database is down. Following the sqlalchemy format.", - "id": "database-uri-readonly", - "label": "The database URI for read-only operations", - "regex": "^((postgresql|mysql|mariadb|sqlite)(\\+[\\w\\-]+)?:.+)?$", - "type": "text", - "containerClass": "z-1", - "pattern": "^((postgresql|mysql|mariadb|sqlite)(\\+[\\w\\-]+)?:.+)?$", - "inpType": "input", - "name": "The database URI for read-only operations", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "The database URI for read-only operations, it can also serve as a fallback if the main database is down. Following the sqlalchemy format." - } - ] - }, - "DATABASE_LOG_LEVEL": { - "context": "global", - "default": "warning", - "help": "The level to use for database logs.", - "id": "database-log-level", - "label": "Database log level", - "regex": "^(debug|info|warn|warning|error)$", - "type": "select", - "containerClass": "z-0", - "pattern": "^(debug|info|warn|warning|error)$", - "inpType": "select", - "name": "Database log level", - "values": [ - "debug", - "error", - "info", - "warn", - "warning" - ], - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "warning", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "The level to use for database logs." - } - ] - } - }, - "checksum": null - }, - { - "id": "dnsbl", - "stream": "yes", - "name": "DNSBL", - "description": "Deny access based on external DNSBL servers.", - "version": "1.0", - "type": "core", - "method": "manual", - "page": true, - "settings": { - "USE_DNSBL": { - "context": "multisite", - "default": "yes", - "help": "Activate DNSBL feature.", - "id": "use-dnsbl", - "label": "Activate DNSBL", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-1", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Activate DNSBL", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "yes", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Activate DNSBL feature." - } - ] - }, - "DNSBL_LIST": { - "context": "global", - "default": "bl.blocklist.de problems.dnsbl.sorbs.net sbl.spamhaus.org xbl.spamhaus.org", - "help": "List of DNSBL servers.", - "id": "dnsbl-list", - "label": "DNSBL list", - "regex": "^(?! )( ?((?!\\.)[\\w.]+)(?!.*\\2(?!.)))*$", - "type": "text", - "containerClass": "z-0", - "pattern": "^(?! )( ?((?!\\.)[\\w.]+)(?!.*\\2(?!.)))*$", - "inpType": "input", - "name": "DNSBL list", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "bl.blocklist.de problems.dnsbl.sorbs.net sbl.spamhaus.org xbl.spamhaus.org", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "List of DNSBL servers." - } - ] - } - }, - "checksum": null - }, - { - "id": "errors", - "stream": "no", - "name": "Errors", - "description": "Manage default error pages", - "version": "1.0", - "type": "core", - "method": "manual", - "page": true, - "settings": { - "ERRORS": { - "context": "multisite", - "default": "", - "help": "List of HTTP error code and corresponding error pages, separated with spaces (404=/my404.html 403=/errors/403.html ...).", - "id": "errors", - "label": "Errors", - "regex": "^(?! )( ?([1-5]\\d{2})(?!.*\\2(?![^=]))=(\\/[\\w\\].~:\\/?#\\[@!$\\&'\\(\\)*+,;=\\-]*)(?!.*\\3(?!.)))*$", - "type": "text", - "containerClass": "z-1", - "pattern": "^(?! )( ?([1-5]\\d{2})(?!.*\\2(?![^=]))=(\\/[\\w\\].~:\\/?#\\[@!$\\&'\\(\\)*+,;=\\-]*)(?!.*\\3(?!.)))*$", - "inpType": "input", - "name": "Errors", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": true, - "value": "", - "popovers": [ - { - "iconName": "trespass", - "text": "inp_popover_method_disabled" - }, - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "List of HTTP error code and corresponding error pages, separated with spaces (404=/my404.html 403=/errors/403.html ...)." - } - ] - }, - "INTERCEPTED_ERROR_CODES": { - "context": "multisite", - "default": "400 401 403 404 405 413 429 500 501 502 503 504", - "help": "List of HTTP error code intercepted by BunkerWeb", - "id": "intercepted-error-codes", - "label": "Intercepted error codes", - "regex": "^( *([1-5]\\d{2})(?!.*\\2) *)+$", - "type": "text", - "containerClass": "z-0", - "pattern": "^( *([1-5]\\d{2})(?!.*\\2) *)+$", - "inpType": "input", - "name": "Intercepted error codes", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "400 401 403 404 405 413 429 500 501 502 503 504", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "List of HTTP error code intercepted by BunkerWeb" - } - ] - } - }, - "checksum": null - }, - { - "id": "greylist", - "stream": "partial", - "name": "Greylist", - "description": "Allow access while keeping security features based on internal and external IP/network/rDNS/ASN greylists.", - "version": "1.0", - "type": "core", - "method": "manual", - "page": true, - "settings": { - "USE_GREYLIST": { - "context": "multisite", - "default": "no", - "help": "Activate greylist feature.", - "id": "use-greylist", - "label": "Activate greylisting", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-11", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Activate greylisting", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "no", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Activate greylist feature." - } - ] - }, - "GREYLIST_IP": { - "context": "multisite", - "default": "", - "help": "List of IP/network, separated with spaces, to put into the greylist.", - "id": "greylist-ip", - "label": "Greylist IP/network", - "regex": "^(?! )( *(((\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3})(\\/([1-2][0-9]?|3[0-2]?|[04-9]))?|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d))(\\/(12[0-8]|1[01][0-9]|[0-9][0-9]?))?)(?!.*\\D\\2([^\\d\\/]|$)) *)*$", - "type": "text", - "containerClass": "z-10", - "pattern": "^(?! )( *(((\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3})(\\/([1-2][0-9]?|3[0-2]?|[04-9]))?|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d))(\\/(12[0-8]|1[01][0-9]|[0-9][0-9]?))?)(?!.*\\D\\2([^\\d\\/]|$)) *)*$", - "inpType": "input", - "name": "Greylist IP/network", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "List of IP/network, separated with spaces, to put into the greylist." - } - ] - }, - "GREYLIST_RDNS": { - "context": "multisite", - "default": "", - "help": "List of reverse DNS suffixes, separated with spaces, to put into the greylist.", - "id": "greylist-rdns", - "label": "Greylist reverse DNS", - "regex": "^( *(([^ ]+)(?!.*\\3( |$))) *)*$", - "type": "text", - "containerClass": "z-9", - "pattern": "^( *(([^ ]+)(?!.*\\3( |$))) *)*$", - "inpType": "input", - "name": "Greylist reverse DNS", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "List of reverse DNS suffixes, separated with spaces, to put into the greylist." - } - ] - }, - "GREYLIST_RDNS_GLOBAL": { - "context": "multisite", - "default": "yes", - "help": "Only perform RDNS greylist checks on global IP addresses.", - "id": "greylist-rdns-global", - "label": "Greylist reverse DNS global IPs", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-8", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Greylist reverse DNS global IPs", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "yes", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Only perform RDNS greylist checks on global IP addresses." - } - ] - }, - "GREYLIST_ASN": { - "context": "multisite", - "default": "", - "help": "List of ASN numbers, separated with spaces, to put into the greylist.", - "id": "greylist-asn", - "label": "Greylist ASN", - "regex": "^^( *((ASN?)?(\\d+)\\b(?!.*[SN ]\\4\\b)) *)*$", - "type": "text", - "containerClass": "z-7", - "pattern": "^^( *((ASN?)?(\\d+)\\b(?!.*[SN ]\\4\\b)) *)*$", - "inpType": "input", - "name": "Greylist ASN", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "List of ASN numbers, separated with spaces, to put into the greylist." - } - ] - }, - "GREYLIST_USER_AGENT": { - "context": "multisite", - "default": "", - "help": "List of User-Agent (PCRE regex), separated with spaces, to put into the greylist.", - "id": "greylist-user-agent", - "label": "Greylist User-Agent", - "regex": "^.*$", - "type": "text", - "containerClass": "z-6", - "pattern": "^.*$", - "inpType": "input", - "name": "Greylist User-Agent", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "List of User-Agent (PCRE regex), separated with spaces, to put into the greylist." - } - ] - }, - "GREYLIST_URI": { - "context": "multisite", - "default": "", - "help": "List of URI (PCRE regex), separated with spaces, to put into the greylist.", - "id": "greylist-uri", - "label": "Greylist URI", - "regex": "^.*$", - "type": "text", - "containerClass": "z-5", - "pattern": "^.*$", - "inpType": "input", - "name": "Greylist URI", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "List of URI (PCRE regex), separated with spaces, to put into the greylist." - } - ] - }, - "GREYLIST_IP_URLS": { - "context": "global", - "default": "", - "help": "List of URLs, separated with spaces, containing good IP/network to put into the greylist.", - "id": "greylist-ip-urls", - "label": "Greylist IP/network URLs", - "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - "type": "text", - "containerClass": "z-4", - "pattern": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - "inpType": "input", - "name": "Greylist IP/network URLs", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "List of URLs, separated with spaces, containing good IP/network to put into the greylist." - } - ] - }, - "GREYLIST_RDNS_URLS": { - "context": "global", - "default": "", - "help": "List of URLs, separated with spaces, containing reverse DNS suffixes to put into the greylist.", - "id": "greylist-rdns-urls", - "label": "Greylist reverse DNS URLs", - "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - "type": "text", - "containerClass": "z-3", - "pattern": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - "inpType": "input", - "name": "Greylist reverse DNS URLs", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "List of URLs, separated with spaces, containing reverse DNS suffixes to put into the greylist." - } - ] - }, - "GREYLIST_ASN_URLS": { - "context": "global", - "default": "", - "help": "List of URLs, separated with spaces, containing ASN to put into the greylist.", - "id": "greylist-asn-urls", - "label": "Greylist ASN URLs", - "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - "type": "text", - "containerClass": "z-2", - "pattern": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - "inpType": "input", - "name": "Greylist ASN URLs", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "List of URLs, separated with spaces, containing ASN to put into the greylist." - } - ] - }, - "GREYLIST_USER_AGENT_URLS": { - "context": "global", - "default": "", - "help": "List of URLs, separated with spaces, containing good User-Agent to put into the greylist.", - "id": "greylist-user-agent-urls", - "label": "Greylist User-Agent URLs", - "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - "type": "text", - "containerClass": "z-1", - "pattern": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - "inpType": "input", - "name": "Greylist User-Agent URLs", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "List of URLs, separated with spaces, containing good User-Agent to put into the greylist." - } - ] - }, - "GREYLIST_URI_URLS": { - "context": "global", - "default": "", - "help": "List of URLs, separated with spaces, containing bad URI to put into the greylist.", - "id": "greylist-uri-urls", - "label": "Greylist URI URLs", - "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - "type": "text", - "containerClass": "z-0", - "pattern": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - "inpType": "input", - "name": "Greylist URI URLs", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "List of URLs, separated with spaces, containing bad URI to put into the greylist." - } - ] - } - }, - "checksum": null - }, - { - "id": "gzip", - "stream": "no", - "name": "Gzip", - "description": "Compress HTTP requests with the gzip algorithm.", - "version": "1.0", - "type": "core", - "method": "manual", - "page": false, - "settings": { - "USE_GZIP": { - "context": "multisite", - "default": "no", - "help": "Use gzip", - "id": "use-gzip", - "label": "Use gzip", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-4", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Use gzip", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "dsfrgrdgrdgrdhgd", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Use gzip" - } - ] - }, - "GZIP_TYPES": { - "context": "multisite", - "default": "application/atom+xml application/javascript application/json application/rss+xml application/vnd.ms-fontobject application/x-font-opentype application/x-font-truetype application/x-font-ttf application/x-javascript application/xhtml+xml application/xml font/eot font/opentype font/otf font/truetype image/svg+xml image/vnd.microsoft.icon image/x-icon image/x-win-bitmap text/css text/javascript text/plain text/xml", - "help": "List of MIME types that will be compressed with gzip.", - "id": "gzip-types", - "label": "MIME types", - "regex": "^(?! )( ?([\\-\\w.]+/[\\-\\w.+]+)(?!.*\\2(?!.)))+$", - "type": "text", - "containerClass": "z-3", - "pattern": "^(?! )( ?([\\-\\w.]+/[\\-\\w.+]+)(?!.*\\2(?!.)))+$", - "inpType": "input", - "name": "MIME types", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "application/atom+xml application/javascript application/json application/rss+xml application/vnd.ms-fontobject application/x-font-opentype application/x-font-truetype application/x-font-ttf application/x-javascript application/xhtml+xml application/xml font/eot font/opentype font/otf font/truetype image/svg+xml image/vnd.microsoft.icon image/x-icon image/x-win-bitmap text/css text/javascript text/plain text/xml", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "List of MIME types that will be compressed with gzip." - } - ] - }, - "GZIP_MIN_LENGTH": { - "context": "multisite", - "default": "1000", - "help": "Minimum length for gzip compression.", - "id": "gzip-min-length", - "label": "Minimum length", - "regex": "^\\d+$", - "type": "text", - "containerClass": "z-2", - "pattern": "^\\d+$", - "inpType": "input", - "name": "Minimum length", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "1000", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Minimum length for gzip compression." - } - ] - }, - "GZIP_COMP_LEVEL": { - "context": "multisite", - "default": "5", - "help": "The compression level of the gzip algorithm.", - "id": "gzip-comp-level", - "label": "Compression level", - "regex": "^[1-9]$", - "type": "select", - "containerClass": "z-1", - "pattern": "^[1-9]$", - "inpType": "select", - "name": "Compression level", - "values": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9" - ], - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "5", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "The compression level of the gzip algorithm." - } - ] - }, - "GZIP_PROXIED": { - "context": "multisite", - "default": "no-cache no-store private expired auth", - "help": "Which kind of proxied requests we should compress.", - "id": "gzip-proxied", - "label": "Proxied requests", - "regex": "^.*$", - "type": "text", - "containerClass": "z-0", - "pattern": "^.*$", - "inpType": "input", - "name": "Proxied requests", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "no-cache no-store private expired auth", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Which kind of proxied requests we should compress." - } - ] - } - }, - "checksum": null - }, - { - "id": "inject", - "stream": "no", - "name": "HTML injection", - "description": "Inject custom HTML code before the tag.", - "version": "1.0", - "type": "core", - "method": "manual", - "page": false, - "settings": { - "INJECT_BODY": { - "context": "multisite", - "default": "", - "help": "The HTML code to inject.", - "id": "inject-body", - "label": "HTML code", - "regex": "^.*$", - "type": "text", - "containerClass": "z-0", - "pattern": "^.*$", - "inpType": "input", - "name": "HTML code", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "The HTML code to inject." - } - ] - } - }, - "checksum": null - }, - { - "id": "headers", - "stream": "no", - "name": "Headers", - "description": "Manage HTTP headers sent to clients.", - "version": "1.0", - "type": "core", - "method": "manual", - "page": false, - "settings": { - "CUSTOM_HEADER": { - "context": "multisite", - "default": "", - "help": "Custom header to add (HeaderName: HeaderValue).", - "id": "custom-header", - "label": "Custom header (HeaderName: HeaderValue)", - "regex": "^([\\w\\-]+: .+)?$", - "type": "text", - "multiple": "custom-headers", - "containerClass": "z-13", - "pattern": "^([\\w\\-]+: .+)?$", - "inpType": "input", - "name": "Custom header (HeaderName: HeaderValue)", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Custom header to add (HeaderName: HeaderValue)." - } - ] - }, - "REMOVE_HEADERS": { - "context": "multisite", - "default": "Server Expect-CT X-Powered-By X-AspNet-Version X-AspNetMvc-Version", - "help": "Headers to remove (Header1 Header2 Header3 ...)", - "id": "remove-headers", - "label": "Remove headers", - "regex": "^(?! )( ?[\\w\\-]+)*$", - "type": "text", - "containerClass": "z-12", - "pattern": "^(?! )( ?[\\w\\-]+)*$", - "inpType": "input", - "name": "Remove headers", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "Server Expect-CT X-Powered-By X-AspNet-Version X-AspNetMvc-Version", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Headers to remove (Header1 Header2 Header3 ...)" - } - ] - }, - "KEEP_UPSTREAM_HEADERS": { - "context": "multisite", - "default": "Content-Security-Policy Permissions-Policy Feature-Policy X-Frame-Options", - "help": "Headers to keep from upstream (Header1 Header2 Header3 ... or * for all).", - "id": "keep-upstream-headers", - "label": "Keep upstream headers", - "regex": "^((?! )( ?[\\w\\-]+)+|\\*)?$", - "type": "text", - "containerClass": "z-11", - "pattern": "^((?! )( ?[\\w\\-]+)+|\\*)?$", - "inpType": "input", - "name": "Keep upstream headers", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "Content-Security-Policy Permissions-Policy Feature-Policy X-Frame-Options", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Headers to keep from upstream (Header1 Header2 Header3 ... or * for all)." - } - ] - }, - "STRICT_TRANSPORT_SECURITY": { - "context": "multisite", - "default": "max-age=31536000", - "help": "Value for the Strict-Transport-Security header.", - "id": "strict-transport-security", - "label": "Strict-Transport-Security", - "regex": "^max-age=\\d+(; includeSubDomains(; preload)?)?$", - "type": "text", - "containerClass": "z-10", - "pattern": "^max-age=\\d+(; includeSubDomains(; preload)?)?$", - "inpType": "input", - "name": "Strict-Transport-Security", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "max-age=31536000", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Value for the Strict-Transport-Security header." - } - ] - }, - "COOKIE_FLAGS": { - "context": "multisite", - "default": "* HttpOnly SameSite=Lax", - "help": "Cookie flags automatically added to all cookies (value accepted for nginx_cookie_flag_module).", - "id": "cookie-flags", - "label": "Cookie flags", - "regex": "^(\\*|[^;]+)( (HttpOnly|(SameSite)(?!.*\\4)(=(Lax|Strict))?)(?!.*\\3))*$", - "type": "text", - "multiple": "cookie-flags", - "containerClass": "z-9", - "pattern": "^(\\*|[^;]+)( (HttpOnly|(SameSite)(?!.*\\4)(=(Lax|Strict))?)(?!.*\\3))*$", - "inpType": "input", - "name": "Cookie flags", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "* HttpOnly SameSite=Lax", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Cookie flags automatically added to all cookies (value accepted for nginx_cookie_flag_module)." - } - ] - }, - "COOKIE_AUTO_SECURE_FLAG": { - "context": "multisite", - "default": "yes", - "help": "Automatically add the Secure flag to all cookies.", - "id": "cookie-auto-secure-flag", - "label": "Cookie auto Secure flag", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-8", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Cookie auto Secure flag", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "yes", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Automatically add the Secure flag to all cookies." - } - ] - }, - "CONTENT_SECURITY_POLICY": { - "context": "multisite", - "default": "object-src 'none'; form-action 'self'; frame-ancestors 'self';", - "help": "Value for the Content-Security-Policy header.", - "id": "content-security-policy", - "label": "Content-Security-Policy", - "regex": "^.*$", - "type": "text", - "containerClass": "z-7", - "pattern": "^.*$", - "inpType": "input", - "name": "Content-Security-Policy", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "object-src 'none'; form-action 'self'; frame-ancestors 'self';", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Value for the Content-Security-Policy header." - } - ] - }, - "CONTENT_SECURITY_POLICY_REPORT_ONLY": { - "context": "multisite", - "default": "no", - "help": "Send reports for violations of the Content-Security-Policy header instead of blocking them.", - "id": "content-security-policy-report-only", - "label": "Content-Security-Policy-Report-Only", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-6", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Content-Security-Policy-Report-Only", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "no", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Send reports for violations of the Content-Security-Policy header instead of blocking them." - } - ] - }, - "REFERRER_POLICY": { - "context": "multisite", - "default": "strict-origin-when-cross-origin", - "help": "Value for the Referrer-Policy header.", - "id": "referrer-policy", - "label": "Referrer-Policy", - "regex": "^(?!^(,| ))((, )?(no-referrer-when-downgrade|no-referrer|origin-when-cross-origin|same-origin|strict-origin-when-cross-origin|strict-origin|origin|unsafe-url)(?!\\b.*, \\4\\b))*$", - "type": "text", - "containerClass": "z-5", - "pattern": "^(?!^(,| ))((, )?(no-referrer-when-downgrade|no-referrer|origin-when-cross-origin|same-origin|strict-origin-when-cross-origin|strict-origin|origin|unsafe-url)(?!\\b.*, \\4\\b))*$", - "inpType": "input", - "name": "Referrer-Policy", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "strict-origin-when-cross-origin", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Value for the Referrer-Policy header." - } - ] - }, - "PERMISSIONS_POLICY": { - "context": "multisite", - "default": "accelerometer=(), ambient-light-sensor=(), autoplay=(), battery=(), camera=(), cross-origin-isolated=(), display-capture=(), document-domain=(), encrypted-media=(), execution-while-not-rendered=(), execution-while-out-of-viewport=(), fullscreen=(), geolocation=(), gyroscope=(), hid=(), idle-detection=(), magnetometer=(), microphone=(), midi=(), navigation-override=(), payment=(), picture-in-picture=(), publickey-credentials-get=(), screen-wake-lock=(), serial=(), usb=(), web-share=(), xr-spatial-tracking=()", - "help": "Value for the Permissions-Policy header.", - "id": "permissions-policy", - "label": "Permissions-Policy", - "regex": "^(?![, ])(,? ?([a-z\\-]+)(?!.*[^\\-]\\2=)=(\\*|\\(( ?(self|\\u0022https?:\\/\\/[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*\\u0022)(?=[ \\)]))*\\)))*$", - "type": "text", - "containerClass": "z-4", - "pattern": "^(?![, ])(,? ?([a-z\\-]+)(?!.*[^\\-]\\2=)=(\\*|\\(( ?(self|\\u0022https?:\\/\\/[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*\\u0022)(?=[ \\)]))*\\)))*$", - "inpType": "input", - "name": "Permissions-Policy", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "accelerometer=(), ambient-light-sensor=(), autoplay=(), battery=(), camera=(), cross-origin-isolated=(), display-capture=(), document-domain=(), encrypted-media=(), execution-while-not-rendered=(), execution-while-out-of-viewport=(), fullscreen=(), geolocation=(), gyroscope=(), hid=(), idle-detection=(), magnetometer=(), microphone=(), midi=(), navigation-override=(), payment=(), picture-in-picture=(), publickey-credentials-get=(), screen-wake-lock=(), serial=(), usb=(), web-share=(), xr-spatial-tracking=()", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Value for the Permissions-Policy header." - } - ] - }, - "FEATURE_POLICY": { - "context": "multisite", - "default": "accelerometer 'none'; ambient-light-sensor 'none'; autoplay 'none'; battery 'none'; camera 'none'; display-capture 'none'; document-domain 'none'; encrypted-media 'none'; execution-while-not-rendered 'none'; execution-while-out-of-viewport 'none'; fullscreen 'none'; geolocation 'none'; gyroscope 'none'; layout-animation 'none'; legacy-image-formats 'none'; magnetometer 'none'; microphone 'none'; midi 'none'; navigation-override 'none'; payment 'none'; picture-in-picture 'none'; publickey-credentials-get 'none'; speaker-selection 'none'; sync-xhr 'none'; unoptimized-images 'none'; unsized-media 'none'; usb 'none'; screen-wake-lock 'none'; web-share 'none'; xr-spatial-tracking 'none';", - "help": "Value for the Feature-Policy header.", - "id": "feature-policy", - "label": "Feature-Policy", - "regex": "^(?![; ])( ?([\\w\\-]+)(?!.*[^\\-]\\2 )( ('(none|self|strict-dynamic|report-sample|unsafe-inline|unsafe-eval|unsafe-hashes|unsafe-allow-redirects)'|https?:\\/\\/[\\w@:%.+~#=\\-]+[\\w\\(\\)!@:%+.~#?&\\/=$\\-]*))+;)*$", - "type": "text", - "containerClass": "z-3", - "pattern": "^(?![; ])( ?([\\w\\-]+)(?!.*[^\\-]\\2 )( ('(none|self|strict-dynamic|report-sample|unsafe-inline|unsafe-eval|unsafe-hashes|unsafe-allow-redirects)'|https?:\\/\\/[\\w@:%.+~#=\\-]+[\\w\\(\\)!@:%+.~#?&\\/=$\\-]*))+;)*$", - "inpType": "input", - "name": "Feature-Policy", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "accelerometer 'none'; ambient-light-sensor 'none'; autoplay 'none'; battery 'none'; camera 'none'; display-capture 'none'; document-domain 'none'; encrypted-media 'none'; execution-while-not-rendered 'none'; execution-while-out-of-viewport 'none'; fullscreen 'none'; geolocation 'none'; gyroscope 'none'; layout-animation 'none'; legacy-image-formats 'none'; magnetometer 'none'; microphone 'none'; midi 'none'; navigation-override 'none'; payment 'none'; picture-in-picture 'none'; publickey-credentials-get 'none'; speaker-selection 'none'; sync-xhr 'none'; unoptimized-images 'none'; unsized-media 'none'; usb 'none'; screen-wake-lock 'none'; web-share 'none'; xr-spatial-tracking 'none';", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Value for the Feature-Policy header." - } - ] - }, - "X_FRAME_OPTIONS": { - "context": "multisite", - "default": "SAMEORIGIN", - "help": "Value for the X-Frame-Options header.", - "id": "x-frame-options", - "label": "X-Frame-Options", - "regex": "^(DENY|SAMEORIGIN)?$", - "type": "select", - "containerClass": "z-2", - "pattern": "^(DENY|SAMEORIGIN)?$", - "inpType": "select", - "name": "X-Frame-Options", - "values": [ - "", - "DENY", - "SAMEORIGIN" - ], - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "SAMEORIGIN", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Value for the X-Frame-Options header." - } - ] - }, - "X_CONTENT_TYPE_OPTIONS": { - "context": "multisite", - "default": "nosniff", - "help": "Value for the X-Content-Type-Options header.", - "id": "x-content-type-options", - "label": "X-Content-Type-Options", - "regex": "^(nosniff)?$", - "type": "select", - "containerClass": "z-1", - "pattern": "^(nosniff)?$", - "inpType": "select", - "name": "X-Content-Type-Options", - "values": [ - "", - "nosniff" - ], - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "nosniff", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Value for the X-Content-Type-Options header." - } - ] - }, - "X_XSS_PROTECTION": { - "context": "multisite", - "default": "1; mode=block", - "help": "Value for the X-XSS-Protection header.", - "id": "x-xss-protection", - "label": "X-XSS-Protection", - "regex": "^0|1(; (mode=block|report=https?:\\/\\/[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*))?$", - "type": "text", - "containerClass": "z-0", - "pattern": "^0|1(; (mode=block|report=https?:\\/\\/[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*))?$", - "inpType": "input", - "name": "X-XSS-Protection", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "1; mode=block", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Value for the X-XSS-Protection header." - } - ] - } - }, - "checksum": null - }, - { - "id": "jobs", - "stream": "yes", - "name": "Jobs", - "description": "Fake core plugin for internal jobs.", - "version": "1.0", - "type": "core", - "method": "manual", - "page": false, - "settings": {}, - "checksum": null - }, - { - "id": "letsencrypt", - "stream": "yes", - "name": "Let's Encrypt", - "description": "Automatic creation, renewal and configuration of Let's Encrypt certificates.", - "version": "1.0", - "type": "core", - "method": "manual", - "page": false, - "settings": { - "AUTO_LETS_ENCRYPT": { - "context": "multisite", - "default": "no", - "help": "Activate automatic Let's Encrypt mode.", - "id": "auto-lets-encrypt", - "label": "Automatic Let's Encrypt", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-3", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Automatic Let's Encrypt", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "no", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Activate automatic Let's Encrypt mode." - } - ] - }, - "EMAIL_LETS_ENCRYPT": { - "context": "multisite", - "default": "", - "help": "Email used for Let's Encrypt notification and in certificate.", - "id": "email-lets-encrypt", - "label": "Email Let's Encrypt", - "regex": "^([^@ \\t\\r\\n]+@[^@ \\t\\r\\n]+\\.[^@ \\t\\r\\n]+)?$", - "type": "text", - "containerClass": "z-2", - "pattern": "^([^@ \\t\\r\\n]+@[^@ \\t\\r\\n]+\\.[^@ \\t\\r\\n]+)?$", - "inpType": "input", - "name": "Email Let's Encrypt", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Email used for Let's Encrypt notification and in certificate." - } - ] - }, - "USE_LETS_ENCRYPT_STAGING": { - "context": "multisite", - "default": "no", - "help": "Use the staging environment for Let\u2019s Encrypt certificate generation. Useful when you are testing your deployments to avoid being rate limited in the production environment.", - "id": "use-lets-encrypt-staging", - "label": "Use Let's Encrypt Staging", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-1", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Use Let's Encrypt Staging", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "no", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Use the staging environment for Let\u2019s Encrypt certificate generation. Useful when you are testing your deployments to avoid being rate limited in the production environment." - } - ] - }, - "LETS_ENCRYPT_CLEAR_OLD_CERTS": { - "context": "global", - "default": "no", - "help": "Clear old certificates when renewing.", - "id": "lets-encrypt-clear-old-certs", - "label": "Clear old certificates when they are no longer needed", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-0", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Clear old certificates when they are no longer needed", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "no", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Clear old certificates when renewing." - } - ] - } - }, - "checksum": null - }, - { - "id": "limit", - "stream": "partial", - "name": "Limit", - "description": "Limit maximum number of requests and connections.", - "version": "1.0", - "type": "core", - "method": "manual", - "page": true, - "settings": { - "USE_LIMIT_REQ": { - "context": "multisite", - "default": "yes", - "help": "Activate limit requests feature.", - "id": "use-limit-req", - "label": "Activate limit requests", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-6", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Activate limit requests", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "yes", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Activate limit requests feature." - } - ] - }, - "LIMIT_REQ_URL": { - "context": "multisite", - "default": "/", - "help": "URL (PCRE regex) where the limit request will be applied or special value / for all requests.", - "id": "limit-req-url", - "label": "Limit request URL", - "regex": "^.+$", - "type": "text", - "multiple": "limit-req", - "containerClass": "z-5", - "pattern": "^.+$", - "inpType": "input", - "name": "Limit request URL", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "/", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "URL (PCRE regex) where the limit request will be applied or special value / for all requests." - } - ] - }, - "LIMIT_REQ_RATE": { - "context": "multisite", - "default": "2r/s", - "help": "Rate to apply to the URL (s for second, m for minute, h for hour and d for day).", - "id": "limit-req-rate", - "label": "Limit request Rate", - "regex": "^\\d+r/[smhd]$", - "type": "text", - "multiple": "limit-req", - "containerClass": "z-4", - "pattern": "^\\d+r/[smhd]$", - "inpType": "input", - "name": "Limit request Rate", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "2r/s", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Rate to apply to the URL (s for second, m for minute, h for hour and d for day)." - } - ] - }, - "USE_LIMIT_CONN": { - "context": "multisite", - "default": "yes", - "help": "Activate limit connections feature.", - "id": "use-limit-conn", - "label": "Activate limit connections", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-3", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Activate limit connections", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "yes", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Activate limit connections feature." - } - ] - }, - "LIMIT_CONN_MAX_HTTP1": { - "context": "multisite", - "default": "10", - "help": "Maximum number of connections per IP when using HTTP/1.X protocol.", - "id": "limit-conn-max-http1", - "label": "Maximum number of HTTP/1.X connections", - "regex": "^\\d+$", - "type": "text", - "containerClass": "z-2", - "pattern": "^\\d+$", - "inpType": "input", - "name": "Maximum number of HTTP/1.X connections", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "10", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Maximum number of connections per IP when using HTTP/1.X protocol." - } - ] - }, - "LIMIT_CONN_MAX_HTTP2": { - "context": "multisite", - "default": "100", - "help": "Maximum number of streams per IP when using HTTP/2 protocol.", - "id": "limit-conn-max-http2", - "label": "Maximum number of HTTP/2 streams", - "regex": "^\\d+$", - "type": "text", - "containerClass": "z-1", - "pattern": "^\\d+$", - "inpType": "input", - "name": "Maximum number of HTTP/2 streams", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "100", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Maximum number of streams per IP when using HTTP/2 protocol." - } - ] - }, - "LIMIT_CONN_MAX_STREAM": { - "context": "multisite", - "default": "10", - "help": "Maximum number of connections per IP when using stream.", - "id": "limit-conn-max-stream", - "label": "Maximum number of stream connections", - "regex": "^\\d+$", - "type": "text", - "containerClass": "z-0", - "pattern": "^\\d+$", - "inpType": "input", - "name": "Maximum number of stream connections", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "10", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Maximum number of connections per IP when using stream." - } - ] - } - }, - "checksum": null - }, - { - "id": "metrics", - "stream": "partial", - "name": "Metrics", - "description": "Metrics collection and retrieve.", - "version": "1.0", - "type": "core", - "method": "manual", - "page": false, - "settings": { - "USE_METRICS": { - "context": "multisite", - "default": "yes", - "help": "Enable collection and retrieval of internal metrics.", - "id": "use-metrics", - "label": "Use metrics", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-2", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Use metrics", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "yes", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Enable collection and retrieval of internal metrics." - } - ] - }, - "METRICS_MEMORY_SIZE": { - "context": "global", - "default": "16m", - "help": "Size of the internal storage for metrics.", - "id": "metrics-memory-size", - "label": "Metrics memory size", - "regex": "^\\d+[kKmMgG]?$", - "type": "text", - "containerClass": "z-1", - "pattern": "^\\d+[kKmMgG]?$", - "inpType": "input", - "name": "Metrics memory size", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "16m", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Size of the internal storage for metrics." - } - ] - }, - "METRICS_MAX_BLOCKED_REQUESTS": { - "context": "global", - "default": "100", - "help": "Maximum number of blocked requests to store (per worker).", - "id": "metrics-max-blocked-requests", - "label": "Metrics max blocked requests", - "regex": "^\\d+$", - "type": "text", - "containerClass": "z-0", - "pattern": "^\\d+$", - "inpType": "input", - "name": "Metrics max blocked requests", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "100", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Maximum number of blocked requests to store (per worker)." - } - ] - } - }, - "checksum": null - }, - { - "id": "misc", - "stream": "partial", - "name": "Miscellaneous", - "description": "Miscellaneous settings.", - "version": "1.0", - "type": "core", - "method": "manual", - "page": true, - "settings": { - "DISABLE_DEFAULT_SERVER": { - "context": "global", - "default": "no", - "help": "Deny HTTP request if the request vhost is unknown.", - "id": "disable-default-server", - "label": "Disable default server", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-20", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Disable default server", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "no", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Deny HTTP request if the request vhost is unknown." - } - ] - }, - "DISABLE_DEFAULT_SERVER_STRICT_SNI": { - "context": "global", - "default": "no", - "help": "Close SSL/TLS connection if the SNI is unknown.", - "id": "disable-default-server-strict-sni", - "label": "Disable default server strict SNI", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-19", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Disable default server strict SNI", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "no", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Close SSL/TLS connection if the SNI is unknown." - } - ] - }, - "REDIRECT_HTTP_TO_HTTPS": { - "context": "multisite", - "default": "no", - "help": "Redirect all HTTP request to HTTPS.", - "id": "redirect-http-to-https", - "label": "Redirect HTTP to HTTPS", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-18", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Redirect HTTP to HTTPS", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "no", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Redirect all HTTP request to HTTPS." - } - ] - }, - "AUTO_REDIRECT_HTTP_TO_HTTPS": { - "context": "multisite", - "default": "yes", - "help": "Try to detect if HTTPS is used and activate HTTP to HTTPS redirection if that's the case.", - "id": "auto-redirect-http-to-https", - "label": "Auto redirect HTTP to HTTPS", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-17", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Auto redirect HTTP to HTTPS", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "yes", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Try to detect if HTTPS is used and activate HTTP to HTTPS redirection if that's the case." - } - ] - }, - "ALLOWED_METHODS": { - "context": "multisite", - "default": "GET|POST|HEAD", - "help": "Allowed HTTP and WebDAV methods, separated with pipes to be sent by clients.", - "id": "allowed-methods", - "label": "Allowed methods", - "regex": "^(?!\\|)(\\|?([A-Z]{3,})(?!.*(^|\\|)\\2))+$", - "type": "text", - "containerClass": "z-16", - "pattern": "^(?!\\|)(\\|?([A-Z]{3,})(?!.*(^|\\|)\\2))+$", - "inpType": "input", - "name": "Allowed methods", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "GET|POST|HEAD", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Allowed HTTP and WebDAV methods, separated with pipes to be sent by clients." - } - ] - }, - "MAX_CLIENT_SIZE": { - "context": "multisite", - "default": "10m", - "help": "Maximum body size (0 for infinite).", - "id": "max-client-size", - "label": "Maximum body size", - "regex": "^\\d+[kKmMgG]?$", - "type": "text", - "containerClass": "z-15", - "pattern": "^\\d+[kKmMgG]?$", - "inpType": "input", - "name": "Maximum body size", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "10m", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Maximum body size (0 for infinite)." - } - ] - }, - "SERVE_FILES": { - "context": "multisite", - "default": "yes", - "help": "Serve files from the local folder.", - "id": "serve-files", - "label": "Serve files", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-14", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Serve files", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "yes", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Serve files from the local folder." - } - ] - }, - "ROOT_FOLDER": { - "context": "multisite", - "default": "", - "help": "Root folder containing files to serve (/var/www/html/{server_name} if unset).", - "id": "root-folder", - "label": "Root folder", - "regex": "^(/[\\w. \\-]+)*/?$", - "type": "text", - "containerClass": "z-13", - "pattern": "^(/[\\w. \\-]+)*/?$", - "inpType": "input", - "name": "Root folder", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Root folder containing files to serve (/var/www/html/{server_name} if unset)." - } - ] - }, - "SSL_PROTOCOLS": { - "context": "multisite", - "default": "TLSv1.2 TLSv1.3", - "help": "The supported version of TLS. We recommend the default value TLSv1.2 TLSv1.3 for compatibility reasons.", - "id": "https-protocols", - "label": "HTTPS protocols", - "regex": "^(?! )( ?TLSv1\\.[0-3])*$", - "type": "text", - "containerClass": "z-12", - "pattern": "^(?! )( ?TLSv1\\.[0-3])*$", - "inpType": "input", - "name": "HTTPS protocols", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "TLSv1.2 TLSv1.3", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "The supported version of TLS. We recommend the default value TLSv1.2 TLSv1.3 for compatibility reasons." - } - ] - }, - "HTTP2": { - "context": "multisite", - "default": "yes", - "help": "Support HTTP2 protocol when HTTPS is enabled.", - "id": "http2", - "label": "HTTP2", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-11", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "HTTP2", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "yes", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Support HTTP2 protocol when HTTPS is enabled." - } - ] - }, - "HTTP3": { - "context": "multisite", - "default": "no", - "help": "Support HTTP3 protocol when HTTPS is enabled.", - "id": "http3", - "label": "HTTP3", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-10", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "HTTP3", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "no", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Support HTTP3 protocol when HTTPS is enabled." - } - ] - }, - "HTTP3_ALT_SVC_PORT": { - "context": "multisite", - "default": "443", - "help": "HTTP3 alternate service port. This value will be used as part of the Alt-Svc header.", - "id": "http3-alt-svc-port", - "label": "HTTP3 Alt-Svc port", - "regex": "^\\d+$", - "type": "text", - "containerClass": "z-9", - "pattern": "^\\d+$", - "inpType": "input", - "name": "HTTP3 Alt-Svc port", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "443", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "HTTP3 alternate service port. This value will be used as part of the Alt-Svc header." - } - ] - }, - "LISTEN_HTTP": { - "context": "multisite", - "default": "yes", - "help": "Respond to (insecure) HTTP requests.", - "id": "http-listen", - "label": "HTTP listen", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-8", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "HTTP listen", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "yes", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Respond to (insecure) HTTP requests." - } - ] - }, - "USE_OPEN_FILE_CACHE": { - "context": "multisite", - "default": "no", - "help": "Enable open file cache feature", - "id": "use-open-file-cache", - "label": "Use open file cache", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-7", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Use open file cache", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "no", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Enable open file cache feature" - } - ] - }, - "OPEN_FILE_CACHE": { - "context": "multisite", - "default": "max=1000 inactive=20s", - "help": "Open file cache directive", - "id": "open-file-cache", - "label": "Use open file cache", - "regex": "^(off|max=\\d+( inactive=\\d+(ms?|[shdwMy]))?)$", - "type": "text", - "containerClass": "z-6", - "pattern": "^(off|max=\\d+( inactive=\\d+(ms?|[shdwMy]))?)$", - "inpType": "input", - "name": "Use open file cache", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "max=1000 inactive=20s", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Open file cache directive" - } - ] - }, - "OPEN_FILE_CACHE_ERRORS": { - "context": "multisite", - "default": "yes", - "help": "Enable open file cache for errors", - "id": "open-file-cache-errors", - "label": "Open file cache errors", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-5", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Open file cache errors", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "yes", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Enable open file cache for errors" - } - ] - }, - "OPEN_FILE_CACHE_MIN_USES": { - "context": "multisite", - "default": "2", - "help": "Enable open file cache minimum uses", - "id": "open-file-cache-min-uses", - "label": "Open file cache min uses", - "regex": "^[1-9]\\d*$", - "type": "text", - "containerClass": "z-4", - "pattern": "^[1-9]\\d*$", - "inpType": "input", - "name": "Open file cache min uses", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "2", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Enable open file cache minimum uses" - } - ] - }, - "OPEN_FILE_CACHE_VALID": { - "context": "multisite", - "default": "30s", - "help": "Open file cache valid time", - "id": "open-file-cache-valid", - "label": "Open file cache valid time", - "regex": "^\\d+(ms?|[shdwMy])$", - "type": "text", - "containerClass": "z-3", - "pattern": "^\\d+(ms?|[shdwMy])$", - "inpType": "input", - "name": "Open file cache valid time", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "30s", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Open file cache valid time" - } - ] - }, - "EXTERNAL_PLUGIN_URLS": { - "context": "global", - "default": "", - "help": "List of external plugins URLs (direct download to .zip or .tar file) to download and install (URLs are separated with space).", - "id": "external-plugin-urls", - "label": "External plugin URLs", - "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - "type": "text", - "containerClass": "z-2", - "pattern": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - "inpType": "input", - "name": "External plugin URLs", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "List of external plugins URLs (direct download to .zip or .tar file) to download and install (URLs are separated with space)." - } - ] - }, - "DENY_HTTP_STATUS": { - "context": "global", - "default": "403", - "help": "HTTP status code to send when the request is denied (403 or 444). When using 444, BunkerWeb will close the connection.", - "id": "deny-http-status", - "label": "Deny HTTP status", - "regex": "^(403|444)$", - "type": "select", - "containerClass": "z-1", - "pattern": "^(403|444)$", - "inpType": "select", - "name": "Deny HTTP status", - "values": [ - "403", - "444" - ], - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "403", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "HTTP status code to send when the request is denied (403 or 444). When using 444, BunkerWeb will close the connection." - } - ] - }, - "SEND_ANONYMOUS_REPORT": { - "context": "global", - "default": "yes", - "help": "Send anonymous report to BunkerWeb maintainers.", - "id": "send-anonymous-report", - "label": "Send anonymous report", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-0", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Send anonymous report", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "yes", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Send anonymous report to BunkerWeb maintainers." - } - ] - } - }, - "checksum": null - }, - { - "id": "modsecurity", - "stream": "no", - "name": "ModSecurity", - "description": "Management of the ModSecurity WAF.", - "version": "1.0", - "type": "core", - "method": "manual", - "page": false, - "settings": { - "USE_MODSECURITY": { - "context": "multisite", - "default": "yes", - "help": "Enable ModSecurity WAF.", - "id": "use-modsecurity", - "label": "Use ModSecurity", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-5", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Use ModSecurity", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "yes", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Enable ModSecurity WAF." - } - ] - }, - "USE_MODSECURITY_CRS": { - "context": "multisite", - "default": "yes", - "help": "Enable OWASP Core Rule Set.", - "id": "use-modsecurity-crs", - "label": "Use Core Rule Set", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-4", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Use Core Rule Set", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "yes", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Enable OWASP Core Rule Set." - } - ] - }, - "MODSECURITY_CRS_VERSION": { - "context": "multisite", - "default": "3", - "help": "Version of the OWASP Core Rule Set to use with ModSecurity (3, 4 or nightly).", - "id": "modsecurity-crs-version", - "label": "Core Rule Set Version", - "regex": "^(3|4|nightly)$", - "type": "select", - "containerClass": "z-3", - "pattern": "^(3|4|nightly)$", - "inpType": "select", - "name": "Core Rule Set Version", - "values": [ - "3", - "4", - "nightly" - ], - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "3", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Version of the OWASP Core Rule Set to use with ModSecurity (3, 4 or nightly)." - } - ] - }, - "MODSECURITY_SEC_AUDIT_ENGINE": { - "context": "multisite", - "default": "RelevantOnly", - "help": "SecAuditEngine directive of ModSecurity.", - "id": "modsecurity-sec-audit-engine", - "label": "SecAuditEngine", - "regex": "^(On|RelevantOnly|Off)$", - "type": "select", - "containerClass": "z-2", - "pattern": "^(On|RelevantOnly|Off)$", - "inpType": "select", - "name": "SecAuditEngine", - "values": [ - "Off", - "On", - "RelevantOnly" - ], - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "RelevantOnly", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "SecAuditEngine directive of ModSecurity." - } - ] - }, - "MODSECURITY_SEC_RULE_ENGINE": { - "context": "multisite", - "default": "On", - "help": "SecRuleEngine directive of ModSecurity.", - "id": "modsecurity-sec-rule-engine", - "label": "SecRuleEngine", - "regex": "^(On|DetectionOnly|Off)$", - "type": "select", - "containerClass": "z-1", - "pattern": "^(On|DetectionOnly|Off)$", - "inpType": "select", - "name": "SecRuleEngine", - "values": [ - "DetectionOnly", - "Off", - "On" - ], - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "On", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "SecRuleEngine directive of ModSecurity." - } - ] - }, - "MODSECURITY_SEC_AUDIT_LOG_PARTS": { - "context": "multisite", - "default": "ABCFHZ", - "help": "SecAuditLogParts directive of ModSecurity.", - "id": "modsecurity-sec-audit-log-parts", - "label": "SecAuditLogParts", - "regex": "^A(([B-K])(?!.*\\2))+Z$", - "type": "text", - "containerClass": "z-0", - "pattern": "^A(([B-K])(?!.*\\2))+Z$", - "inpType": "input", - "name": "SecAuditLogParts", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "ABCFHZ", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "SecAuditLogParts directive of ModSecurity." - } - ] - } - }, - "checksum": null - }, - { - "id": "php", - "stream": "no", - "name": "PHP", - "description": "Manage local or remote PHP-FPM.", - "version": "1.0", - "type": "core", - "method": "manual", - "page": false, - "settings": { - "REMOTE_PHP": { - "context": "multisite", - "default": "", - "help": "Hostname of the remote PHP-FPM instance.", - "id": "remote-php", - "label": "Remote PHP", - "regex": "^((?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\\.?)?$", - "type": "text", - "containerClass": "z-3", - "pattern": "^((?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\\.?)?$", - "inpType": "input", - "name": "Remote PHP", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Hostname of the remote PHP-FPM instance." - } - ] - }, - "REMOTE_PHP_PATH": { - "context": "multisite", - "default": "", - "help": "Root folder containing files in the remote PHP-FPM instance.", - "id": "remote-php-path", - "label": "Remote PHP path", - "regex": "^(/[\\w. \\-]+)*/?$", - "type": "text", - "containerClass": "z-2", - "pattern": "^(/[\\w. \\-]+)*/?$", - "inpType": "input", - "name": "Remote PHP path", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Root folder containing files in the remote PHP-FPM instance." - } - ] - }, - "LOCAL_PHP": { - "context": "multisite", - "default": "", - "help": "Path to the PHP-FPM socket file.", - "id": "local", - "label": "Local PHP", - "regex": "^(/[\\w. \\-]+)*/?$", - "type": "text", - "containerClass": "z-1", - "pattern": "^(/[\\w. \\-]+)*/?$", - "inpType": "input", - "name": "Local PHP", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Path to the PHP-FPM socket file." - } - ] - }, - "LOCAL_PHP_PATH": { - "context": "multisite", - "default": "", - "help": "Root folder containing files in the local PHP-FPM instance.", - "id": "local-php-path", - "label": "Local PHP path", - "regex": "^(/[\\w. \\-]+)*/?$", - "type": "text", - "containerClass": "z-0", - "pattern": "^(/[\\w. \\-]+)*/?$", - "inpType": "input", - "name": "Local PHP path", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Root folder containing files in the local PHP-FPM instance." - } - ] - } - }, - "checksum": null - }, - { - "id": "pro", - "stream": "no", - "name": "Pro", - "description": "Pro settings for the Pro version of BunkerWeb.", - "version": "1.0", - "type": "core", - "method": "manual", - "page": false, - "settings": { - "PRO_LICENSE_KEY": { - "context": "global", - "default": "", - "help": "The License Key for the Pro version of BunkerWeb.", - "id": "pro-license-key", - "label": "Pro License Key", - "regex": "^.*$", - "type": "password", - "containerClass": "z-0", - "pattern": "^.*$", - "inpType": "input", - "name": "Pro License Key", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "The License Key for the Pro version of BunkerWeb." - } - ] - } - }, - "checksum": null - }, - { - "id": "realip", - "stream": "partial", - "name": "Real IP", - "description": "Get real IP of clients when BunkerWeb is behind a reverse proxy / load balancer.", - "version": "1.0", - "type": "core", - "method": "manual", - "page": false, - "settings": { - "USE_REAL_IP": { - "context": "multisite", - "default": "no", - "help": "Retrieve the real IP of client.", - "id": "use-real-ip", - "label": "Use real ip", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-5", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Use real ip", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "no", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Retrieve the real IP of client." - } - ] - }, - "USE_PROXY_PROTOCOL": { - "context": "multisite", - "default": "no", - "help": "Enable PROXY protocol communication.", - "id": "use-proxy-protocol", - "label": "Use PROXY protocol", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-4", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Use PROXY protocol", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "no", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Enable PROXY protocol communication." - } - ] - }, - "REAL_IP_FROM": { - "context": "multisite", - "default": "192.168.0.0/16 172.16.0.0/12 10.0.0.0/8", - "help": "List of trusted IPs / networks, separated with spaces, where proxied requests come from.", - "id": "real-ip-from", - "label": "Real IP from", - "regex": "^(?! )( *(((\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3})(\\/([1-2][0-9]?|3[0-2]?|[04-9]))?|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d))(\\/(12[0-8]|1[01][0-9]|[0-9][0-9]?))?)(?!.*\\D\\2([^\\d\\/]|$)) *)*$", - "type": "text", - "containerClass": "z-3", - "pattern": "^(?! )( *(((\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3})(\\/([1-2][0-9]?|3[0-2]?|[04-9]))?|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d))(\\/(12[0-8]|1[01][0-9]|[0-9][0-9]?))?)(?!.*\\D\\2([^\\d\\/]|$)) *)*$", - "inpType": "input", - "name": "Real IP from", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "192.168.0.0/16 172.16.0.0/12 10.0.0.0/8", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "List of trusted IPs / networks, separated with spaces, where proxied requests come from." - } - ] - }, - "REAL_IP_HEADER": { - "context": "multisite", - "default": "X-Forwarded-For", - "help": "HTTP header containing the real IP or special value proxy_protocol for PROXY protocol.", - "id": "real-ip-header", - "label": "Real IP header", - "regex": "^(?! )(( ?(?!proxy_protocol)[\\w\\-]+)*|proxy_protocol)$", - "type": "text", - "containerClass": "z-2", - "pattern": "^(?! )(( ?(?!proxy_protocol)[\\w\\-]+)*|proxy_protocol)$", - "inpType": "input", - "name": "Real IP header", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "X-Forwarded-For", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "HTTP header containing the real IP or special value proxy_protocol for PROXY protocol." - } - ] - }, - "REAL_IP_RECURSIVE": { - "context": "multisite", - "default": "yes", - "help": "Perform a recursive search in the header container IP address.", - "id": "real-ip-recursive", - "label": "Real IP recursive", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-1", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Real IP recursive", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "yes", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Perform a recursive search in the header container IP address." - } - ] - }, - "REAL_IP_FROM_URLS": { - "context": "global", - "default": "", - "help": "List of URLs containing trusted IPs / networks, separated with spaces, where proxied requests come from.", - "id": "real-ip-from-urls", - "label": "Real IP from URLs", - "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - "type": "text", - "containerClass": "z-0", - "pattern": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - "inpType": "input", - "name": "Real IP from URLs", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "List of URLs containing trusted IPs / networks, separated with spaces, where proxied requests come from." - } - ] - } - }, - "checksum": null - }, - { - "id": "redirect", - "stream": "no", - "name": "Redirect", - "description": "Manage HTTP redirects.", - "version": "1.0", - "type": "core", - "method": "manual", - "page": false, - "settings": { - "REDIRECT_TO": { - "context": "multisite", - "default": "", - "help": "Redirect a whole site to another one.", - "id": "redirect-to", - "label": "Redirect to", - "regex": "^(https?:\\/\\/[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)?$", - "type": "text", - "containerClass": "z-2", - "pattern": "^(https?:\\/\\/[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)?$", - "inpType": "input", - "name": "Redirect to", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Redirect a whole site to another one." - } - ] - }, - "REDIRECT_TO_REQUEST_URI": { - "context": "multisite", - "default": "no", - "help": "Append the requested URI to the redirect address.", - "id": "redirect-to-request-uri", - "label": "Append request URI", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-1", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Append request URI", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "no", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Append the requested URI to the redirect address." - } - ] - }, - "REDIRECT_TO_STATUS_CODE": { - "context": "multisite", - "default": "301", - "help": "Status code to send to client when redirecting.", - "id": "redirect-to-status-code", - "label": "Append request URI", - "regex": "^(301|302)$", - "type": "select", - "containerClass": "z-0", - "pattern": "^(301|302)$", - "inpType": "select", - "name": "Append request URI", - "values": [ - "301", - "302" - ], - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "301", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Status code to send to client when redirecting." - } - ] - } - }, - "checksum": null - }, - { - "id": "redis", - "stream": "yes", - "name": "Redis", - "description": "Redis server configuration when using BunkerWeb in cluster mode.", - "version": "1.0", - "type": "core", - "method": "manual", - "page": true, - "settings": { - "USE_REDIS": { - "context": "global", - "default": "no", - "help": "Activate Redis.", - "id": "use-redis", - "label": "Activate Redis", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-14", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Activate Redis", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "no", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Activate Redis." - } - ] - }, - "REDIS_HOST": { - "context": "global", - "default": "", - "help": "Redis server IP or hostname.", - "id": "redis-host", - "label": "Redis server", - "regex": "^((?!-)[a-zA-Z0-9\\-]{1,63}(.[a-zA-Z]{2,})+|(\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3}|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)))?$", - "type": "text", - "containerClass": "z-13", - "pattern": "^((?!-)[a-zA-Z0-9\\-]{1,63}(.[a-zA-Z]{2,})+|(\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3}|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)))?$", - "inpType": "input", - "name": "Redis server", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Redis server IP or hostname." - } - ] - }, - "REDIS_PORT": { - "context": "global", - "default": "6379", - "help": "Redis server port.", - "id": "redis-port", - "label": "Redis port", - "regex": "^[0-9]+$", - "type": "text", - "containerClass": "z-12", - "pattern": "^[0-9]+$", - "inpType": "input", - "name": "Redis port", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "6379", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Redis server port." - } - ] - }, - "REDIS_DATABASE": { - "context": "global", - "default": "0", - "help": "Redis database number.", - "id": "redis-database", - "label": "Redis database", - "regex": "^[0-9]+$", - "type": "text", - "containerClass": "z-11", - "pattern": "^[0-9]+$", - "inpType": "input", - "name": "Redis database", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "0", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Redis database number." - } - ] - }, - "REDIS_SSL": { - "context": "global", - "default": "no", - "help": "Use SSL/TLS connection with Redis server.", - "id": "redis-ssl", - "label": "Redis SSL/TLS", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-10", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Redis SSL/TLS", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "no", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Use SSL/TLS connection with Redis server." - } - ] - }, - "REDIS_SSL_VERIFY": { - "context": "global", - "default": "no", - "help": "Verify the certificate of Redis server.", - "id": "redis-ssl-verify", - "label": "Redis SSL/TLS verify", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-9", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Redis SSL/TLS verify", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "no", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Verify the certificate of Redis server." - } - ] - }, - "REDIS_TIMEOUT": { - "context": "global", - "default": "1000", - "help": "Redis server timeout (in ms) for connect, read and write.", - "id": "redis-timeout", - "label": "Redis timeout (ms)", - "regex": "^[0-9]+$", - "type": "text", - "containerClass": "z-8", - "pattern": "^[0-9]+$", - "inpType": "input", - "name": "Redis timeout (ms)", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "1000", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Redis server timeout (in ms) for connect, read and write." - } - ] - }, - "REDIS_USERNAME": { - "context": "global", - "default": "", - "help": "Redis username used in AUTH command.", - "id": "redis-username", - "label": "Redis username", - "regex": "^.*$", - "type": "text", - "containerClass": "z-7", - "pattern": "^.*$", - "inpType": "input", - "name": "Redis username", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Redis username used in AUTH command." - } - ] - }, - "REDIS_PASSWORD": { - "context": "global", - "default": "", - "help": "Redis password used in AUTH command.", - "id": "redis-password", - "label": "Redis password", - "regex": "^.*$", - "type": "password", - "containerClass": "z-6", - "pattern": "^.*$", - "inpType": "input", - "name": "Redis password", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Redis password used in AUTH command." - } - ] - }, - "REDIS_SENTINEL_HOSTS": { - "context": "global", - "default": "", - "help": "Redis sentinel hosts with format host:[port] separated with spaces.", - "id": "redis-sentinel-hosts", - "label": "Redis sentinel hosts", - "regex": "^.*$", - "type": "text", - "containerClass": "z-5", - "pattern": "^.*$", - "inpType": "input", - "name": "Redis sentinel hosts", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Redis sentinel hosts with format host:[port] separated with spaces." - } - ] - }, - "REDIS_SENTINEL_USERNAME": { - "context": "global", - "default": "", - "help": "Redis sentinel username.", - "id": "redis-sentinel-username", - "label": "Redis sentinel username", - "regex": "^.*$", - "type": "text", - "containerClass": "z-4", - "pattern": "^.*$", - "inpType": "input", - "name": "Redis sentinel username", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Redis sentinel username." - } - ] - }, - "REDIS_SENTINEL_PASSWORD": { - "context": "global", - "default": "", - "help": "Redis sentinel password.", - "id": "redis-sentinel-password", - "label": "Redis sentinel password", - "regex": "^.*$", - "type": "password", - "containerClass": "z-3", - "pattern": "^.*$", - "inpType": "input", - "name": "Redis sentinel password", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Redis sentinel password." - } - ] - }, - "REDIS_SENTINEL_MASTER": { - "context": "global", - "default": "", - "help": "Redis sentinel master name.", - "id": "redis-sentinel-master", - "label": "Redis sentinel master", - "regex": "^.*$", - "type": "text", - "containerClass": "z-2", - "pattern": "^.*$", - "inpType": "input", - "name": "Redis sentinel master", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Redis sentinel master name." - } - ] - }, - "REDIS_KEEPALIVE_IDLE": { - "context": "global", - "default": "30000", - "help": "Max idle time (in ms) before closing redis connection in the pool.", - "id": "redis-keepalive-idle", - "label": "Redis keepalive idle (ms)", - "regex": "^[0-9]+$", - "type": "text", - "containerClass": "z-1", - "pattern": "^[0-9]+$", - "inpType": "input", - "name": "Redis keepalive idle (ms)", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "30000", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Max idle time (in ms) before closing redis connection in the pool." - } - ] - }, - "REDIS_KEEPALIVE_POOL": { - "context": "global", - "default": "10", - "help": "Max number of redis connection(s) kept in the pool.", - "id": "redis-keepalive-pool", - "label": "Redis keepalive pool", - "regex": "^[0-9]+$", - "type": "text", - "containerClass": "z-0", - "pattern": "^[0-9]+$", - "inpType": "input", - "name": "Redis keepalive pool", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "10", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Max number of redis connection(s) kept in the pool." - } - ] - } - }, - "checksum": null - }, - { - "id": "reverseproxy", - "stream": "partial", - "name": "Reverse proxy", - "description": "Manage reverse proxy configurations.", - "version": "1.0", - "type": "core", - "method": "manual", - "page": false, - "settings": { - "USE_REVERSE_PROXY": { - "context": "multisite", - "default": "no", - "help": "Activate reverse proxy mode.", - "id": "use-reverse-proxy", - "label": "Use reverse proxy", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-26", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Use reverse proxy", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "no", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Activate reverse proxy mode." - } - ] - }, - "REVERSE_PROXY_INTERCEPT_ERRORS": { - "context": "multisite", - "default": "yes", - "help": "Intercept and rewrite errors.", - "id": "reverse-proxy-intercept-errors", - "label": "Intercept errors", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-25", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Intercept errors", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "yes", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Intercept and rewrite errors." - } - ] - }, - "REVERSE_PROXY_CUSTOM_HOST": { - "context": "multisite", - "default": "", - "help": "Override Host header sent to upstream server.", - "id": "reverse-proxy-custom-host", - "label": "Reverse proxy custom host", - "regex": "^.*$", - "type": "text", - "containerClass": "z-24", - "pattern": "^.*$", - "inpType": "input", - "name": "Reverse proxy custom host", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Override Host header sent to upstream server." - } - ] - }, - "REVERSE_PROXY_HOST": { - "context": "multisite", - "default": "", - "help": "Full URL of the proxied resource (proxy_pass).", - "id": "reverse-proxy-host", - "label": "Reverse proxy host", - "regex": "^.*$", - "type": "text", - "multiple": "reverse-proxy", - "containerClass": "z-23", - "pattern": "^.*$", - "inpType": "input", - "name": "Reverse proxy host", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Full URL of the proxied resource (proxy_pass)." - } - ] - }, - "REVERSE_PROXY_URL": { - "context": "multisite", - "default": "/", - "help": "Location URL that will be proxied.", - "id": "reverse-proxy-url", - "label": "Reverse proxy url", - "regex": "^.*$", - "type": "text", - "multiple": "reverse-proxy", - "containerClass": "z-22", - "pattern": "^.*$", - "inpType": "input", - "name": "Reverse proxy url", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "/", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Location URL that will be proxied." - } - ] - }, - "REVERSE_PROXY_WS": { - "context": "multisite", - "default": "no", - "help": "Enable websocket on the proxied resource.", - "id": "reverse-proxy-ws", - "label": "Reverse proxy WS", - "regex": "^(yes|no)$", - "type": "check", - "multiple": "reverse-proxy", - "containerClass": "z-21", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Reverse proxy WS", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "no", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Enable websocket on the proxied resource." - } - ] - }, - "REVERSE_PROXY_HEADERS": { - "context": "multisite", - "default": "", - "help": "List of HTTP headers to send to proxied resource separated with semicolons (values for proxy_set_header directive).", - "id": "reverse-proxy-headers", - "label": "Reverse proxy headers", - "regex": "^(?![; ])(;? ?([\\w\\-]+)(?!.*\\2 ) [^;]+)*$", - "type": "text", - "multiple": "reverse-proxy", - "containerClass": "z-20", - "pattern": "^(?![; ])(;? ?([\\w\\-]+)(?!.*\\2 ) [^;]+)*$", - "inpType": "input", - "name": "Reverse proxy headers", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "List of HTTP headers to send to proxied resource separated with semicolons (values for proxy_set_header directive)." - } - ] - }, - "REVERSE_PROXY_HEADERS_CLIENT": { - "context": "multisite", - "default": "", - "help": "List of HTTP headers to send to client separated with semicolons (values for add_header directive).", - "id": "reverse-proxy-headers-client", - "label": "Reverse proxy headers-client", - "regex": "^(?![; ])(;? ?([\\w\\-]+)(?!.*\\2 ) [^;]+)*$", - "type": "text", - "multiple": "reverse-proxy", - "containerClass": "z-19", - "pattern": "^(?![; ])(;? ?([\\w\\-]+)(?!.*\\2 ) [^;]+)*$", - "inpType": "input", - "name": "Reverse proxy headers-client", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "List of HTTP headers to send to client separated with semicolons (values for add_header directive)." - } - ] - }, - "REVERSE_PROXY_BUFFERING": { - "context": "multisite", - "default": "yes", - "help": "Enable or disable buffering of responses from proxied resource.", - "id": "reverse-proxy-buffering", - "label": "Reverse proxy buffering", - "regex": "^(yes|no)$", - "type": "check", - "multiple": "reverse-proxy", - "containerClass": "z-18", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Reverse proxy buffering", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "yes", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Enable or disable buffering of responses from proxied resource." - } - ] - }, - "REVERSE_PROXY_KEEPALIVE": { - "context": "multisite", - "default": "no", - "help": "Enable or disable keepalive connections with the proxied resource.", - "id": "reverse-proxy-keepalive", - "label": "Reverse proxy keepalive", - "regex": "^(yes|no)$", - "type": "check", - "multiple": "reverse-proxy", - "containerClass": "z-17", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Reverse proxy keepalive", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "no", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Enable or disable keepalive connections with the proxied resource." - } - ] - }, - "REVERSE_PROXY_AUTH_REQUEST": { - "context": "multisite", - "default": "", - "help": "Enable authentication using an external provider (value of auth_request directive).", - "id": "reverse-proxy-auth-request", - "label": "Reverse proxy auth request", - "regex": "^(\\/[\\w\\].~:\\/?#\\[@!$\\&'\\(\\)*+,;=\\-]*|off)?$", - "type": "text", - "multiple": "reverse-proxy", - "containerClass": "z-16", - "pattern": "^(\\/[\\w\\].~:\\/?#\\[@!$\\&'\\(\\)*+,;=\\-]*|off)?$", - "inpType": "input", - "name": "Reverse proxy auth request", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Enable authentication using an external provider (value of auth_request directive)." - } - ] - }, - "REVERSE_PROXY_AUTH_REQUEST_SIGNIN_URL": { - "context": "multisite", - "default": "", - "help": "Redirect clients to sign-in URL when using REVERSE_PROXY_AUTH_REQUEST (used when auth_request call returned 401).", - "id": "reverse-proxy-auth-request-signin-url", - "label": "Auth request signin URL", - "regex": "^(https?:\\/\\/[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)?$", - "type": "text", - "multiple": "reverse-proxy", - "containerClass": "z-15", - "pattern": "^(https?:\\/\\/[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)?$", - "inpType": "input", - "name": "Auth request signin URL", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Redirect clients to sign-in URL when using REVERSE_PROXY_AUTH_REQUEST (used when auth_request call returned 401)." - } - ] - }, - "REVERSE_PROXY_AUTH_REQUEST_SET": { - "context": "multisite", - "default": "", - "help": "List of variables to set from the authentication provider, separated with semicolons (values of auth_request_set directives).", - "id": "reverse-proxy-auth-request-set", - "label": "Reverse proxy auth request set", - "regex": "^(?! ;)(;? ?(\\$[a-z_\\-]+)(?!.*\\2 ) [^;]+)*$", - "type": "text", - "multiple": "reverse-proxy", - "containerClass": "z-14", - "pattern": "^(?! ;)(;? ?(\\$[a-z_\\-]+)(?!.*\\2 ) [^;]+)*$", - "inpType": "input", - "name": "Reverse proxy auth request set", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "List of variables to set from the authentication provider, separated with semicolons (values of auth_request_set directives)." - } - ] - }, - "REVERSE_PROXY_CONNECT_TIMEOUT": { - "context": "multisite", - "default": "60s", - "help": "Timeout when connecting to the proxied resource.", - "id": "reverse-proxy-connect-timeout", - "label": "Reverse proxy connect timeout", - "regex": "^\\d+(ms?|[shdwMy])$", - "type": "text", - "multiple": "reverse-proxy", - "containerClass": "z-13", - "pattern": "^\\d+(ms?|[shdwMy])$", - "inpType": "input", - "name": "Reverse proxy connect timeout", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "60s", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Timeout when connecting to the proxied resource." - } - ] - }, - "REVERSE_PROXY_READ_TIMEOUT": { - "context": "multisite", - "default": "60s", - "help": "Timeout when reading from the proxied resource.", - "id": "reverse-proxy-read-timeout", - "label": "Reverse proxy read timeout", - "regex": "^\\d+(ms?|[shdwMy])$", - "type": "text", - "multiple": "reverse-proxy", - "containerClass": "z-12", - "pattern": "^\\d+(ms?|[shdwMy])$", - "inpType": "input", - "name": "Reverse proxy read timeout", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "60s", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Timeout when reading from the proxied resource." - } - ] - }, - "REVERSE_PROXY_SEND_TIMEOUT": { - "context": "multisite", - "default": "60s", - "help": "Timeout when sending to the proxied resource.", - "id": "reverse-proxy-send-timeout", - "label": "Reverse proxy send timeout", - "regex": "^\\d+(ms?|[shdwMy])$", - "type": "text", - "multiple": "reverse-proxy", - "containerClass": "z-11", - "pattern": "^\\d+(ms?|[shdwMy])$", - "inpType": "input", - "name": "Reverse proxy send timeout", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "60s", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Timeout when sending to the proxied resource." - } - ] - }, - "REVERSE_PROXY_INCLUDES": { - "context": "multisite", - "default": "", - "help": "Additional configuration to include in the location block, separated with spaces.", - "id": "reverse-proxy-includes", - "label": "Reverse proxy includes", - "regex": "^(?! )( ?(\\w+)(?!.*\\b\\2\\b))*$", - "type": "text", - "multiple": "reverse-proxy", - "containerClass": "z-10", - "pattern": "^(?! )( ?(\\w+)(?!.*\\b\\2\\b))*$", - "inpType": "input", - "name": "Reverse proxy includes", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Additional configuration to include in the location block, separated with spaces." - } - ] - }, - "USE_PROXY_CACHE": { - "context": "multisite", - "default": "no", - "help": "Enable or disable caching of the proxied resources.", - "id": "use-proxy-cache", - "label": "Reverse proxy cache", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-9", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Reverse proxy cache", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "no", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Enable or disable caching of the proxied resources." - } - ] - }, - "PROXY_CACHE_PATH_LEVELS": { - "context": "global", - "default": "1:2", - "help": "Hierarchy levels of the cache.", - "id": "proxy-cache-path-levels", - "label": "Hierarchy levels", - "regex": "^(:?[12]){1,3}$", - "type": "text", - "containerClass": "z-8", - "pattern": "^(:?[12]){1,3}$", - "inpType": "input", - "name": "Hierarchy levels", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "1:2", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Hierarchy levels of the cache." - } - ] - }, - "PROXY_CACHE_PATH_ZONE_SIZE": { - "context": "global", - "default": "10m", - "help": "Maximum size of cached metadata when caching proxied resources.", - "id": "proxy-cache-path-zone-size", - "label": "Reverse proxy cache zone size", - "regex": "^\\d+[kKmMgG]?$", - "type": "text", - "containerClass": "z-7", - "pattern": "^\\d+[kKmMgG]?$", - "inpType": "input", - "name": "Reverse proxy cache zone size", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "10m", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Maximum size of cached metadata when caching proxied resources." - } - ] - }, - "PROXY_CACHE_PATH_PARAMS": { - "context": "global", - "default": "max_size=100m", - "help": "Additional parameters to add to the proxy_cache directive.", - "id": "proxy-cache-path-params", - "label": "Reverse proxy cache params", - "regex": "^.*$", - "type": "text", - "containerClass": "z-6", - "pattern": "^.*$", - "inpType": "input", - "name": "Reverse proxy cache params", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "max_size=100m", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Additional parameters to add to the proxy_cache directive." - } - ] - }, - "PROXY_CACHE_METHODS": { - "context": "multisite", - "default": "GET HEAD", - "help": "HTTP methods that should trigger a cache operation.", - "id": "proxy-cache-methods", - "label": "Reverse proxy cache methods", - "regex": "^(?! )( ?(GET|HEAD|POST|PUT|DELETE|CONNECT|OPTIONS|TRACE|PATCH)(?!.*\\2))+$", - "type": "text", - "containerClass": "z-5", - "pattern": "^(?! )( ?(GET|HEAD|POST|PUT|DELETE|CONNECT|OPTIONS|TRACE|PATCH)(?!.*\\2))+$", - "inpType": "input", - "name": "Reverse proxy cache methods", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "GET HEAD", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "HTTP methods that should trigger a cache operation." - } - ] - }, - "PROXY_CACHE_MIN_USES": { - "context": "multisite", - "default": "2", - "help": "The minimum number of requests before a response is cached.", - "id": "proxy-cache-min-uses", - "label": "Reverse proxy cache minimum uses", - "regex": "^[1-9]\\d*$", - "type": "text", - "containerClass": "z-4", - "pattern": "^[1-9]\\d*$", - "inpType": "input", - "name": "Reverse proxy cache minimum uses", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "2", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "The minimum number of requests before a response is cached." - } - ] - }, - "PROXY_CACHE_KEY": { - "context": "multisite", - "default": "$scheme$host$request_uri", - "help": "The key used to uniquely identify a cached response.", - "id": "proxy-cache-key", - "label": "Reverse proxy cache key", - "regex": "^(?! )( ?(\\$[a-z_]+)(?!.*\\2))+$", - "type": "text", - "containerClass": "z-3", - "pattern": "^(?! )( ?(\\$[a-z_]+)(?!.*\\2))+$", - "inpType": "input", - "name": "Reverse proxy cache key", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "$scheme$host$request_uri", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "The key used to uniquely identify a cached response." - } - ] - }, - "PROXY_CACHE_VALID": { - "context": "multisite", - "default": "200=24h 301=1h 302=24h", - "help": "Define the caching time depending on the HTTP status code (list of status=time), separated with spaces.", - "id": "proxy-cache-valid", - "label": "Reverse proxy cache valid", - "regex": "^(?! )( ?([1-5]\\d{2})(?!.*\\2=)=\\d+(ms?|[shdwMy]))*$", - "type": "text", - "containerClass": "z-2", - "pattern": "^(?! )( ?([1-5]\\d{2})(?!.*\\2=)=\\d+(ms?|[shdwMy]))*$", - "inpType": "input", - "name": "Reverse proxy cache valid", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "200=24h 301=1h 302=24h", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Define the caching time depending on the HTTP status code (list of status=time), separated with spaces." - } - ] - }, - "PROXY_NO_CACHE": { - "context": "multisite", - "default": "$http_pragma $http_authorization", - "help": "Conditions to disable caching of responses.", - "id": "proxy-no-cache", - "label": "Reverse proxy no cache", - "regex": "^.*$", - "type": "text", - "containerClass": "z-1", - "pattern": "^.*$", - "inpType": "input", - "name": "Reverse proxy no cache", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "$http_pragma $http_authorization", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Conditions to disable caching of responses." - } - ] - }, - "PROXY_CACHE_BYPASS": { - "context": "multisite", - "default": "0", - "help": "Conditions to bypass caching of responses.", - "id": "proxy-cache-bypass", - "label": "Reverse proxy bypass", - "regex": "^.*$", - "type": "text", - "containerClass": "z-0", - "pattern": "^.*$", - "inpType": "input", - "name": "Reverse proxy bypass", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "0", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Conditions to bypass caching of responses." - } - ] - } - }, - "checksum": null - }, - { - "id": "reversescan", - "stream": "yes", - "name": "Reverse scan", - "description": "Scan clients ports to detect proxies or servers.", - "version": "1.0", - "type": "core", - "method": "manual", - "page": true, - "settings": { - "USE_REVERSE_SCAN": { - "context": "multisite", - "default": "no", - "help": "Enable scanning of clients ports and deny access if one is opened.", - "id": "use-reverse-scan", - "label": "Reverse scan", - "regex": "^(no|yes)$", - "type": "check", - "containerClass": "z-2", - "pattern": "^(no|yes)$", - "inpType": "checkbox", - "name": "Reverse scan", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "no", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Enable scanning of clients ports and deny access if one is opened." - } - ] - }, - "REVERSE_SCAN_PORTS": { - "context": "multisite", - "default": "22 80 443 3128 8000 8080", - "help": "List of port to scan when using reverse scan feature.", - "id": "reverse-scan-ports", - "label": "Reverse scan ports", - "regex": "^.*$", - "type": "text", - "containerClass": "z-1", - "pattern": "^.*$", - "inpType": "input", - "name": "Reverse scan ports", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "22 80 443 3128 8000 8080", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "List of port to scan when using reverse scan feature." - } - ] - }, - "REVERSE_SCAN_TIMEOUT": { - "context": "multisite", - "default": "500", - "help": "Specify the maximum timeout (in ms) when scanning a port.", - "id": "reverse-scan-timeout", - "label": "Reverse scan timeout", - "regex": "^.*$", - "type": "text", - "containerClass": "z-0", - "pattern": "^.*$", - "inpType": "input", - "name": "Reverse scan timeout", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "500", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Specify the maximum timeout (in ms) when scanning a port." - } - ] - } - }, - "checksum": null - }, - { - "id": "selfsigned", - "stream": "yes", - "name": "Self-signed certificate", - "description": "Generate self-signed certificate.", - "version": "1.0", - "type": "core", - "method": "manual", - "page": false, - "settings": { - "GENERATE_SELF_SIGNED_SSL": { - "context": "multisite", - "default": "no", - "help": "Generate and use self-signed certificate.", - "id": "generate-self-signed-ssl", - "label": "Activate self-signed certificate", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-2", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Activate self-signed certificate", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "no", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Generate and use self-signed certificate." - } - ] - }, - "SELF_SIGNED_SSL_EXPIRY": { - "context": "multisite", - "default": "365", - "help": "Self-signed certificate expiry in days.", - "id": "self-signed-ssl-expiry", - "label": "Certificate expiry", - "regex": "^\\d+$", - "type": "text", - "containerClass": "z-1", - "pattern": "^\\d+$", - "inpType": "input", - "name": "Certificate expiry", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "365", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Self-signed certificate expiry in days." - } - ] - }, - "SELF_SIGNED_SSL_SUBJ": { - "context": "multisite", - "default": "/CN=www.example.com/", - "help": "Self-signed certificate subject.", - "id": "self-signed-ssl-subj", - "label": "Certificate subject", - "regex": "^/CN=[^,]+$", - "type": "text", - "containerClass": "z-0", - "pattern": "^/CN=[^,]+$", - "inpType": "input", - "name": "Certificate subject", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "/CN=www.example.com/", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Self-signed certificate subject." - } - ] - } - }, - "checksum": null - }, - { - "id": "sessions", - "stream": "yes", - "name": "Sessions", - "description": "Management of session used by other plugins.", - "version": "1.0", - "type": "core", - "method": "manual", - "page": false, - "settings": { - "SESSIONS_SECRET": { - "context": "global", - "default": "random", - "help": "Secret used to encrypt sessions variables for storing data related to challenges.", - "id": "session-secret", - "label": "Sessions secret", - "regex": "^\\w+$", - "type": "password", - "containerClass": "z-6", - "pattern": "^\\w+$", - "inpType": "input", - "name": "Sessions secret", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "random", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Secret used to encrypt sessions variables for storing data related to challenges." - } - ] - }, - "SESSIONS_NAME": { - "context": "global", - "default": "random", - "help": "Name of the cookie given to clients.", - "id": "sessions-name", - "label": "Sessions name", - "regex": "^\\w+$", - "type": "text", - "containerClass": "z-5", - "pattern": "^\\w+$", - "inpType": "input", - "name": "Sessions name", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "random", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Name of the cookie given to clients." - } - ] - }, - "SESSIONS_IDLING_TIMEOUT": { - "context": "global", - "default": "1800", - "help": "Maximum time (in seconds) of inactivity before the session is invalidated.", - "id": "sessions-idling-timeout", - "label": "Sessions idling timeout", - "regex": "^\\d+$", - "type": "text", - "containerClass": "z-4", - "pattern": "^\\d+$", - "inpType": "input", - "name": "Sessions idling timeout", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "1800", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Maximum time (in seconds) of inactivity before the session is invalidated." - } - ] - }, - "SESSIONS_ROLLING_TIMEOUT": { - "context": "global", - "default": "3600", - "help": "Maximum time (in seconds) before a session must be renewed.", - "id": "sessions-rolling-timeout", - "label": "Sessions rolling timeout", - "regex": "^\\d+$", - "type": "text", - "containerClass": "z-3", - "pattern": "^\\d+$", - "inpType": "input", - "name": "Sessions rolling timeout", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "3600", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Maximum time (in seconds) before a session must be renewed." - } - ] - }, - "SESSIONS_ABSOLUTE_TIMEOUT": { - "context": "global", - "default": "86400", - "help": "Maximum time (in seconds) before a session is destroyed.", - "id": "sessions-absolute-timeout", - "label": "Sessions absolute timeout", - "regex": "^\\d+$", - "type": "text", - "containerClass": "z-2", - "pattern": "^\\d+$", - "inpType": "input", - "name": "Sessions absolute timeout", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "86400", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Maximum time (in seconds) before a session is destroyed." - } - ] - }, - "SESSIONS_CHECK_IP": { - "context": "global", - "default": "yes", - "help": "Destroy session if IP address is different than original one.", - "id": "sessions-check-ip", - "label": "Sessions check IP", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-1", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Sessions check IP", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "yes", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Destroy session if IP address is different than original one." - } - ] - }, - "SESSIONS_CHECK_USER_AGENT": { - "context": "global", - "default": "yes", - "help": "Destroy session if User-Agent is different than original one.", - "id": "sessions-user-agent", - "label": "Sessions check User-Agent", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-0", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Sessions check User-Agent", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "yes", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Destroy session if User-Agent is different than original one." - } - ] - } - }, - "checksum": null - }, - { - "id": "ui", - "stream": "no", - "name": "UI", - "description": "Integrate easily the BunkerWeb UI.", - "version": "1.0", - "type": "core", - "method": "manual", - "page": false, - "settings": { - "USE_UI": { - "context": "multisite", - "default": "no", - "help": "Use UI", - "id": "use-ui", - "label": "Use UI", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-1", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Use UI", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "yes", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Use UI" - } - ] - }, - "UI_HOST": { - "context": "global", - "default": "", - "help": "Address of the web UI used for initial setup", - "id": "ui-host", - "label": "UI host", - "regex": "^.*$", - "type": "text", - "containerClass": "z-0", - "pattern": "^.*$", - "inpType": "input", - "name": "UI host", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "Address of the web UI used for initial setup" - } - ] - } - }, - "checksum": null - }, - { - "id": "whitelist", - "stream": "partial", - "name": "Whitelist", - "description": "Allow access based on internal and external IP/network/rDNS/ASN whitelists.", - "version": "1.0", - "type": "core", - "method": "manual", - "page": true, - "settings": { - "USE_WHITELIST": { - "context": "multisite", - "default": "yes", - "help": "Activate whitelist feature.", - "id": "use-whitelist", - "label": "Activate whitelisting", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-11", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Activate whitelisting", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "yes", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Activate whitelist feature." - } - ] - }, - "WHITELIST_IP": { - "context": "multisite", - "default": "20.191.45.212 40.88.21.235 40.76.173.151 40.76.163.7 20.185.79.47 52.142.26.175 20.185.79.15 52.142.24.149 40.76.162.208 40.76.163.23 40.76.162.191 40.76.162.247", - "help": "List of IP/network, separated with spaces, to put into the whitelist.", - "id": "whitelist-ip", - "label": "Whitelist IP/network", - "regex": "^(?! )( *(((\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3})(\\/([1-2][0-9]?|3[0-2]?|[04-9]))?|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d))(\\/(12[0-8]|1[01][0-9]|[0-9][0-9]?))?)(?!.*\\D\\2([^\\d\\/]|$)) *)*$", - "type": "text", - "containerClass": "z-10", - "pattern": "^(?! )( *(((\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3})(\\/([1-2][0-9]?|3[0-2]?|[04-9]))?|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d))(\\/(12[0-8]|1[01][0-9]|[0-9][0-9]?))?)(?!.*\\D\\2([^\\d\\/]|$)) *)*$", - "inpType": "input", - "name": "Whitelist IP/network", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "20.191.45.212 40.88.21.235 40.76.173.151 40.76.163.7 20.185.79.47 52.142.26.175 20.185.79.15 52.142.24.149 40.76.162.208 40.76.163.23 40.76.162.191 40.76.162.247", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "List of IP/network, separated with spaces, to put into the whitelist." - } - ] - }, - "WHITELIST_RDNS": { - "context": "multisite", - "default": ".google.com .googlebot.com .yandex.ru .yandex.net .yandex.com .search.msn.com .baidu.com .baidu.jp .crawl.yahoo.net .fwd.linkedin.com .twitter.com .twttr.com .discord.com", - "help": "List of reverse DNS suffixes, separated with spaces, to whitelist.", - "id": "whitelist-rdns", - "label": "Whitelist reverse DNS", - "regex": "^( *(([^ ]+)(?!.*\\3( |$))) *)*$", - "type": "text", - "containerClass": "z-9", - "pattern": "^( *(([^ ]+)(?!.*\\3( |$))) *)*$", - "inpType": "input", - "name": "Whitelist reverse DNS", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": ".google.com .googlebot.com .yandex.ru .yandex.net .yandex.com .search.msn.com .baidu.com .baidu.jp .crawl.yahoo.net .fwd.linkedin.com .twitter.com .twttr.com .discord.com", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "List of reverse DNS suffixes, separated with spaces, to whitelist." - } - ] - }, - "WHITELIST_RDNS_GLOBAL": { - "context": "multisite", - "default": "yes", - "help": "Only perform RDNS whitelist checks on global IP addresses.", - "id": "whitelist-rdns-global", - "label": "Whitelist reverse DNS global IPs", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-8", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Whitelist reverse DNS global IPs", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "yes", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Only perform RDNS whitelist checks on global IP addresses." - } - ] - }, - "WHITELIST_ASN": { - "context": "multisite", - "default": "32934", - "help": "List of ASN numbers, separated with spaces, to whitelist.", - "id": "whitelist-asn", - "label": "Whitelist ASN", - "regex": "^^( *((ASN?)?(\\d+)\\b(?!.*[SN ]\\4\\b)) *)*$", - "type": "text", - "containerClass": "z-7", - "pattern": "^^( *((ASN?)?(\\d+)\\b(?!.*[SN ]\\4\\b)) *)*$", - "inpType": "input", - "name": "Whitelist ASN", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "32934", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "List of ASN numbers, separated with spaces, to whitelist." - } - ] - }, - "WHITELIST_USER_AGENT": { - "context": "multisite", - "default": "", - "help": "List of User-Agent (PCRE regex), separated with spaces, to whitelist.", - "id": "whitelist-user-agent", - "label": "Whitelist User-Agent", - "regex": "^.*$", - "type": "text", - "containerClass": "z-6", - "pattern": "^.*$", - "inpType": "input", - "name": "Whitelist User-Agent", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "List of User-Agent (PCRE regex), separated with spaces, to whitelist." - } - ] - }, - "WHITELIST_URI": { - "context": "multisite", - "default": "", - "help": "List of URI (PCRE regex), separated with spaces, to whitelist.", - "id": "whitelist-uri", - "label": "Whitelist URI", - "regex": "^( *(.*)(?!.*\\2(?!.)) *)*$", - "type": "text", - "containerClass": "z-5", - "pattern": "^( *(.*)(?!.*\\2(?!.)) *)*$", - "inpType": "input", - "name": "Whitelist URI", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "List of URI (PCRE regex), separated with spaces, to whitelist." - } - ] - }, - "WHITELIST_IP_URLS": { - "context": "global", - "default": "", - "help": "List of URLs, separated with spaces, containing good IP/network to whitelist.", - "id": "whitelist-ip-urls", - "label": "Whitelist IP/network URLs", - "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - "type": "text", - "containerClass": "z-4", - "pattern": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - "inpType": "input", - "name": "Whitelist IP/network URLs", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "List of URLs, separated with spaces, containing good IP/network to whitelist." - } - ] - }, - "WHITELIST_RDNS_URLS": { - "context": "global", - "default": "", - "help": "List of URLs, separated with spaces, containing reverse DNS suffixes to whitelist.", - "id": "whitelist-rdns-urls", - "label": "Whitelist reverse DNS URLs", - "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - "type": "text", - "containerClass": "z-3", - "pattern": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - "inpType": "input", - "name": "Whitelist reverse DNS URLs", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "List of URLs, separated with spaces, containing reverse DNS suffixes to whitelist." - } - ] - }, - "WHITELIST_ASN_URLS": { - "context": "global", - "default": "", - "help": "List of URLs, separated with spaces, containing ASN to whitelist.", - "id": "whitelist-asn-urls", - "label": "Whitelist ASN URLs", - "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - "type": "text", - "containerClass": "z-2", - "pattern": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - "inpType": "input", - "name": "Whitelist ASN URLs", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "List of URLs, separated with spaces, containing ASN to whitelist." - } - ] - }, - "WHITELIST_USER_AGENT_URLS": { - "context": "global", - "default": "", - "help": "List of URLs, separated with spaces, containing good User-Agent to whitelist.", - "id": "whitelist-user-agent-urls", - "label": "Whitelist User-Agent URLs", - "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - "type": "text", - "containerClass": "z-1", - "pattern": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - "inpType": "input", - "name": "Whitelist User-Agent URLs", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "List of URLs, separated with spaces, containing good User-Agent to whitelist." - } - ] - }, - "WHITELIST_URI_URLS": { - "context": "global", - "default": "", - "help": "List of URLs, separated with spaces, containing bad URI to whitelist.", - "id": "whitelist-uri-urls", - "label": "Whitelist URI URLs", - "regex": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - "type": "text", - "containerClass": "z-0", - "pattern": "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - "inpType": "input", - "name": "Whitelist URI URLs", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "", - "popovers": [ - { - "iconName": "globe", - "text": "inp_popover_global" - }, - { - "iconName": "info", - "text": "List of URLs, separated with spaces, containing bad URI to whitelist." - } - ] - } - }, - "checksum": null - } - ] - }, - "easy": { - "default": [ - { - "title": "Title 1", - "subtitle": "subtitle 1", - "settings": { - "USE_UI": { - "context": "multisite", - "default": "no", - "help": "Use UI", - "id": "use-ui", - "label": "Use UI", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-1", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Use UI", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "yes", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Use UI" - } - ] - }, - "USE_CORS": { - "context": "multisite", - "default": "no", - "help": "Use CORS", - "id": "use-cors", - "label": "Use CORS", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-0", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Use CORS", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": true, - "value": "yes", - "popovers": [ - { - "iconName": "trespass", - "text": "inp_popover_method_disabled" - }, - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Use CORS" - } - ] - } - } - }, - { - "title": "Title 2", - "subtitle": "subtitle 2", - "settings": { - "USE_UI": { - "context": "multisite", - "default": "no", - "help": "Use UI", - "id": "use-ui", - "label": "Use UI", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-1", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Use UI", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": false, - "value": "yes", - "popovers": [ - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Use UI" - } - ] - }, - "USE_CORS": { - "context": "multisite", - "default": "no", - "help": "Use CORS", - "id": "use-cors", - "label": "Use CORS", - "regex": "^(yes|no)$", - "type": "check", - "containerClass": "z-0", - "pattern": "^(yes|no)$", - "inpType": "checkbox", - "name": "Use CORS", - "columns": { - "pc": 4, - "tablet": 6, - "mobile": 12 - }, - "disabled": true, - "value": "yes", - "popovers": [ - { - "iconName": "trespass", - "text": "inp_popover_method_disabled" - }, - { - "iconName": "disk", - "text": "inp_popover_multisite" - }, - { - "iconName": "info", - "text": "Use CORS" - } - ] - } - } - } - ] - }, - "raw": { - "default": { - "USE_GZIP": "dsfrgrdgrdgrdhgd", - "USE_UI": "yes" - } - } - } - } - } - ] - } -] \ No newline at end of file +W3sidHlwZSI6ICJjYXJkIiwgImNvbnRhaW5lckNvbHVtbnMiOiB7InBjIjogMTIsICJ0YWJsZXQiOiAxMiwgIm1vYmlsZSI6IDEyfSwgIndpZGdldHMiOiBbeyJ0eXBlIjogIlRpdGxlIiwgImRhdGEiOiB7InRpdGxlIjogImdsb2JhbF9jb25maWdfdGl0bGUiLCAidHlwZSI6ICJjb250YWluZXIifX0sIHsidHlwZSI6ICJTdWJ0aXRsZSIsICJkYXRhIjogeyJzdWJ0aXRsZSI6ICJnbG9iYWxfY29uZmlnX3N1YnRpdGxlIiwgInR5cGUiOiAiY29udGFpbmVyIn19LCB7InR5cGUiOiAiVGVtcGxhdGVzIiwgImRhdGEiOiB7InRlbXBsYXRlcyI6IHsiYWR2YW5jZWQiOiB7ImRlZmF1bHQiOiBbeyJpZCI6ICJnZW5lcmFsIiwgInN0cmVhbSI6ICJwYXJ0aWFsIiwgIm5hbWUiOiAiR2VuZXJhbCIsICJkZXNjcmlwdGlvbiI6ICJUaGUgZ2VuZXJhbCBzZXR0aW5ncyBmb3IgdGhlIHNlcnZlciIsICJ2ZXJzaW9uIjogIjAuMSIsICJ0eXBlIjogImNvcmUiLCAibWV0aG9kIjogIm1hbnVhbCIsICJwYWdlIjogZmFsc2UsICJzZXR0aW5ncyI6IHsiSVNfTE9BRElORyI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICJubyIsICJoZWxwIjogIkludGVybmFsIHVzZSA6IHNldCB0byB5ZXMgd2hlbiBCVyBpcyBsb2FkaW5nLiIsICJpZCI6ICJpbnRlcm5hbC11c2UtbG9hZGluZyIsICJsYWJlbCI6ICJpbnRlcm5hbCB1c2UgbG9hZGluZyIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei0zMyIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogImludGVybmFsIHVzZSBsb2FkaW5nIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAibm8iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJJbnRlcm5hbCB1c2UgOiBzZXQgdG8geWVzIHdoZW4gQlcgaXMgbG9hZGluZy4ifV19LCAiTkdJTlhfUFJFRklYIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIi9ldGMvbmdpbngvIiwgImhlbHAiOiAiV2hlcmUgbmdpbnggd2lsbCBzZWFyY2ggZm9yIGNvbmZpZ3VyYXRpb25zLiIsICJpZCI6ICJuZ2lueC1wcmVmaXgiLCAibGFiZWwiOiAibmdpbnggcHJlZml4IiwgInJlZ2V4IjogIl4oXFwvW1xcLVxcdy5cXHNdKykqXFwvJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0zMiIsICJwYXR0ZXJuIjogIl4oXFwvW1xcLVxcdy5cXHNdKykqXFwvJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAibmdpbnggcHJlZml4IiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiL2V0Yy9uZ2lueC8iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJXaGVyZSBuZ2lueCB3aWxsIHNlYXJjaCBmb3IgY29uZmlndXJhdGlvbnMuIn1dfSwgIkhUVFBfUE9SVCI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICI4MDgwIiwgImhlbHAiOiAiSFRUUCBwb3J0IG51bWJlciB3aGljaCBidW5rZXJ3ZWIgYmluZHMgdG8uIiwgImlkIjogImh0dHAtcG9ydCIsICJsYWJlbCI6ICJIVFRQIHBvcnQiLCAicmVnZXgiOiAiXlxcZCskIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTMxIiwgInBhdHRlcm4iOiAiXlxcZCskIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJIVFRQIHBvcnQiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICI4MDgwIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiSFRUUCBwb3J0IG51bWJlciB3aGljaCBidW5rZXJ3ZWIgYmluZHMgdG8uIn1dfSwgIkhUVFBTX1BPUlQiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAiODQ0MyIsICJoZWxwIjogIkhUVFBTIHBvcnQgbnVtYmVyIHdoaWNoIGJ1bmtlcndlYiBiaW5kcyB0by4iLCAiaWQiOiAiaHR0cHMtcG9ydCIsICJsYWJlbCI6ICJIVFRQUyBwb3J0IiwgInJlZ2V4IjogIl5cXGQrJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0zMCIsICJwYXR0ZXJuIjogIl5cXGQrJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiSFRUUFMgcG9ydCIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIjg0NDMiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJIVFRQUyBwb3J0IG51bWJlciB3aGljaCBidW5rZXJ3ZWIgYmluZHMgdG8uIn1dfSwgIk1VTFRJU0lURSI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICJubyIsICJoZWxwIjogIk11bHRpIHNpdGUgYWN0aXZhdGlvbi4iLCAiaWQiOiAibXVsdGlzaXRlIiwgImxhYmVsIjogIk11bHRpc2l0ZSIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei0yOSIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIk11bHRpc2l0ZSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIm5vIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTXVsdGkgc2l0ZSBhY3RpdmF0aW9uLiJ9XX0sICJTRVJWRVJfTkFNRSI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJ3d3cuZXhhbXBsZS5jb20iLCAiaGVscCI6ICJMaXN0IG9mIHRoZSB2aXJ0dWFsIGhvc3RzIHNlcnZlZCBieSBidW5rZXJ3ZWIuIiwgImlkIjogInNlcnZlci1uYW1lIiwgImxhYmVsIjogIlNlcnZlciBuYW1lIiwgInJlZ2V4IjogIl4oKFxcU3sxLDI1NX0pKD8hLipcXHNcXDIoXFxzfCQpKSk/KFxccyhcXFN7MSwyNTV9KSg/IS4qXFxzXFw1KFxcc3wkKSkpKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMjgiLCAicGF0dGVybiI6ICJeKChcXFN7MSwyNTV9KSg/IS4qXFxzXFwyKFxcc3wkKSkpPyhcXHMoXFxTezEsMjU1fSkoPyEuKlxcc1xcNShcXHN8JCkpKSokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJTZXJ2ZXIgbmFtZSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogInd3dy5leGFtcGxlLmNvbSIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTGlzdCBvZiB0aGUgdmlydHVhbCBob3N0cyBzZXJ2ZWQgYnkgYnVua2Vyd2ViLiJ9XX0sICJXT1JLRVJfUFJPQ0VTU0VTIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogImF1dG8iLCAiaGVscCI6ICJOdW1iZXIgb2Ygd29ya2VyIHByb2Nlc3Nlcy4iLCAiaWQiOiAid29ya2VyLXByb2Nlc3NlcyIsICJsYWJlbCI6ICJXb3JrZXIgcHJvY2Vzc2VzIiwgInJlZ2V4IjogIl4oYXV0b3xcXGQrKSQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMjciLCAicGF0dGVybiI6ICJeKGF1dG98XFxkKykkIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJXb3JrZXIgcHJvY2Vzc2VzIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiYXV0byIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIk51bWJlciBvZiB3b3JrZXIgcHJvY2Vzc2VzLiJ9XX0sICJXT1JLRVJfUkxJTUlUX05PRklMRSI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICIyMDQ4IiwgImhlbHAiOiAiTWF4aW11bSBudW1iZXIgb2Ygb3BlbiBmaWxlcyBmb3Igd29ya2VyIHByb2Nlc3Nlcy4iLCAiaWQiOiAid29ya2VyLXJsaW1pdC1ub2ZpbGUiLCAibGFiZWwiOiAiT3BlbiBmaWxlcyBwZXIgd29ya2VyIiwgInJlZ2V4IjogIl5cXGQrJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0yNiIsICJwYXR0ZXJuIjogIl5cXGQrJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiT3BlbiBmaWxlcyBwZXIgd29ya2VyIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiMjA0OCIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIk1heGltdW0gbnVtYmVyIG9mIG9wZW4gZmlsZXMgZm9yIHdvcmtlciBwcm9jZXNzZXMuIn1dfSwgIldPUktFUl9DT05ORUNUSU9OUyI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICIxMDI0IiwgImhlbHAiOiAiTWF4aW11bSBudW1iZXIgb2YgY29ubmVjdGlvbnMgcGVyIHdvcmtlci4iLCAiaWQiOiAid29ya2VyLWNvbm5lY3Rpb25zIiwgImxhYmVsIjogIkNvbm5lY3Rpb25zIHBlciB3b3JrZXIiLCAicmVnZXgiOiAiXlxcZCskIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTI1IiwgInBhdHRlcm4iOiAiXlxcZCskIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJDb25uZWN0aW9ucyBwZXIgd29ya2VyIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiMTAyNCIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIk1heGltdW0gbnVtYmVyIG9mIGNvbm5lY3Rpb25zIHBlciB3b3JrZXIuIn1dfSwgIkxPR19GT1JNQVQiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAiJGhvc3QgJHJlbW90ZV9hZGRyIC0gJHJlbW90ZV91c2VyIFskdGltZV9sb2NhbF0gXCIkcmVxdWVzdFwiICRzdGF0dXMgJGJvZHlfYnl0ZXNfc2VudCBcIiRodHRwX3JlZmVyZXJcIiBcIiRodHRwX3VzZXJfYWdlbnRcIiIsICJoZWxwIjogIlRoZSBmb3JtYXQgdG8gdXNlIGZvciBhY2Nlc3MgbG9ncy4iLCAiaWQiOiAibG9nLWZvcm1hdCIsICJsYWJlbCI6ICJMb2cgZm9ybWF0IiwgInJlZ2V4IjogIl4uKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMjQiLCAicGF0dGVybiI6ICJeLiokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJMb2cgZm9ybWF0IiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiJGhvc3QgJHJlbW90ZV9hZGRyIC0gJHJlbW90ZV91c2VyIFskdGltZV9sb2NhbF0gXCIkcmVxdWVzdFwiICRzdGF0dXMgJGJvZHlfYnl0ZXNfc2VudCBcIiRodHRwX3JlZmVyZXJcIiBcIiRodHRwX3VzZXJfYWdlbnRcIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlRoZSBmb3JtYXQgdG8gdXNlIGZvciBhY2Nlc3MgbG9ncy4ifV19LCAiTE9HX0xFVkVMIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIm5vdGljZSIsICJoZWxwIjogIlRoZSBsZXZlbCB0byB1c2UgZm9yIGVycm9yIGxvZ3MuIiwgImlkIjogImxvZy1sZXZlbCIsICJsYWJlbCI6ICJMb2cgbGV2ZWwiLCAicmVnZXgiOiAiXihkZWJ1Z3xpbmZvfG5vdGljZXx3YXJufGVycm9yfGNyaXR8YWxlcnR8ZW1lcmcpJCIsICJ0eXBlIjogInNlbGVjdCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTIzIiwgInBhdHRlcm4iOiAiXihkZWJ1Z3xpbmZvfG5vdGljZXx3YXJufGVycm9yfGNyaXR8YWxlcnR8ZW1lcmcpJCIsICJpbnBUeXBlIjogInNlbGVjdCIsICJuYW1lIjogIkxvZyBsZXZlbCIsICJ2YWx1ZXMiOiBbImFsZXJ0IiwgImNyaXQiLCAiZGVidWciLCAiZW1lcmciLCAiZXJyb3IiLCAiaW5mbyIsICJub3RpY2UiLCAid2FybiJdLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJub3RpY2UiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJUaGUgbGV2ZWwgdG8gdXNlIGZvciBlcnJvciBsb2dzLiJ9XX0sICJETlNfUkVTT0xWRVJTIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIjEyNy4wLjAuMTEiLCAiaGVscCI6ICJETlMgYWRkcmVzc2VzIG9mIHJlc29sdmVycyB0byB1c2UuIiwgImlkIjogImRucy1yZXNvbHZlcnMiLCAibGFiZWwiOiAiRE5TIHJlc29sdmVycyIsICJyZWdleCI6ICJeKD8hICkoKCAqW14gXSspKD8hLipcXDIpKSokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTIyIiwgInBhdHRlcm4iOiAiXig/ISApKCggKlteIF0rKSg/IS4qXFwyKSkqJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiRE5TIHJlc29sdmVycyIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIjEyNy4wLjAuMTEiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJETlMgYWRkcmVzc2VzIG9mIHJlc29sdmVycyB0byB1c2UuIn1dfSwgIkRBVEFTVE9SRV9NRU1PUllfU0laRSI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICI2NG0iLCAiaGVscCI6ICJTaXplIG9mIHRoZSBpbnRlcm5hbCBkYXRhc3RvcmUuIiwgImlkIjogImRhdGFzdG9yZS1tZW1vcnktc2l6ZSIsICJsYWJlbCI6ICJEYXRhc3RvcmUgbWVtb3J5IHNpemUiLCAicmVnZXgiOiAiXlxcZCtba0ttTWdHXT8kIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTIxIiwgInBhdHRlcm4iOiAiXlxcZCtba0ttTWdHXT8kIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJEYXRhc3RvcmUgbWVtb3J5IHNpemUiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICI2NG0iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJTaXplIG9mIHRoZSBpbnRlcm5hbCBkYXRhc3RvcmUuIn1dfSwgIkNBQ0hFU1RPUkVfTUVNT1JZX1NJWkUiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAiNjRtIiwgImhlbHAiOiAiU2l6ZSBvZiB0aGUgaW50ZXJuYWwgY2FjaGVzdG9yZS4iLCAiaWQiOiAiY2FjaGVzdG9yZS1tZW1vcnktc2l6ZSIsICJsYWJlbCI6ICJDYWNoZXN0b3JlIG1lbW9yeSBzaXplIiwgInJlZ2V4IjogIl5cXGQrW2tLbU1nR10/JCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0yMCIsICJwYXR0ZXJuIjogIl5cXGQrW2tLbU1nR10/JCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiQ2FjaGVzdG9yZSBtZW1vcnkgc2l6ZSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIjY0bSIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlNpemUgb2YgdGhlIGludGVybmFsIGNhY2hlc3RvcmUuIn1dfSwgIkNBQ0hFU1RPUkVfSVBDX01FTU9SWV9TSVpFIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIjE2bSIsICJoZWxwIjogIlNpemUgb2YgdGhlIGludGVybmFsIGNhY2hlc3RvcmUgKGlwYykuIiwgImlkIjogImNhY2hlc3RvcmUtaXBjLW1lbW9yeS1zaXplIiwgImxhYmVsIjogIkNhY2hlc3RvcmUgaXBjIG1lbW9yeSBzaXplIiwgInJlZ2V4IjogIl5cXGQrW2tLbU1nR10/JCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xOSIsICJwYXR0ZXJuIjogIl5cXGQrW2tLbU1nR10/JCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiQ2FjaGVzdG9yZSBpcGMgbWVtb3J5IHNpemUiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIxNm0iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJTaXplIG9mIHRoZSBpbnRlcm5hbCBjYWNoZXN0b3JlIChpcGMpLiJ9XX0sICJDQUNIRVNUT1JFX01JU1NfTUVNT1JZX1NJWkUiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAiMTZtIiwgImhlbHAiOiAiU2l6ZSBvZiB0aGUgaW50ZXJuYWwgY2FjaGVzdG9yZSAobWlzcykuIiwgImlkIjogImNhY2hlc3RvcmUtbWlzcy1tZW1vcnktc2l6ZSIsICJsYWJlbCI6ICJDYWNoZXN0b3JlIG1pc3MgbWVtb3J5IHNpemUiLCAicmVnZXgiOiAiXlxcZCtba0ttTWdHXT8kIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTE4IiwgInBhdHRlcm4iOiAiXlxcZCtba0ttTWdHXT8kIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJDYWNoZXN0b3JlIG1pc3MgbWVtb3J5IHNpemUiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIxNm0iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJTaXplIG9mIHRoZSBpbnRlcm5hbCBjYWNoZXN0b3JlIChtaXNzKS4ifV19LCAiQ0FDSEVTVE9SRV9MT0NLU19NRU1PUllfU0laRSI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICIxNm0iLCAiaGVscCI6ICJTaXplIG9mIHRoZSBpbnRlcm5hbCBjYWNoZXN0b3JlIChsb2NrcykuIiwgImlkIjogImNhY2hlc3RvcmUtbG9ja3MtbWVtb3J5LXNpemUiLCAibGFiZWwiOiAiQ2FjaGVzdG9yZSBsb2NrcyBtZW1vcnkgc2l6ZSIsICJyZWdleCI6ICJeXFxkK1trS21NZ0ddPyQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMTciLCAicGF0dGVybiI6ICJeXFxkK1trS21NZ0ddPyQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkNhY2hlc3RvcmUgbG9ja3MgbWVtb3J5IHNpemUiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIxNm0iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJTaXplIG9mIHRoZSBpbnRlcm5hbCBjYWNoZXN0b3JlIChsb2NrcykuIn1dfSwgIlVTRV9BUEkiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAieWVzIiwgImhlbHAiOiAiQWN0aXZhdGUgdGhlIEFQSSB0byBjb250cm9sIEJ1bmtlcldlYi4iLCAiaWQiOiAidXNlLWFwaSIsICJsYWJlbCI6ICJBY3RpdmF0ZSBBUEkiLCAicmVnZXgiOiAiXih5ZXN8bm8pJCIsICJ0eXBlIjogImNoZWNrIiwgImNvbnRhaW5lckNsYXNzIjogInotMTYiLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJBY3RpdmF0ZSBBUEkiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJ5ZXMiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJBY3RpdmF0ZSB0aGUgQVBJIHRvIGNvbnRyb2wgQnVua2VyV2ViLiJ9XX0sICJBUElfSFRUUF9QT1JUIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIjUwMDAiLCAiaGVscCI6ICJMaXN0ZW4gcG9ydCBudW1iZXIgZm9yIHRoZSBBUEkuIiwgImlkIjogImFwaS1odHRwLWxpc3RlbiIsICJsYWJlbCI6ICJBUEkgcG9ydCBudW1iZXIiLCAicmVnZXgiOiAiXlxcZCskIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTE1IiwgInBhdHRlcm4iOiAiXlxcZCskIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJBUEkgcG9ydCBudW1iZXIiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICI1MDAwIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTGlzdGVuIHBvcnQgbnVtYmVyIGZvciB0aGUgQVBJLiJ9XX0sICJBUElfTElTVEVOX0lQIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIjAuMC4wLjAiLCAiaGVscCI6ICJMaXN0ZW4gSVAgYWRkcmVzcyBmb3IgdGhlIEFQSS4iLCAiaWQiOiAiYXBpLWlwLWxpc3RlbiIsICJsYWJlbCI6ICJBUEkgbGlzdGVuIElQIiwgInJlZ2V4IjogIl4uKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMTQiLCAicGF0dGVybiI6ICJeLiokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJBUEkgbGlzdGVuIElQIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiMC4wLjAuMCIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkxpc3RlbiBJUCBhZGRyZXNzIGZvciB0aGUgQVBJLiJ9XX0sICJBUElfU0VSVkVSX05BTUUiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAiYndhcGkiLCAiaGVscCI6ICJTZXJ2ZXIgbmFtZSAodmlydHVhbCBob3N0KSBmb3IgdGhlIEFQSS4iLCAiaWQiOiAiYXBpLXNlcnZlci1uYW1lIiwgImxhYmVsIjogIkFQSSBzZXJ2ZXIgbmFtZSIsICJyZWdleCI6ICJeW14gXXsxLDI1NX0kIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTEzIiwgInBhdHRlcm4iOiAiXlteIF17MSwyNTV9JCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiQVBJIHNlcnZlciBuYW1lIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiYndhcGkiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJTZXJ2ZXIgbmFtZSAodmlydHVhbCBob3N0KSBmb3IgdGhlIEFQSS4ifV19LCAiQVBJX1dISVRFTElTVF9JUCI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICIxMjcuMC4wLjAvOCIsICJoZWxwIjogIkxpc3Qgb2YgSVAvbmV0d29yayBhbGxvd2VkIHRvIGNvbnRhY3QgdGhlIEFQSS4iLCAiaWQiOiAiYXBpLXdoaXRlbGlzdC1pcCIsICJsYWJlbCI6ICJBUEkgd2hpdGVsaXN0IElQIiwgInJlZ2V4IjogIl4oPyEgKSggKigoKFxcYjI1WzAtNV18XFxiMlswLTRdXFxkfFxcYlswMV0/XFxkXFxkPykoXFwuKDI1WzAtNV18MlswLTRdXFxkfFswMV0/XFxkXFxkPykpezN9KShcXC8oWzEtMl1bMC05XT98M1swLTJdP3xbMDQtOV0pKT98KChbMC05YS1mQS1GXXsxLDR9Oil7N31bMC05YS1mQS1GXXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw3fTp8KFswLTlhLWZBLUZdezEsNH06KXsxLDZ9OlswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDV9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDJ9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw0fSg6WzAtOWEtZkEtRl17MSw0fSl7MSwzfXwoWzAtOWEtZkEtRl17MSw0fTopezEsM30oOlswLTlhLWZBLUZdezEsNH0pezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDJ9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDV9fFswLTlhLWZBLUZdezEsNH06KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw2fSl8OigoOlswLTlhLWZBLUZdezEsNH0pezEsN318Oil8ZmU4MDooOlswLTlhLWZBLUZdWnswLDR9KXswLDR9JVswLTlhLXpBLVpdK3w6OihmZmZmKDowezEsNH0pPzopPygoMjVbMC01XXwoMlswLTRdfDE/XFxkKT9cXGQpXFwuKXszfSgyNVswLTVdfCgyWzAtNF18MT9cXGQpP1xcZCl8KFswLTlhLWZBLUZdezEsNH06KXsxLDR9OigoMjVbMC01XXwoMlswLTRdfDE/XFxkKT9cXGQpXFwuKXszfSgyNVswLTVdfCgyWzAtNF18MT9cXGQpP1xcZCkpKFxcLygxMlswLThdfDFbMDFdWzAtOV18WzAtOV1bMC05XT8pKT8pKD8hLipcXERcXDIoW15cXGRcXC9dfCQpKSAqKSokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTEyIiwgInBhdHRlcm4iOiAiXig/ISApKCAqKCgoXFxiMjVbMC01XXxcXGIyWzAtNF1cXGR8XFxiWzAxXT9cXGRcXGQ/KShcXC4oMjVbMC01XXwyWzAtNF1cXGR8WzAxXT9cXGRcXGQ/KSl7M30pKFxcLyhbMS0yXVswLTldP3wzWzAtMl0/fFswNC05XSkpP3woKFswLTlhLWZBLUZdezEsNH06KXs3fVswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDd9OnwoWzAtOWEtZkEtRl17MSw0fTopezEsNn06WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsNX0oOlswLTlhLWZBLUZdezEsNH0pezEsMn18KFswLTlhLWZBLUZdezEsNH06KXsxLDR9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDN9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwzfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsMn0oOlswLTlhLWZBLUZdezEsNH0pezEsNX18WzAtOWEtZkEtRl17MSw0fTooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDZ9KXw6KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw3fXw6KXxmZTgwOig6WzAtOWEtZkEtRl1aezAsNH0pezAsNH0lWzAtOWEtekEtWl0rfDo6KGZmZmYoOjB7MSw0fSk/Oik/KCgyNVswLTVdfCgyWzAtNF18MT9cXGQpP1xcZClcXC4pezN9KDI1WzAtNV18KDJbMC00XXwxP1xcZCk/XFxkKXwoWzAtOWEtZkEtRl17MSw0fTopezEsNH06KCgyNVswLTVdfCgyWzAtNF18MT9cXGQpP1xcZClcXC4pezN9KDI1WzAtNV18KDJbMC00XXwxP1xcZCk/XFxkKSkoXFwvKDEyWzAtOF18MVswMV1bMC05XXxbMC05XVswLTldPykpPykoPyEuKlxcRFxcMihbXlxcZFxcL118JCkpICopKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkFQSSB3aGl0ZWxpc3QgSVAiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIxMjcuMC4wLjAvOCIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkxpc3Qgb2YgSVAvbmV0d29yayBhbGxvd2VkIHRvIGNvbnRhY3QgdGhlIEFQSS4ifV19LCAiQVVUT0NPTkZfTU9ERSI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICJubyIsICJoZWxwIjogIkVuYWJsZSBBdXRvY29uZiBEb2NrZXIgaW50ZWdyYXRpb24uIiwgImlkIjogImF1dG9jb25mLW1vZGUiLCAibGFiZWwiOiAiQXV0b2NvbmYgbW9kZSIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xMSIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIkF1dG9jb25mIG1vZGUiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJubyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkVuYWJsZSBBdXRvY29uZiBEb2NrZXIgaW50ZWdyYXRpb24uIn1dfSwgIlNXQVJNX01PREUiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAibm8iLCAiaGVscCI6ICJFbmFibGUgRG9ja2VyIFN3YXJtIGludGVncmF0aW9uLiIsICJpZCI6ICJzd2FybS1tb2RlIiwgImxhYmVsIjogIlN3YXJtIG1vZGUiLCAicmVnZXgiOiAiXih5ZXN8bm8pJCIsICJ0eXBlIjogImNoZWNrIiwgImNvbnRhaW5lckNsYXNzIjogInotMTAiLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJTd2FybSBtb2RlIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAibm8iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJFbmFibGUgRG9ja2VyIFN3YXJtIGludGVncmF0aW9uLiJ9XX0sICJLVUJFUk5FVEVTX01PREUiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAibm8iLCAiaGVscCI6ICJFbmFibGUgS3ViZXJuZXRlcyBpbnRlZ3JhdGlvbi4iLCAiaWQiOiAia3ViZXJuZXRlcy1tb2RlIiwgImxhYmVsIjogIkt1YmVybmV0ZXMgbW9kZSIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei05IiwgInBhdHRlcm4iOiAiXih5ZXN8bm8pJCIsICJpbnBUeXBlIjogImNoZWNrYm94IiwgIm5hbWUiOiAiS3ViZXJuZXRlcyBtb2RlIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAibm8iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJFbmFibGUgS3ViZXJuZXRlcyBpbnRlZ3JhdGlvbi4ifV19LCAiU0VSVkVSX1RZUEUiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiaHR0cCIsICJoZWxwIjogIlNlcnZlciB0eXBlIDogaHR0cCBvciBzdHJlYW0uIiwgImlkIjogInNlcnZlci10eXBlIiwgImxhYmVsIjogIlNlcnZlciB0eXBlIiwgInJlZ2V4IjogIl4oaHR0cHxzdHJlYW0pJCIsICJ0eXBlIjogInNlbGVjdCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTgiLCAicGF0dGVybiI6ICJeKGh0dHB8c3RyZWFtKSQiLCAiaW5wVHlwZSI6ICJzZWxlY3QiLCAibmFtZSI6ICJTZXJ2ZXIgdHlwZSIsICJ2YWx1ZXMiOiBbImh0dHAiLCAic3RyZWFtIl0sICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogImh0dHAiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlNlcnZlciB0eXBlIDogaHR0cCBvciBzdHJlYW0uIn1dfSwgIkxJU1RFTl9TVFJFQU0iOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAieWVzIiwgImhlbHAiOiAiRW5hYmxlIGxpc3RlbmluZyBmb3Igbm9uLXNzbCAocGFzc3Rocm91Z2gpLiIsICJpZCI6ICJsaXN0ZW4tc3RyZWFtIiwgImxhYmVsIjogIkxpc3RlbiBzdHJlYW0iLCAicmVnZXgiOiAiXih5ZXN8bm8pJCIsICJ0eXBlIjogImNoZWNrIiwgImNvbnRhaW5lckNsYXNzIjogInotNyIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIkxpc3RlbiBzdHJlYW0iLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJ5ZXMiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkVuYWJsZSBsaXN0ZW5pbmcgZm9yIG5vbi1zc2wgKHBhc3N0aHJvdWdoKS4ifV19LCAiTElTVEVOX1NUUkVBTV9QT1JUIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIjEzMzciLCAiaGVscCI6ICJMaXN0ZW5pbmcgcG9ydCBmb3Igbm9uLXNzbCAocGFzc3Rocm91Z2gpLiIsICJpZCI6ICJsaXN0ZW4tc3RyZWFtLXBvcnQiLCAibGFiZWwiOiAiTGlzdGVuIHN0cmVhbSBwb3J0IiwgInJlZ2V4IjogIl5bMC05XSskIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTYiLCAicGF0dGVybiI6ICJeWzAtOV0rJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiTGlzdGVuIHN0cmVhbSBwb3J0IiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiMTMzNyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTGlzdGVuaW5nIHBvcnQgZm9yIG5vbi1zc2wgKHBhc3N0aHJvdWdoKS4ifV19LCAiTElTVEVOX1NUUkVBTV9QT1JUX1NTTCI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICI0MjQyIiwgImhlbHAiOiAiTGlzdGVuaW5nIHBvcnQgZm9yIHNzbCAocGFzc3Rocm91Z2gpLiIsICJpZCI6ICJsaXN0ZW4tc3RyZWFtLXBvcnQtc3NsIiwgImxhYmVsIjogIkxpc3RlbiBzdHJlYW0gcG9ydCBzc2wiLCAicmVnZXgiOiAiXlswLTldKyQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotNSIsICJwYXR0ZXJuIjogIl5bMC05XSskIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJMaXN0ZW4gc3RyZWFtIHBvcnQgc3NsIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiNDI0MiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTGlzdGVuaW5nIHBvcnQgZm9yIHNzbCAocGFzc3Rocm91Z2gpLiJ9XX0sICJVU0VfVURQIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIm5vIiwgImhlbHAiOiAiVURQIGxpc3RlbiBpbnN0ZWFkIG9mIFRDUCAoc3RyZWFtKS4iLCAiaWQiOiAidXNlLXVkcCIsICJsYWJlbCI6ICJMaXN0ZW4gVURQIiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJjb250YWluZXJDbGFzcyI6ICJ6LTQiLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJMaXN0ZW4gVURQIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAibm8iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlVEUCBsaXN0ZW4gaW5zdGVhZCBvZiBUQ1AgKHN0cmVhbSkuIn1dfSwgIlVTRV9JUFY2IjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIm5vIiwgImhlbHAiOiAiRW5hYmxlIElQdjYgY29ubmVjdGl2aXR5LiIsICJpZCI6ICJ1c2UtaXB2NiIsICJsYWJlbCI6ICJVc2UgSVB2NiIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei0zIiwgInBhdHRlcm4iOiAiXih5ZXN8bm8pJCIsICJpbnBUeXBlIjogImNoZWNrYm94IiwgIm5hbWUiOiAiVXNlIElQdjYiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJubyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkVuYWJsZSBJUHY2IGNvbm5lY3Rpdml0eS4ifV19LCAiSVNfRFJBRlQiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAibm8iLCAiaGVscCI6ICJJbnRlcm5hbCB1c2UgOiBzZXQgdG8geWVzIHdoZW4gdGhlIHNlcnZpY2UgaXMgaW4gZHJhZnQgbW9kZS4iLCAiaWQiOiAiaW50ZXJuYWwtdXNlLWRyYWZ0IiwgImxhYmVsIjogImludGVybmFsIHVzZSBkcmFmdCIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei0yIiwgInBhdHRlcm4iOiAiXih5ZXN8bm8pJCIsICJpbnBUeXBlIjogImNoZWNrYm94IiwgIm5hbWUiOiAiaW50ZXJuYWwgdXNlIGRyYWZ0IiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAibm8iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkludGVybmFsIHVzZSA6IHNldCB0byB5ZXMgd2hlbiB0aGUgc2VydmljZSBpcyBpbiBkcmFmdCBtb2RlLiJ9XX0sICJUSU1FUlNfTE9HX0xFVkVMIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogImRlYnVnIiwgImhlbHAiOiAiTG9nIGxldmVsIGZvciB0aW1lcnMuIiwgImlkIjogInRpbWVycy1sb2ctbGV2ZWwiLCAibGFiZWwiOiAiVGltZXJzIGxvZyBsZXZlbCIsICJyZWdleCI6ICJeKGRlYnVnfGluZm98bm90aWNlfHdhcm58ZXJyfGNyaXR8YWxlcnR8ZW1lcmcpJCIsICJ0eXBlIjogInNlbGVjdCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTEiLCAicGF0dGVybiI6ICJeKGRlYnVnfGluZm98bm90aWNlfHdhcm58ZXJyfGNyaXR8YWxlcnR8ZW1lcmcpJCIsICJpbnBUeXBlIjogInNlbGVjdCIsICJuYW1lIjogIlRpbWVycyBsb2cgbGV2ZWwiLCAidmFsdWVzIjogWyJhbGVydCIsICJjcml0IiwgImRlYnVnIiwgImVtZXJnIiwgImVyciIsICJpbmZvIiwgIm5vdGljZSIsICJ3YXJuIl0sICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogImRlYnVnIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTG9nIGxldmVsIGZvciB0aW1lcnMuIn1dfSwgIkJVTktFUldFQl9JTlNUQU5DRVMiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAiMTI3LjAuMC4xIiwgImhlbHAiOiAiTGlzdCBvZiBCdW5rZXJXZWIgaW5zdGFuY2VzIHNlcGFyYXRlZCB3aXRoIHNwYWNlcyAoZm9ybWF0IDogZnFkbi1vci1pcDo1MDAwIGh0dHA6Ly9mcWRuLW9yLWlwOjUwMDApIiwgImlkIjogImJ1bmtlcndlYi1pbnN0YW5jZXMiLCAibGFiZWwiOiAiQnVua2VyV2ViIGluc3RhbmNlcyIsICJyZWdleCI6ICJeLiokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTAiLCAicGF0dGVybiI6ICJeLiokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJCdW5rZXJXZWIgaW5zdGFuY2VzIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiMTI3LjAuMC4xIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTGlzdCBvZiBCdW5rZXJXZWIgaW5zdGFuY2VzIHNlcGFyYXRlZCB3aXRoIHNwYWNlcyAoZm9ybWF0IDogZnFkbi1vci1pcDo1MDAwIGh0dHA6Ly9mcWRuLW9yLWlwOjUwMDApIn1dfX0sICJjaGVja3N1bSI6IG51bGwsICJtdWx0aXBsZXMiOiB7fX0sIHsiaWQiOiAiYW50aWJvdCIsICJzdHJlYW0iOiAibm8iLCAibmFtZSI6ICJBbnRpYm90IiwgImRlc2NyaXB0aW9uIjogIkJvdCBkZXRlY3Rpb24gYnkgdXNpbmcgYSBjaGFsbGVuZ2UuIiwgInZlcnNpb24iOiAiMS4wIiwgInR5cGUiOiAiY29yZSIsICJtZXRob2QiOiAibWFudWFsIiwgInBhZ2UiOiB0cnVlLCAic2V0dGluZ3MiOiB7IlVTRV9BTlRJQk9UIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIm5vIiwgImhlbHAiOiAiQWN0aXZhdGUgYW50aWJvdCBmZWF0dXJlLiIsICJpZCI6ICJ1c2UtYW50aWJvdCIsICJsYWJlbCI6ICJBbnRpYm90IGNoYWxsZW5nZSIsICJyZWdleCI6ICJeKG5vfGNvb2tpZXxqYXZhc2NyaXB0fGNhcHRjaGF8cmVjYXB0Y2hhfGhjYXB0Y2hhfHR1cm5zdGlsZSkkIiwgInR5cGUiOiAic2VsZWN0IiwgImNvbnRhaW5lckNsYXNzIjogInotMTAiLCAicGF0dGVybiI6ICJeKG5vfGNvb2tpZXxqYXZhc2NyaXB0fGNhcHRjaGF8cmVjYXB0Y2hhfGhjYXB0Y2hhfHR1cm5zdGlsZSkkIiwgImlucFR5cGUiOiAic2VsZWN0IiwgIm5hbWUiOiAiQW50aWJvdCBjaGFsbGVuZ2UiLCAidmFsdWVzIjogWyJjYXB0Y2hhIiwgImNvb2tpZSIsICJoY2FwdGNoYSIsICJqYXZhc2NyaXB0IiwgIm5vIiwgInJlY2FwdGNoYSIsICJ0dXJuc3RpbGUiXSwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAibm8iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkFjdGl2YXRlIGFudGlib3QgZmVhdHVyZS4ifV19LCAiQU5USUJPVF9VUkkiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiL2NoYWxsZW5nZSIsICJoZWxwIjogIlVudXNlZCBVUkkgdGhhdCBjbGllbnRzIHdpbGwgYmUgcmVkaXJlY3RlZCB0byB0byBzb2x2ZSB0aGUgY2hhbGxlbmdlLiIsICJpZCI6ICJhbnRpYm90LXVyaSIsICJsYWJlbCI6ICJBbnRpYm90IFVSTCIsICJyZWdleCI6ICJeXFwvW1xcd1xcXS5+OlxcLz8jXFxbQCEkXFwmJ1xcKFxcKSorLDs9XFwtXSokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTkiLCAicGF0dGVybiI6ICJeXFwvW1xcd1xcXS5+OlxcLz8jXFxbQCEkXFwmJ1xcKFxcKSorLDs9XFwtXSokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJBbnRpYm90IFVSTCIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIi9jaGFsbGVuZ2UiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlVudXNlZCBVUkkgdGhhdCBjbGllbnRzIHdpbGwgYmUgcmVkaXJlY3RlZCB0byB0byBzb2x2ZSB0aGUgY2hhbGxlbmdlLiJ9XX0sICJBTlRJQk9UX1RJTUVfUkVTT0xWRSI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICI2MCIsICJoZWxwIjogIk1heGltdW0gdGltZSAoaW4gc2Vjb25kcykgY2xpZW50cyBoYXZlIHRvIHJlc29sdmUgdGhlIGNoYWxsZW5nZS4gT25jZSB0aGlzIHRpbWUgaGFzIHBhc3NlZCwgYSBuZXcgY2hhbGxlbmdlIHdpbGwgYmUgZ2VuZXJhdGVkLiIsICJpZCI6ICJhbnRpYm90LXRpbWUtcmVzb2x2ZSIsICJsYWJlbCI6ICJUaW1lIHRvIHJlc29sdmUiLCAicmVnZXgiOiAiXlswLTldKyQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotOCIsICJwYXR0ZXJuIjogIl5bMC05XSskIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJUaW1lIHRvIHJlc29sdmUiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICI2MCIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTWF4aW11bSB0aW1lIChpbiBzZWNvbmRzKSBjbGllbnRzIGhhdmUgdG8gcmVzb2x2ZSB0aGUgY2hhbGxlbmdlLiBPbmNlIHRoaXMgdGltZSBoYXMgcGFzc2VkLCBhIG5ldyBjaGFsbGVuZ2Ugd2lsbCBiZSBnZW5lcmF0ZWQuIn1dfSwgIkFOVElCT1RfVElNRV9WQUxJRCI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICI4NjQwMCIsICJoZWxwIjogIk1heGltdW0gdmFsaWRpdHkgdGltZSBvZiBzb2x2ZWQgY2hhbGxlbmdlcy4gT25jZSB0aGlzIHRpbWUgaGFzIHBhc3NlZCwgY2xpZW50cyB3aWxsIG5lZWQgdG8gcmVzb2x2ZSBhIG5ldyBvbmUuIiwgImlkIjogImFudGlib3QtdGltZS12YWxpZCIsICJsYWJlbCI6ICJUaW1lIHZhbGlkIiwgInJlZ2V4IjogIl5bMC05XSskIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTciLCAicGF0dGVybiI6ICJeWzAtOV0rJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiVGltZSB2YWxpZCIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIjg2NDAwIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJNYXhpbXVtIHZhbGlkaXR5IHRpbWUgb2Ygc29sdmVkIGNoYWxsZW5nZXMuIE9uY2UgdGhpcyB0aW1lIGhhcyBwYXNzZWQsIGNsaWVudHMgd2lsbCBuZWVkIHRvIHJlc29sdmUgYSBuZXcgb25lLiJ9XX0sICJBTlRJQk9UX1JFQ0FQVENIQV9TQ09SRSI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIwLjciLCAiaGVscCI6ICJNaW5pbXVtIHNjb3JlIHJlcXVpcmVkIGZvciByZUNBUFRDSEEgY2hhbGxlbmdlLiIsICJpZCI6ICJhbnRpYm90LXJlY2FwdGNoYS1zY29yZSIsICJsYWJlbCI6ICJyZUNBUFRDSEEgc2NvcmUiLCAicmVnZXgiOiAiXigwXFwuWzEtOV18MVxcLjApJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei02IiwgInBhdHRlcm4iOiAiXigwXFwuWzEtOV18MVxcLjApJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAicmVDQVBUQ0hBIHNjb3JlIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiMC43IiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJNaW5pbXVtIHNjb3JlIHJlcXVpcmVkIGZvciByZUNBUFRDSEEgY2hhbGxlbmdlLiJ9XX0sICJBTlRJQk9UX1JFQ0FQVENIQV9TSVRFS0VZIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIlNpdGVrZXkgZm9yIHJlQ0FQVENIQSBjaGFsbGVuZ2UuIiwgImlkIjogImFudGlib3QtcmVjYXB0Y2hhLXNpdGVrZXkiLCAibGFiZWwiOiAicmVDQVBUQ0hBIHNpdGVrZXkiLCAicmVnZXgiOiAiXltcXHdcXC1dKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotNSIsICJwYXR0ZXJuIjogIl5bXFx3XFwtXSokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJyZUNBUFRDSEEgc2l0ZWtleSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiU2l0ZWtleSBmb3IgcmVDQVBUQ0hBIGNoYWxsZW5nZS4ifV19LCAiQU5USUJPVF9SRUNBUFRDSEFfU0VDUkVUIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIlNlY3JldCBmb3IgcmVDQVBUQ0hBIGNoYWxsZW5nZS4iLCAiaWQiOiAiYW50aWJvdC1yZWNhcHRjaGEtc2VjcmV0IiwgImxhYmVsIjogInJlQ0FQVENIQSBzZWNyZXQiLCAicmVnZXgiOiAiXltcXHdcXC1dKiQiLCAidHlwZSI6ICJwYXNzd29yZCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTQiLCAicGF0dGVybiI6ICJeW1xcd1xcLV0qJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAicmVDQVBUQ0hBIHNlY3JldCIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiU2VjcmV0IGZvciByZUNBUFRDSEEgY2hhbGxlbmdlLiJ9XX0sICJBTlRJQk9UX0hDQVBUQ0hBX1NJVEVLRVkiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiU2l0ZWtleSBmb3IgaENhcHRjaGEgY2hhbGxlbmdlLiIsICJpZCI6ICJhbnRpYm90LWhjYXB0Y2hhLXNpdGVrZXkiLCAibGFiZWwiOiAiaENhcHRjaGEgc2l0ZWtleSIsICJyZWdleCI6ICJeW2EtekEtWjAtOVxcLV0qJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0zIiwgInBhdHRlcm4iOiAiXlthLXpBLVowLTlcXC1dKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogImhDYXB0Y2hhIHNpdGVrZXkiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlNpdGVrZXkgZm9yIGhDYXB0Y2hhIGNoYWxsZW5nZS4ifV19LCAiQU5USUJPVF9IQ0FQVENIQV9TRUNSRVQiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiU2VjcmV0IGZvciBoQ2FwdGNoYSBjaGFsbGVuZ2UuIiwgImlkIjogImFudGlib3QtaGNhcHRjaGEtc2VjcmV0IiwgImxhYmVsIjogImhDYXB0Y2hhIHNlY3JldCIsICJyZWdleCI6ICJeXFx3KiQiLCAidHlwZSI6ICJwYXNzd29yZCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTIiLCAicGF0dGVybiI6ICJeXFx3KiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogImhDYXB0Y2hhIHNlY3JldCIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiU2VjcmV0IGZvciBoQ2FwdGNoYSBjaGFsbGVuZ2UuIn1dfSwgIkFOVElCT1RfVFVSTlNUSUxFX1NJVEVLRVkiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiU2l0ZWtleSBmb3IgVHVybnN0aWxlIGNoYWxsZW5nZS4iLCAiaWQiOiAiYW50aWJvdC10dXJuc3RpbGUtc2l0ZWtleSIsICJsYWJlbCI6ICJUdXJuc3RpbGUgc2l0ZWtleSIsICJyZWdleCI6ICJeKDB4W1xcd1xcLV0rKT8kIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTEiLCAicGF0dGVybiI6ICJeKDB4W1xcd1xcLV0rKT8kIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJUdXJuc3RpbGUgc2l0ZWtleSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiU2l0ZWtleSBmb3IgVHVybnN0aWxlIGNoYWxsZW5nZS4ifV19LCAiQU5USUJPVF9UVVJOU1RJTEVfU0VDUkVUIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIlNlY3JldCBmb3IgVHVybnN0aWxlIGNoYWxsZW5nZS4iLCAiaWQiOiAiYW50aWJvdC10dXJuc3RpbGUtc2VjcmV0IiwgImxhYmVsIjogIlR1cm5zdGlsZSBzZWNyZXQiLCAicmVnZXgiOiAiXigweFtcXHdcXC1dKyk/JCIsICJ0eXBlIjogInBhc3N3b3JkIiwgImNvbnRhaW5lckNsYXNzIjogInotMCIsICJwYXR0ZXJuIjogIl4oMHhbXFx3XFwtXSspPyQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIlR1cm5zdGlsZSBzZWNyZXQiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlNlY3JldCBmb3IgVHVybnN0aWxlIGNoYWxsZW5nZS4ifV19fSwgImNoZWNrc3VtIjogbnVsbCwgIm11bHRpcGxlcyI6IHt9fSwgeyJpZCI6ICJhdXRoYmFzaWMiLCAic3RyZWFtIjogIm5vIiwgIm5hbWUiOiAiQXV0aCBiYXNpYyIsICJkZXNjcmlwdGlvbiI6ICJFbmZvcmNlIGxvZ2luIGJlZm9yZSBhY2Nlc3NpbmcgYSByZXNvdXJjZSBvciB0aGUgd2hvbGUgc2l0ZSB1c2luZyBIVFRQIGJhc2ljIGF1dGggbWV0aG9kLiIsICJ2ZXJzaW9uIjogIjEuMCIsICJ0eXBlIjogImNvcmUiLCAibWV0aG9kIjogIm1hbnVhbCIsICJwYWdlIjogZmFsc2UsICJzZXR0aW5ncyI6IHsiVVNFX0FVVEhfQkFTSUMiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAibm8iLCAiaGVscCI6ICJVc2UgSFRUUCBiYXNpYyBhdXRoIiwgImlkIjogInVzZS1hdXRoLWJhc2ljIiwgImxhYmVsIjogIlVzZSBIVFRQIGJhc2ljIGF1dGgiLCAicmVnZXgiOiAiXih5ZXN8bm8pJCIsICJ0eXBlIjogImNoZWNrIiwgImNvbnRhaW5lckNsYXNzIjogInotNCIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIlVzZSBIVFRQIGJhc2ljIGF1dGgiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJubyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiVXNlIEhUVFAgYmFzaWMgYXV0aCJ9XX0sICJBVVRIX0JBU0lDX0xPQ0FUSU9OIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogInNpdGV3aWRlIiwgImhlbHAiOiAiVVJMIG9mIHRoZSBwcm90ZWN0ZWQgcmVzb3VyY2Ugb3Igc2l0ZXdpZGUgdmFsdWUuIiwgImlkIjogImF1dGgtYmFzaWMtbG9jYXRpb24iLCAibGFiZWwiOiAiQXV0aCBiYXNpYyBMb2NhdGlvbiIsICJyZWdleCI6ICJeKHNpdGV3aWRlfC9bYS16QS1aMC05LlxcL1xcLV0qKSQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMyIsICJwYXR0ZXJuIjogIl4oc2l0ZXdpZGV8L1thLXpBLVowLTkuXFwvXFwtXSopJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiQXV0aCBiYXNpYyBMb2NhdGlvbiIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogInNpdGV3aWRlIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJVUkwgb2YgdGhlIHByb3RlY3RlZCByZXNvdXJjZSBvciBzaXRld2lkZSB2YWx1ZS4ifV19LCAiQVVUSF9CQVNJQ19VU0VSIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogImNoYW5nZW1lIiwgImhlbHAiOiAiVXNlcm5hbWUiLCAiaWQiOiAiYXV0aC1iYXNpYy11c2VyIiwgImxhYmVsIjogIkF1dGggYmFzaWMgVXNlcm5hbWUiLCAicmVnZXgiOiAiXltcXHdcXC1dKyIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0yIiwgInBhdHRlcm4iOiAiXltcXHdcXC1dKyIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiQXV0aCBiYXNpYyBVc2VybmFtZSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogImNoYW5nZW1lIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJVc2VybmFtZSJ9XX0sICJBVVRIX0JBU0lDX1BBU1NXT1JEIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogImNoYW5nZW1lIiwgImhlbHAiOiAiUGFzc3dvcmQiLCAiaWQiOiAiYXV0aC1iYXNpYy1wYXNzd29yZCIsICJsYWJlbCI6ICJQYXNzd29yZCIsICJyZWdleCI6ICJeLisiLCAidHlwZSI6ICJwYXNzd29yZCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTEiLCAicGF0dGVybiI6ICJeLisiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIlBhc3N3b3JkIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiY2hhbmdlbWUiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlBhc3N3b3JkIn1dfSwgIkFVVEhfQkFTSUNfVEVYVCI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJSZXN0cmljdGVkIGFyZWEiLCAiaGVscCI6ICJUZXh0IHRvIGRpc3BsYXkiLCAiaWQiOiAiYXV0aC1iYXNpYy10ZXh0IiwgImxhYmVsIjogIlRleHQiLCAicmVnZXgiOiAiXi4rIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTAiLCAicGF0dGVybiI6ICJeLisiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIlRleHQiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJSZXN0cmljdGVkIGFyZWEiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlRleHQgdG8gZGlzcGxheSJ9XX19LCAiY2hlY2tzdW0iOiBudWxsLCAibXVsdGlwbGVzIjoge319LCB7ImlkIjogImJhY2t1cCIsICJzdHJlYW0iOiAieWVzIiwgIm5hbWUiOiAiQmFja3VwIiwgImRlc2NyaXB0aW9uIjogIkJhY2t1cCB5b3VyIGRhdGEgdG8gYSBjdXN0b20gbG9jYXRpb24uIEVuc3VyZSB0aGUgc2FmZXR5IGFuZCBhdmFpbGFiaWxpdHkgb2YgeW91ciBpbXBvcnRhbnQgZmlsZXMgYnkgY3JlYXRpbmcgcmVndWxhciBiYWNrdXBzLiIsICJ2ZXJzaW9uIjogIjEuMCIsICJ0eXBlIjogImNvcmUiLCAibWV0aG9kIjogIm1hbnVhbCIsICJwYWdlIjogdHJ1ZSwgInNldHRpbmdzIjogeyJVU0VfQkFDS1VQIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogInllcyIsICJoZWxwIjogIkVuYWJsZSBvciBkaXNhYmxlIHRoZSBiYWNrdXAgZmVhdHVyZSIsICJpZCI6ICJ1c2UtYmFja3VwIiwgImxhYmVsIjogIkFjdGl2YXRlIGF1dG9tYXRpYyBiYWNrdXAiLCAicmVnZXgiOiAiXih5ZXN8bm8pJCIsICJ0eXBlIjogImNoZWNrIiwgImNvbnRhaW5lckNsYXNzIjogInotMyIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIkFjdGl2YXRlIGF1dG9tYXRpYyBiYWNrdXAiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJ5ZXMiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJFbmFibGUgb3IgZGlzYWJsZSB0aGUgYmFja3VwIGZlYXR1cmUifV19LCAiQkFDS1VQX1NDSEVEVUxFIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogImRhaWx5IiwgImhlbHAiOiAiVGhlIGZyZXF1ZW5jeSBvZiB0aGUgYmFja3VwIChkYWlseSwgd2Vla2x5IG9yIG1vbnRobHkpIiwgImlkIjogImJhY2t1cC1zY2hlZHVsZSIsICJsYWJlbCI6ICJCYWNrdXAgc2NoZWR1bGUiLCAicmVnZXgiOiAiXihkYWlseXx3ZWVrbHl8bW9udGhseSkkIiwgInR5cGUiOiAic2VsZWN0IiwgImNvbnRhaW5lckNsYXNzIjogInotMiIsICJwYXR0ZXJuIjogIl4oZGFpbHl8d2Vla2x5fG1vbnRobHkpJCIsICJpbnBUeXBlIjogInNlbGVjdCIsICJuYW1lIjogIkJhY2t1cCBzY2hlZHVsZSIsICJ2YWx1ZXMiOiBbImRhaWx5IiwgIm1vbnRobHkiLCAid2Vla2x5Il0sICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogImRhaWx5IiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiVGhlIGZyZXF1ZW5jeSBvZiB0aGUgYmFja3VwIChkYWlseSwgd2Vla2x5IG9yIG1vbnRobHkpIn1dfSwgIkJBQ0tVUF9ST1RBVElPTiI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICI3IiwgImhlbHAiOiAiVGhlIG51bWJlciBvZiBiYWNrdXBzIHRvIGtlZXAiLCAiaWQiOiAiYmFja3VwLXJvdGF0aW9uIiwgImxhYmVsIjogIkJhY2t1cCByb3RhdGlvbiIsICJyZWdleCI6ICJeWzEtOV1bMC05XSokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTEiLCAicGF0dGVybiI6ICJeWzEtOV1bMC05XSokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJCYWNrdXAgcm90YXRpb24iLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICI3IiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiVGhlIG51bWJlciBvZiBiYWNrdXBzIHRvIGtlZXAifV19LCAiQkFDS1VQX0RJUkVDVE9SWSI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICIvdmFyL2xpYi9idW5rZXJ3ZWIvYmFja3VwcyIsICJoZWxwIjogIlRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIGJhY2t1cCB3aWxsIGJlIHN0b3JlZCIsICJpZCI6ICJiYWNrdXAtZGlyZWN0b3J5IiwgImxhYmVsIjogIkJhY2t1cCBkaXJlY3RvcnkiLCAicmVnZXgiOiAiXi4qJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0wIiwgInBhdHRlcm4iOiAiXi4qJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiQmFja3VwIGRpcmVjdG9yeSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIi92YXIvbGliL2J1bmtlcndlYi9iYWNrdXBzIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiVGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgYmFja3VwIHdpbGwgYmUgc3RvcmVkIn1dfX0sICJjaGVja3N1bSI6IG51bGwsICJid2NsaSI6IHsibGlzdCI6ICJsaXN0LnB5IiwgInJlc3RvcmUiOiAicmVzdG9yZS5weSIsICJzYXZlIjogInNhdmUucHkifSwgIm11bHRpcGxlcyI6IHt9fSwgeyJpZCI6ICJiYWRiZWhhdmlvciIsICJzdHJlYW0iOiAieWVzIiwgIm5hbWUiOiAiQmFkIGJlaGF2aW9yIiwgImRlc2NyaXB0aW9uIjogIkJhbiBJUCBnZW5lcmF0aW5nIHRvbyBtdWNoICdiYWQnIEhUVFAgc3RhdHVzIGNvZGUgaW4gYSBwZXJpb2Qgb2YgdGltZS4iLCAidmVyc2lvbiI6ICIxLjAiLCAidHlwZSI6ICJjb3JlIiwgIm1ldGhvZCI6ICJtYW51YWwiLCAicGFnZSI6IHRydWUsICJzZXR0aW5ncyI6IHsiVVNFX0JBRF9CRUhBVklPUiI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJ5ZXMiLCAiaGVscCI6ICJBY3RpdmF0ZSBCYWQgYmVoYXZpb3IgZmVhdHVyZS4iLCAiaWQiOiAidXNlLWJhZC1iZWhhdmlvciIsICJsYWJlbCI6ICJBY3RpdmF0ZSBiYWQgYmVoYXZpb3IiLCAicmVnZXgiOiAiXih5ZXN8bm8pJCIsICJ0eXBlIjogImNoZWNrIiwgImNvbnRhaW5lckNsYXNzIjogInotNCIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIkFjdGl2YXRlIGJhZCBiZWhhdmlvciIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogInllcyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiQWN0aXZhdGUgQmFkIGJlaGF2aW9yIGZlYXR1cmUuIn1dfSwgIkJBRF9CRUhBVklPUl9TVEFUVVNfQ09ERVMiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiNDAwIDQwMSA0MDMgNDA0IDQwNSA0MjkgNDQ0IiwgImhlbHAiOiAiTGlzdCBvZiBIVFRQIHN0YXR1cyBjb2RlcyBjb25zaWRlcmVkIGFzICdiYWQnLiIsICJpZCI6ICJiYWQtYmVoYXZpb3Itc3RhdHVzLWNvZGUiLCAibGFiZWwiOiAiQmFkIHN0YXR1cyBjb2RlcyIsICJyZWdleCI6ICJeKCAqKFsxLTVdXFxkezJ9KSg/IS4qXFwyKSAqKSskIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTMiLCAicGF0dGVybiI6ICJeKCAqKFsxLTVdXFxkezJ9KSg/IS4qXFwyKSAqKSskIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJCYWQgc3RhdHVzIGNvZGVzIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiNDAwIDQwMSA0MDMgNDA0IDQwNSA0MjkgNDQ0IiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIEhUVFAgc3RhdHVzIGNvZGVzIGNvbnNpZGVyZWQgYXMgJ2JhZCcuIn1dfSwgIkJBRF9CRUhBVklPUl9USFJFU0hPTEQiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiMTAiLCAiaGVscCI6ICJNYXhpbXVtIG51bWJlciBvZiAnYmFkJyBIVFRQIHN0YXR1cyBjb2RlcyB3aXRoaW4gdGhlIHBlcmlvZCBvZiB0aW1lIGJlZm9yZSBJUCBpcyBiYW5uZWQuIiwgImlkIjogImJhZC1iZWhhdmlvci10aHJlc2hvbGQiLCAibGFiZWwiOiAiVGhyZXNob2xkIiwgInJlZ2V4IjogIl5bMS05XVswLTldKiIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0yIiwgInBhdHRlcm4iOiAiXlsxLTldWzAtOV0qIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJUaHJlc2hvbGQiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIxMCIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTWF4aW11bSBudW1iZXIgb2YgJ2JhZCcgSFRUUCBzdGF0dXMgY29kZXMgd2l0aGluIHRoZSBwZXJpb2Qgb2YgdGltZSBiZWZvcmUgSVAgaXMgYmFubmVkLiJ9XX0sICJCQURfQkVIQVZJT1JfQ09VTlRfVElNRSI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICI2MCIsICJoZWxwIjogIlBlcmlvZCBvZiB0aW1lIChpbiBzZWNvbmRzKSBkdXJpbmcgd2hpY2ggd2UgY291bnQgJ2JhZCcgSFRUUCBzdGF0dXMgY29kZXMuIiwgImlkIjogImJhZC1iZWhhdmlvci1wZXJpb2QiLCAibGFiZWwiOiAiUGVyaW9kIChpbiBzZWNvbmRzKSIsICJyZWdleCI6ICJeXFxkKyIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xIiwgInBhdHRlcm4iOiAiXlxcZCsiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIlBlcmlvZCAoaW4gc2Vjb25kcykiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICI2MCIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiUGVyaW9kIG9mIHRpbWUgKGluIHNlY29uZHMpIGR1cmluZyB3aGljaCB3ZSBjb3VudCAnYmFkJyBIVFRQIHN0YXR1cyBjb2Rlcy4ifV19LCAiQkFEX0JFSEFWSU9SX0JBTl9USU1FIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIjg2NDAwIiwgImhlbHAiOiAiVGhlIGR1cmF0aW9uIHRpbWUgKGluIHNlY29uZHMpIG9mIGEgYmFuIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgSVAgaGFzIHJlYWNoZWQgdGhlIHRocmVzaG9sZC4iLCAiaWQiOiAiYmFkLWJlaGF2aW9yLWJhbi10aW1lIiwgImxhYmVsIjogIkJhbiBkdXJhdGlvbiAoaW4gc2Vjb25kcykiLCAicmVnZXgiOiAiXlxcZCsiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMCIsICJwYXR0ZXJuIjogIl5cXGQrIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJCYW4gZHVyYXRpb24gKGluIHNlY29uZHMpIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiODY0MDAiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlRoZSBkdXJhdGlvbiB0aW1lIChpbiBzZWNvbmRzKSBvZiBhIGJhbiB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIElQIGhhcyByZWFjaGVkIHRoZSB0aHJlc2hvbGQuIn1dfX0sICJjaGVja3N1bSI6IG51bGwsICJtdWx0aXBsZXMiOiB7fX0sIHsiaWQiOiAiYmxhY2tsaXN0IiwgInN0cmVhbSI6ICJwYXJ0aWFsIiwgIm5hbWUiOiAiQmxhY2tsaXN0IiwgImRlc2NyaXB0aW9uIjogIkRlbnkgYWNjZXNzIGJhc2VkIG9uIGludGVybmFsIGFuZCBleHRlcm5hbCBJUC9uZXR3b3JrL3JETlMvQVNOIGJsYWNrbGlzdHMuIiwgInZlcnNpb24iOiAiMS4wIiwgInR5cGUiOiAiY29yZSIsICJtZXRob2QiOiAibWFudWFsIiwgInBhZ2UiOiB0cnVlLCAic2V0dGluZ3MiOiB7IlVTRV9CTEFDS0xJU1QiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAieWVzIiwgImhlbHAiOiAiQWN0aXZhdGUgYmxhY2tsaXN0IGZlYXR1cmUuIiwgImlkIjogInVzZS1ibGFja2xpc3QiLCAibGFiZWwiOiAiQWN0aXZhdGUgYmxhY2tsaXN0aW5nIiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJjb250YWluZXJDbGFzcyI6ICJ6LTIxIiwgInBhdHRlcm4iOiAiXih5ZXN8bm8pJCIsICJpbnBUeXBlIjogImNoZWNrYm94IiwgIm5hbWUiOiAiQWN0aXZhdGUgYmxhY2tsaXN0aW5nIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAieWVzIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJBY3RpdmF0ZSBibGFja2xpc3QgZmVhdHVyZS4ifV19LCAiQkxBQ0tMSVNUX0lQIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIkxpc3Qgb2YgSVAvbmV0d29yaywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCB0byBibG9jay4iLCAiaWQiOiAiYmxhY2tsaXN0LWlwIiwgImxhYmVsIjogIkJsYWNrbGlzdCBJUC9uZXR3b3JrIiwgInJlZ2V4IjogIl4oPyEgKSggKigoKFxcYjI1WzAtNV18XFxiMlswLTRdXFxkfFxcYlswMV0/XFxkXFxkPykoXFwuKDI1WzAtNV18MlswLTRdXFxkfFswMV0/XFxkXFxkPykpezN9KShcXC8oWzEtMl1bMC05XT98M1swLTJdP3xbMDQtOV0pKT98KChbMC05YS1mQS1GXXsxLDR9Oil7N31bMC05YS1mQS1GXXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw3fTp8KFswLTlhLWZBLUZdezEsNH06KXsxLDZ9OlswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDV9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDJ9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw0fSg6WzAtOWEtZkEtRl17MSw0fSl7MSwzfXwoWzAtOWEtZkEtRl17MSw0fTopezEsM30oOlswLTlhLWZBLUZdezEsNH0pezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDJ9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDV9fFswLTlhLWZBLUZdezEsNH06KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw2fSl8OigoOlswLTlhLWZBLUZdezEsNH0pezEsN318Oil8ZmU4MDooOlswLTlhLWZBLUZdWnswLDR9KXswLDR9JVswLTlhLXpBLVpdK3w6OihmZmZmKDowezEsNH0pPzopPygoMjVbMC01XXwoMlswLTRdfDE/XFxkKT9cXGQpXFwuKXszfSgyNVswLTVdfCgyWzAtNF18MT9cXGQpP1xcZCl8KFswLTlhLWZBLUZdezEsNH06KXsxLDR9OigoMjVbMC01XXwoMlswLTRdfDE/XFxkKT9cXGQpXFwuKXszfSgyNVswLTVdfCgyWzAtNF18MT9cXGQpP1xcZCkpKFxcLygxMlswLThdfDFbMDFdWzAtOV18WzAtOV1bMC05XT8pKT8pKD8hLipcXERcXDIoW15cXGRcXC9dfCQpKSAqKSokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTIwIiwgInBhdHRlcm4iOiAiXig/ISApKCAqKCgoXFxiMjVbMC01XXxcXGIyWzAtNF1cXGR8XFxiWzAxXT9cXGRcXGQ/KShcXC4oMjVbMC01XXwyWzAtNF1cXGR8WzAxXT9cXGRcXGQ/KSl7M30pKFxcLyhbMS0yXVswLTldP3wzWzAtMl0/fFswNC05XSkpP3woKFswLTlhLWZBLUZdezEsNH06KXs3fVswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDd9OnwoWzAtOWEtZkEtRl17MSw0fTopezEsNn06WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsNX0oOlswLTlhLWZBLUZdezEsNH0pezEsMn18KFswLTlhLWZBLUZdezEsNH06KXsxLDR9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDN9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwzfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsMn0oOlswLTlhLWZBLUZdezEsNH0pezEsNX18WzAtOWEtZkEtRl17MSw0fTooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDZ9KXw6KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw3fXw6KXxmZTgwOig6WzAtOWEtZkEtRl1aezAsNH0pezAsNH0lWzAtOWEtekEtWl0rfDo6KGZmZmYoOjB7MSw0fSk/Oik/KCgyNVswLTVdfCgyWzAtNF18MT9cXGQpP1xcZClcXC4pezN9KDI1WzAtNV18KDJbMC00XXwxP1xcZCk/XFxkKXwoWzAtOWEtZkEtRl17MSw0fTopezEsNH06KCgyNVswLTVdfCgyWzAtNF18MT9cXGQpP1xcZClcXC4pezN9KDI1WzAtNV18KDJbMC00XXwxP1xcZCk/XFxkKSkoXFwvKDEyWzAtOF18MVswMV1bMC05XXxbMC05XVswLTldPykpPykoPyEuKlxcRFxcMihbXlxcZFxcL118JCkpICopKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkJsYWNrbGlzdCBJUC9uZXR3b3JrIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIElQL25ldHdvcmssIHNlcGFyYXRlZCB3aXRoIHNwYWNlcywgdG8gYmxvY2suIn1dfSwgIkJMQUNLTElTVF9SRE5TIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIi5zaG9kYW4uaW8gLmNlbnN5cy5pbyIsICJoZWxwIjogIkxpc3Qgb2YgcmV2ZXJzZSBETlMgc3VmZml4ZXMsIHNlcGFyYXRlZCB3aXRoIHNwYWNlcywgdG8gYmxvY2suIiwgImlkIjogImJsYWNrbGlzdC1yZG5zIiwgImxhYmVsIjogIkJsYWNrbGlzdCByZXZlcnNlIEROUyIsICJyZWdleCI6ICJeKCAqKChbXiBdKykoPyEuKlxcMyggfCQpKSkgKikqJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xOSIsICJwYXR0ZXJuIjogIl4oICooKFteIF0rKSg/IS4qXFwzKCB8JCkpKSAqKSokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJCbGFja2xpc3QgcmV2ZXJzZSBETlMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIuc2hvZGFuLmlvIC5jZW5zeXMuaW8iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkxpc3Qgb2YgcmV2ZXJzZSBETlMgc3VmZml4ZXMsIHNlcGFyYXRlZCB3aXRoIHNwYWNlcywgdG8gYmxvY2suIn1dfSwgIkJMQUNLTElTVF9SRE5TX0dMT0JBTCI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJ5ZXMiLCAiaGVscCI6ICJPbmx5IHBlcmZvcm0gUkROUyBibGFja2xpc3QgY2hlY2tzIG9uIGdsb2JhbCBJUCBhZGRyZXNzZXMuIiwgImlkIjogImJsYWNrbGlzdC1yZG5zLWdsb2JhbCIsICJsYWJlbCI6ICJCbGFja2xpc3QgcmV2ZXJzZSBETlMgZ2xvYmFsIElQcyIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xOCIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIkJsYWNrbGlzdCByZXZlcnNlIEROUyBnbG9iYWwgSVBzIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAieWVzIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJPbmx5IHBlcmZvcm0gUkROUyBibGFja2xpc3QgY2hlY2tzIG9uIGdsb2JhbCBJUCBhZGRyZXNzZXMuIn1dfSwgIkJMQUNLTElTVF9BU04iOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiTGlzdCBvZiBBU04gbnVtYmVycywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCB0byBibG9jay4iLCAiaWQiOiAiYmxhY2tsaXN0LWFzbiIsICJsYWJlbCI6ICJCbGFja2xpc3QgQVNOIiwgInJlZ2V4IjogIl5eKCAqKChBU04/KT8oXFxkKylcXGIoPyEuKltTTiBdXFw0XFxiKSkgKikqJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xNyIsICJwYXR0ZXJuIjogIl5eKCAqKChBU04/KT8oXFxkKylcXGIoPyEuKltTTiBdXFw0XFxiKSkgKikqJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiQmxhY2tsaXN0IEFTTiIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTGlzdCBvZiBBU04gbnVtYmVycywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCB0byBibG9jay4ifV19LCAiQkxBQ0tMSVNUX1VTRVJfQUdFTlQiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiTGlzdCBvZiBVc2VyLUFnZW50IChQQ1JFIHJlZ2V4KSwgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCB0byBibG9jay4iLCAiaWQiOiAiYmxhY2tsaXN0LXVzZXItYWdlbnQiLCAibGFiZWwiOiAiQmxhY2tsaXN0IFVzZXItQWdlbnQiLCAicmVnZXgiOiAiXi4qJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xNiIsICJwYXR0ZXJuIjogIl4uKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkJsYWNrbGlzdCBVc2VyLUFnZW50IiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIFVzZXItQWdlbnQgKFBDUkUgcmVnZXgpLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIHRvIGJsb2NrLiJ9XX0sICJCTEFDS0xJU1RfVVJJIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIkxpc3Qgb2YgVVJJIChQQ1JFIHJlZ2V4KSwgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCB0byBibG9jay4iLCAiaWQiOiAiYmxhY2tsaXN0LXVyaSIsICJsYWJlbCI6ICJCbGFja2xpc3QgVVJJIiwgInJlZ2V4IjogIl4oICooLiopKD8hLipcXDIoPyEuKSkgKikqJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xNSIsICJwYXR0ZXJuIjogIl4oICooLiopKD8hLipcXDIoPyEuKSkgKikqJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiQmxhY2tsaXN0IFVSSSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTGlzdCBvZiBVUkkgKFBDUkUgcmVnZXgpLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIHRvIGJsb2NrLiJ9XX0sICJCTEFDS0xJU1RfSUdOT1JFX0lQIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIkxpc3Qgb2YgSVAvbmV0d29yaywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCB0byBpZ25vcmUgaW4gdGhlIGJsYWNrbGlzdC4iLCAiaWQiOiAiYmxhY2tsaXN0LWlnbm9yZS1pcCIsICJsYWJlbCI6ICJCbGFja2xpc3QgaWdub3JlIElQL25ldHdvcmsiLCAicmVnZXgiOiAiXig/ISApKCAqKCgoXFxiMjVbMC01XXxcXGIyWzAtNF1cXGR8XFxiWzAxXT9cXGRcXGQ/KShcXC4oMjVbMC01XXwyWzAtNF1cXGR8WzAxXT9cXGRcXGQ/KSl7M30pKFxcLyhbMS0yXVswLTldP3wzWzAtMl0/fFswNC05XSkpP3woKFswLTlhLWZBLUZdezEsNH06KXs3fVswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDd9OnwoWzAtOWEtZkEtRl17MSw0fTopezEsNn06WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsNX0oOlswLTlhLWZBLUZdezEsNH0pezEsMn18KFswLTlhLWZBLUZdezEsNH06KXsxLDR9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDN9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwzfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsMn0oOlswLTlhLWZBLUZdezEsNH0pezEsNX18WzAtOWEtZkEtRl17MSw0fTooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDZ9KXw6KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw3fXw6KXxmZTgwOig6WzAtOWEtZkEtRl1aezAsNH0pezAsNH0lWzAtOWEtekEtWl0rfDo6KGZmZmYoOjB7MSw0fSk/Oik/KCgyNVswLTVdfCgyWzAtNF18MT9cXGQpP1xcZClcXC4pezN9KDI1WzAtNV18KDJbMC00XXwxP1xcZCk/XFxkKXwoWzAtOWEtZkEtRl17MSw0fTopezEsNH06KCgyNVswLTVdfCgyWzAtNF18MT9cXGQpP1xcZClcXC4pezN9KDI1WzAtNV18KDJbMC00XXwxP1xcZCk/XFxkKSkoXFwvKDEyWzAtOF18MVswMV1bMC05XXxbMC05XVswLTldPykpPykoPyEuKlxcRFxcMihbXlxcZFxcL118JCkpICopKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMTQiLCAicGF0dGVybiI6ICJeKD8hICkoICooKChcXGIyNVswLTVdfFxcYjJbMC00XVxcZHxcXGJbMDFdP1xcZFxcZD8pKFxcLigyNVswLTVdfDJbMC00XVxcZHxbMDFdP1xcZFxcZD8pKXszfSkoXFwvKFsxLTJdWzAtOV0/fDNbMC0yXT98WzA0LTldKSk/fCgoWzAtOWEtZkEtRl17MSw0fTopezd9WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsN306fChbMC05YS1mQS1GXXsxLDR9Oil7MSw2fTpbMC05YS1mQS1GXXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw1fSg6WzAtOWEtZkEtRl17MSw0fSl7MSwyfXwoWzAtOWEtZkEtRl17MSw0fTopezEsNH0oOlswLTlhLWZBLUZdezEsNH0pezEsM318KFswLTlhLWZBLUZdezEsNH06KXsxLDN9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwyfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw1fXxbMC05YS1mQS1GXXsxLDR9OigoOlswLTlhLWZBLUZdezEsNH0pezEsNn0pfDooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDd9fDopfGZlODA6KDpbMC05YS1mQS1GXVp7MCw0fSl7MCw0fSVbMC05YS16QS1aXSt8OjooZmZmZig6MHsxLDR9KT86KT8oKDI1WzAtNV18KDJbMC00XXwxP1xcZCk/XFxkKVxcLil7M30oMjVbMC01XXwoMlswLTRdfDE/XFxkKT9cXGQpfChbMC05YS1mQS1GXXsxLDR9Oil7MSw0fTooKDI1WzAtNV18KDJbMC00XXwxP1xcZCk/XFxkKVxcLil7M30oMjVbMC01XXwoMlswLTRdfDE/XFxkKT9cXGQpKShcXC8oMTJbMC04XXwxWzAxXVswLTldfFswLTldWzAtOV0/KSk/KSg/IS4qXFxEXFwyKFteXFxkXFwvXXwkKSkgKikqJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiQmxhY2tsaXN0IGlnbm9yZSBJUC9uZXR3b3JrIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIElQL25ldHdvcmssIHNlcGFyYXRlZCB3aXRoIHNwYWNlcywgdG8gaWdub3JlIGluIHRoZSBibGFja2xpc3QuIn1dfSwgIkJMQUNLTElTVF9JR05PUkVfUkROUyI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJMaXN0IG9mIHJldmVyc2UgRE5TIHN1ZmZpeGVzLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIHRvIGlnbm9yZSBpbiB0aGUgYmxhY2tsaXN0LiIsICJpZCI6ICJibGFja2xpc3QtaWdub3JlLXJkbnMiLCAibGFiZWwiOiAiQmxhY2tsaXN0IGlnbm9yZSByZXZlcnNlIEROUyIsICJyZWdleCI6ICJeKCAqKChbXiBdKykoPyEuKlxcMyggfCQpKSkgKikqJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xMyIsICJwYXR0ZXJuIjogIl4oICooKFteIF0rKSg/IS4qXFwzKCB8JCkpKSAqKSokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJCbGFja2xpc3QgaWdub3JlIHJldmVyc2UgRE5TIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIHJldmVyc2UgRE5TIHN1ZmZpeGVzLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIHRvIGlnbm9yZSBpbiB0aGUgYmxhY2tsaXN0LiJ9XX0sICJCTEFDS0xJU1RfSUdOT1JFX0FTTiI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJMaXN0IG9mIEFTTiBudW1iZXJzLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIHRvIGlnbm9yZSBpbiB0aGUgYmxhY2tsaXN0LiIsICJpZCI6ICJibGFja2xpc3QtaWdub3JlLWFzbiIsICJsYWJlbCI6ICJCbGFja2xpc3QgaWdub3JlIEFTTiIsICJyZWdleCI6ICJeXiggKigoQVNOPyk/KFxcZCspXFxiKD8hLipbU04gXVxcNFxcYikpICopKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMTIiLCAicGF0dGVybiI6ICJeXiggKigoQVNOPyk/KFxcZCspXFxiKD8hLipbU04gXVxcNFxcYikpICopKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkJsYWNrbGlzdCBpZ25vcmUgQVNOIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIEFTTiBudW1iZXJzLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIHRvIGlnbm9yZSBpbiB0aGUgYmxhY2tsaXN0LiJ9XX0sICJCTEFDS0xJU1RfSUdOT1JFX1VTRVJfQUdFTlQiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiTGlzdCBvZiBVc2VyLUFnZW50IChQQ1JFIHJlZ2V4KSwgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCB0byBpZ25vcmUgaW4gdGhlIGJsYWNrbGlzdC4iLCAiaWQiOiAiYmxhY2tsaXN0LWlnbm9yZS11c2VyLWFnZW50IiwgImxhYmVsIjogIkJsYWNrbGlzdCBpZ25vcmUgVXNlci1BZ2VudCIsICJyZWdleCI6ICJeLiokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTExIiwgInBhdHRlcm4iOiAiXi4qJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiQmxhY2tsaXN0IGlnbm9yZSBVc2VyLUFnZW50IiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIFVzZXItQWdlbnQgKFBDUkUgcmVnZXgpLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIHRvIGlnbm9yZSBpbiB0aGUgYmxhY2tsaXN0LiJ9XX0sICJCTEFDS0xJU1RfSUdOT1JFX1VSSSI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJMaXN0IG9mIFVSSSAoUENSRSByZWdleCksIHNlcGFyYXRlZCB3aXRoIHNwYWNlcywgdG8gaWdub3JlIGluIHRoZSBibGFja2xpc3QuIiwgImlkIjogImJsYWNrbGlzdC1pZ25vcmUtdXJpIiwgImxhYmVsIjogIkJsYWNrbGlzdCBpZ25vcmUgVVJJIiwgInJlZ2V4IjogIl4oICooLiopKD8hLipcXDIoPyEuKSkgKikqJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xMCIsICJwYXR0ZXJuIjogIl4oICooLiopKD8hLipcXDIoPyEuKSkgKikqJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiQmxhY2tsaXN0IGlnbm9yZSBVUkkiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkxpc3Qgb2YgVVJJIChQQ1JFIHJlZ2V4KSwgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCB0byBpZ25vcmUgaW4gdGhlIGJsYWNrbGlzdC4ifV19LCAiQkxBQ0tMSVNUX0lQX1VSTFMiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAiaHR0cHM6Ly93d3cuZGFuLm1lLnVrL3Rvcmxpc3QvP2V4aXQiLCAiaGVscCI6ICJMaXN0IG9mIFVSTHMsIHNlcGFyYXRlZCB3aXRoIHNwYWNlcywgY29udGFpbmluZyBiYWQgSVAvbmV0d29yayB0byBibG9jay4iLCAiaWQiOiAiYmxhY2tsaXN0LWlwLXVybHMiLCAibGFiZWwiOiAiQmxhY2tsaXN0IElQL25ldHdvcmsgVVJMcyIsICJyZWdleCI6ICJeKCAqKChodHRwcz86XFwvXFwvfGZpbGU6XFwvXFwvXFwvKVtcXC1cXHdAOiUuK34jPV0rW1xcLVxcd1xcKFxcKSFAOiUrLn4jPyZcXC89JF0qKSg/IS4qXFwyKD8hLikpICopKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotOSIsICJwYXR0ZXJuIjogIl4oICooKGh0dHBzPzpcXC9cXC98ZmlsZTpcXC9cXC9cXC8pW1xcLVxcd0A6JS4rfiM9XStbXFwtXFx3XFwoXFwpIUA6JSsufiM/JlxcLz0kXSopKD8hLipcXDIoPyEuKSkgKikqJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiQmxhY2tsaXN0IElQL25ldHdvcmsgVVJMcyIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogImh0dHBzOi8vd3d3LmRhbi5tZS51ay90b3JsaXN0Lz9leGl0IiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTGlzdCBvZiBVUkxzLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIGNvbnRhaW5pbmcgYmFkIElQL25ldHdvcmsgdG8gYmxvY2suIn1dfSwgIkJMQUNLTElTVF9SRE5TX1VSTFMiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiTGlzdCBvZiBVUkxzLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIGNvbnRhaW5pbmcgcmV2ZXJzZSBETlMgc3VmZml4ZXMgdG8gYmxvY2suIiwgImlkIjogImJsYWNrbGlzdC1yZG5zLXVybHMiLCAibGFiZWwiOiAiQmxhY2tsaXN0IHJldmVyc2UgRE5TIFVSTHMiLCAicmVnZXgiOiAiXiggKigoaHR0cHM/OlxcL1xcL3xmaWxlOlxcL1xcL1xcLylbXFwtXFx3QDolLit+Iz1dK1tcXC1cXHdcXChcXCkhQDolKy5+Iz8mXFwvPSRdKikoPyEuKlxcMig/IS4pKSAqKSokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTgiLCAicGF0dGVybiI6ICJeKCAqKChodHRwcz86XFwvXFwvfGZpbGU6XFwvXFwvXFwvKVtcXC1cXHdAOiUuK34jPV0rW1xcLVxcd1xcKFxcKSFAOiUrLn4jPyZcXC89JF0qKSg/IS4qXFwyKD8hLikpICopKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkJsYWNrbGlzdCByZXZlcnNlIEROUyBVUkxzIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTGlzdCBvZiBVUkxzLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIGNvbnRhaW5pbmcgcmV2ZXJzZSBETlMgc3VmZml4ZXMgdG8gYmxvY2suIn1dfSwgIkJMQUNLTElTVF9BU05fVVJMUyI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJMaXN0IG9mIFVSTHMsIHNlcGFyYXRlZCB3aXRoIHNwYWNlcywgY29udGFpbmluZyBBU04gdG8gYmxvY2suIiwgImlkIjogImJsYWNrbGlzdC1hc24tdXJscyIsICJsYWJlbCI6ICJCbGFja2xpc3QgQVNOIFVSTHMiLCAicmVnZXgiOiAiXiggKigoaHR0cHM/OlxcL1xcL3xmaWxlOlxcL1xcL1xcLylbXFwtXFx3QDolLit+Iz1dK1tcXC1cXHdcXChcXCkhQDolKy5+Iz8mXFwvPSRdKikoPyEuKlxcMig/IS4pKSAqKSokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTciLCAicGF0dGVybiI6ICJeKCAqKChodHRwcz86XFwvXFwvfGZpbGU6XFwvXFwvXFwvKVtcXC1cXHdAOiUuK34jPV0rW1xcLVxcd1xcKFxcKSFAOiUrLn4jPyZcXC89JF0qKSg/IS4qXFwyKD8hLikpICopKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkJsYWNrbGlzdCBBU04gVVJMcyIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkxpc3Qgb2YgVVJMcywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCBjb250YWluaW5nIEFTTiB0byBibG9jay4ifV19LCAiQkxBQ0tMSVNUX1VTRVJfQUdFTlRfVVJMUyI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vbWl0Y2hlbGxrcm9nemEvbmdpbngtdWx0aW1hdGUtYmFkLWJvdC1ibG9ja2VyL21hc3Rlci9fZ2VuZXJhdG9yX2xpc3RzL2JhZC11c2VyLWFnZW50cy5saXN0IiwgImhlbHAiOiAiTGlzdCBvZiBVUkxzLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIGNvbnRhaW5pbmcgYmFkIFVzZXItQWdlbnQgdG8gYmxvY2suIiwgImlkIjogImJsYWNrbGlzdC11c2VyLWFnZW50LXVybHMiLCAibGFiZWwiOiAiQmxhY2tsaXN0IFVzZXItQWdlbnQgVVJMcyIsICJyZWdleCI6ICJeKCAqKChodHRwcz86XFwvXFwvfGZpbGU6XFwvXFwvXFwvKVtcXC1cXHdAOiUuK34jPV0rW1xcLVxcd1xcKFxcKSFAOiUrLn4jPyZcXC89JF0qKSg/IS4qXFwyKD8hLikpICopKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotNiIsICJwYXR0ZXJuIjogIl4oICooKGh0dHBzPzpcXC9cXC98ZmlsZTpcXC9cXC9cXC8pW1xcLVxcd0A6JS4rfiM9XStbXFwtXFx3XFwoXFwpIUA6JSsufiM/JlxcLz0kXSopKD8hLipcXDIoPyEuKSkgKikqJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiQmxhY2tsaXN0IFVzZXItQWdlbnQgVVJMcyIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9taXRjaGVsbGtyb2d6YS9uZ2lueC11bHRpbWF0ZS1iYWQtYm90LWJsb2NrZXIvbWFzdGVyL19nZW5lcmF0b3JfbGlzdHMvYmFkLXVzZXItYWdlbnRzLmxpc3QiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIFVSTHMsIHNlcGFyYXRlZCB3aXRoIHNwYWNlcywgY29udGFpbmluZyBiYWQgVXNlci1BZ2VudCB0byBibG9jay4ifV19LCAiQkxBQ0tMSVNUX1VSSV9VUkxTIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIkxpc3Qgb2YgVVJMcywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCBjb250YWluaW5nIGJhZCBVUkkgdG8gYmxvY2suIiwgImlkIjogImJsYWNrbGlzdC11cmktdXJscyIsICJsYWJlbCI6ICJCbGFja2xpc3QgVVJJIFVSTHMiLCAicmVnZXgiOiAiXiggKigoaHR0cHM/OlxcL1xcL3xmaWxlOlxcL1xcL1xcLylbXFwtXFx3QDolLit+Iz1dK1tcXC1cXHdcXChcXCkhQDolKy5+Iz8mXFwvPSRdKikoPyEuKlxcMig/IS4pKSAqKSokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTUiLCAicGF0dGVybiI6ICJeKCAqKChodHRwcz86XFwvXFwvfGZpbGU6XFwvXFwvXFwvKVtcXC1cXHdAOiUuK34jPV0rW1xcLVxcd1xcKFxcKSFAOiUrLn4jPyZcXC89JF0qKSg/IS4qXFwyKD8hLikpICopKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkJsYWNrbGlzdCBVUkkgVVJMcyIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkxpc3Qgb2YgVVJMcywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCBjb250YWluaW5nIGJhZCBVUkkgdG8gYmxvY2suIn1dfSwgIkJMQUNLTElTVF9JR05PUkVfSVBfVVJMUyI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJMaXN0IG9mIFVSTHMsIHNlcGFyYXRlZCB3aXRoIHNwYWNlcywgY29udGFpbmluZyBJUC9uZXR3b3JrIHRvIGlnbm9yZSBpbiB0aGUgYmxhY2tsaXN0LiIsICJpZCI6ICJibGFja2xpc3QtaWdub3JlLWlwLXVybHMiLCAibGFiZWwiOiAiQmxhY2tsaXN0IGlnbm9yZSBJUC9uZXR3b3JrIFVSTHMiLCAicmVnZXgiOiAiXiggKigoaHR0cHM/OlxcL1xcL3xmaWxlOlxcL1xcL1xcLylbXFwtXFx3QDolLit+Iz1dK1tcXC1cXHdcXChcXCkhQDolKy5+Iz8mXFwvPSRdKikoPyEuKlxcMig/IS4pKSAqKSokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTQiLCAicGF0dGVybiI6ICJeKCAqKChodHRwcz86XFwvXFwvfGZpbGU6XFwvXFwvXFwvKVtcXC1cXHdAOiUuK34jPV0rW1xcLVxcd1xcKFxcKSFAOiUrLn4jPyZcXC89JF0qKSg/IS4qXFwyKD8hLikpICopKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkJsYWNrbGlzdCBpZ25vcmUgSVAvbmV0d29yayBVUkxzIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTGlzdCBvZiBVUkxzLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIGNvbnRhaW5pbmcgSVAvbmV0d29yayB0byBpZ25vcmUgaW4gdGhlIGJsYWNrbGlzdC4ifV19LCAiQkxBQ0tMSVNUX0lHTk9SRV9SRE5TX1VSTFMiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiTGlzdCBvZiBVUkxzLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIGNvbnRhaW5pbmcgcmV2ZXJzZSBETlMgc3VmZml4ZXMgdG8gaWdub3JlIGluIHRoZSBibGFja2xpc3QuIiwgImlkIjogImJsYWNrbGlzdC1pZ25vcmUtcmRucy11cmxzIiwgImxhYmVsIjogIkJsYWNrbGlzdCBpZ25vcmUgcmV2ZXJzZSBETlMgVVJMcyIsICJyZWdleCI6ICJeKCAqKChodHRwcz86XFwvXFwvfGZpbGU6XFwvXFwvXFwvKVtcXC1cXHdAOiUuK34jPV0rW1xcLVxcd1xcKFxcKSFAOiUrLn4jPyZcXC89JF0qKSg/IS4qXFwyKD8hLikpICopKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMyIsICJwYXR0ZXJuIjogIl4oICooKGh0dHBzPzpcXC9cXC98ZmlsZTpcXC9cXC9cXC8pW1xcLVxcd0A6JS4rfiM9XStbXFwtXFx3XFwoXFwpIUA6JSsufiM/JlxcLz0kXSopKD8hLipcXDIoPyEuKSkgKikqJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiQmxhY2tsaXN0IGlnbm9yZSByZXZlcnNlIEROUyBVUkxzIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTGlzdCBvZiBVUkxzLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIGNvbnRhaW5pbmcgcmV2ZXJzZSBETlMgc3VmZml4ZXMgdG8gaWdub3JlIGluIHRoZSBibGFja2xpc3QuIn1dfSwgIkJMQUNLTElTVF9JR05PUkVfQVNOX1VSTFMiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiTGlzdCBvZiBVUkxzLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIGNvbnRhaW5pbmcgQVNOIHRvIGlnbm9yZSBpbiB0aGUgYmxhY2tsaXN0LiIsICJpZCI6ICJibGFja2xpc3QtaWdub3JlLWFzbi11cmxzIiwgImxhYmVsIjogIkJsYWNrbGlzdCBpZ25vcmUgQVNOIFVSTHMiLCAicmVnZXgiOiAiXiggKigoaHR0cHM/OlxcL1xcL3xmaWxlOlxcL1xcL1xcLylbXFwtXFx3QDolLit+Iz1dK1tcXC1cXHdcXChcXCkhQDolKy5+Iz8mXFwvPSRdKikoPyEuKlxcMig/IS4pKSAqKSokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTIiLCAicGF0dGVybiI6ICJeKCAqKChodHRwcz86XFwvXFwvfGZpbGU6XFwvXFwvXFwvKVtcXC1cXHdAOiUuK34jPV0rW1xcLVxcd1xcKFxcKSFAOiUrLn4jPyZcXC89JF0qKSg/IS4qXFwyKD8hLikpICopKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkJsYWNrbGlzdCBpZ25vcmUgQVNOIFVSTHMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIFVSTHMsIHNlcGFyYXRlZCB3aXRoIHNwYWNlcywgY29udGFpbmluZyBBU04gdG8gaWdub3JlIGluIHRoZSBibGFja2xpc3QuIn1dfSwgIkJMQUNLTElTVF9JR05PUkVfVVNFUl9BR0VOVF9VUkxTIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIkxpc3Qgb2YgVVJMcywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCBjb250YWluaW5nIFVzZXItQWdlbnQgdG8gaWdub3JlIGluIHRoZSBibGFja2xpc3QuIiwgImlkIjogImJsYWNrbGlzdC1pZ25vcmUtdXNlci1hZ2VudC11cmxzIiwgImxhYmVsIjogIkJsYWNrbGlzdCBpZ25vcmUgVXNlci1BZ2VudCBVUkxzIiwgInJlZ2V4IjogIl4oICooKGh0dHBzPzpcXC9cXC98ZmlsZTpcXC9cXC9cXC8pW1xcLVxcd0A6JS4rfiM9XStbXFwtXFx3XFwoXFwpIUA6JSsufiM/JlxcLz0kXSopKD8hLipcXDIoPyEuKSkgKikqJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xIiwgInBhdHRlcm4iOiAiXiggKigoaHR0cHM/OlxcL1xcL3xmaWxlOlxcL1xcL1xcLylbXFwtXFx3QDolLit+Iz1dK1tcXC1cXHdcXChcXCkhQDolKy5+Iz8mXFwvPSRdKikoPyEuKlxcMig/IS4pKSAqKSokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJCbGFja2xpc3QgaWdub3JlIFVzZXItQWdlbnQgVVJMcyIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkxpc3Qgb2YgVVJMcywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCBjb250YWluaW5nIFVzZXItQWdlbnQgdG8gaWdub3JlIGluIHRoZSBibGFja2xpc3QuIn1dfSwgIkJMQUNLTElTVF9JR05PUkVfVVJJX1VSTFMiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiTGlzdCBvZiBVUkxzLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIGNvbnRhaW5pbmcgVVJJIHRvIGlnbm9yZSBpbiB0aGUgYmxhY2tsaXN0LiIsICJpZCI6ICJibGFja2xpc3QtaWdub3JlLXVyaS11cmxzIiwgImxhYmVsIjogIkJsYWNrbGlzdCBpZ25vcmUgVVJJIFVSTHMiLCAicmVnZXgiOiAiXiggKigoaHR0cHM/OlxcL1xcL3xmaWxlOlxcL1xcL1xcLylbXFwtXFx3QDolLit+Iz1dK1tcXC1cXHdcXChcXCkhQDolKy5+Iz8mXFwvPSRdKikoPyEuKlxcMig/IS4pKSAqKSokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTAiLCAicGF0dGVybiI6ICJeKCAqKChodHRwcz86XFwvXFwvfGZpbGU6XFwvXFwvXFwvKVtcXC1cXHdAOiUuK34jPV0rW1xcLVxcd1xcKFxcKSFAOiUrLn4jPyZcXC89JF0qKSg/IS4qXFwyKD8hLikpICopKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkJsYWNrbGlzdCBpZ25vcmUgVVJJIFVSTHMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIFVSTHMsIHNlcGFyYXRlZCB3aXRoIHNwYWNlcywgY29udGFpbmluZyBVUkkgdG8gaWdub3JlIGluIHRoZSBibGFja2xpc3QuIn1dfX0sICJjaGVja3N1bSI6IG51bGwsICJtdWx0aXBsZXMiOiB7fX0sIHsiaWQiOiAiYnJvdGxpIiwgInN0cmVhbSI6ICJubyIsICJuYW1lIjogIkJyb3RsaSIsICJkZXNjcmlwdGlvbiI6ICJDb21wcmVzcyBIVFRQIHJlcXVlc3RzIHdpdGggdGhlIGJyb3RsaSBhbGdvcml0aG0uIiwgInZlcnNpb24iOiAiMS4wIiwgInR5cGUiOiAiY29yZSIsICJtZXRob2QiOiAibWFudWFsIiwgInBhZ2UiOiBmYWxzZSwgInNldHRpbmdzIjogeyJVU0VfQlJPVExJIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIm5vIiwgImhlbHAiOiAiVXNlIGJyb3RsaSIsICJpZCI6ICJ1c2UtYnJvdGxpIiwgImxhYmVsIjogIlVzZSBicm90bGkiLCAicmVnZXgiOiAiXih5ZXN8bm8pJCIsICJ0eXBlIjogImNoZWNrIiwgImNvbnRhaW5lckNsYXNzIjogInotMyIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIlVzZSBicm90bGkiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJubyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiVXNlIGJyb3RsaSJ9XX0sICJCUk9UTElfVFlQRVMiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiYXBwbGljYXRpb24vYXRvbSt4bWwgYXBwbGljYXRpb24vamF2YXNjcmlwdCBhcHBsaWNhdGlvbi9qc29uIGFwcGxpY2F0aW9uL3Jzcyt4bWwgYXBwbGljYXRpb24vdm5kLm1zLWZvbnRvYmplY3QgYXBwbGljYXRpb24veC1mb250LW9wZW50eXBlIGFwcGxpY2F0aW9uL3gtZm9udC10cnVldHlwZSBhcHBsaWNhdGlvbi94LWZvbnQtdHRmIGFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCBhcHBsaWNhdGlvbi94aHRtbCt4bWwgYXBwbGljYXRpb24veG1sIGZvbnQvZW90IGZvbnQvb3BlbnR5cGUgZm9udC9vdGYgZm9udC90cnVldHlwZSBpbWFnZS9zdmcreG1sIGltYWdlL3ZuZC5taWNyb3NvZnQuaWNvbiBpbWFnZS94LWljb24gaW1hZ2UveC13aW4tYml0bWFwIHRleHQvY3NzIHRleHQvamF2YXNjcmlwdCB0ZXh0L3BsYWluIHRleHQveG1sIiwgImhlbHAiOiAiTGlzdCBvZiBNSU1FIHR5cGVzIHRoYXQgd2lsbCBiZSBjb21wcmVzc2VkIHdpdGggYnJvdGxpLiIsICJpZCI6ICJicm90bGktdHlwZXMiLCAibGFiZWwiOiAiTUlNRSB0eXBlcyIsICJyZWdleCI6ICJeKD8hICkoID8oW1xcLVxcdy5dKy9bXFwtXFx3LitdKykoPyEuKlxcMig/IS4pKSkrJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0yIiwgInBhdHRlcm4iOiAiXig/ISApKCA/KFtcXC1cXHcuXSsvW1xcLVxcdy4rXSspKD8hLipcXDIoPyEuKSkpKyQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIk1JTUUgdHlwZXMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJhcHBsaWNhdGlvbi9hdG9tK3htbCBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IGFwcGxpY2F0aW9uL2pzb24gYXBwbGljYXRpb24vcnNzK3htbCBhcHBsaWNhdGlvbi92bmQubXMtZm9udG9iamVjdCBhcHBsaWNhdGlvbi94LWZvbnQtb3BlbnR5cGUgYXBwbGljYXRpb24veC1mb250LXRydWV0eXBlIGFwcGxpY2F0aW9uL3gtZm9udC10dGYgYXBwbGljYXRpb24veC1qYXZhc2NyaXB0IGFwcGxpY2F0aW9uL3hodG1sK3htbCBhcHBsaWNhdGlvbi94bWwgZm9udC9lb3QgZm9udC9vcGVudHlwZSBmb250L290ZiBmb250L3RydWV0eXBlIGltYWdlL3N2Zyt4bWwgaW1hZ2Uvdm5kLm1pY3Jvc29mdC5pY29uIGltYWdlL3gtaWNvbiBpbWFnZS94LXdpbi1iaXRtYXAgdGV4dC9jc3MgdGV4dC9qYXZhc2NyaXB0IHRleHQvcGxhaW4gdGV4dC94bWwiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkxpc3Qgb2YgTUlNRSB0eXBlcyB0aGF0IHdpbGwgYmUgY29tcHJlc3NlZCB3aXRoIGJyb3RsaS4ifV19LCAiQlJPVExJX01JTl9MRU5HVEgiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiMTAwMCIsICJoZWxwIjogIk1pbmltdW0gbGVuZ3RoIGZvciBicm90bGkgY29tcHJlc3Npb24uIiwgImlkIjogImJyb3RsaS1taW4tbGVuZ3RoIiwgImxhYmVsIjogIk1pbmltdW0gbGVuZ3RoIiwgInJlZ2V4IjogIl5cXGQrIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTEiLCAicGF0dGVybiI6ICJeXFxkKyIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiTWluaW11bSBsZW5ndGgiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIxMDAwIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJNaW5pbXVtIGxlbmd0aCBmb3IgYnJvdGxpIGNvbXByZXNzaW9uLiJ9XX0sICJCUk9UTElfQ09NUF9MRVZFTCI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICI2IiwgImhlbHAiOiAiVGhlIGNvbXByZXNzaW9uIGxldmVsIG9mIHRoZSBicm90bGkgYWxnb3JpdGhtLiIsICJpZCI6ICJicm90bGktY29tcC1sZXZlbCIsICJsYWJlbCI6ICJDb21wcmVzc2lvbiBsZXZlbCIsICJyZWdleCI6ICJeKFswMi05XXwxWzAxXT8pJCIsICJ0eXBlIjogInNlbGVjdCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTAiLCAicGF0dGVybiI6ICJeKFswMi05XXwxWzAxXT8pJCIsICJpbnBUeXBlIjogInNlbGVjdCIsICJuYW1lIjogIkNvbXByZXNzaW9uIGxldmVsIiwgInZhbHVlcyI6IFsiMCIsICIxIiwgIjEwIiwgIjExIiwgIjIiLCAiMyIsICI0IiwgIjUiLCAiNiIsICI3IiwgIjgiLCAiOSJdLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICI2IiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJUaGUgY29tcHJlc3Npb24gbGV2ZWwgb2YgdGhlIGJyb3RsaSBhbGdvcml0aG0uIn1dfX0sICJjaGVja3N1bSI6IG51bGwsICJtdWx0aXBsZXMiOiB7fX0sIHsiaWQiOiAiYnVua2VybmV0IiwgInN0cmVhbSI6ICJ5ZXMiLCAibmFtZSI6ICJCdW5rZXJOZXQiLCAiZGVzY3JpcHRpb24iOiAiU2hhcmUgdGhyZWF0IGRhdGEgd2l0aCBvdGhlciBCdW5rZXJXZWIgaW5zdGFuY2VzIHZpYSBCdW5rZXJOZXQuIiwgInZlcnNpb24iOiAiMS4wIiwgInR5cGUiOiAiY29yZSIsICJtZXRob2QiOiAibWFudWFsIiwgInBhZ2UiOiB0cnVlLCAic2V0dGluZ3MiOiB7IlVTRV9CVU5LRVJORVQiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAieWVzIiwgImhlbHAiOiAiQWN0aXZhdGUgQnVua2VyTmV0IGZlYXR1cmUuIiwgImlkIjogInVzZS1idW5rZXJuZXQiLCAibGFiZWwiOiAiQWN0aXZhdGUgQnVua2VyTmV0IiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJjb250YWluZXJDbGFzcyI6ICJ6LTEiLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJBY3RpdmF0ZSBCdW5rZXJOZXQiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJ5ZXMiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkFjdGl2YXRlIEJ1bmtlck5ldCBmZWF0dXJlLiJ9XX0sICJCVU5LRVJORVRfU0VSVkVSIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogImh0dHBzOi8vYXBpLmJ1bmtlcndlYi5pbyIsICJoZWxwIjogIkFkZHJlc3Mgb2YgdGhlIEJ1bmtlck5ldCBBUEkuIiwgImlkIjogImJ1bmtlcm5ldC1zZXJ2ZXIiLCAibGFiZWwiOiAiQnVua2VyTmV0IHNlcnZlciIsICJyZWdleCI6ICJeaHR0cHM/OlxcL1xcL1tcXC1cXHdAOiUuK34jPV0rW1xcLVxcd1xcKFxcKSFAOiUrLn4jPyZcXC89JF0qJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0wIiwgInBhdHRlcm4iOiAiXmh0dHBzPzpcXC9cXC9bXFwtXFx3QDolLit+Iz1dK1tcXC1cXHdcXChcXCkhQDolKy5+Iz8mXFwvPSRdKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkJ1bmtlck5ldCBzZXJ2ZXIiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJodHRwczovL2FwaS5idW5rZXJ3ZWIuaW8iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJBZGRyZXNzIG9mIHRoZSBCdW5rZXJOZXQgQVBJLiJ9XX19LCAiY2hlY2tzdW0iOiBudWxsLCAibXVsdGlwbGVzIjoge319LCB7ImlkIjogImNvcnMiLCAic3RyZWFtIjogIm5vIiwgIm5hbWUiOiAiQ09SUyIsICJkZXNjcmlwdGlvbiI6ICJDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZy4iLCAidmVyc2lvbiI6ICIxLjAiLCAidHlwZSI6ICJjb3JlIiwgIm1ldGhvZCI6ICJtYW51YWwiLCAicGFnZSI6IHRydWUsICJzZXR0aW5ncyI6IHsiVVNFX0NPUlMiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAibm8iLCAiaGVscCI6ICJVc2UgQ09SUyIsICJpZCI6ICJ1c2UtY29ycyIsICJsYWJlbCI6ICJVc2UgQ09SUyIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xMCIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIlVzZSBDT1JTIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IHRydWUsICJ2YWx1ZSI6ICJ5ZXMiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJ0cmVzcGFzcyIsICJ0ZXh0IjogImlucF9wb3BvdmVyX21ldGhvZF9kaXNhYmxlZCJ9LCB7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiVXNlIENPUlMifV19LCAiQ09SU19BTExPV19PUklHSU4iOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiKiIsICJoZWxwIjogIkFsbG93ZWQgb3JpZ2lucyB0byBtYWtlIENPUlMgcmVxdWVzdHMgOiBQQ1JFIHJlZ2V4IG9yICouIiwgImlkIjogImNvcnMtYWxsb3ctb3JpZ2luIiwgImxhYmVsIjogIkFsbG93ZWQgb3JpZ2lucyIsICJyZWdleCI6ICJeLiokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTkiLCAicGF0dGVybiI6ICJeLiokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJBbGxvd2VkIG9yaWdpbnMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIqIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJBbGxvd2VkIG9yaWdpbnMgdG8gbWFrZSBDT1JTIHJlcXVlc3RzIDogUENSRSByZWdleCBvciAqLiJ9XX0sICJDT1JTX0FMTE9XX01FVEhPRFMiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiR0VULCBQT1NULCBPUFRJT05TIiwgImhlbHAiOiAiVmFsdWUgb2YgdGhlIEFjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMgaGVhZGVyLiIsICJpZCI6ICJjb3JzLWFsbG93LW1ldGhvZHMiLCAibGFiZWwiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctTWV0aG9kcyB2YWx1ZSIsICJyZWdleCI6ICJeKFxcKnwoPyFbLCBdKSgsPyA/KEdFVHxIRUFEfFBPU1R8UFVUfERFTEVURXxDT05ORUNUfE9QVElPTlN8VFJBQ0V8UEFUQ0gpKD8hLipcXDMpKSopPyQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotOCIsICJwYXR0ZXJuIjogIl4oXFwqfCg/IVssIF0pKCw/ID8oR0VUfEhFQUR8UE9TVHxQVVR8REVMRVRFfENPTk5FQ1R8T1BUSU9OU3xUUkFDRXxQQVRDSCkoPyEuKlxcMykpKik/JCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctTWV0aG9kcyB2YWx1ZSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIkdFVCwgUE9TVCwgT1BUSU9OUyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiVmFsdWUgb2YgdGhlIEFjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMgaGVhZGVyLiJ9XX0sICJDT1JTX0FMTE9XX0hFQURFUlMiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiRE5ULFVzZXItQWdlbnQsWC1SZXF1ZXN0ZWQtV2l0aCxJZi1Nb2RpZmllZC1TaW5jZSxDYWNoZS1Db250cm9sLENvbnRlbnQtVHlwZSxSYW5nZSIsICJoZWxwIjogIlZhbHVlIG9mIHRoZSBBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIGhlYWRlci4iLCAiaWQiOiAiY29ycy1hbGxvdy1oZWFkZXJzIiwgImxhYmVsIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMgdmFsdWUiLCAicmVnZXgiOiAiXihcXCp8KD8hWywgXSkoLD8gPyhbXFx3XFwtXSspKD8hLipcXDMoPyEuKSkpKik/JCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei03IiwgInBhdHRlcm4iOiAiXihcXCp8KD8hWywgXSkoLD8gPyhbXFx3XFwtXSspKD8hLipcXDMoPyEuKSkpKik/JCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyB2YWx1ZSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIkROVCxVc2VyLUFnZW50LFgtUmVxdWVzdGVkLVdpdGgsSWYtTW9kaWZpZWQtU2luY2UsQ2FjaGUtQ29udHJvbCxDb250ZW50LVR5cGUsUmFuZ2UiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlZhbHVlIG9mIHRoZSBBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIGhlYWRlci4ifV19LCAiQ09SU19BTExPV19DUkVERU5USUFMUyI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJubyIsICJoZWxwIjogIlNlbmQgdGhlIEFjY2Vzcy1Db250cm9sLUFsbG93LUNyZWRlbnRpYWxzIGhlYWRlci4iLCAiaWQiOiAiY29ycy1hbGxvdy1jcmVkZW50aWFscyIsICJsYWJlbCI6ICJTZW5kIEFjY2Vzcy1Db250cm9sLUFsbG93LUNyZWRlbnRpYWxzIiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJjb250YWluZXJDbGFzcyI6ICJ6LTYiLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJTZW5kIEFjY2Vzcy1Db250cm9sLUFsbG93LUNyZWRlbnRpYWxzIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAibm8iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlNlbmQgdGhlIEFjY2Vzcy1Db250cm9sLUFsbG93LUNyZWRlbnRpYWxzIGhlYWRlci4ifV19LCAiQ09SU19FWFBPU0VfSEVBREVSUyI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJDb250ZW50LUxlbmd0aCxDb250ZW50LVJhbmdlIiwgImhlbHAiOiAiVmFsdWUgb2YgdGhlIEFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIGhlYWRlci4iLCAiaWQiOiAiY29ycy1leHBvc2UtaGVhZGVycyIsICJsYWJlbCI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyB2YWx1ZSIsICJyZWdleCI6ICJeKFxcKnwoPyFbLCBdKykoLD8gPyhbXFx3XFwtXSspKD8hLipcXDMoPyEuKSkpKik/JCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei01IiwgInBhdHRlcm4iOiAiXihcXCp8KD8hWywgXSspKCw/ID8oW1xcd1xcLV0rKSg/IS4qXFwzKD8hLikpKSopPyQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIHZhbHVlIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiQ29udGVudC1MZW5ndGgsQ29udGVudC1SYW5nZSIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiVmFsdWUgb2YgdGhlIEFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIGhlYWRlci4ifV19LCAiQ1JPU1NfT1JJR0lOX09QRU5FUl9QT0xJQ1kiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiVmFsdWUgZm9yIHRoZSBDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSBoZWFkZXIuIiwgImlkIjogImNyb3NzLW9yaWdpbi1vcGVuZXItcG9saWN5IiwgImxhYmVsIjogIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5IiwgInJlZ2V4IjogIl4odW5zYWZlLW5vbmV8c2FtZS1vcmlnaW4tYWxsb3ctcG9wdXBzfHNhbWUtb3JpZ2luKT8kIiwgInR5cGUiOiAic2VsZWN0IiwgImNvbnRhaW5lckNsYXNzIjogInotNCIsICJwYXR0ZXJuIjogIl4odW5zYWZlLW5vbmV8c2FtZS1vcmlnaW4tYWxsb3ctcG9wdXBzfHNhbWUtb3JpZ2luKT8kIiwgImlucFR5cGUiOiAic2VsZWN0IiwgIm5hbWUiOiAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiLCAidmFsdWVzIjogWyIiLCAic2FtZS1vcmlnaW4iLCAic2FtZS1vcmlnaW4tYWxsb3ctcG9wdXBzIiwgInVuc2FmZS1ub25lIl0sICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiVmFsdWUgZm9yIHRoZSBDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSBoZWFkZXIuIn1dfSwgIkNST1NTX09SSUdJTl9FTUJFRERFUl9QT0xJQ1kiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiVmFsdWUgZm9yIHRoZSBDcm9zcy1PcmlnaW4tRW1iZWRkZXItUG9saWN5IGhlYWRlci4iLCAiaWQiOiAiY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeSIsICJsYWJlbCI6ICJDcm9zcy1PcmlnaW4tRW1iZWRkZXItUG9saWN5IiwgInJlZ2V4IjogIl4odW5zYWZlLW5vbmV8cmVxdWlyZS1jb3JwfGNyZWRlbnRpYWxsZXNzKT8kIiwgInR5cGUiOiAic2VsZWN0IiwgImNvbnRhaW5lckNsYXNzIjogInotMyIsICJwYXR0ZXJuIjogIl4odW5zYWZlLW5vbmV8cmVxdWlyZS1jb3JwfGNyZWRlbnRpYWxsZXNzKT8kIiwgImlucFR5cGUiOiAic2VsZWN0IiwgIm5hbWUiOiAiQ3Jvc3MtT3JpZ2luLUVtYmVkZGVyLVBvbGljeSIsICJ2YWx1ZXMiOiBbIiIsICJjcmVkZW50aWFsbGVzcyIsICJyZXF1aXJlLWNvcnAiLCAidW5zYWZlLW5vbmUiXSwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJWYWx1ZSBmb3IgdGhlIENyb3NzLU9yaWdpbi1FbWJlZGRlci1Qb2xpY3kgaGVhZGVyLiJ9XX0sICJDUk9TU19PUklHSU5fUkVTT1VSQ0VfUE9MSUNZIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIlZhbHVlIGZvciB0aGUgQ3Jvc3MtT3JpZ2luLVJlc291cmNlLVBvbGljeSBoZWFkZXIuIiwgImlkIjogImNyb3NzLW9yaWdpbi1yZXNvdXJjZS1wb2xpY3kiLCAibGFiZWwiOiAiQ3Jvc3MtT3JpZ2luLVJlc291cmNlLVBvbGljeSIsICJyZWdleCI6ICJeKHNhbWUtc2l0ZXxzYW1lLW9yaWdpbnxjcm9zcy1vcmlnaW4pPyQiLCAidHlwZSI6ICJzZWxlY3QiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0yIiwgInBhdHRlcm4iOiAiXihzYW1lLXNpdGV8c2FtZS1vcmlnaW58Y3Jvc3Mtb3JpZ2luKT8kIiwgImlucFR5cGUiOiAic2VsZWN0IiwgIm5hbWUiOiAiQ3Jvc3MtT3JpZ2luLVJlc291cmNlLVBvbGljeSIsICJ2YWx1ZXMiOiBbIiIsICJjcm9zcy1vcmlnaW4iLCAic2FtZS1vcmlnaW4iLCAic2FtZS1zaXRlIl0sICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiVmFsdWUgZm9yIHRoZSBDcm9zcy1PcmlnaW4tUmVzb3VyY2UtUG9saWN5IGhlYWRlci4ifV19LCAiQ09SU19NQVhfQUdFIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIjg2NDAwIiwgImhlbHAiOiAiVmFsdWUgb2YgdGhlIEFjY2Vzcy1Db250cm9sLU1heC1BZ2UgaGVhZGVyLiIsICJpZCI6ICJjb3JzLW1heC1hZ2UiLCAibGFiZWwiOiAiQWNjZXNzLUNvbnRyb2wtTWF4LUFnZSB2YWx1ZSIsICJyZWdleCI6ICJeXFxkKyQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMSIsICJwYXR0ZXJuIjogIl5cXGQrJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtTWF4LUFnZSB2YWx1ZSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIjg2NDAwIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJWYWx1ZSBvZiB0aGUgQWNjZXNzLUNvbnRyb2wtTWF4LUFnZSBoZWFkZXIuIn1dfSwgIkNPUlNfREVOWV9SRVFVRVNUIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogInllcyIsICJoZWxwIjogIkRlbnkgcmVxdWVzdCBhbmQgZG9uJ3Qgc2VuZCBpdCB0byBiYWNrZW5kIGlmIE9yaWdpbiBpcyBub3QgYWxsb3dlZC4iLCAiaWQiOiAiY29ycy1kZW55LXJlcXVlc3QiLCAibGFiZWwiOiAiRGVueSByZXF1ZXN0IiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJjb250YWluZXJDbGFzcyI6ICJ6LTAiLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJEZW55IHJlcXVlc3QiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJ5ZXMiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkRlbnkgcmVxdWVzdCBhbmQgZG9uJ3Qgc2VuZCBpdCB0byBiYWNrZW5kIGlmIE9yaWdpbiBpcyBub3QgYWxsb3dlZC4ifV19fSwgImNoZWNrc3VtIjogbnVsbCwgIm11bHRpcGxlcyI6IHt9fSwgeyJpZCI6ICJjbGllbnRjYWNoZSIsICJzdHJlYW0iOiAibm8iLCAibmFtZSI6ICJDbGllbnQgY2FjaGUiLCAiZGVzY3JpcHRpb24iOiAiTWFuYWdlIGNhY2hpbmcgZm9yIGNsaWVudHMuIiwgInZlcnNpb24iOiAiMS4wIiwgInR5cGUiOiAiY29yZSIsICJtZXRob2QiOiAibWFudWFsIiwgInBhZ2UiOiBmYWxzZSwgInNldHRpbmdzIjogeyJVU0VfQ0xJRU5UX0NBQ0hFIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIm5vIiwgImhlbHAiOiAiVGVsbCBjbGllbnQgdG8gc3RvcmUgbG9jYWxseSBzdGF0aWMgZmlsZXMuIiwgImlkIjogInVzZS1jbGllbnQtY2FjaGUiLCAibGFiZWwiOiAiVXNlIGNsaWVudCBjYWNoZSIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei0zIiwgInBhdHRlcm4iOiAiXih5ZXN8bm8pJCIsICJpbnBUeXBlIjogImNoZWNrYm94IiwgIm5hbWUiOiAiVXNlIGNsaWVudCBjYWNoZSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIm5vIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJUZWxsIGNsaWVudCB0byBzdG9yZSBsb2NhbGx5IHN0YXRpYyBmaWxlcy4ifV19LCAiQ0xJRU5UX0NBQ0hFX0VYVEVOU0lPTlMiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAianBnfGpwZWd8cG5nfGJtcHxpY298c3ZnfHRpZnxjc3N8anN8b3RmfHR0Znxlb3R8d29mZnx3b2ZmMiIsICJoZWxwIjogIkxpc3Qgb2YgZmlsZSBleHRlbnNpb25zLCBzZXBhcmF0ZWQgd2l0aCBwaXBlcyB0aGF0IHNob3VsZCBiZSBjYWNoZWQuIiwgImlkIjogImNsaWVudC1jYWNoZS1leHRlbnNpb25zIiwgImxhYmVsIjogIkV4dGVuc2lvbnMgdGhhdCBzaG91bGQgYmUgY2FjaGVkIGJ5IHRoZSBjbGllbnQiLCAicmVnZXgiOiAiXig/IVxcfCkoXFx8PyhbYS16MC05XSspKD8hLipcXDIoPyEuKSkpKyQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMiIsICJwYXR0ZXJuIjogIl4oPyFcXHwpKFxcfD8oW2EtejAtOV0rKSg/IS4qXFwyKD8hLikpKSskIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJFeHRlbnNpb25zIHRoYXQgc2hvdWxkIGJlIGNhY2hlZCBieSB0aGUgY2xpZW50IiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAianBnfGpwZWd8cG5nfGJtcHxpY298c3ZnfHRpZnxjc3N8anN8b3RmfHR0Znxlb3R8d29mZnx3b2ZmMiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkxpc3Qgb2YgZmlsZSBleHRlbnNpb25zLCBzZXBhcmF0ZWQgd2l0aCBwaXBlcyB0aGF0IHNob3VsZCBiZSBjYWNoZWQuIn1dfSwgIkNMSUVOVF9DQUNIRV9FVEFHIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogInllcyIsICJoZWxwIjogIlNlbmQgdGhlIEhUVFAgRVRhZyBoZWFkZXIgZm9yIHN0YXRpYyByZXNvdXJjZXMuIiwgImlkIjogImNsaWVudC1jYWNoZS1ldGFnIiwgImxhYmVsIjogIkVUYWciLCAicmVnZXgiOiAiXih5ZXN8bm8pJCIsICJ0eXBlIjogImNoZWNrIiwgImNvbnRhaW5lckNsYXNzIjogInotMSIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIkVUYWciLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJ5ZXMiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlNlbmQgdGhlIEhUVFAgRVRhZyBoZWFkZXIgZm9yIHN0YXRpYyByZXNvdXJjZXMuIn1dfSwgIkNMSUVOVF9DQUNIRV9DT05UUk9MIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogInB1YmxpYywgbWF4LWFnZT0xNTU1MjAwMCIsICJoZWxwIjogIlZhbHVlIG9mIHRoZSBDYWNoZS1Db250cm9sIEhUVFAgaGVhZGVyLiIsICJpZCI6ICJjbGllbnQtY2FjaGUtY29udHJvbCIsICJsYWJlbCI6ICJDYWNoZS1Db250cm9sIGhlYWRlciIsICJyZWdleCI6ICJeKD8hKCwgP3wgKSkoKCwgKT8oKChtYXgtYWdlfHMtbWF4YWdlfHN0YWxlLXdoaWxlLXJldmFsaWRhdGV8c3RhbGUtaWYtZXJyb3IpPVxcZCsoPyEuKlxcNikpfCgoPyEuKnB1YmxpYylwcml2YXRlfCg/IS4qcHJpdmF0ZSlwdWJsaWMpfChtdXN0fHByb3h5KS1yZXZhbGlkYXRlfG11c3QtdW5kZXJzdGFuZHxpbW11dGFibGV8bm8tKGNhY2hlfHN0b3JlfHRyYW5zZm9ybSkpKD8hLipcXDQpKSskIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTAiLCAicGF0dGVybiI6ICJeKD8hKCwgP3wgKSkoKCwgKT8oKChtYXgtYWdlfHMtbWF4YWdlfHN0YWxlLXdoaWxlLXJldmFsaWRhdGV8c3RhbGUtaWYtZXJyb3IpPVxcZCsoPyEuKlxcNikpfCgoPyEuKnB1YmxpYylwcml2YXRlfCg/IS4qcHJpdmF0ZSlwdWJsaWMpfChtdXN0fHByb3h5KS1yZXZhbGlkYXRlfG11c3QtdW5kZXJzdGFuZHxpbW11dGFibGV8bm8tKGNhY2hlfHN0b3JlfHRyYW5zZm9ybSkpKD8hLipcXDQpKSskIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJDYWNoZS1Db250cm9sIGhlYWRlciIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogInB1YmxpYywgbWF4LWFnZT0xNTU1MjAwMCIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiVmFsdWUgb2YgdGhlIENhY2hlLUNvbnRyb2wgSFRUUCBoZWFkZXIuIn1dfX0sICJjaGVja3N1bSI6IG51bGwsICJtdWx0aXBsZXMiOiB7fX0sIHsiaWQiOiAiY291bnRyeSIsICJzdHJlYW0iOiAieWVzIiwgIm5hbWUiOiAiQ291bnRyeSIsICJkZXNjcmlwdGlvbiI6ICJEZW55IGFjY2VzcyBiYXNlZCBvbiB0aGUgY291bnRyeSBvZiB0aGUgY2xpZW50IElQLiIsICJ2ZXJzaW9uIjogIjEuMCIsICJ0eXBlIjogImNvcmUiLCAibWV0aG9kIjogIm1hbnVhbCIsICJwYWdlIjogdHJ1ZSwgInNldHRpbmdzIjogeyJCTEFDS0xJU1RfQ09VTlRSWSI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJEZW55IGFjY2VzcyBpZiB0aGUgY291bnRyeSBvZiB0aGUgY2xpZW50IGlzIGluIHRoZSBsaXN0IChJU08gMzE2Ni0xIGFscGhhLTIgZm9ybWF0IHNlcGFyYXRlZCB3aXRoIHNwYWNlcykuIiwgImlkIjogImNvdW50cnktYmxhY2tsaXN0IiwgImxhYmVsIjogIkNvdW50cnkgYmxhY2tsaXN0IiwgInJlZ2V4IjogIl4oPyEgKSggKihbQS1aXXsyfSkoPyEuKlxcMikgKikqJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xIiwgInBhdHRlcm4iOiAiXig/ISApKCAqKFtBLVpdezJ9KSg/IS4qXFwyKSAqKSokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJDb3VudHJ5IGJsYWNrbGlzdCIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiRGVueSBhY2Nlc3MgaWYgdGhlIGNvdW50cnkgb2YgdGhlIGNsaWVudCBpcyBpbiB0aGUgbGlzdCAoSVNPIDMxNjYtMSBhbHBoYS0yIGZvcm1hdCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMpLiJ9XX0sICJXSElURUxJU1RfQ09VTlRSWSI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJEZW55IGFjY2VzcyBpZiB0aGUgY291bnRyeSBvZiB0aGUgY2xpZW50IGlzIG5vdCBpbiB0aGUgbGlzdCAoSVNPIDMxNjYtMSBhbHBoYS0yIGZvcm1hdCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMpLiIsICJpZCI6ICJjb3VudHJ5LXdoaXRlbGlzdCIsICJsYWJlbCI6ICJDb3VudHJ5IHdoaXRlbGlzdCIsICJyZWdleCI6ICJeKD8hICkoICooW0EtWl17Mn0pKD8hLipcXDIpICopKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMCIsICJwYXR0ZXJuIjogIl4oPyEgKSggKihbQS1aXXsyfSkoPyEuKlxcMikgKikqJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiQ291bnRyeSB3aGl0ZWxpc3QiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkRlbnkgYWNjZXNzIGlmIHRoZSBjb3VudHJ5IG9mIHRoZSBjbGllbnQgaXMgbm90IGluIHRoZSBsaXN0IChJU08gMzE2Ni0xIGFscGhhLTIgZm9ybWF0IHNlcGFyYXRlZCB3aXRoIHNwYWNlcykuIn1dfX0sICJjaGVja3N1bSI6IG51bGwsICJtdWx0aXBsZXMiOiB7fX0sIHsiaWQiOiAiY3VzdG9tY2VydCIsICJzdHJlYW0iOiAieWVzIiwgIm5hbWUiOiAiQ3VzdG9tIEhUVFBTIGNlcnRpZmljYXRlIiwgImRlc2NyaXB0aW9uIjogIkNob29zZSBjdXN0b20gY2VydGlmaWNhdGUgZm9yIEhUVFBTLiIsICJ2ZXJzaW9uIjogIjEuMCIsICJ0eXBlIjogImNvcmUiLCAibWV0aG9kIjogIm1hbnVhbCIsICJwYWdlIjogZmFsc2UsICJzZXR0aW5ncyI6IHsiVVNFX0NVU1RPTV9TU0wiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAibm8iLCAiaGVscCI6ICJVc2UgY3VzdG9tIEhUVFBTIGNlcnRpZmljYXRlLiIsICJpZCI6ICJ1c2UtY3VzdG9tLWh0dHBzIiwgImxhYmVsIjogIlVzZSBjdXN0b20gY2VydGlmaWNhdGUiLCAicmVnZXgiOiAiXih5ZXN8bm8pJCIsICJ0eXBlIjogImNoZWNrIiwgImNvbnRhaW5lckNsYXNzIjogInotNCIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIlVzZSBjdXN0b20gY2VydGlmaWNhdGUiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJubyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiVXNlIGN1c3RvbSBIVFRQUyBjZXJ0aWZpY2F0ZS4ifV19LCAiQ1VTVE9NX1NTTF9DRVJUIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIkZ1bGwgcGF0aCBvZiB0aGUgY2VydGlmaWNhdGUgb3IgYnVuZGxlIGZpbGUgKG11c3QgYmUgcmVhZGFibGUgYnkgdGhlIHNjaGVkdWxlcikuIiwgImlkIjogImN1c3RvbS1odHRwcy1jZXJ0IiwgImxhYmVsIjogIkNlcnRpZmljYXRlIHBhdGgiLCAicmVnZXgiOiAiXigvW1xcdy4gXFwtXSspKi8/JCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0zIiwgInBhdHRlcm4iOiAiXigvW1xcdy4gXFwtXSspKi8/JCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiQ2VydGlmaWNhdGUgcGF0aCIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiRnVsbCBwYXRoIG9mIHRoZSBjZXJ0aWZpY2F0ZSBvciBidW5kbGUgZmlsZSAobXVzdCBiZSByZWFkYWJsZSBieSB0aGUgc2NoZWR1bGVyKS4ifV19LCAiQ1VTVE9NX1NTTF9LRVkiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiRnVsbCBwYXRoIG9mIHRoZSBrZXkgZmlsZSAobXVzdCBiZSByZWFkYWJsZSBieSB0aGUgc2NoZWR1bGVyKS4iLCAiaWQiOiAiY3VzdG9tLWh0dHBzLWtleSIsICJsYWJlbCI6ICJLZXkgcGF0aCIsICJyZWdleCI6ICJeKC9bXFx3LiBcXC1dKykqLz8kIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTIiLCAicGF0dGVybiI6ICJeKC9bXFx3LiBcXC1dKykqLz8kIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJLZXkgcGF0aCIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiRnVsbCBwYXRoIG9mIHRoZSBrZXkgZmlsZSAobXVzdCBiZSByZWFkYWJsZSBieSB0aGUgc2NoZWR1bGVyKS4ifV19LCAiQ1VTVE9NX1NTTF9DRVJUX0RBVEEiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiQ2VydGlmaWNhdGUgZGF0YSBlbmNvZGVkIGluIGJhc2U2NC4iLCAiaWQiOiAiY3VzdG9tLWh0dHBzLWNlcnQtZGF0YSIsICJsYWJlbCI6ICJDZXJ0aWZpY2F0ZSBkYXRhIChiYXNlNjQpIiwgInJlZ2V4IjogIl4uKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMSIsICJwYXR0ZXJuIjogIl4uKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkNlcnRpZmljYXRlIGRhdGEgKGJhc2U2NCkiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkNlcnRpZmljYXRlIGRhdGEgZW5jb2RlZCBpbiBiYXNlNjQuIn1dfSwgIkNVU1RPTV9TU0xfS0VZX0RBVEEiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiS2V5IGRhdGEgZW5jb2RlZCBpbiBiYXNlNjQuIiwgImlkIjogImN1c3RvbS1odHRwcy1rZXktZGF0YSIsICJsYWJlbCI6ICJLZXkgZGF0YSAoYmFzZTY0KSIsICJyZWdleCI6ICJeLiokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTAiLCAicGF0dGVybiI6ICJeLiokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJLZXkgZGF0YSAoYmFzZTY0KSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiS2V5IGRhdGEgZW5jb2RlZCBpbiBiYXNlNjQuIn1dfX0sICJjaGVja3N1bSI6IG51bGwsICJtdWx0aXBsZXMiOiB7fX0sIHsiaWQiOiAiZGIiLCAic3RyZWFtIjogInllcyIsICJuYW1lIjogIkRCIiwgImRlc2NyaXB0aW9uIjogIkludGVncmF0ZSBlYXNpbHkgdGhlIERhdGFiYXNlLiIsICJ2ZXJzaW9uIjogIjEuMCIsICJ0eXBlIjogImNvcmUiLCAibWV0aG9kIjogIm1hbnVhbCIsICJwYWdlIjogZmFsc2UsICJzZXR0aW5ncyI6IHsiREFUQUJBU0VfVVJJIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogInNxbGl0ZTovLy8vdmFyL2xpYi9idW5rZXJ3ZWIvZGIuc3FsaXRlMyIsICJoZWxwIjogIlRoZSBkYXRhYmFzZSBVUkksIGZvbGxvd2luZyB0aGUgc3FsYWxjaGVteSBmb3JtYXQuIiwgImlkIjogImRhdGFiYXNlLXVyaSIsICJsYWJlbCI6ICJUaGUgZGF0YWJhc2UgVVJJIiwgInJlZ2V4IjogIl4oKHBvc3RncmVzcWx8bXlzcWx8bWFyaWFkYnxzcWxpdGUpKFxcK1tcXHdcXC1dKyk/Oi4rKT8kIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTIiLCAicGF0dGVybiI6ICJeKChwb3N0Z3Jlc3FsfG15c3FsfG1hcmlhZGJ8c3FsaXRlKShcXCtbXFx3XFwtXSspPzouKyk/JCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiVGhlIGRhdGFiYXNlIFVSSSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogInNxbGl0ZTovLy8vdmFyL2xpYi9idW5rZXJ3ZWIvZGIuc3FsaXRlMyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlRoZSBkYXRhYmFzZSBVUkksIGZvbGxvd2luZyB0aGUgc3FsYWxjaGVteSBmb3JtYXQuIn1dfSwgIkRBVEFCQVNFX1VSSV9SRUFET05MWSI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJUaGUgZGF0YWJhc2UgVVJJIGZvciByZWFkLW9ubHkgb3BlcmF0aW9ucywgaXQgY2FuIGFsc28gc2VydmUgYXMgYSBmYWxsYmFjayBpZiB0aGUgbWFpbiBkYXRhYmFzZSBpcyBkb3duLiBGb2xsb3dpbmcgdGhlIHNxbGFsY2hlbXkgZm9ybWF0LiIsICJpZCI6ICJkYXRhYmFzZS11cmktcmVhZG9ubHkiLCAibGFiZWwiOiAiVGhlIGRhdGFiYXNlIFVSSSBmb3IgcmVhZC1vbmx5IG9wZXJhdGlvbnMiLCAicmVnZXgiOiAiXigocG9zdGdyZXNxbHxteXNxbHxtYXJpYWRifHNxbGl0ZSkoXFwrW1xcd1xcLV0rKT86LispPyQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMSIsICJwYXR0ZXJuIjogIl4oKHBvc3RncmVzcWx8bXlzcWx8bWFyaWFkYnxzcWxpdGUpKFxcK1tcXHdcXC1dKyk/Oi4rKT8kIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJUaGUgZGF0YWJhc2UgVVJJIGZvciByZWFkLW9ubHkgb3BlcmF0aW9ucyIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlRoZSBkYXRhYmFzZSBVUkkgZm9yIHJlYWQtb25seSBvcGVyYXRpb25zLCBpdCBjYW4gYWxzbyBzZXJ2ZSBhcyBhIGZhbGxiYWNrIGlmIHRoZSBtYWluIGRhdGFiYXNlIGlzIGRvd24uIEZvbGxvd2luZyB0aGUgc3FsYWxjaGVteSBmb3JtYXQuIn1dfSwgIkRBVEFCQVNFX0xPR19MRVZFTCI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICJ3YXJuaW5nIiwgImhlbHAiOiAiVGhlIGxldmVsIHRvIHVzZSBmb3IgZGF0YWJhc2UgbG9ncy4iLCAiaWQiOiAiZGF0YWJhc2UtbG9nLWxldmVsIiwgImxhYmVsIjogIkRhdGFiYXNlIGxvZyBsZXZlbCIsICJyZWdleCI6ICJeKGRlYnVnfGluZm98d2Fybnx3YXJuaW5nfGVycm9yKSQiLCAidHlwZSI6ICJzZWxlY3QiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0wIiwgInBhdHRlcm4iOiAiXihkZWJ1Z3xpbmZvfHdhcm58d2FybmluZ3xlcnJvcikkIiwgImlucFR5cGUiOiAic2VsZWN0IiwgIm5hbWUiOiAiRGF0YWJhc2UgbG9nIGxldmVsIiwgInZhbHVlcyI6IFsiZGVidWciLCAiZXJyb3IiLCAiaW5mbyIsICJ3YXJuIiwgIndhcm5pbmciXSwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAid2FybmluZyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlRoZSBsZXZlbCB0byB1c2UgZm9yIGRhdGFiYXNlIGxvZ3MuIn1dfX0sICJjaGVja3N1bSI6IG51bGwsICJtdWx0aXBsZXMiOiB7fX0sIHsiaWQiOiAiZG5zYmwiLCAic3RyZWFtIjogInllcyIsICJuYW1lIjogIkROU0JMIiwgImRlc2NyaXB0aW9uIjogIkRlbnkgYWNjZXNzIGJhc2VkIG9uIGV4dGVybmFsIEROU0JMIHNlcnZlcnMuIiwgInZlcnNpb24iOiAiMS4wIiwgInR5cGUiOiAiY29yZSIsICJtZXRob2QiOiAibWFudWFsIiwgInBhZ2UiOiB0cnVlLCAic2V0dGluZ3MiOiB7IlVTRV9ETlNCTCI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJ5ZXMiLCAiaGVscCI6ICJBY3RpdmF0ZSBETlNCTCBmZWF0dXJlLiIsICJpZCI6ICJ1c2UtZG5zYmwiLCAibGFiZWwiOiAiQWN0aXZhdGUgRE5TQkwiLCAicmVnZXgiOiAiXih5ZXN8bm8pJCIsICJ0eXBlIjogImNoZWNrIiwgImNvbnRhaW5lckNsYXNzIjogInotMSIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIkFjdGl2YXRlIEROU0JMIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAieWVzIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJBY3RpdmF0ZSBETlNCTCBmZWF0dXJlLiJ9XX0sICJETlNCTF9MSVNUIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogImJsLmJsb2NrbGlzdC5kZSBwcm9ibGVtcy5kbnNibC5zb3Jicy5uZXQgc2JsLnNwYW1oYXVzLm9yZyB4Ymwuc3BhbWhhdXMub3JnIiwgImhlbHAiOiAiTGlzdCBvZiBETlNCTCBzZXJ2ZXJzLiIsICJpZCI6ICJkbnNibC1saXN0IiwgImxhYmVsIjogIkROU0JMIGxpc3QiLCAicmVnZXgiOiAiXig/ISApKCA/KCg/IVxcLilbXFx3Ll0rKSg/IS4qXFwyKD8hLikpKSokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTAiLCAicGF0dGVybiI6ICJeKD8hICkoID8oKD8hXFwuKVtcXHcuXSspKD8hLipcXDIoPyEuKSkpKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkROU0JMIGxpc3QiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJibC5ibG9ja2xpc3QuZGUgcHJvYmxlbXMuZG5zYmwuc29yYnMubmV0IHNibC5zcGFtaGF1cy5vcmcgeGJsLnNwYW1oYXVzLm9yZyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkxpc3Qgb2YgRE5TQkwgc2VydmVycy4ifV19fSwgImNoZWNrc3VtIjogbnVsbCwgIm11bHRpcGxlcyI6IHt9fSwgeyJpZCI6ICJlcnJvcnMiLCAic3RyZWFtIjogIm5vIiwgIm5hbWUiOiAiRXJyb3JzIiwgImRlc2NyaXB0aW9uIjogIk1hbmFnZSBkZWZhdWx0IGVycm9yIHBhZ2VzIiwgInZlcnNpb24iOiAiMS4wIiwgInR5cGUiOiAiY29yZSIsICJtZXRob2QiOiAibWFudWFsIiwgInBhZ2UiOiB0cnVlLCAic2V0dGluZ3MiOiB7IkVSUk9SUyI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJMaXN0IG9mIEhUVFAgZXJyb3IgY29kZSBhbmQgY29ycmVzcG9uZGluZyBlcnJvciBwYWdlcywgc2VwYXJhdGVkIHdpdGggc3BhY2VzICg0MDQ9L215NDA0Lmh0bWwgNDAzPS9lcnJvcnMvNDAzLmh0bWwgLi4uKS4iLCAiaWQiOiAiZXJyb3JzIiwgImxhYmVsIjogIkVycm9ycyIsICJyZWdleCI6ICJeKD8hICkoID8oWzEtNV1cXGR7Mn0pKD8hLipcXDIoPyFbXj1dKSk9KFxcL1tcXHdcXF0ufjpcXC8/I1xcW0AhJFxcJidcXChcXCkqKyw7PVxcLV0qKSg/IS4qXFwzKD8hLikpKSokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTEiLCAicGF0dGVybiI6ICJeKD8hICkoID8oWzEtNV1cXGR7Mn0pKD8hLipcXDIoPyFbXj1dKSk9KFxcL1tcXHdcXF0ufjpcXC8/I1xcW0AhJFxcJidcXChcXCkqKyw7PVxcLV0qKSg/IS4qXFwzKD8hLikpKSokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJFcnJvcnMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogdHJ1ZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogInRyZXNwYXNzIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbWV0aG9kX2Rpc2FibGVkIn0sIHsiaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIEhUVFAgZXJyb3IgY29kZSBhbmQgY29ycmVzcG9uZGluZyBlcnJvciBwYWdlcywgc2VwYXJhdGVkIHdpdGggc3BhY2VzICg0MDQ9L215NDA0Lmh0bWwgNDAzPS9lcnJvcnMvNDAzLmh0bWwgLi4uKS4ifV19LCAiSU5URVJDRVBURURfRVJST1JfQ09ERVMiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiNDAwIDQwMSA0MDMgNDA0IDQwNSA0MTMgNDI5IDUwMCA1MDEgNTAyIDUwMyA1MDQiLCAiaGVscCI6ICJMaXN0IG9mIEhUVFAgZXJyb3IgY29kZSBpbnRlcmNlcHRlZCBieSBCdW5rZXJXZWIiLCAiaWQiOiAiaW50ZXJjZXB0ZWQtZXJyb3ItY29kZXMiLCAibGFiZWwiOiAiSW50ZXJjZXB0ZWQgZXJyb3IgY29kZXMiLCAicmVnZXgiOiAiXiggKihbMS01XVxcZHsyfSkoPyEuKlxcMikgKikrJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0wIiwgInBhdHRlcm4iOiAiXiggKihbMS01XVxcZHsyfSkoPyEuKlxcMikgKikrJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiSW50ZXJjZXB0ZWQgZXJyb3IgY29kZXMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICI0MDAgNDAxIDQwMyA0MDQgNDA1IDQxMyA0MjkgNTAwIDUwMSA1MDIgNTAzIDUwNCIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTGlzdCBvZiBIVFRQIGVycm9yIGNvZGUgaW50ZXJjZXB0ZWQgYnkgQnVua2VyV2ViIn1dfX0sICJjaGVja3N1bSI6IG51bGwsICJtdWx0aXBsZXMiOiB7fX0sIHsiaWQiOiAiZ3JleWxpc3QiLCAic3RyZWFtIjogInBhcnRpYWwiLCAibmFtZSI6ICJHcmV5bGlzdCIsICJkZXNjcmlwdGlvbiI6ICJBbGxvdyBhY2Nlc3Mgd2hpbGUga2VlcGluZyBzZWN1cml0eSBmZWF0dXJlcyBiYXNlZCBvbiBpbnRlcm5hbCBhbmQgZXh0ZXJuYWwgSVAvbmV0d29yay9yRE5TL0FTTiBncmV5bGlzdHMuIiwgInZlcnNpb24iOiAiMS4wIiwgInR5cGUiOiAiY29yZSIsICJtZXRob2QiOiAibWFudWFsIiwgInBhZ2UiOiB0cnVlLCAic2V0dGluZ3MiOiB7IlVTRV9HUkVZTElTVCI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJubyIsICJoZWxwIjogIkFjdGl2YXRlIGdyZXlsaXN0IGZlYXR1cmUuIiwgImlkIjogInVzZS1ncmV5bGlzdCIsICJsYWJlbCI6ICJBY3RpdmF0ZSBncmV5bGlzdGluZyIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xMSIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIkFjdGl2YXRlIGdyZXlsaXN0aW5nIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAibm8iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkFjdGl2YXRlIGdyZXlsaXN0IGZlYXR1cmUuIn1dfSwgIkdSRVlMSVNUX0lQIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIkxpc3Qgb2YgSVAvbmV0d29yaywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCB0byBwdXQgaW50byB0aGUgZ3JleWxpc3QuIiwgImlkIjogImdyZXlsaXN0LWlwIiwgImxhYmVsIjogIkdyZXlsaXN0IElQL25ldHdvcmsiLCAicmVnZXgiOiAiXig/ISApKCAqKCgoXFxiMjVbMC01XXxcXGIyWzAtNF1cXGR8XFxiWzAxXT9cXGRcXGQ/KShcXC4oMjVbMC01XXwyWzAtNF1cXGR8WzAxXT9cXGRcXGQ/KSl7M30pKFxcLyhbMS0yXVswLTldP3wzWzAtMl0/fFswNC05XSkpP3woKFswLTlhLWZBLUZdezEsNH06KXs3fVswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDd9OnwoWzAtOWEtZkEtRl17MSw0fTopezEsNn06WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsNX0oOlswLTlhLWZBLUZdezEsNH0pezEsMn18KFswLTlhLWZBLUZdezEsNH06KXsxLDR9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDN9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwzfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsMn0oOlswLTlhLWZBLUZdezEsNH0pezEsNX18WzAtOWEtZkEtRl17MSw0fTooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDZ9KXw6KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw3fXw6KXxmZTgwOig6WzAtOWEtZkEtRl1aezAsNH0pezAsNH0lWzAtOWEtekEtWl0rfDo6KGZmZmYoOjB7MSw0fSk/Oik/KCgyNVswLTVdfCgyWzAtNF18MT9cXGQpP1xcZClcXC4pezN9KDI1WzAtNV18KDJbMC00XXwxP1xcZCk/XFxkKXwoWzAtOWEtZkEtRl17MSw0fTopezEsNH06KCgyNVswLTVdfCgyWzAtNF18MT9cXGQpP1xcZClcXC4pezN9KDI1WzAtNV18KDJbMC00XXwxP1xcZCk/XFxkKSkoXFwvKDEyWzAtOF18MVswMV1bMC05XXxbMC05XVswLTldPykpPykoPyEuKlxcRFxcMihbXlxcZFxcL118JCkpICopKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMTAiLCAicGF0dGVybiI6ICJeKD8hICkoICooKChcXGIyNVswLTVdfFxcYjJbMC00XVxcZHxcXGJbMDFdP1xcZFxcZD8pKFxcLigyNVswLTVdfDJbMC00XVxcZHxbMDFdP1xcZFxcZD8pKXszfSkoXFwvKFsxLTJdWzAtOV0/fDNbMC0yXT98WzA0LTldKSk/fCgoWzAtOWEtZkEtRl17MSw0fTopezd9WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsN306fChbMC05YS1mQS1GXXsxLDR9Oil7MSw2fTpbMC05YS1mQS1GXXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw1fSg6WzAtOWEtZkEtRl17MSw0fSl7MSwyfXwoWzAtOWEtZkEtRl17MSw0fTopezEsNH0oOlswLTlhLWZBLUZdezEsNH0pezEsM318KFswLTlhLWZBLUZdezEsNH06KXsxLDN9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwyfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw1fXxbMC05YS1mQS1GXXsxLDR9OigoOlswLTlhLWZBLUZdezEsNH0pezEsNn0pfDooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDd9fDopfGZlODA6KDpbMC05YS1mQS1GXVp7MCw0fSl7MCw0fSVbMC05YS16QS1aXSt8OjooZmZmZig6MHsxLDR9KT86KT8oKDI1WzAtNV18KDJbMC00XXwxP1xcZCk/XFxkKVxcLil7M30oMjVbMC01XXwoMlswLTRdfDE/XFxkKT9cXGQpfChbMC05YS1mQS1GXXsxLDR9Oil7MSw0fTooKDI1WzAtNV18KDJbMC00XXwxP1xcZCk/XFxkKVxcLil7M30oMjVbMC01XXwoMlswLTRdfDE/XFxkKT9cXGQpKShcXC8oMTJbMC04XXwxWzAxXVswLTldfFswLTldWzAtOV0/KSk/KSg/IS4qXFxEXFwyKFteXFxkXFwvXXwkKSkgKikqJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiR3JleWxpc3QgSVAvbmV0d29yayIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTGlzdCBvZiBJUC9uZXR3b3JrLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIHRvIHB1dCBpbnRvIHRoZSBncmV5bGlzdC4ifV19LCAiR1JFWUxJU1RfUkROUyI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJMaXN0IG9mIHJldmVyc2UgRE5TIHN1ZmZpeGVzLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIHRvIHB1dCBpbnRvIHRoZSBncmV5bGlzdC4iLCAiaWQiOiAiZ3JleWxpc3QtcmRucyIsICJsYWJlbCI6ICJHcmV5bGlzdCByZXZlcnNlIEROUyIsICJyZWdleCI6ICJeKCAqKChbXiBdKykoPyEuKlxcMyggfCQpKSkgKikqJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei05IiwgInBhdHRlcm4iOiAiXiggKigoW14gXSspKD8hLipcXDMoIHwkKSkpICopKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkdyZXlsaXN0IHJldmVyc2UgRE5TIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIHJldmVyc2UgRE5TIHN1ZmZpeGVzLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIHRvIHB1dCBpbnRvIHRoZSBncmV5bGlzdC4ifV19LCAiR1JFWUxJU1RfUkROU19HTE9CQUwiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAieWVzIiwgImhlbHAiOiAiT25seSBwZXJmb3JtIFJETlMgZ3JleWxpc3QgY2hlY2tzIG9uIGdsb2JhbCBJUCBhZGRyZXNzZXMuIiwgImlkIjogImdyZXlsaXN0LXJkbnMtZ2xvYmFsIiwgImxhYmVsIjogIkdyZXlsaXN0IHJldmVyc2UgRE5TIGdsb2JhbCBJUHMiLCAicmVnZXgiOiAiXih5ZXN8bm8pJCIsICJ0eXBlIjogImNoZWNrIiwgImNvbnRhaW5lckNsYXNzIjogInotOCIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIkdyZXlsaXN0IHJldmVyc2UgRE5TIGdsb2JhbCBJUHMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJ5ZXMiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIk9ubHkgcGVyZm9ybSBSRE5TIGdyZXlsaXN0IGNoZWNrcyBvbiBnbG9iYWwgSVAgYWRkcmVzc2VzLiJ9XX0sICJHUkVZTElTVF9BU04iOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiTGlzdCBvZiBBU04gbnVtYmVycywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCB0byBwdXQgaW50byB0aGUgZ3JleWxpc3QuIiwgImlkIjogImdyZXlsaXN0LWFzbiIsICJsYWJlbCI6ICJHcmV5bGlzdCBBU04iLCAicmVnZXgiOiAiXl4oICooKEFTTj8pPyhcXGQrKVxcYig/IS4qW1NOIF1cXDRcXGIpKSAqKSokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTciLCAicGF0dGVybiI6ICJeXiggKigoQVNOPyk/KFxcZCspXFxiKD8hLipbU04gXVxcNFxcYikpICopKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkdyZXlsaXN0IEFTTiIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTGlzdCBvZiBBU04gbnVtYmVycywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCB0byBwdXQgaW50byB0aGUgZ3JleWxpc3QuIn1dfSwgIkdSRVlMSVNUX1VTRVJfQUdFTlQiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiTGlzdCBvZiBVc2VyLUFnZW50IChQQ1JFIHJlZ2V4KSwgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCB0byBwdXQgaW50byB0aGUgZ3JleWxpc3QuIiwgImlkIjogImdyZXlsaXN0LXVzZXItYWdlbnQiLCAibGFiZWwiOiAiR3JleWxpc3QgVXNlci1BZ2VudCIsICJyZWdleCI6ICJeLiokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTYiLCAicGF0dGVybiI6ICJeLiokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJHcmV5bGlzdCBVc2VyLUFnZW50IiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIFVzZXItQWdlbnQgKFBDUkUgcmVnZXgpLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIHRvIHB1dCBpbnRvIHRoZSBncmV5bGlzdC4ifV19LCAiR1JFWUxJU1RfVVJJIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIkxpc3Qgb2YgVVJJIChQQ1JFIHJlZ2V4KSwgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCB0byBwdXQgaW50byB0aGUgZ3JleWxpc3QuIiwgImlkIjogImdyZXlsaXN0LXVyaSIsICJsYWJlbCI6ICJHcmV5bGlzdCBVUkkiLCAicmVnZXgiOiAiXi4qJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei01IiwgInBhdHRlcm4iOiAiXi4qJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiR3JleWxpc3QgVVJJIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIFVSSSAoUENSRSByZWdleCksIHNlcGFyYXRlZCB3aXRoIHNwYWNlcywgdG8gcHV0IGludG8gdGhlIGdyZXlsaXN0LiJ9XX0sICJHUkVZTElTVF9JUF9VUkxTIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIkxpc3Qgb2YgVVJMcywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCBjb250YWluaW5nIGdvb2QgSVAvbmV0d29yayB0byBwdXQgaW50byB0aGUgZ3JleWxpc3QuIiwgImlkIjogImdyZXlsaXN0LWlwLXVybHMiLCAibGFiZWwiOiAiR3JleWxpc3QgSVAvbmV0d29yayBVUkxzIiwgInJlZ2V4IjogIl4oICooKGh0dHBzPzpcXC9cXC98ZmlsZTpcXC9cXC9cXC8pW1xcLVxcd0A6JS4rfiM9XStbXFwtXFx3XFwoXFwpIUA6JSsufiM/JlxcLz0kXSopKD8hLipcXDIoPyEuKSkgKikqJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei00IiwgInBhdHRlcm4iOiAiXiggKigoaHR0cHM/OlxcL1xcL3xmaWxlOlxcL1xcL1xcLylbXFwtXFx3QDolLit+Iz1dK1tcXC1cXHdcXChcXCkhQDolKy5+Iz8mXFwvPSRdKikoPyEuKlxcMig/IS4pKSAqKSokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJHcmV5bGlzdCBJUC9uZXR3b3JrIFVSTHMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIFVSTHMsIHNlcGFyYXRlZCB3aXRoIHNwYWNlcywgY29udGFpbmluZyBnb29kIElQL25ldHdvcmsgdG8gcHV0IGludG8gdGhlIGdyZXlsaXN0LiJ9XX0sICJHUkVZTElTVF9SRE5TX1VSTFMiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiTGlzdCBvZiBVUkxzLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIGNvbnRhaW5pbmcgcmV2ZXJzZSBETlMgc3VmZml4ZXMgdG8gcHV0IGludG8gdGhlIGdyZXlsaXN0LiIsICJpZCI6ICJncmV5bGlzdC1yZG5zLXVybHMiLCAibGFiZWwiOiAiR3JleWxpc3QgcmV2ZXJzZSBETlMgVVJMcyIsICJyZWdleCI6ICJeKCAqKChodHRwcz86XFwvXFwvfGZpbGU6XFwvXFwvXFwvKVtcXC1cXHdAOiUuK34jPV0rW1xcLVxcd1xcKFxcKSFAOiUrLn4jPyZcXC89JF0qKSg/IS4qXFwyKD8hLikpICopKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMyIsICJwYXR0ZXJuIjogIl4oICooKGh0dHBzPzpcXC9cXC98ZmlsZTpcXC9cXC9cXC8pW1xcLVxcd0A6JS4rfiM9XStbXFwtXFx3XFwoXFwpIUA6JSsufiM/JlxcLz0kXSopKD8hLipcXDIoPyEuKSkgKikqJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiR3JleWxpc3QgcmV2ZXJzZSBETlMgVVJMcyIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkxpc3Qgb2YgVVJMcywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCBjb250YWluaW5nIHJldmVyc2UgRE5TIHN1ZmZpeGVzIHRvIHB1dCBpbnRvIHRoZSBncmV5bGlzdC4ifV19LCAiR1JFWUxJU1RfQVNOX1VSTFMiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiTGlzdCBvZiBVUkxzLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIGNvbnRhaW5pbmcgQVNOIHRvIHB1dCBpbnRvIHRoZSBncmV5bGlzdC4iLCAiaWQiOiAiZ3JleWxpc3QtYXNuLXVybHMiLCAibGFiZWwiOiAiR3JleWxpc3QgQVNOIFVSTHMiLCAicmVnZXgiOiAiXiggKigoaHR0cHM/OlxcL1xcL3xmaWxlOlxcL1xcL1xcLylbXFwtXFx3QDolLit+Iz1dK1tcXC1cXHdcXChcXCkhQDolKy5+Iz8mXFwvPSRdKikoPyEuKlxcMig/IS4pKSAqKSokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTIiLCAicGF0dGVybiI6ICJeKCAqKChodHRwcz86XFwvXFwvfGZpbGU6XFwvXFwvXFwvKVtcXC1cXHdAOiUuK34jPV0rW1xcLVxcd1xcKFxcKSFAOiUrLn4jPyZcXC89JF0qKSg/IS4qXFwyKD8hLikpICopKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkdyZXlsaXN0IEFTTiBVUkxzIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTGlzdCBvZiBVUkxzLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIGNvbnRhaW5pbmcgQVNOIHRvIHB1dCBpbnRvIHRoZSBncmV5bGlzdC4ifV19LCAiR1JFWUxJU1RfVVNFUl9BR0VOVF9VUkxTIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIkxpc3Qgb2YgVVJMcywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCBjb250YWluaW5nIGdvb2QgVXNlci1BZ2VudCB0byBwdXQgaW50byB0aGUgZ3JleWxpc3QuIiwgImlkIjogImdyZXlsaXN0LXVzZXItYWdlbnQtdXJscyIsICJsYWJlbCI6ICJHcmV5bGlzdCBVc2VyLUFnZW50IFVSTHMiLCAicmVnZXgiOiAiXiggKigoaHR0cHM/OlxcL1xcL3xmaWxlOlxcL1xcL1xcLylbXFwtXFx3QDolLit+Iz1dK1tcXC1cXHdcXChcXCkhQDolKy5+Iz8mXFwvPSRdKikoPyEuKlxcMig/IS4pKSAqKSokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTEiLCAicGF0dGVybiI6ICJeKCAqKChodHRwcz86XFwvXFwvfGZpbGU6XFwvXFwvXFwvKVtcXC1cXHdAOiUuK34jPV0rW1xcLVxcd1xcKFxcKSFAOiUrLn4jPyZcXC89JF0qKSg/IS4qXFwyKD8hLikpICopKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkdyZXlsaXN0IFVzZXItQWdlbnQgVVJMcyIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkxpc3Qgb2YgVVJMcywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCBjb250YWluaW5nIGdvb2QgVXNlci1BZ2VudCB0byBwdXQgaW50byB0aGUgZ3JleWxpc3QuIn1dfSwgIkdSRVlMSVNUX1VSSV9VUkxTIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIkxpc3Qgb2YgVVJMcywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCBjb250YWluaW5nIGJhZCBVUkkgdG8gcHV0IGludG8gdGhlIGdyZXlsaXN0LiIsICJpZCI6ICJncmV5bGlzdC11cmktdXJscyIsICJsYWJlbCI6ICJHcmV5bGlzdCBVUkkgVVJMcyIsICJyZWdleCI6ICJeKCAqKChodHRwcz86XFwvXFwvfGZpbGU6XFwvXFwvXFwvKVtcXC1cXHdAOiUuK34jPV0rW1xcLVxcd1xcKFxcKSFAOiUrLn4jPyZcXC89JF0qKSg/IS4qXFwyKD8hLikpICopKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMCIsICJwYXR0ZXJuIjogIl4oICooKGh0dHBzPzpcXC9cXC98ZmlsZTpcXC9cXC9cXC8pW1xcLVxcd0A6JS4rfiM9XStbXFwtXFx3XFwoXFwpIUA6JSsufiM/JlxcLz0kXSopKD8hLipcXDIoPyEuKSkgKikqJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiR3JleWxpc3QgVVJJIFVSTHMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIFVSTHMsIHNlcGFyYXRlZCB3aXRoIHNwYWNlcywgY29udGFpbmluZyBiYWQgVVJJIHRvIHB1dCBpbnRvIHRoZSBncmV5bGlzdC4ifV19fSwgImNoZWNrc3VtIjogbnVsbCwgIm11bHRpcGxlcyI6IHt9fSwgeyJpZCI6ICJnemlwIiwgInN0cmVhbSI6ICJubyIsICJuYW1lIjogIkd6aXAiLCAiZGVzY3JpcHRpb24iOiAiQ29tcHJlc3MgSFRUUCByZXF1ZXN0cyB3aXRoIHRoZSBnemlwIGFsZ29yaXRobS4iLCAidmVyc2lvbiI6ICIxLjAiLCAidHlwZSI6ICJjb3JlIiwgIm1ldGhvZCI6ICJtYW51YWwiLCAicGFnZSI6IGZhbHNlLCAic2V0dGluZ3MiOiB7IlVTRV9HWklQIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIm5vIiwgImhlbHAiOiAiVXNlIGd6aXAiLCAiaWQiOiAidXNlLWd6aXAiLCAibGFiZWwiOiAiVXNlIGd6aXAiLCAicmVnZXgiOiAiXih5ZXN8bm8pJCIsICJ0eXBlIjogImNoZWNrIiwgImNvbnRhaW5lckNsYXNzIjogInotNCIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIlVzZSBnemlwIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiZHNmcmdyZGdyZGdyZGhnZCIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiVXNlIGd6aXAifV19LCAiR1pJUF9UWVBFUyI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJhcHBsaWNhdGlvbi9hdG9tK3htbCBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IGFwcGxpY2F0aW9uL2pzb24gYXBwbGljYXRpb24vcnNzK3htbCBhcHBsaWNhdGlvbi92bmQubXMtZm9udG9iamVjdCBhcHBsaWNhdGlvbi94LWZvbnQtb3BlbnR5cGUgYXBwbGljYXRpb24veC1mb250LXRydWV0eXBlIGFwcGxpY2F0aW9uL3gtZm9udC10dGYgYXBwbGljYXRpb24veC1qYXZhc2NyaXB0IGFwcGxpY2F0aW9uL3hodG1sK3htbCBhcHBsaWNhdGlvbi94bWwgZm9udC9lb3QgZm9udC9vcGVudHlwZSBmb250L290ZiBmb250L3RydWV0eXBlIGltYWdlL3N2Zyt4bWwgaW1hZ2Uvdm5kLm1pY3Jvc29mdC5pY29uIGltYWdlL3gtaWNvbiBpbWFnZS94LXdpbi1iaXRtYXAgdGV4dC9jc3MgdGV4dC9qYXZhc2NyaXB0IHRleHQvcGxhaW4gdGV4dC94bWwiLCAiaGVscCI6ICJMaXN0IG9mIE1JTUUgdHlwZXMgdGhhdCB3aWxsIGJlIGNvbXByZXNzZWQgd2l0aCBnemlwLiIsICJpZCI6ICJnemlwLXR5cGVzIiwgImxhYmVsIjogIk1JTUUgdHlwZXMiLCAicmVnZXgiOiAiXig/ISApKCA/KFtcXC1cXHcuXSsvW1xcLVxcdy4rXSspKD8hLipcXDIoPyEuKSkpKyQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMyIsICJwYXR0ZXJuIjogIl4oPyEgKSggPyhbXFwtXFx3Ll0rL1tcXC1cXHcuK10rKSg/IS4qXFwyKD8hLikpKSskIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJNSU1FIHR5cGVzIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiYXBwbGljYXRpb24vYXRvbSt4bWwgYXBwbGljYXRpb24vamF2YXNjcmlwdCBhcHBsaWNhdGlvbi9qc29uIGFwcGxpY2F0aW9uL3Jzcyt4bWwgYXBwbGljYXRpb24vdm5kLm1zLWZvbnRvYmplY3QgYXBwbGljYXRpb24veC1mb250LW9wZW50eXBlIGFwcGxpY2F0aW9uL3gtZm9udC10cnVldHlwZSBhcHBsaWNhdGlvbi94LWZvbnQtdHRmIGFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCBhcHBsaWNhdGlvbi94aHRtbCt4bWwgYXBwbGljYXRpb24veG1sIGZvbnQvZW90IGZvbnQvb3BlbnR5cGUgZm9udC9vdGYgZm9udC90cnVldHlwZSBpbWFnZS9zdmcreG1sIGltYWdlL3ZuZC5taWNyb3NvZnQuaWNvbiBpbWFnZS94LWljb24gaW1hZ2UveC13aW4tYml0bWFwIHRleHQvY3NzIHRleHQvamF2YXNjcmlwdCB0ZXh0L3BsYWluIHRleHQveG1sIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIE1JTUUgdHlwZXMgdGhhdCB3aWxsIGJlIGNvbXByZXNzZWQgd2l0aCBnemlwLiJ9XX0sICJHWklQX01JTl9MRU5HVEgiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiMTAwMCIsICJoZWxwIjogIk1pbmltdW0gbGVuZ3RoIGZvciBnemlwIGNvbXByZXNzaW9uLiIsICJpZCI6ICJnemlwLW1pbi1sZW5ndGgiLCAibGFiZWwiOiAiTWluaW11bSBsZW5ndGgiLCAicmVnZXgiOiAiXlxcZCskIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTIiLCAicGF0dGVybiI6ICJeXFxkKyQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIk1pbmltdW0gbGVuZ3RoIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiMTAwMCIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTWluaW11bSBsZW5ndGggZm9yIGd6aXAgY29tcHJlc3Npb24uIn1dfSwgIkdaSVBfQ09NUF9MRVZFTCI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICI1IiwgImhlbHAiOiAiVGhlIGNvbXByZXNzaW9uIGxldmVsIG9mIHRoZSBnemlwIGFsZ29yaXRobS4iLCAiaWQiOiAiZ3ppcC1jb21wLWxldmVsIiwgImxhYmVsIjogIkNvbXByZXNzaW9uIGxldmVsIiwgInJlZ2V4IjogIl5bMS05XSQiLCAidHlwZSI6ICJzZWxlY3QiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xIiwgInBhdHRlcm4iOiAiXlsxLTldJCIsICJpbnBUeXBlIjogInNlbGVjdCIsICJuYW1lIjogIkNvbXByZXNzaW9uIGxldmVsIiwgInZhbHVlcyI6IFsiMSIsICIyIiwgIjMiLCAiNCIsICI1IiwgIjYiLCAiNyIsICI4IiwgIjkiXSwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiNSIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiVGhlIGNvbXByZXNzaW9uIGxldmVsIG9mIHRoZSBnemlwIGFsZ29yaXRobS4ifV19LCAiR1pJUF9QUk9YSUVEIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIm5vLWNhY2hlIG5vLXN0b3JlIHByaXZhdGUgZXhwaXJlZCBhdXRoIiwgImhlbHAiOiAiV2hpY2gga2luZCBvZiBwcm94aWVkIHJlcXVlc3RzIHdlIHNob3VsZCBjb21wcmVzcy4iLCAiaWQiOiAiZ3ppcC1wcm94aWVkIiwgImxhYmVsIjogIlByb3hpZWQgcmVxdWVzdHMiLCAicmVnZXgiOiAiXi4qJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0wIiwgInBhdHRlcm4iOiAiXi4qJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiUHJveGllZCByZXF1ZXN0cyIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIm5vLWNhY2hlIG5vLXN0b3JlIHByaXZhdGUgZXhwaXJlZCBhdXRoIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJXaGljaCBraW5kIG9mIHByb3hpZWQgcmVxdWVzdHMgd2Ugc2hvdWxkIGNvbXByZXNzLiJ9XX19LCAiY2hlY2tzdW0iOiBudWxsLCAibXVsdGlwbGVzIjoge319LCB7ImlkIjogImluamVjdCIsICJzdHJlYW0iOiAibm8iLCAibmFtZSI6ICJIVE1MIGluamVjdGlvbiIsICJkZXNjcmlwdGlvbiI6ICJJbmplY3QgY3VzdG9tIEhUTUwgY29kZSBiZWZvcmUgdGhlIDwvYm9keT4gdGFnLiIsICJ2ZXJzaW9uIjogIjEuMCIsICJ0eXBlIjogImNvcmUiLCAibWV0aG9kIjogIm1hbnVhbCIsICJwYWdlIjogZmFsc2UsICJzZXR0aW5ncyI6IHsiSU5KRUNUX0JPRFkiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiVGhlIEhUTUwgY29kZSB0byBpbmplY3QuIiwgImlkIjogImluamVjdC1ib2R5IiwgImxhYmVsIjogIkhUTUwgY29kZSIsICJyZWdleCI6ICJeLiokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTAiLCAicGF0dGVybiI6ICJeLiokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJIVE1MIGNvZGUiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlRoZSBIVE1MIGNvZGUgdG8gaW5qZWN0LiJ9XX19LCAiY2hlY2tzdW0iOiBudWxsLCAibXVsdGlwbGVzIjoge319LCB7ImlkIjogImhlYWRlcnMiLCAic3RyZWFtIjogIm5vIiwgIm5hbWUiOiAiSGVhZGVycyIsICJkZXNjcmlwdGlvbiI6ICJNYW5hZ2UgSFRUUCBoZWFkZXJzIHNlbnQgdG8gY2xpZW50cy4iLCAidmVyc2lvbiI6ICIxLjAiLCAidHlwZSI6ICJjb3JlIiwgIm1ldGhvZCI6ICJtYW51YWwiLCAicGFnZSI6IGZhbHNlLCAic2V0dGluZ3MiOiB7IlJFTU9WRV9IRUFERVJTIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIlNlcnZlciBFeHBlY3QtQ1QgWC1Qb3dlcmVkLUJ5IFgtQXNwTmV0LVZlcnNpb24gWC1Bc3BOZXRNdmMtVmVyc2lvbiIsICJoZWxwIjogIkhlYWRlcnMgdG8gcmVtb3ZlIChIZWFkZXIxIEhlYWRlcjIgSGVhZGVyMyAuLi4pIiwgImlkIjogInJlbW92ZS1oZWFkZXJzIiwgImxhYmVsIjogIlJlbW92ZSBoZWFkZXJzIiwgInJlZ2V4IjogIl4oPyEgKSggP1tcXHdcXC1dKykqJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xMiIsICJwYXR0ZXJuIjogIl4oPyEgKSggP1tcXHdcXC1dKykqJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiUmVtb3ZlIGhlYWRlcnMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJTZXJ2ZXIgRXhwZWN0LUNUIFgtUG93ZXJlZC1CeSBYLUFzcE5ldC1WZXJzaW9uIFgtQXNwTmV0TXZjLVZlcnNpb24iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkhlYWRlcnMgdG8gcmVtb3ZlIChIZWFkZXIxIEhlYWRlcjIgSGVhZGVyMyAuLi4pIn1dfSwgIktFRVBfVVBTVFJFQU1fSEVBREVSUyI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJDb250ZW50LVNlY3VyaXR5LVBvbGljeSBQZXJtaXNzaW9ucy1Qb2xpY3kgRmVhdHVyZS1Qb2xpY3kgWC1GcmFtZS1PcHRpb25zIiwgImhlbHAiOiAiSGVhZGVycyB0byBrZWVwIGZyb20gdXBzdHJlYW0gKEhlYWRlcjEgSGVhZGVyMiBIZWFkZXIzIC4uLiBvciAqIGZvciBhbGwpLiIsICJpZCI6ICJrZWVwLXVwc3RyZWFtLWhlYWRlcnMiLCAibGFiZWwiOiAiS2VlcCB1cHN0cmVhbSBoZWFkZXJzIiwgInJlZ2V4IjogIl4oKD8hICkoID9bXFx3XFwtXSspK3xcXCopPyQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMTEiLCAicGF0dGVybiI6ICJeKCg/ISApKCA/W1xcd1xcLV0rKSt8XFwqKT8kIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJLZWVwIHVwc3RyZWFtIGhlYWRlcnMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJDb250ZW50LVNlY3VyaXR5LVBvbGljeSBQZXJtaXNzaW9ucy1Qb2xpY3kgRmVhdHVyZS1Qb2xpY3kgWC1GcmFtZS1PcHRpb25zIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJIZWFkZXJzIHRvIGtlZXAgZnJvbSB1cHN0cmVhbSAoSGVhZGVyMSBIZWFkZXIyIEhlYWRlcjMgLi4uIG9yICogZm9yIGFsbCkuIn1dfSwgIlNUUklDVF9UUkFOU1BPUlRfU0VDVVJJVFkiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAibWF4LWFnZT0zMTUzNjAwMCIsICJoZWxwIjogIlZhbHVlIGZvciB0aGUgU3RyaWN0LVRyYW5zcG9ydC1TZWN1cml0eSBoZWFkZXIuIiwgImlkIjogInN0cmljdC10cmFuc3BvcnQtc2VjdXJpdHkiLCAibGFiZWwiOiAiU3RyaWN0LVRyYW5zcG9ydC1TZWN1cml0eSIsICJyZWdleCI6ICJebWF4LWFnZT1cXGQrKDsgaW5jbHVkZVN1YkRvbWFpbnMoOyBwcmVsb2FkKT8pPyQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMTAiLCAicGF0dGVybiI6ICJebWF4LWFnZT1cXGQrKDsgaW5jbHVkZVN1YkRvbWFpbnMoOyBwcmVsb2FkKT8pPyQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIlN0cmljdC1UcmFuc3BvcnQtU2VjdXJpdHkiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJtYXgtYWdlPTMxNTM2MDAwIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJWYWx1ZSBmb3IgdGhlIFN0cmljdC1UcmFuc3BvcnQtU2VjdXJpdHkgaGVhZGVyLiJ9XX0sICJDT09LSUVfQVVUT19TRUNVUkVfRkxBRyI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJ5ZXMiLCAiaGVscCI6ICJBdXRvbWF0aWNhbGx5IGFkZCB0aGUgU2VjdXJlIGZsYWcgdG8gYWxsIGNvb2tpZXMuIiwgImlkIjogImNvb2tpZS1hdXRvLXNlY3VyZS1mbGFnIiwgImxhYmVsIjogIkNvb2tpZSBhdXRvIFNlY3VyZSBmbGFnIiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJjb250YWluZXJDbGFzcyI6ICJ6LTgiLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJDb29raWUgYXV0byBTZWN1cmUgZmxhZyIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogInllcyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiQXV0b21hdGljYWxseSBhZGQgdGhlIFNlY3VyZSBmbGFnIHRvIGFsbCBjb29raWVzLiJ9XX0sICJDT05URU5UX1NFQ1VSSVRZX1BPTElDWSI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJvYmplY3Qtc3JjICdub25lJzsgZm9ybS1hY3Rpb24gJ3NlbGYnOyBmcmFtZS1hbmNlc3RvcnMgJ3NlbGYnOyIsICJoZWxwIjogIlZhbHVlIGZvciB0aGUgQ29udGVudC1TZWN1cml0eS1Qb2xpY3kgaGVhZGVyLiIsICJpZCI6ICJjb250ZW50LXNlY3VyaXR5LXBvbGljeSIsICJsYWJlbCI6ICJDb250ZW50LVNlY3VyaXR5LVBvbGljeSIsICJyZWdleCI6ICJeLiokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTciLCAicGF0dGVybiI6ICJeLiokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJDb250ZW50LVNlY3VyaXR5LVBvbGljeSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIm9iamVjdC1zcmMgJ25vbmUnOyBmb3JtLWFjdGlvbiAnc2VsZic7IGZyYW1lLWFuY2VzdG9ycyAnc2VsZic7IiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJWYWx1ZSBmb3IgdGhlIENvbnRlbnQtU2VjdXJpdHktUG9saWN5IGhlYWRlci4ifV19LCAiQ09OVEVOVF9TRUNVUklUWV9QT0xJQ1lfUkVQT1JUX09OTFkiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAibm8iLCAiaGVscCI6ICJTZW5kIHJlcG9ydHMgZm9yIHZpb2xhdGlvbnMgb2YgdGhlIENvbnRlbnQtU2VjdXJpdHktUG9saWN5IGhlYWRlciBpbnN0ZWFkIG9mIGJsb2NraW5nIHRoZW0uIiwgImlkIjogImNvbnRlbnQtc2VjdXJpdHktcG9saWN5LXJlcG9ydC1vbmx5IiwgImxhYmVsIjogIkNvbnRlbnQtU2VjdXJpdHktUG9saWN5LVJlcG9ydC1Pbmx5IiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJjb250YWluZXJDbGFzcyI6ICJ6LTYiLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJDb250ZW50LVNlY3VyaXR5LVBvbGljeS1SZXBvcnQtT25seSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIm5vIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJTZW5kIHJlcG9ydHMgZm9yIHZpb2xhdGlvbnMgb2YgdGhlIENvbnRlbnQtU2VjdXJpdHktUG9saWN5IGhlYWRlciBpbnN0ZWFkIG9mIGJsb2NraW5nIHRoZW0uIn1dfSwgIlJFRkVSUkVSX1BPTElDWSI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJzdHJpY3Qtb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luIiwgImhlbHAiOiAiVmFsdWUgZm9yIHRoZSBSZWZlcnJlci1Qb2xpY3kgaGVhZGVyLiIsICJpZCI6ICJyZWZlcnJlci1wb2xpY3kiLCAibGFiZWwiOiAiUmVmZXJyZXItUG9saWN5IiwgInJlZ2V4IjogIl4oPyFeKCx8ICkpKCgsICk/KG5vLXJlZmVycmVyLXdoZW4tZG93bmdyYWRlfG5vLXJlZmVycmVyfG9yaWdpbi13aGVuLWNyb3NzLW9yaWdpbnxzYW1lLW9yaWdpbnxzdHJpY3Qtb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2lufHN0cmljdC1vcmlnaW58b3JpZ2lufHVuc2FmZS11cmwpKD8hXFxiLiosIFxcNFxcYikpKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotNSIsICJwYXR0ZXJuIjogIl4oPyFeKCx8ICkpKCgsICk/KG5vLXJlZmVycmVyLXdoZW4tZG93bmdyYWRlfG5vLXJlZmVycmVyfG9yaWdpbi13aGVuLWNyb3NzLW9yaWdpbnxzYW1lLW9yaWdpbnxzdHJpY3Qtb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2lufHN0cmljdC1vcmlnaW58b3JpZ2lufHVuc2FmZS11cmwpKD8hXFxiLiosIFxcNFxcYikpKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIlJlZmVycmVyLVBvbGljeSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogInN0cmljdC1vcmlnaW4td2hlbi1jcm9zcy1vcmlnaW4iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlZhbHVlIGZvciB0aGUgUmVmZXJyZXItUG9saWN5IGhlYWRlci4ifV19LCAiUEVSTUlTU0lPTlNfUE9MSUNZIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogImFjY2VsZXJvbWV0ZXI9KCksIGFtYmllbnQtbGlnaHQtc2Vuc29yPSgpLCBhdXRvcGxheT0oKSwgYmF0dGVyeT0oKSwgY2FtZXJhPSgpLCBjcm9zcy1vcmlnaW4taXNvbGF0ZWQ9KCksIGRpc3BsYXktY2FwdHVyZT0oKSwgZG9jdW1lbnQtZG9tYWluPSgpLCBlbmNyeXB0ZWQtbWVkaWE9KCksIGV4ZWN1dGlvbi13aGlsZS1ub3QtcmVuZGVyZWQ9KCksIGV4ZWN1dGlvbi13aGlsZS1vdXQtb2Ytdmlld3BvcnQ9KCksIGZ1bGxzY3JlZW49KCksIGdlb2xvY2F0aW9uPSgpLCBneXJvc2NvcGU9KCksIGhpZD0oKSwgaWRsZS1kZXRlY3Rpb249KCksIG1hZ25ldG9tZXRlcj0oKSwgbWljcm9waG9uZT0oKSwgbWlkaT0oKSwgbmF2aWdhdGlvbi1vdmVycmlkZT0oKSwgcGF5bWVudD0oKSwgcGljdHVyZS1pbi1waWN0dXJlPSgpLCBwdWJsaWNrZXktY3JlZGVudGlhbHMtZ2V0PSgpLCBzY3JlZW4td2FrZS1sb2NrPSgpLCBzZXJpYWw9KCksIHVzYj0oKSwgd2ViLXNoYXJlPSgpLCB4ci1zcGF0aWFsLXRyYWNraW5nPSgpIiwgImhlbHAiOiAiVmFsdWUgZm9yIHRoZSBQZXJtaXNzaW9ucy1Qb2xpY3kgaGVhZGVyLiIsICJpZCI6ICJwZXJtaXNzaW9ucy1wb2xpY3kiLCAibGFiZWwiOiAiUGVybWlzc2lvbnMtUG9saWN5IiwgInJlZ2V4IjogIl4oPyFbLCBdKSgsPyA/KFthLXpcXC1dKykoPyEuKlteXFwtXVxcMj0pPShcXCp8XFwoKCA/KHNlbGZ8XFx1MDAyMmh0dHBzPzpcXC9cXC9bXFwtXFx3QDolLit+Iz1dK1tcXC1cXHdcXChcXCkhQDolKy5+Iz8mXFwvPSRdKlxcdTAwMjIpKD89WyBcXCldKSkqXFwpKSkqJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei00IiwgInBhdHRlcm4iOiAiXig/IVssIF0pKCw/ID8oW2EtelxcLV0rKSg/IS4qW15cXC1dXFwyPSk9KFxcKnxcXCgoID8oc2VsZnxcXHUwMDIyaHR0cHM/OlxcL1xcL1tcXC1cXHdAOiUuK34jPV0rW1xcLVxcd1xcKFxcKSFAOiUrLn4jPyZcXC89JF0qXFx1MDAyMikoPz1bIFxcKV0pKSpcXCkpKSokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJQZXJtaXNzaW9ucy1Qb2xpY3kiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJhY2NlbGVyb21ldGVyPSgpLCBhbWJpZW50LWxpZ2h0LXNlbnNvcj0oKSwgYXV0b3BsYXk9KCksIGJhdHRlcnk9KCksIGNhbWVyYT0oKSwgY3Jvc3Mtb3JpZ2luLWlzb2xhdGVkPSgpLCBkaXNwbGF5LWNhcHR1cmU9KCksIGRvY3VtZW50LWRvbWFpbj0oKSwgZW5jcnlwdGVkLW1lZGlhPSgpLCBleGVjdXRpb24td2hpbGUtbm90LXJlbmRlcmVkPSgpLCBleGVjdXRpb24td2hpbGUtb3V0LW9mLXZpZXdwb3J0PSgpLCBmdWxsc2NyZWVuPSgpLCBnZW9sb2NhdGlvbj0oKSwgZ3lyb3Njb3BlPSgpLCBoaWQ9KCksIGlkbGUtZGV0ZWN0aW9uPSgpLCBtYWduZXRvbWV0ZXI9KCksIG1pY3JvcGhvbmU9KCksIG1pZGk9KCksIG5hdmlnYXRpb24tb3ZlcnJpZGU9KCksIHBheW1lbnQ9KCksIHBpY3R1cmUtaW4tcGljdHVyZT0oKSwgcHVibGlja2V5LWNyZWRlbnRpYWxzLWdldD0oKSwgc2NyZWVuLXdha2UtbG9jaz0oKSwgc2VyaWFsPSgpLCB1c2I9KCksIHdlYi1zaGFyZT0oKSwgeHItc3BhdGlhbC10cmFja2luZz0oKSIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiVmFsdWUgZm9yIHRoZSBQZXJtaXNzaW9ucy1Qb2xpY3kgaGVhZGVyLiJ9XX0sICJGRUFUVVJFX1BPTElDWSI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJhY2NlbGVyb21ldGVyICdub25lJzsgYW1iaWVudC1saWdodC1zZW5zb3IgJ25vbmUnOyBhdXRvcGxheSAnbm9uZSc7IGJhdHRlcnkgJ25vbmUnOyBjYW1lcmEgJ25vbmUnOyBkaXNwbGF5LWNhcHR1cmUgJ25vbmUnOyBkb2N1bWVudC1kb21haW4gJ25vbmUnOyBlbmNyeXB0ZWQtbWVkaWEgJ25vbmUnOyBleGVjdXRpb24td2hpbGUtbm90LXJlbmRlcmVkICdub25lJzsgZXhlY3V0aW9uLXdoaWxlLW91dC1vZi12aWV3cG9ydCAnbm9uZSc7IGZ1bGxzY3JlZW4gJ25vbmUnOyBnZW9sb2NhdGlvbiAnbm9uZSc7IGd5cm9zY29wZSAnbm9uZSc7IGxheW91dC1hbmltYXRpb24gJ25vbmUnOyBsZWdhY3ktaW1hZ2UtZm9ybWF0cyAnbm9uZSc7IG1hZ25ldG9tZXRlciAnbm9uZSc7IG1pY3JvcGhvbmUgJ25vbmUnOyBtaWRpICdub25lJzsgbmF2aWdhdGlvbi1vdmVycmlkZSAnbm9uZSc7IHBheW1lbnQgJ25vbmUnOyBwaWN0dXJlLWluLXBpY3R1cmUgJ25vbmUnOyBwdWJsaWNrZXktY3JlZGVudGlhbHMtZ2V0ICdub25lJzsgc3BlYWtlci1zZWxlY3Rpb24gJ25vbmUnOyBzeW5jLXhociAnbm9uZSc7IHVub3B0aW1pemVkLWltYWdlcyAnbm9uZSc7IHVuc2l6ZWQtbWVkaWEgJ25vbmUnOyB1c2IgJ25vbmUnOyBzY3JlZW4td2FrZS1sb2NrICdub25lJzsgd2ViLXNoYXJlICdub25lJzsgeHItc3BhdGlhbC10cmFja2luZyAnbm9uZSc7IiwgImhlbHAiOiAiVmFsdWUgZm9yIHRoZSBGZWF0dXJlLVBvbGljeSBoZWFkZXIuIiwgImlkIjogImZlYXR1cmUtcG9saWN5IiwgImxhYmVsIjogIkZlYXR1cmUtUG9saWN5IiwgInJlZ2V4IjogIl4oPyFbOyBdKSggPyhbXFx3XFwtXSspKD8hLipbXlxcLV1cXDIgKSggKCcobm9uZXxzZWxmfHN0cmljdC1keW5hbWljfHJlcG9ydC1zYW1wbGV8dW5zYWZlLWlubGluZXx1bnNhZmUtZXZhbHx1bnNhZmUtaGFzaGVzfHVuc2FmZS1hbGxvdy1yZWRpcmVjdHMpJ3xodHRwcz86XFwvXFwvW1xcd0A6JS4rfiM9XFwtXStbXFx3XFwoXFwpIUA6JSsufiM/JlxcLz0kXFwtXSopKSs7KSokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTMiLCAicGF0dGVybiI6ICJeKD8hWzsgXSkoID8oW1xcd1xcLV0rKSg/IS4qW15cXC1dXFwyICkoICgnKG5vbmV8c2VsZnxzdHJpY3QtZHluYW1pY3xyZXBvcnQtc2FtcGxlfHVuc2FmZS1pbmxpbmV8dW5zYWZlLWV2YWx8dW5zYWZlLWhhc2hlc3x1bnNhZmUtYWxsb3ctcmVkaXJlY3RzKSd8aHR0cHM/OlxcL1xcL1tcXHdAOiUuK34jPVxcLV0rW1xcd1xcKFxcKSFAOiUrLn4jPyZcXC89JFxcLV0qKSkrOykqJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiRmVhdHVyZS1Qb2xpY3kiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJhY2NlbGVyb21ldGVyICdub25lJzsgYW1iaWVudC1saWdodC1zZW5zb3IgJ25vbmUnOyBhdXRvcGxheSAnbm9uZSc7IGJhdHRlcnkgJ25vbmUnOyBjYW1lcmEgJ25vbmUnOyBkaXNwbGF5LWNhcHR1cmUgJ25vbmUnOyBkb2N1bWVudC1kb21haW4gJ25vbmUnOyBlbmNyeXB0ZWQtbWVkaWEgJ25vbmUnOyBleGVjdXRpb24td2hpbGUtbm90LXJlbmRlcmVkICdub25lJzsgZXhlY3V0aW9uLXdoaWxlLW91dC1vZi12aWV3cG9ydCAnbm9uZSc7IGZ1bGxzY3JlZW4gJ25vbmUnOyBnZW9sb2NhdGlvbiAnbm9uZSc7IGd5cm9zY29wZSAnbm9uZSc7IGxheW91dC1hbmltYXRpb24gJ25vbmUnOyBsZWdhY3ktaW1hZ2UtZm9ybWF0cyAnbm9uZSc7IG1hZ25ldG9tZXRlciAnbm9uZSc7IG1pY3JvcGhvbmUgJ25vbmUnOyBtaWRpICdub25lJzsgbmF2aWdhdGlvbi1vdmVycmlkZSAnbm9uZSc7IHBheW1lbnQgJ25vbmUnOyBwaWN0dXJlLWluLXBpY3R1cmUgJ25vbmUnOyBwdWJsaWNrZXktY3JlZGVudGlhbHMtZ2V0ICdub25lJzsgc3BlYWtlci1zZWxlY3Rpb24gJ25vbmUnOyBzeW5jLXhociAnbm9uZSc7IHVub3B0aW1pemVkLWltYWdlcyAnbm9uZSc7IHVuc2l6ZWQtbWVkaWEgJ25vbmUnOyB1c2IgJ25vbmUnOyBzY3JlZW4td2FrZS1sb2NrICdub25lJzsgd2ViLXNoYXJlICdub25lJzsgeHItc3BhdGlhbC10cmFja2luZyAnbm9uZSc7IiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJWYWx1ZSBmb3IgdGhlIEZlYXR1cmUtUG9saWN5IGhlYWRlci4ifV19LCAiWF9GUkFNRV9PUFRJT05TIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIlNBTUVPUklHSU4iLCAiaGVscCI6ICJWYWx1ZSBmb3IgdGhlIFgtRnJhbWUtT3B0aW9ucyBoZWFkZXIuIiwgImlkIjogIngtZnJhbWUtb3B0aW9ucyIsICJsYWJlbCI6ICJYLUZyYW1lLU9wdGlvbnMiLCAicmVnZXgiOiAiXihERU5ZfFNBTUVPUklHSU4pPyQiLCAidHlwZSI6ICJzZWxlY3QiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0yIiwgInBhdHRlcm4iOiAiXihERU5ZfFNBTUVPUklHSU4pPyQiLCAiaW5wVHlwZSI6ICJzZWxlY3QiLCAibmFtZSI6ICJYLUZyYW1lLU9wdGlvbnMiLCAidmFsdWVzIjogWyIiLCAiREVOWSIsICJTQU1FT1JJR0lOIl0sICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIlNBTUVPUklHSU4iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlZhbHVlIGZvciB0aGUgWC1GcmFtZS1PcHRpb25zIGhlYWRlci4ifV19LCAiWF9DT05URU5UX1RZUEVfT1BUSU9OUyI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJub3NuaWZmIiwgImhlbHAiOiAiVmFsdWUgZm9yIHRoZSBYLUNvbnRlbnQtVHlwZS1PcHRpb25zIGhlYWRlci4iLCAiaWQiOiAieC1jb250ZW50LXR5cGUtb3B0aW9ucyIsICJsYWJlbCI6ICJYLUNvbnRlbnQtVHlwZS1PcHRpb25zIiwgInJlZ2V4IjogIl4obm9zbmlmZik/JCIsICJ0eXBlIjogInNlbGVjdCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTEiLCAicGF0dGVybiI6ICJeKG5vc25pZmYpPyQiLCAiaW5wVHlwZSI6ICJzZWxlY3QiLCAibmFtZSI6ICJYLUNvbnRlbnQtVHlwZS1PcHRpb25zIiwgInZhbHVlcyI6IFsiIiwgIm5vc25pZmYiXSwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAibm9zbmlmZiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiVmFsdWUgZm9yIHRoZSBYLUNvbnRlbnQtVHlwZS1PcHRpb25zIGhlYWRlci4ifV19LCAiWF9YU1NfUFJPVEVDVElPTiI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIxOyBtb2RlPWJsb2NrIiwgImhlbHAiOiAiVmFsdWUgZm9yIHRoZSBYLVhTUy1Qcm90ZWN0aW9uIGhlYWRlci4iLCAiaWQiOiAieC14c3MtcHJvdGVjdGlvbiIsICJsYWJlbCI6ICJYLVhTUy1Qcm90ZWN0aW9uIiwgInJlZ2V4IjogIl4wfDEoOyAobW9kZT1ibG9ja3xyZXBvcnQ9aHR0cHM/OlxcL1xcL1tcXC1cXHdAOiUuK34jPV0rW1xcLVxcd1xcKFxcKSFAOiUrLn4jPyZcXC89JF0qKSk/JCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0wIiwgInBhdHRlcm4iOiAiXjB8MSg7IChtb2RlPWJsb2NrfHJlcG9ydD1odHRwcz86XFwvXFwvW1xcLVxcd0A6JS4rfiM9XStbXFwtXFx3XFwoXFwpIUA6JSsufiM/JlxcLz0kXSopKT8kIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJYLVhTUy1Qcm90ZWN0aW9uIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiMTsgbW9kZT1ibG9jayIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiVmFsdWUgZm9yIHRoZSBYLVhTUy1Qcm90ZWN0aW9uIGhlYWRlci4ifV19fSwgImNoZWNrc3VtIjogbnVsbCwgIm11bHRpcGxlcyI6IHsiY3VzdG9tLWhlYWRlcnMiOiB7IkNVU1RPTV9IRUFERVIiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiQ3VzdG9tIGhlYWRlciB0byBhZGQgKEhlYWRlck5hbWU6IEhlYWRlclZhbHVlKS4iLCAiaWQiOiAiY3VzdG9tLWhlYWRlciIsICJsYWJlbCI6ICJDdXN0b20gaGVhZGVyIChIZWFkZXJOYW1lOiBIZWFkZXJWYWx1ZSkiLCAicmVnZXgiOiAiXihbXFx3XFwtXSs6IC4rKT8kIiwgInR5cGUiOiAidGV4dCIsICJtdWx0aXBsZSI6ICJjdXN0b20taGVhZGVycyIsICJjb250YWluZXJDbGFzcyI6ICJ6LTEzIiwgInBhdHRlcm4iOiAiXihbXFx3XFwtXSs6IC4rKT8kIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJDdXN0b20gaGVhZGVyIChIZWFkZXJOYW1lOiBIZWFkZXJWYWx1ZSkiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkN1c3RvbSBoZWFkZXIgdG8gYWRkIChIZWFkZXJOYW1lOiBIZWFkZXJWYWx1ZSkuIn1dfX0sICJjb29raWUtZmxhZ3MiOiB7IkNPT0tJRV9GTEFHUyI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIqIEh0dHBPbmx5IFNhbWVTaXRlPUxheCIsICJoZWxwIjogIkNvb2tpZSBmbGFncyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIGFsbCBjb29raWVzICh2YWx1ZSBhY2NlcHRlZCBmb3IgbmdpbnhfY29va2llX2ZsYWdfbW9kdWxlKS4iLCAiaWQiOiAiY29va2llLWZsYWdzIiwgImxhYmVsIjogIkNvb2tpZSBmbGFncyIsICJyZWdleCI6ICJeKFxcKnxbXjtdKykoIChIdHRwT25seXwoU2FtZVNpdGUpKD8hLipcXDQpKD0oTGF4fFN0cmljdCkpPykoPyEuKlxcMykpKiQiLCAidHlwZSI6ICJ0ZXh0IiwgIm11bHRpcGxlIjogImNvb2tpZS1mbGFncyIsICJjb250YWluZXJDbGFzcyI6ICJ6LTkiLCAicGF0dGVybiI6ICJeKFxcKnxbXjtdKykoIChIdHRwT25seXwoU2FtZVNpdGUpKD8hLipcXDQpKD0oTGF4fFN0cmljdCkpPykoPyEuKlxcMykpKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkNvb2tpZSBmbGFncyIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiogSHR0cE9ubHkgU2FtZVNpdGU9TGF4IiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJDb29raWUgZmxhZ3MgYXV0b21hdGljYWxseSBhZGRlZCB0byBhbGwgY29va2llcyAodmFsdWUgYWNjZXB0ZWQgZm9yIG5naW54X2Nvb2tpZV9mbGFnX21vZHVsZSkuIn1dfX19fSwgeyJpZCI6ICJqb2JzIiwgInN0cmVhbSI6ICJ5ZXMiLCAibmFtZSI6ICJKb2JzIiwgImRlc2NyaXB0aW9uIjogIkZha2UgY29yZSBwbHVnaW4gZm9yIGludGVybmFsIGpvYnMuIiwgInZlcnNpb24iOiAiMS4wIiwgInR5cGUiOiAiY29yZSIsICJtZXRob2QiOiAibWFudWFsIiwgInBhZ2UiOiBmYWxzZSwgInNldHRpbmdzIjoge30sICJjaGVja3N1bSI6IG51bGwsICJtdWx0aXBsZXMiOiB7fX0sIHsiaWQiOiAibGV0c2VuY3J5cHQiLCAic3RyZWFtIjogInllcyIsICJuYW1lIjogIkxldCdzIEVuY3J5cHQiLCAiZGVzY3JpcHRpb24iOiAiQXV0b21hdGljIGNyZWF0aW9uLCByZW5ld2FsIGFuZCBjb25maWd1cmF0aW9uIG9mIExldCdzIEVuY3J5cHQgY2VydGlmaWNhdGVzLiIsICJ2ZXJzaW9uIjogIjEuMCIsICJ0eXBlIjogImNvcmUiLCAibWV0aG9kIjogIm1hbnVhbCIsICJwYWdlIjogZmFsc2UsICJzZXR0aW5ncyI6IHsiQVVUT19MRVRTX0VOQ1JZUFQiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAibm8iLCAiaGVscCI6ICJBY3RpdmF0ZSBhdXRvbWF0aWMgTGV0J3MgRW5jcnlwdCBtb2RlLiIsICJpZCI6ICJhdXRvLWxldHMtZW5jcnlwdCIsICJsYWJlbCI6ICJBdXRvbWF0aWMgTGV0J3MgRW5jcnlwdCIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei0zIiwgInBhdHRlcm4iOiAiXih5ZXN8bm8pJCIsICJpbnBUeXBlIjogImNoZWNrYm94IiwgIm5hbWUiOiAiQXV0b21hdGljIExldCdzIEVuY3J5cHQiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJubyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiQWN0aXZhdGUgYXV0b21hdGljIExldCdzIEVuY3J5cHQgbW9kZS4ifV19LCAiRU1BSUxfTEVUU19FTkNSWVBUIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIkVtYWlsIHVzZWQgZm9yIExldCdzIEVuY3J5cHQgbm90aWZpY2F0aW9uIGFuZCBpbiBjZXJ0aWZpY2F0ZS4iLCAiaWQiOiAiZW1haWwtbGV0cy1lbmNyeXB0IiwgImxhYmVsIjogIkVtYWlsIExldCdzIEVuY3J5cHQiLCAicmVnZXgiOiAiXihbXkAgXFx0XFxyXFxuXStAW15AIFxcdFxcclxcbl0rXFwuW15AIFxcdFxcclxcbl0rKT8kIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTIiLCAicGF0dGVybiI6ICJeKFteQCBcXHRcXHJcXG5dK0BbXkAgXFx0XFxyXFxuXStcXC5bXkAgXFx0XFxyXFxuXSspPyQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkVtYWlsIExldCdzIEVuY3J5cHQiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkVtYWlsIHVzZWQgZm9yIExldCdzIEVuY3J5cHQgbm90aWZpY2F0aW9uIGFuZCBpbiBjZXJ0aWZpY2F0ZS4ifV19LCAiVVNFX0xFVFNfRU5DUllQVF9TVEFHSU5HIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIm5vIiwgImhlbHAiOiAiVXNlIHRoZSBzdGFnaW5nIGVudmlyb25tZW50IGZvciBMZXRcdTIwMTlzIEVuY3J5cHQgY2VydGlmaWNhdGUgZ2VuZXJhdGlvbi4gVXNlZnVsIHdoZW4geW91IGFyZSB0ZXN0aW5nIHlvdXIgZGVwbG95bWVudHMgdG8gYXZvaWQgYmVpbmcgcmF0ZSBsaW1pdGVkIGluIHRoZSBwcm9kdWN0aW9uIGVudmlyb25tZW50LiIsICJpZCI6ICJ1c2UtbGV0cy1lbmNyeXB0LXN0YWdpbmciLCAibGFiZWwiOiAiVXNlIExldCdzIEVuY3J5cHQgU3RhZ2luZyIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xIiwgInBhdHRlcm4iOiAiXih5ZXN8bm8pJCIsICJpbnBUeXBlIjogImNoZWNrYm94IiwgIm5hbWUiOiAiVXNlIExldCdzIEVuY3J5cHQgU3RhZ2luZyIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIm5vIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJVc2UgdGhlIHN0YWdpbmcgZW52aXJvbm1lbnQgZm9yIExldFx1MjAxOXMgRW5jcnlwdCBjZXJ0aWZpY2F0ZSBnZW5lcmF0aW9uLiBVc2VmdWwgd2hlbiB5b3UgYXJlIHRlc3RpbmcgeW91ciBkZXBsb3ltZW50cyB0byBhdm9pZCBiZWluZyByYXRlIGxpbWl0ZWQgaW4gdGhlIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQuIn1dfSwgIkxFVFNfRU5DUllQVF9DTEVBUl9PTERfQ0VSVFMiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAibm8iLCAiaGVscCI6ICJDbGVhciBvbGQgY2VydGlmaWNhdGVzIHdoZW4gcmVuZXdpbmcuIiwgImlkIjogImxldHMtZW5jcnlwdC1jbGVhci1vbGQtY2VydHMiLCAibGFiZWwiOiAiQ2xlYXIgb2xkIGNlcnRpZmljYXRlcyB3aGVuIHRoZXkgYXJlIG5vIGxvbmdlciBuZWVkZWQiLCAicmVnZXgiOiAiXih5ZXN8bm8pJCIsICJ0eXBlIjogImNoZWNrIiwgImNvbnRhaW5lckNsYXNzIjogInotMCIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIkNsZWFyIG9sZCBjZXJ0aWZpY2F0ZXMgd2hlbiB0aGV5IGFyZSBubyBsb25nZXIgbmVlZGVkIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAibm8iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJDbGVhciBvbGQgY2VydGlmaWNhdGVzIHdoZW4gcmVuZXdpbmcuIn1dfX0sICJjaGVja3N1bSI6IG51bGwsICJtdWx0aXBsZXMiOiB7fX0sIHsiaWQiOiAibGltaXQiLCAic3RyZWFtIjogInBhcnRpYWwiLCAibmFtZSI6ICJMaW1pdCIsICJkZXNjcmlwdGlvbiI6ICJMaW1pdCBtYXhpbXVtIG51bWJlciBvZiByZXF1ZXN0cyBhbmQgY29ubmVjdGlvbnMuIiwgInZlcnNpb24iOiAiMS4wIiwgInR5cGUiOiAiY29yZSIsICJtZXRob2QiOiAibWFudWFsIiwgInBhZ2UiOiB0cnVlLCAic2V0dGluZ3MiOiB7IlVTRV9MSU1JVF9SRVEiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAieWVzIiwgImhlbHAiOiAiQWN0aXZhdGUgbGltaXQgcmVxdWVzdHMgZmVhdHVyZS4iLCAiaWQiOiAidXNlLWxpbWl0LXJlcSIsICJsYWJlbCI6ICJBY3RpdmF0ZSBsaW1pdCByZXF1ZXN0cyIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei02IiwgInBhdHRlcm4iOiAiXih5ZXN8bm8pJCIsICJpbnBUeXBlIjogImNoZWNrYm94IiwgIm5hbWUiOiAiQWN0aXZhdGUgbGltaXQgcmVxdWVzdHMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJ5ZXMiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkFjdGl2YXRlIGxpbWl0IHJlcXVlc3RzIGZlYXR1cmUuIn1dfSwgIlVTRV9MSU1JVF9DT05OIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogInllcyIsICJoZWxwIjogIkFjdGl2YXRlIGxpbWl0IGNvbm5lY3Rpb25zIGZlYXR1cmUuIiwgImlkIjogInVzZS1saW1pdC1jb25uIiwgImxhYmVsIjogIkFjdGl2YXRlIGxpbWl0IGNvbm5lY3Rpb25zIiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJjb250YWluZXJDbGFzcyI6ICJ6LTMiLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJBY3RpdmF0ZSBsaW1pdCBjb25uZWN0aW9ucyIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogInllcyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiQWN0aXZhdGUgbGltaXQgY29ubmVjdGlvbnMgZmVhdHVyZS4ifV19LCAiTElNSVRfQ09OTl9NQVhfSFRUUDEiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiMTAiLCAiaGVscCI6ICJNYXhpbXVtIG51bWJlciBvZiBjb25uZWN0aW9ucyBwZXIgSVAgd2hlbiB1c2luZyBIVFRQLzEuWCBwcm90b2NvbC4iLCAiaWQiOiAibGltaXQtY29ubi1tYXgtaHR0cDEiLCAibGFiZWwiOiAiTWF4aW11bSBudW1iZXIgb2YgSFRUUC8xLlggY29ubmVjdGlvbnMiLCAicmVnZXgiOiAiXlxcZCskIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTIiLCAicGF0dGVybiI6ICJeXFxkKyQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIk1heGltdW0gbnVtYmVyIG9mIEhUVFAvMS5YIGNvbm5lY3Rpb25zIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiMTAiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIk1heGltdW0gbnVtYmVyIG9mIGNvbm5lY3Rpb25zIHBlciBJUCB3aGVuIHVzaW5nIEhUVFAvMS5YIHByb3RvY29sLiJ9XX0sICJMSU1JVF9DT05OX01BWF9IVFRQMiI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIxMDAiLCAiaGVscCI6ICJNYXhpbXVtIG51bWJlciBvZiBzdHJlYW1zIHBlciBJUCB3aGVuIHVzaW5nIEhUVFAvMiBwcm90b2NvbC4iLCAiaWQiOiAibGltaXQtY29ubi1tYXgtaHR0cDIiLCAibGFiZWwiOiAiTWF4aW11bSBudW1iZXIgb2YgSFRUUC8yIHN0cmVhbXMiLCAicmVnZXgiOiAiXlxcZCskIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTEiLCAicGF0dGVybiI6ICJeXFxkKyQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIk1heGltdW0gbnVtYmVyIG9mIEhUVFAvMiBzdHJlYW1zIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiMTAwIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJNYXhpbXVtIG51bWJlciBvZiBzdHJlYW1zIHBlciBJUCB3aGVuIHVzaW5nIEhUVFAvMiBwcm90b2NvbC4ifV19LCAiTElNSVRfQ09OTl9NQVhfU1RSRUFNIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIjEwIiwgImhlbHAiOiAiTWF4aW11bSBudW1iZXIgb2YgY29ubmVjdGlvbnMgcGVyIElQIHdoZW4gdXNpbmcgc3RyZWFtLiIsICJpZCI6ICJsaW1pdC1jb25uLW1heC1zdHJlYW0iLCAibGFiZWwiOiAiTWF4aW11bSBudW1iZXIgb2Ygc3RyZWFtIGNvbm5lY3Rpb25zIiwgInJlZ2V4IjogIl5cXGQrJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0wIiwgInBhdHRlcm4iOiAiXlxcZCskIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJNYXhpbXVtIG51bWJlciBvZiBzdHJlYW0gY29ubmVjdGlvbnMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIxMCIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTWF4aW11bSBudW1iZXIgb2YgY29ubmVjdGlvbnMgcGVyIElQIHdoZW4gdXNpbmcgc3RyZWFtLiJ9XX19LCAiY2hlY2tzdW0iOiBudWxsLCAibXVsdGlwbGVzIjogeyJsaW1pdC1yZXEiOiB7IkxJTUlUX1JFUV9VUkwiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiLyIsICJoZWxwIjogIlVSTCAoUENSRSByZWdleCkgd2hlcmUgdGhlIGxpbWl0IHJlcXVlc3Qgd2lsbCBiZSBhcHBsaWVkIG9yIHNwZWNpYWwgdmFsdWUgLyBmb3IgYWxsIHJlcXVlc3RzLiIsICJpZCI6ICJsaW1pdC1yZXEtdXJsIiwgImxhYmVsIjogIkxpbWl0IHJlcXVlc3QgVVJMIiwgInJlZ2V4IjogIl4uKyQiLCAidHlwZSI6ICJ0ZXh0IiwgIm11bHRpcGxlIjogImxpbWl0LXJlcSIsICJjb250YWluZXJDbGFzcyI6ICJ6LTUiLCAicGF0dGVybiI6ICJeLiskIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJMaW1pdCByZXF1ZXN0IFVSTCIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIi8iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlVSTCAoUENSRSByZWdleCkgd2hlcmUgdGhlIGxpbWl0IHJlcXVlc3Qgd2lsbCBiZSBhcHBsaWVkIG9yIHNwZWNpYWwgdmFsdWUgLyBmb3IgYWxsIHJlcXVlc3RzLiJ9XX0sICJMSU1JVF9SRVFfUkFURSI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIyci9zIiwgImhlbHAiOiAiUmF0ZSB0byBhcHBseSB0byB0aGUgVVJMIChzIGZvciBzZWNvbmQsIG0gZm9yIG1pbnV0ZSwgaCBmb3IgaG91ciBhbmQgZCBmb3IgZGF5KS4iLCAiaWQiOiAibGltaXQtcmVxLXJhdGUiLCAibGFiZWwiOiAiTGltaXQgcmVxdWVzdCBSYXRlIiwgInJlZ2V4IjogIl5cXGQrci9bc21oZF0kIiwgInR5cGUiOiAidGV4dCIsICJtdWx0aXBsZSI6ICJsaW1pdC1yZXEiLCAiY29udGFpbmVyQ2xhc3MiOiAiei00IiwgInBhdHRlcm4iOiAiXlxcZCtyL1tzbWhkXSQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkxpbWl0IHJlcXVlc3QgUmF0ZSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIjJyL3MiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlJhdGUgdG8gYXBwbHkgdG8gdGhlIFVSTCAocyBmb3Igc2Vjb25kLCBtIGZvciBtaW51dGUsIGggZm9yIGhvdXIgYW5kIGQgZm9yIGRheSkuIn1dfX19fSwgeyJpZCI6ICJtZXRyaWNzIiwgInN0cmVhbSI6ICJwYXJ0aWFsIiwgIm5hbWUiOiAiTWV0cmljcyIsICJkZXNjcmlwdGlvbiI6ICJNZXRyaWNzIGNvbGxlY3Rpb24gYW5kIHJldHJpZXZlLiIsICJ2ZXJzaW9uIjogIjEuMCIsICJ0eXBlIjogImNvcmUiLCAibWV0aG9kIjogIm1hbnVhbCIsICJwYWdlIjogZmFsc2UsICJzZXR0aW5ncyI6IHsiVVNFX01FVFJJQ1MiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAieWVzIiwgImhlbHAiOiAiRW5hYmxlIGNvbGxlY3Rpb24gYW5kIHJldHJpZXZhbCBvZiBpbnRlcm5hbCBtZXRyaWNzLiIsICJpZCI6ICJ1c2UtbWV0cmljcyIsICJsYWJlbCI6ICJVc2UgbWV0cmljcyIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei0yIiwgInBhdHRlcm4iOiAiXih5ZXN8bm8pJCIsICJpbnBUeXBlIjogImNoZWNrYm94IiwgIm5hbWUiOiAiVXNlIG1ldHJpY3MiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJ5ZXMiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkVuYWJsZSBjb2xsZWN0aW9uIGFuZCByZXRyaWV2YWwgb2YgaW50ZXJuYWwgbWV0cmljcy4ifV19LCAiTUVUUklDU19NRU1PUllfU0laRSI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICIxNm0iLCAiaGVscCI6ICJTaXplIG9mIHRoZSBpbnRlcm5hbCBzdG9yYWdlIGZvciBtZXRyaWNzLiIsICJpZCI6ICJtZXRyaWNzLW1lbW9yeS1zaXplIiwgImxhYmVsIjogIk1ldHJpY3MgbWVtb3J5IHNpemUiLCAicmVnZXgiOiAiXlxcZCtba0ttTWdHXT8kIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTEiLCAicGF0dGVybiI6ICJeXFxkK1trS21NZ0ddPyQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIk1ldHJpY3MgbWVtb3J5IHNpemUiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIxNm0iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJTaXplIG9mIHRoZSBpbnRlcm5hbCBzdG9yYWdlIGZvciBtZXRyaWNzLiJ9XX0sICJNRVRSSUNTX01BWF9CTE9DS0VEX1JFUVVFU1RTIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIjEwMCIsICJoZWxwIjogIk1heGltdW0gbnVtYmVyIG9mIGJsb2NrZWQgcmVxdWVzdHMgdG8gc3RvcmUgKHBlciB3b3JrZXIpLiIsICJpZCI6ICJtZXRyaWNzLW1heC1ibG9ja2VkLXJlcXVlc3RzIiwgImxhYmVsIjogIk1ldHJpY3MgbWF4IGJsb2NrZWQgcmVxdWVzdHMiLCAicmVnZXgiOiAiXlxcZCskIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTAiLCAicGF0dGVybiI6ICJeXFxkKyQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIk1ldHJpY3MgbWF4IGJsb2NrZWQgcmVxdWVzdHMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIxMDAiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJNYXhpbXVtIG51bWJlciBvZiBibG9ja2VkIHJlcXVlc3RzIHRvIHN0b3JlIChwZXIgd29ya2VyKS4ifV19fSwgImNoZWNrc3VtIjogbnVsbCwgIm11bHRpcGxlcyI6IHt9fSwgeyJpZCI6ICJtaXNjIiwgInN0cmVhbSI6ICJwYXJ0aWFsIiwgIm5hbWUiOiAiTWlzY2VsbGFuZW91cyIsICJkZXNjcmlwdGlvbiI6ICJNaXNjZWxsYW5lb3VzIHNldHRpbmdzLiIsICJ2ZXJzaW9uIjogIjEuMCIsICJ0eXBlIjogImNvcmUiLCAibWV0aG9kIjogIm1hbnVhbCIsICJwYWdlIjogdHJ1ZSwgInNldHRpbmdzIjogeyJESVNBQkxFX0RFRkFVTFRfU0VSVkVSIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIm5vIiwgImhlbHAiOiAiRGVueSBIVFRQIHJlcXVlc3QgaWYgdGhlIHJlcXVlc3Qgdmhvc3QgaXMgdW5rbm93bi4iLCAiaWQiOiAiZGlzYWJsZS1kZWZhdWx0LXNlcnZlciIsICJsYWJlbCI6ICJEaXNhYmxlIGRlZmF1bHQgc2VydmVyIiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJjb250YWluZXJDbGFzcyI6ICJ6LTIwIiwgInBhdHRlcm4iOiAiXih5ZXN8bm8pJCIsICJpbnBUeXBlIjogImNoZWNrYm94IiwgIm5hbWUiOiAiRGlzYWJsZSBkZWZhdWx0IHNlcnZlciIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIm5vIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiRGVueSBIVFRQIHJlcXVlc3QgaWYgdGhlIHJlcXVlc3Qgdmhvc3QgaXMgdW5rbm93bi4ifV19LCAiRElTQUJMRV9ERUZBVUxUX1NFUlZFUl9TVFJJQ1RfU05JIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIm5vIiwgImhlbHAiOiAiQ2xvc2UgU1NML1RMUyBjb25uZWN0aW9uIGlmIHRoZSBTTkkgaXMgdW5rbm93bi4iLCAiaWQiOiAiZGlzYWJsZS1kZWZhdWx0LXNlcnZlci1zdHJpY3Qtc25pIiwgImxhYmVsIjogIkRpc2FibGUgZGVmYXVsdCBzZXJ2ZXIgc3RyaWN0IFNOSSIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xOSIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIkRpc2FibGUgZGVmYXVsdCBzZXJ2ZXIgc3RyaWN0IFNOSSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIm5vIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiQ2xvc2UgU1NML1RMUyBjb25uZWN0aW9uIGlmIHRoZSBTTkkgaXMgdW5rbm93bi4ifV19LCAiUkVESVJFQ1RfSFRUUF9UT19IVFRQUyI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJubyIsICJoZWxwIjogIlJlZGlyZWN0IGFsbCBIVFRQIHJlcXVlc3QgdG8gSFRUUFMuIiwgImlkIjogInJlZGlyZWN0LWh0dHAtdG8taHR0cHMiLCAibGFiZWwiOiAiUmVkaXJlY3QgSFRUUCB0byBIVFRQUyIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xOCIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIlJlZGlyZWN0IEhUVFAgdG8gSFRUUFMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJubyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiUmVkaXJlY3QgYWxsIEhUVFAgcmVxdWVzdCB0byBIVFRQUy4ifV19LCAiQVVUT19SRURJUkVDVF9IVFRQX1RPX0hUVFBTIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogInllcyIsICJoZWxwIjogIlRyeSB0byBkZXRlY3QgaWYgSFRUUFMgaXMgdXNlZCBhbmQgYWN0aXZhdGUgSFRUUCB0byBIVFRQUyByZWRpcmVjdGlvbiBpZiB0aGF0J3MgdGhlIGNhc2UuIiwgImlkIjogImF1dG8tcmVkaXJlY3QtaHR0cC10by1odHRwcyIsICJsYWJlbCI6ICJBdXRvIHJlZGlyZWN0IEhUVFAgdG8gSFRUUFMiLCAicmVnZXgiOiAiXih5ZXN8bm8pJCIsICJ0eXBlIjogImNoZWNrIiwgImNvbnRhaW5lckNsYXNzIjogInotMTciLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJBdXRvIHJlZGlyZWN0IEhUVFAgdG8gSFRUUFMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJ5ZXMiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlRyeSB0byBkZXRlY3QgaWYgSFRUUFMgaXMgdXNlZCBhbmQgYWN0aXZhdGUgSFRUUCB0byBIVFRQUyByZWRpcmVjdGlvbiBpZiB0aGF0J3MgdGhlIGNhc2UuIn1dfSwgIkFMTE9XRURfTUVUSE9EUyI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJHRVR8UE9TVHxIRUFEIiwgImhlbHAiOiAiQWxsb3dlZCBIVFRQIGFuZCBXZWJEQVYgbWV0aG9kcywgc2VwYXJhdGVkIHdpdGggcGlwZXMgdG8gYmUgc2VudCBieSBjbGllbnRzLiIsICJpZCI6ICJhbGxvd2VkLW1ldGhvZHMiLCAibGFiZWwiOiAiQWxsb3dlZCBtZXRob2RzIiwgInJlZ2V4IjogIl4oPyFcXHwpKFxcfD8oW0EtWl17Myx9KSg/IS4qKF58XFx8KVxcMikpKyQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMTYiLCAicGF0dGVybiI6ICJeKD8hXFx8KShcXHw/KFtBLVpdezMsfSkoPyEuKihefFxcfClcXDIpKSskIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJBbGxvd2VkIG1ldGhvZHMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJHRVR8UE9TVHxIRUFEIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJBbGxvd2VkIEhUVFAgYW5kIFdlYkRBViBtZXRob2RzLCBzZXBhcmF0ZWQgd2l0aCBwaXBlcyB0byBiZSBzZW50IGJ5IGNsaWVudHMuIn1dfSwgIk1BWF9DTElFTlRfU0laRSI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIxMG0iLCAiaGVscCI6ICJNYXhpbXVtIGJvZHkgc2l6ZSAoMCBmb3IgaW5maW5pdGUpLiIsICJpZCI6ICJtYXgtY2xpZW50LXNpemUiLCAibGFiZWwiOiAiTWF4aW11bSBib2R5IHNpemUiLCAicmVnZXgiOiAiXlxcZCtba0ttTWdHXT8kIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTE1IiwgInBhdHRlcm4iOiAiXlxcZCtba0ttTWdHXT8kIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJNYXhpbXVtIGJvZHkgc2l6ZSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIjEwbSIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTWF4aW11bSBib2R5IHNpemUgKDAgZm9yIGluZmluaXRlKS4ifV19LCAiU0VSVkVfRklMRVMiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAieWVzIiwgImhlbHAiOiAiU2VydmUgZmlsZXMgZnJvbSB0aGUgbG9jYWwgZm9sZGVyLiIsICJpZCI6ICJzZXJ2ZS1maWxlcyIsICJsYWJlbCI6ICJTZXJ2ZSBmaWxlcyIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xNCIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIlNlcnZlIGZpbGVzIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAieWVzIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJTZXJ2ZSBmaWxlcyBmcm9tIHRoZSBsb2NhbCBmb2xkZXIuIn1dfSwgIlJPT1RfRk9MREVSIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIlJvb3QgZm9sZGVyIGNvbnRhaW5pbmcgZmlsZXMgdG8gc2VydmUgKC92YXIvd3d3L2h0bWwve3NlcnZlcl9uYW1lfSBpZiB1bnNldCkuIiwgImlkIjogInJvb3QtZm9sZGVyIiwgImxhYmVsIjogIlJvb3QgZm9sZGVyIiwgInJlZ2V4IjogIl4oL1tcXHcuIFxcLV0rKSovPyQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMTMiLCAicGF0dGVybiI6ICJeKC9bXFx3LiBcXC1dKykqLz8kIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJSb290IGZvbGRlciIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiUm9vdCBmb2xkZXIgY29udGFpbmluZyBmaWxlcyB0byBzZXJ2ZSAoL3Zhci93d3cvaHRtbC97c2VydmVyX25hbWV9IGlmIHVuc2V0KS4ifV19LCAiU1NMX1BST1RPQ09MUyI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJUTFN2MS4yIFRMU3YxLjMiLCAiaGVscCI6ICJUaGUgc3VwcG9ydGVkIHZlcnNpb24gb2YgVExTLiBXZSByZWNvbW1lbmQgdGhlIGRlZmF1bHQgdmFsdWUgVExTdjEuMiBUTFN2MS4zIGZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMuIiwgImlkIjogImh0dHBzLXByb3RvY29scyIsICJsYWJlbCI6ICJIVFRQUyBwcm90b2NvbHMiLCAicmVnZXgiOiAiXig/ISApKCA/VExTdjFcXC5bMC0zXSkqJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xMiIsICJwYXR0ZXJuIjogIl4oPyEgKSggP1RMU3YxXFwuWzAtM10pKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkhUVFBTIHByb3RvY29scyIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIlRMU3YxLjIgVExTdjEuMyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiVGhlIHN1cHBvcnRlZCB2ZXJzaW9uIG9mIFRMUy4gV2UgcmVjb21tZW5kIHRoZSBkZWZhdWx0IHZhbHVlIFRMU3YxLjIgVExTdjEuMyBmb3IgY29tcGF0aWJpbGl0eSByZWFzb25zLiJ9XX0sICJIVFRQMiI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJ5ZXMiLCAiaGVscCI6ICJTdXBwb3J0IEhUVFAyIHByb3RvY29sIHdoZW4gSFRUUFMgaXMgZW5hYmxlZC4iLCAiaWQiOiAiaHR0cDIiLCAibGFiZWwiOiAiSFRUUDIiLCAicmVnZXgiOiAiXih5ZXN8bm8pJCIsICJ0eXBlIjogImNoZWNrIiwgImNvbnRhaW5lckNsYXNzIjogInotMTEiLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJIVFRQMiIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogInllcyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiU3VwcG9ydCBIVFRQMiBwcm90b2NvbCB3aGVuIEhUVFBTIGlzIGVuYWJsZWQuIn1dfSwgIkhUVFAzIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIm5vIiwgImhlbHAiOiAiU3VwcG9ydCBIVFRQMyBwcm90b2NvbCB3aGVuIEhUVFBTIGlzIGVuYWJsZWQuIiwgImlkIjogImh0dHAzIiwgImxhYmVsIjogIkhUVFAzIiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJjb250YWluZXJDbGFzcyI6ICJ6LTEwIiwgInBhdHRlcm4iOiAiXih5ZXN8bm8pJCIsICJpbnBUeXBlIjogImNoZWNrYm94IiwgIm5hbWUiOiAiSFRUUDMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJubyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiU3VwcG9ydCBIVFRQMyBwcm90b2NvbCB3aGVuIEhUVFBTIGlzIGVuYWJsZWQuIn1dfSwgIkhUVFAzX0FMVF9TVkNfUE9SVCI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICI0NDMiLCAiaGVscCI6ICJIVFRQMyBhbHRlcm5hdGUgc2VydmljZSBwb3J0LiBUaGlzIHZhbHVlIHdpbGwgYmUgdXNlZCBhcyBwYXJ0IG9mIHRoZSBBbHQtU3ZjIGhlYWRlci4iLCAiaWQiOiAiaHR0cDMtYWx0LXN2Yy1wb3J0IiwgImxhYmVsIjogIkhUVFAzIEFsdC1TdmMgcG9ydCIsICJyZWdleCI6ICJeXFxkKyQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotOSIsICJwYXR0ZXJuIjogIl5cXGQrJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiSFRUUDMgQWx0LVN2YyBwb3J0IiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiNDQzIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJIVFRQMyBhbHRlcm5hdGUgc2VydmljZSBwb3J0LiBUaGlzIHZhbHVlIHdpbGwgYmUgdXNlZCBhcyBwYXJ0IG9mIHRoZSBBbHQtU3ZjIGhlYWRlci4ifV19LCAiTElTVEVOX0hUVFAiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAieWVzIiwgImhlbHAiOiAiUmVzcG9uZCB0byAoaW5zZWN1cmUpIEhUVFAgcmVxdWVzdHMuIiwgImlkIjogImh0dHAtbGlzdGVuIiwgImxhYmVsIjogIkhUVFAgbGlzdGVuIiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJjb250YWluZXJDbGFzcyI6ICJ6LTgiLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJIVFRQIGxpc3RlbiIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogInllcyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiUmVzcG9uZCB0byAoaW5zZWN1cmUpIEhUVFAgcmVxdWVzdHMuIn1dfSwgIlVTRV9PUEVOX0ZJTEVfQ0FDSEUiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAibm8iLCAiaGVscCI6ICJFbmFibGUgb3BlbiBmaWxlIGNhY2hlIGZlYXR1cmUiLCAiaWQiOiAidXNlLW9wZW4tZmlsZS1jYWNoZSIsICJsYWJlbCI6ICJVc2Ugb3BlbiBmaWxlIGNhY2hlIiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJjb250YWluZXJDbGFzcyI6ICJ6LTciLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJVc2Ugb3BlbiBmaWxlIGNhY2hlIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAibm8iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkVuYWJsZSBvcGVuIGZpbGUgY2FjaGUgZmVhdHVyZSJ9XX0sICJPUEVOX0ZJTEVfQ0FDSEUiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAibWF4PTEwMDAgaW5hY3RpdmU9MjBzIiwgImhlbHAiOiAiT3BlbiBmaWxlIGNhY2hlIGRpcmVjdGl2ZSIsICJpZCI6ICJvcGVuLWZpbGUtY2FjaGUiLCAibGFiZWwiOiAiVXNlIG9wZW4gZmlsZSBjYWNoZSIsICJyZWdleCI6ICJeKG9mZnxtYXg9XFxkKyggaW5hY3RpdmU9XFxkKyhtcz98W3NoZHdNeV0pKT8pJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei02IiwgInBhdHRlcm4iOiAiXihvZmZ8bWF4PVxcZCsoIGluYWN0aXZlPVxcZCsobXM/fFtzaGR3TXldKSk/KSQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIlVzZSBvcGVuIGZpbGUgY2FjaGUiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJtYXg9MTAwMCBpbmFjdGl2ZT0yMHMiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIk9wZW4gZmlsZSBjYWNoZSBkaXJlY3RpdmUifV19LCAiT1BFTl9GSUxFX0NBQ0hFX0VSUk9SUyI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJ5ZXMiLCAiaGVscCI6ICJFbmFibGUgb3BlbiBmaWxlIGNhY2hlIGZvciBlcnJvcnMiLCAiaWQiOiAib3Blbi1maWxlLWNhY2hlLWVycm9ycyIsICJsYWJlbCI6ICJPcGVuIGZpbGUgY2FjaGUgZXJyb3JzIiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJjb250YWluZXJDbGFzcyI6ICJ6LTUiLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJPcGVuIGZpbGUgY2FjaGUgZXJyb3JzIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAieWVzIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJFbmFibGUgb3BlbiBmaWxlIGNhY2hlIGZvciBlcnJvcnMifV19LCAiT1BFTl9GSUxFX0NBQ0hFX01JTl9VU0VTIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIjIiLCAiaGVscCI6ICJFbmFibGUgb3BlbiBmaWxlIGNhY2hlIG1pbmltdW0gdXNlcyIsICJpZCI6ICJvcGVuLWZpbGUtY2FjaGUtbWluLXVzZXMiLCAibGFiZWwiOiAiT3BlbiBmaWxlIGNhY2hlIG1pbiB1c2VzIiwgInJlZ2V4IjogIl5bMS05XVxcZCokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTQiLCAicGF0dGVybiI6ICJeWzEtOV1cXGQqJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiT3BlbiBmaWxlIGNhY2hlIG1pbiB1c2VzIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiMiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiRW5hYmxlIG9wZW4gZmlsZSBjYWNoZSBtaW5pbXVtIHVzZXMifV19LCAiT1BFTl9GSUxFX0NBQ0hFX1ZBTElEIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIjMwcyIsICJoZWxwIjogIk9wZW4gZmlsZSBjYWNoZSB2YWxpZCB0aW1lIiwgImlkIjogIm9wZW4tZmlsZS1jYWNoZS12YWxpZCIsICJsYWJlbCI6ICJPcGVuIGZpbGUgY2FjaGUgdmFsaWQgdGltZSIsICJyZWdleCI6ICJeXFxkKyhtcz98W3NoZHdNeV0pJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0zIiwgInBhdHRlcm4iOiAiXlxcZCsobXM/fFtzaGR3TXldKSQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIk9wZW4gZmlsZSBjYWNoZSB2YWxpZCB0aW1lIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiMzBzIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJPcGVuIGZpbGUgY2FjaGUgdmFsaWQgdGltZSJ9XX0sICJFWFRFUk5BTF9QTFVHSU5fVVJMUyI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJMaXN0IG9mIGV4dGVybmFsIHBsdWdpbnMgVVJMcyAoZGlyZWN0IGRvd25sb2FkIHRvIC56aXAgb3IgLnRhciBmaWxlKSB0byBkb3dubG9hZCBhbmQgaW5zdGFsbCAoVVJMcyBhcmUgc2VwYXJhdGVkIHdpdGggc3BhY2UpLiIsICJpZCI6ICJleHRlcm5hbC1wbHVnaW4tdXJscyIsICJsYWJlbCI6ICJFeHRlcm5hbCBwbHVnaW4gVVJMcyIsICJyZWdleCI6ICJeKCAqKChodHRwcz86XFwvXFwvfGZpbGU6XFwvXFwvXFwvKVtcXC1cXHdAOiUuK34jPV0rW1xcLVxcd1xcKFxcKSFAOiUrLn4jPyZcXC89JF0qKSg/IS4qXFwyKD8hLikpICopKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMiIsICJwYXR0ZXJuIjogIl4oICooKGh0dHBzPzpcXC9cXC98ZmlsZTpcXC9cXC9cXC8pW1xcLVxcd0A6JS4rfiM9XStbXFwtXFx3XFwoXFwpIUA6JSsufiM/JlxcLz0kXSopKD8hLipcXDIoPyEuKSkgKikqJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiRXh0ZXJuYWwgcGx1Z2luIFVSTHMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIGV4dGVybmFsIHBsdWdpbnMgVVJMcyAoZGlyZWN0IGRvd25sb2FkIHRvIC56aXAgb3IgLnRhciBmaWxlKSB0byBkb3dubG9hZCBhbmQgaW5zdGFsbCAoVVJMcyBhcmUgc2VwYXJhdGVkIHdpdGggc3BhY2UpLiJ9XX0sICJERU5ZX0hUVFBfU1RBVFVTIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIjQwMyIsICJoZWxwIjogIkhUVFAgc3RhdHVzIGNvZGUgdG8gc2VuZCB3aGVuIHRoZSByZXF1ZXN0IGlzIGRlbmllZCAoNDAzIG9yIDQ0NCkuIFdoZW4gdXNpbmcgNDQ0LCBCdW5rZXJXZWIgd2lsbCBjbG9zZSB0aGUgY29ubmVjdGlvbi4iLCAiaWQiOiAiZGVueS1odHRwLXN0YXR1cyIsICJsYWJlbCI6ICJEZW55IEhUVFAgc3RhdHVzIiwgInJlZ2V4IjogIl4oNDAzfDQ0NCkkIiwgInR5cGUiOiAic2VsZWN0IiwgImNvbnRhaW5lckNsYXNzIjogInotMSIsICJwYXR0ZXJuIjogIl4oNDAzfDQ0NCkkIiwgImlucFR5cGUiOiAic2VsZWN0IiwgIm5hbWUiOiAiRGVueSBIVFRQIHN0YXR1cyIsICJ2YWx1ZXMiOiBbIjQwMyIsICI0NDQiXSwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiNDAzIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiSFRUUCBzdGF0dXMgY29kZSB0byBzZW5kIHdoZW4gdGhlIHJlcXVlc3QgaXMgZGVuaWVkICg0MDMgb3IgNDQ0KS4gV2hlbiB1c2luZyA0NDQsIEJ1bmtlcldlYiB3aWxsIGNsb3NlIHRoZSBjb25uZWN0aW9uLiJ9XX0sICJTRU5EX0FOT05ZTU9VU19SRVBPUlQiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAieWVzIiwgImhlbHAiOiAiU2VuZCBhbm9ueW1vdXMgcmVwb3J0IHRvIEJ1bmtlcldlYiBtYWludGFpbmVycy4iLCAiaWQiOiAic2VuZC1hbm9ueW1vdXMtcmVwb3J0IiwgImxhYmVsIjogIlNlbmQgYW5vbnltb3VzIHJlcG9ydCIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei0wIiwgInBhdHRlcm4iOiAiXih5ZXN8bm8pJCIsICJpbnBUeXBlIjogImNoZWNrYm94IiwgIm5hbWUiOiAiU2VuZCBhbm9ueW1vdXMgcmVwb3J0IiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAieWVzIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiU2VuZCBhbm9ueW1vdXMgcmVwb3J0IHRvIEJ1bmtlcldlYiBtYWludGFpbmVycy4ifV19fSwgImNoZWNrc3VtIjogbnVsbCwgIm11bHRpcGxlcyI6IHt9fSwgeyJpZCI6ICJtb2RzZWN1cml0eSIsICJzdHJlYW0iOiAibm8iLCAibmFtZSI6ICJNb2RTZWN1cml0eSIsICJkZXNjcmlwdGlvbiI6ICJNYW5hZ2VtZW50IG9mIHRoZSBNb2RTZWN1cml0eSBXQUYuIiwgInZlcnNpb24iOiAiMS4wIiwgInR5cGUiOiAiY29yZSIsICJtZXRob2QiOiAibWFudWFsIiwgInBhZ2UiOiBmYWxzZSwgInNldHRpbmdzIjogeyJVU0VfTU9EU0VDVVJJVFkiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAieWVzIiwgImhlbHAiOiAiRW5hYmxlIE1vZFNlY3VyaXR5IFdBRi4iLCAiaWQiOiAidXNlLW1vZHNlY3VyaXR5IiwgImxhYmVsIjogIlVzZSBNb2RTZWN1cml0eSIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei01IiwgInBhdHRlcm4iOiAiXih5ZXN8bm8pJCIsICJpbnBUeXBlIjogImNoZWNrYm94IiwgIm5hbWUiOiAiVXNlIE1vZFNlY3VyaXR5IiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAieWVzIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJFbmFibGUgTW9kU2VjdXJpdHkgV0FGLiJ9XX0sICJVU0VfTU9EU0VDVVJJVFlfQ1JTIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogInllcyIsICJoZWxwIjogIkVuYWJsZSBPV0FTUCBDb3JlIFJ1bGUgU2V0LiIsICJpZCI6ICJ1c2UtbW9kc2VjdXJpdHktY3JzIiwgImxhYmVsIjogIlVzZSBDb3JlIFJ1bGUgU2V0IiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJjb250YWluZXJDbGFzcyI6ICJ6LTQiLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJVc2UgQ29yZSBSdWxlIFNldCIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogInllcyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiRW5hYmxlIE9XQVNQIENvcmUgUnVsZSBTZXQuIn1dfSwgIk1PRFNFQ1VSSVRZX0NSU19WRVJTSU9OIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIjMiLCAiaGVscCI6ICJWZXJzaW9uIG9mIHRoZSBPV0FTUCBDb3JlIFJ1bGUgU2V0IHRvIHVzZSB3aXRoIE1vZFNlY3VyaXR5ICgzLCA0IG9yIG5pZ2h0bHkpLiIsICJpZCI6ICJtb2RzZWN1cml0eS1jcnMtdmVyc2lvbiIsICJsYWJlbCI6ICJDb3JlIFJ1bGUgU2V0IFZlcnNpb24iLCAicmVnZXgiOiAiXigzfDR8bmlnaHRseSkkIiwgInR5cGUiOiAic2VsZWN0IiwgImNvbnRhaW5lckNsYXNzIjogInotMyIsICJwYXR0ZXJuIjogIl4oM3w0fG5pZ2h0bHkpJCIsICJpbnBUeXBlIjogInNlbGVjdCIsICJuYW1lIjogIkNvcmUgUnVsZSBTZXQgVmVyc2lvbiIsICJ2YWx1ZXMiOiBbIjMiLCAiNCIsICJuaWdodGx5Il0sICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIjMiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlZlcnNpb24gb2YgdGhlIE9XQVNQIENvcmUgUnVsZSBTZXQgdG8gdXNlIHdpdGggTW9kU2VjdXJpdHkgKDMsIDQgb3IgbmlnaHRseSkuIn1dfSwgIk1PRFNFQ1VSSVRZX1NFQ19BVURJVF9FTkdJTkUiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiUmVsZXZhbnRPbmx5IiwgImhlbHAiOiAiU2VjQXVkaXRFbmdpbmUgZGlyZWN0aXZlIG9mIE1vZFNlY3VyaXR5LiIsICJpZCI6ICJtb2RzZWN1cml0eS1zZWMtYXVkaXQtZW5naW5lIiwgImxhYmVsIjogIlNlY0F1ZGl0RW5naW5lIiwgInJlZ2V4IjogIl4oT258UmVsZXZhbnRPbmx5fE9mZikkIiwgInR5cGUiOiAic2VsZWN0IiwgImNvbnRhaW5lckNsYXNzIjogInotMiIsICJwYXR0ZXJuIjogIl4oT258UmVsZXZhbnRPbmx5fE9mZikkIiwgImlucFR5cGUiOiAic2VsZWN0IiwgIm5hbWUiOiAiU2VjQXVkaXRFbmdpbmUiLCAidmFsdWVzIjogWyJPZmYiLCAiT24iLCAiUmVsZXZhbnRPbmx5Il0sICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIlJlbGV2YW50T25seSIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiU2VjQXVkaXRFbmdpbmUgZGlyZWN0aXZlIG9mIE1vZFNlY3VyaXR5LiJ9XX0sICJNT0RTRUNVUklUWV9TRUNfUlVMRV9FTkdJTkUiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiT24iLCAiaGVscCI6ICJTZWNSdWxlRW5naW5lIGRpcmVjdGl2ZSBvZiBNb2RTZWN1cml0eS4iLCAiaWQiOiAibW9kc2VjdXJpdHktc2VjLXJ1bGUtZW5naW5lIiwgImxhYmVsIjogIlNlY1J1bGVFbmdpbmUiLCAicmVnZXgiOiAiXihPbnxEZXRlY3Rpb25Pbmx5fE9mZikkIiwgInR5cGUiOiAic2VsZWN0IiwgImNvbnRhaW5lckNsYXNzIjogInotMSIsICJwYXR0ZXJuIjogIl4oT258RGV0ZWN0aW9uT25seXxPZmYpJCIsICJpbnBUeXBlIjogInNlbGVjdCIsICJuYW1lIjogIlNlY1J1bGVFbmdpbmUiLCAidmFsdWVzIjogWyJEZXRlY3Rpb25Pbmx5IiwgIk9mZiIsICJPbiJdLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJPbiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiU2VjUnVsZUVuZ2luZSBkaXJlY3RpdmUgb2YgTW9kU2VjdXJpdHkuIn1dfSwgIk1PRFNFQ1VSSVRZX1NFQ19BVURJVF9MT0dfUEFSVFMiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiQUJDRkhaIiwgImhlbHAiOiAiU2VjQXVkaXRMb2dQYXJ0cyBkaXJlY3RpdmUgb2YgTW9kU2VjdXJpdHkuIiwgImlkIjogIm1vZHNlY3VyaXR5LXNlYy1hdWRpdC1sb2ctcGFydHMiLCAibGFiZWwiOiAiU2VjQXVkaXRMb2dQYXJ0cyIsICJyZWdleCI6ICJeQSgoW0ItS10pKD8hLipcXDIpKStaJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0wIiwgInBhdHRlcm4iOiAiXkEoKFtCLUtdKSg/IS4qXFwyKSkrWiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIlNlY0F1ZGl0TG9nUGFydHMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJBQkNGSFoiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlNlY0F1ZGl0TG9nUGFydHMgZGlyZWN0aXZlIG9mIE1vZFNlY3VyaXR5LiJ9XX19LCAiY2hlY2tzdW0iOiBudWxsLCAibXVsdGlwbGVzIjoge319LCB7ImlkIjogInBocCIsICJzdHJlYW0iOiAibm8iLCAibmFtZSI6ICJQSFAiLCAiZGVzY3JpcHRpb24iOiAiTWFuYWdlIGxvY2FsIG9yIHJlbW90ZSBQSFAtRlBNLiIsICJ2ZXJzaW9uIjogIjEuMCIsICJ0eXBlIjogImNvcmUiLCAibWV0aG9kIjogIm1hbnVhbCIsICJwYWdlIjogZmFsc2UsICJzZXR0aW5ncyI6IHsiUkVNT1RFX1BIUCI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJIb3N0bmFtZSBvZiB0aGUgcmVtb3RlIFBIUC1GUE0gaW5zdGFuY2UuIiwgImlkIjogInJlbW90ZS1waHAiLCAibGFiZWwiOiAiUmVtb3RlIFBIUCIsICJyZWdleCI6ICJeKCg/PS57MSwyNTV9JClbMC05QS1aYS16XSg/Oig/OlswLTlBLVphLXpdfC0pezAsNjF9WzAtOUEtWmEtel0pPyg/OlxcLlswLTlBLVphLXpdKD86KD86WzAtOUEtWmEtel18LSl7MCw2MX1bMC05QS1aYS16XSk/KSpcXC4/KT8kIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTMiLCAicGF0dGVybiI6ICJeKCg/PS57MSwyNTV9JClbMC05QS1aYS16XSg/Oig/OlswLTlBLVphLXpdfC0pezAsNjF9WzAtOUEtWmEtel0pPyg/OlxcLlswLTlBLVphLXpdKD86KD86WzAtOUEtWmEtel18LSl7MCw2MX1bMC05QS1aYS16XSk/KSpcXC4/KT8kIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJSZW1vdGUgUEhQIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJIb3N0bmFtZSBvZiB0aGUgcmVtb3RlIFBIUC1GUE0gaW5zdGFuY2UuIn1dfSwgIlJFTU9URV9QSFBfUEFUSCI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJSb290IGZvbGRlciBjb250YWluaW5nIGZpbGVzIGluIHRoZSByZW1vdGUgUEhQLUZQTSBpbnN0YW5jZS4iLCAiaWQiOiAicmVtb3RlLXBocC1wYXRoIiwgImxhYmVsIjogIlJlbW90ZSBQSFAgcGF0aCIsICJyZWdleCI6ICJeKC9bXFx3LiBcXC1dKykqLz8kIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTIiLCAicGF0dGVybiI6ICJeKC9bXFx3LiBcXC1dKykqLz8kIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJSZW1vdGUgUEhQIHBhdGgiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlJvb3QgZm9sZGVyIGNvbnRhaW5pbmcgZmlsZXMgaW4gdGhlIHJlbW90ZSBQSFAtRlBNIGluc3RhbmNlLiJ9XX0sICJMT0NBTF9QSFAiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiUGF0aCB0byB0aGUgUEhQLUZQTSBzb2NrZXQgZmlsZS4iLCAiaWQiOiAibG9jYWwiLCAibGFiZWwiOiAiTG9jYWwgUEhQIiwgInJlZ2V4IjogIl4oL1tcXHcuIFxcLV0rKSovPyQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMSIsICJwYXR0ZXJuIjogIl4oL1tcXHcuIFxcLV0rKSovPyQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkxvY2FsIFBIUCIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiUGF0aCB0byB0aGUgUEhQLUZQTSBzb2NrZXQgZmlsZS4ifV19LCAiTE9DQUxfUEhQX1BBVEgiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiUm9vdCBmb2xkZXIgY29udGFpbmluZyBmaWxlcyBpbiB0aGUgbG9jYWwgUEhQLUZQTSBpbnN0YW5jZS4iLCAiaWQiOiAibG9jYWwtcGhwLXBhdGgiLCAibGFiZWwiOiAiTG9jYWwgUEhQIHBhdGgiLCAicmVnZXgiOiAiXigvW1xcdy4gXFwtXSspKi8/JCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0wIiwgInBhdHRlcm4iOiAiXigvW1xcdy4gXFwtXSspKi8/JCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiTG9jYWwgUEhQIHBhdGgiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlJvb3QgZm9sZGVyIGNvbnRhaW5pbmcgZmlsZXMgaW4gdGhlIGxvY2FsIFBIUC1GUE0gaW5zdGFuY2UuIn1dfX0sICJjaGVja3N1bSI6IG51bGwsICJtdWx0aXBsZXMiOiB7fX0sIHsiaWQiOiAicHJvIiwgInN0cmVhbSI6ICJubyIsICJuYW1lIjogIlBybyIsICJkZXNjcmlwdGlvbiI6ICJQcm8gc2V0dGluZ3MgZm9yIHRoZSBQcm8gdmVyc2lvbiBvZiBCdW5rZXJXZWIuIiwgInZlcnNpb24iOiAiMS4wIiwgInR5cGUiOiAiY29yZSIsICJtZXRob2QiOiAibWFudWFsIiwgInBhZ2UiOiBmYWxzZSwgInNldHRpbmdzIjogeyJQUk9fTElDRU5TRV9LRVkiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiVGhlIExpY2Vuc2UgS2V5IGZvciB0aGUgUHJvIHZlcnNpb24gb2YgQnVua2VyV2ViLiIsICJpZCI6ICJwcm8tbGljZW5zZS1rZXkiLCAibGFiZWwiOiAiUHJvIExpY2Vuc2UgS2V5IiwgInJlZ2V4IjogIl4uKiQiLCAidHlwZSI6ICJwYXNzd29yZCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTAiLCAicGF0dGVybiI6ICJeLiokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJQcm8gTGljZW5zZSBLZXkiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJUaGUgTGljZW5zZSBLZXkgZm9yIHRoZSBQcm8gdmVyc2lvbiBvZiBCdW5rZXJXZWIuIn1dfX0sICJjaGVja3N1bSI6IG51bGwsICJtdWx0aXBsZXMiOiB7fX0sIHsiaWQiOiAicmVhbGlwIiwgInN0cmVhbSI6ICJwYXJ0aWFsIiwgIm5hbWUiOiAiUmVhbCBJUCIsICJkZXNjcmlwdGlvbiI6ICJHZXQgcmVhbCBJUCBvZiBjbGllbnRzIHdoZW4gQnVua2VyV2ViIGlzIGJlaGluZCBhIHJldmVyc2UgcHJveHkgLyBsb2FkIGJhbGFuY2VyLiIsICJ2ZXJzaW9uIjogIjEuMCIsICJ0eXBlIjogImNvcmUiLCAibWV0aG9kIjogIm1hbnVhbCIsICJwYWdlIjogZmFsc2UsICJzZXR0aW5ncyI6IHsiVVNFX1JFQUxfSVAiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAibm8iLCAiaGVscCI6ICJSZXRyaWV2ZSB0aGUgcmVhbCBJUCBvZiBjbGllbnQuIiwgImlkIjogInVzZS1yZWFsLWlwIiwgImxhYmVsIjogIlVzZSByZWFsIGlwIiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJjb250YWluZXJDbGFzcyI6ICJ6LTUiLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJVc2UgcmVhbCBpcCIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIm5vIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJSZXRyaWV2ZSB0aGUgcmVhbCBJUCBvZiBjbGllbnQuIn1dfSwgIlVTRV9QUk9YWV9QUk9UT0NPTCI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJubyIsICJoZWxwIjogIkVuYWJsZSBQUk9YWSBwcm90b2NvbCBjb21tdW5pY2F0aW9uLiIsICJpZCI6ICJ1c2UtcHJveHktcHJvdG9jb2wiLCAibGFiZWwiOiAiVXNlIFBST1hZIHByb3RvY29sIiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJjb250YWluZXJDbGFzcyI6ICJ6LTQiLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJVc2UgUFJPWFkgcHJvdG9jb2wiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJubyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiRW5hYmxlIFBST1hZIHByb3RvY29sIGNvbW11bmljYXRpb24uIn1dfSwgIlJFQUxfSVBfRlJPTSI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIxOTIuMTY4LjAuMC8xNiAxNzIuMTYuMC4wLzEyIDEwLjAuMC4wLzgiLCAiaGVscCI6ICJMaXN0IG9mIHRydXN0ZWQgSVBzIC8gbmV0d29ya3MsIHNlcGFyYXRlZCB3aXRoIHNwYWNlcywgd2hlcmUgcHJveGllZCByZXF1ZXN0cyBjb21lIGZyb20uIiwgImlkIjogInJlYWwtaXAtZnJvbSIsICJsYWJlbCI6ICJSZWFsIElQIGZyb20iLCAicmVnZXgiOiAiXig/ISApKCAqKCgoXFxiMjVbMC01XXxcXGIyWzAtNF1cXGR8XFxiWzAxXT9cXGRcXGQ/KShcXC4oMjVbMC01XXwyWzAtNF1cXGR8WzAxXT9cXGRcXGQ/KSl7M30pKFxcLyhbMS0yXVswLTldP3wzWzAtMl0/fFswNC05XSkpP3woKFswLTlhLWZBLUZdezEsNH06KXs3fVswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDd9OnwoWzAtOWEtZkEtRl17MSw0fTopezEsNn06WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsNX0oOlswLTlhLWZBLUZdezEsNH0pezEsMn18KFswLTlhLWZBLUZdezEsNH06KXsxLDR9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDN9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwzfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsMn0oOlswLTlhLWZBLUZdezEsNH0pezEsNX18WzAtOWEtZkEtRl17MSw0fTooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDZ9KXw6KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw3fXw6KXxmZTgwOig6WzAtOWEtZkEtRl1aezAsNH0pezAsNH0lWzAtOWEtekEtWl0rfDo6KGZmZmYoOjB7MSw0fSk/Oik/KCgyNVswLTVdfCgyWzAtNF18MT9cXGQpP1xcZClcXC4pezN9KDI1WzAtNV18KDJbMC00XXwxP1xcZCk/XFxkKXwoWzAtOWEtZkEtRl17MSw0fTopezEsNH06KCgyNVswLTVdfCgyWzAtNF18MT9cXGQpP1xcZClcXC4pezN9KDI1WzAtNV18KDJbMC00XXwxP1xcZCk/XFxkKSkoXFwvKDEyWzAtOF18MVswMV1bMC05XXxbMC05XVswLTldPykpPykoPyEuKlxcRFxcMihbXlxcZFxcL118JCkpICopKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMyIsICJwYXR0ZXJuIjogIl4oPyEgKSggKigoKFxcYjI1WzAtNV18XFxiMlswLTRdXFxkfFxcYlswMV0/XFxkXFxkPykoXFwuKDI1WzAtNV18MlswLTRdXFxkfFswMV0/XFxkXFxkPykpezN9KShcXC8oWzEtMl1bMC05XT98M1swLTJdP3xbMDQtOV0pKT98KChbMC05YS1mQS1GXXsxLDR9Oil7N31bMC05YS1mQS1GXXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw3fTp8KFswLTlhLWZBLUZdezEsNH06KXsxLDZ9OlswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDV9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDJ9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw0fSg6WzAtOWEtZkEtRl17MSw0fSl7MSwzfXwoWzAtOWEtZkEtRl17MSw0fTopezEsM30oOlswLTlhLWZBLUZdezEsNH0pezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDJ9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDV9fFswLTlhLWZBLUZdezEsNH06KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw2fSl8OigoOlswLTlhLWZBLUZdezEsNH0pezEsN318Oil8ZmU4MDooOlswLTlhLWZBLUZdWnswLDR9KXswLDR9JVswLTlhLXpBLVpdK3w6OihmZmZmKDowezEsNH0pPzopPygoMjVbMC01XXwoMlswLTRdfDE/XFxkKT9cXGQpXFwuKXszfSgyNVswLTVdfCgyWzAtNF18MT9cXGQpP1xcZCl8KFswLTlhLWZBLUZdezEsNH06KXsxLDR9OigoMjVbMC01XXwoMlswLTRdfDE/XFxkKT9cXGQpXFwuKXszfSgyNVswLTVdfCgyWzAtNF18MT9cXGQpP1xcZCkpKFxcLygxMlswLThdfDFbMDFdWzAtOV18WzAtOV1bMC05XT8pKT8pKD8hLipcXERcXDIoW15cXGRcXC9dfCQpKSAqKSokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJSZWFsIElQIGZyb20iLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIxOTIuMTY4LjAuMC8xNiAxNzIuMTYuMC4wLzEyIDEwLjAuMC4wLzgiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkxpc3Qgb2YgdHJ1c3RlZCBJUHMgLyBuZXR3b3Jrcywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCB3aGVyZSBwcm94aWVkIHJlcXVlc3RzIGNvbWUgZnJvbS4ifV19LCAiUkVBTF9JUF9IRUFERVIiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiWC1Gb3J3YXJkZWQtRm9yIiwgImhlbHAiOiAiSFRUUCBoZWFkZXIgY29udGFpbmluZyB0aGUgcmVhbCBJUCBvciBzcGVjaWFsIHZhbHVlIHByb3h5X3Byb3RvY29sIGZvciBQUk9YWSBwcm90b2NvbC4iLCAiaWQiOiAicmVhbC1pcC1oZWFkZXIiLCAibGFiZWwiOiAiUmVhbCBJUCBoZWFkZXIiLCAicmVnZXgiOiAiXig/ISApKCggPyg/IXByb3h5X3Byb3RvY29sKVtcXHdcXC1dKykqfHByb3h5X3Byb3RvY29sKSQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMiIsICJwYXR0ZXJuIjogIl4oPyEgKSgoID8oPyFwcm94eV9wcm90b2NvbClbXFx3XFwtXSspKnxwcm94eV9wcm90b2NvbCkkIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJSZWFsIElQIGhlYWRlciIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIlgtRm9yd2FyZGVkLUZvciIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiSFRUUCBoZWFkZXIgY29udGFpbmluZyB0aGUgcmVhbCBJUCBvciBzcGVjaWFsIHZhbHVlIHByb3h5X3Byb3RvY29sIGZvciBQUk9YWSBwcm90b2NvbC4ifV19LCAiUkVBTF9JUF9SRUNVUlNJVkUiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAieWVzIiwgImhlbHAiOiAiUGVyZm9ybSBhIHJlY3Vyc2l2ZSBzZWFyY2ggaW4gdGhlIGhlYWRlciBjb250YWluZXIgSVAgYWRkcmVzcy4iLCAiaWQiOiAicmVhbC1pcC1yZWN1cnNpdmUiLCAibGFiZWwiOiAiUmVhbCBJUCByZWN1cnNpdmUiLCAicmVnZXgiOiAiXih5ZXN8bm8pJCIsICJ0eXBlIjogImNoZWNrIiwgImNvbnRhaW5lckNsYXNzIjogInotMSIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIlJlYWwgSVAgcmVjdXJzaXZlIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAieWVzIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJQZXJmb3JtIGEgcmVjdXJzaXZlIHNlYXJjaCBpbiB0aGUgaGVhZGVyIGNvbnRhaW5lciBJUCBhZGRyZXNzLiJ9XX0sICJSRUFMX0lQX0ZST01fVVJMUyI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJMaXN0IG9mIFVSTHMgY29udGFpbmluZyB0cnVzdGVkIElQcyAvIG5ldHdvcmtzLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIHdoZXJlIHByb3hpZWQgcmVxdWVzdHMgY29tZSBmcm9tLiIsICJpZCI6ICJyZWFsLWlwLWZyb20tdXJscyIsICJsYWJlbCI6ICJSZWFsIElQIGZyb20gVVJMcyIsICJyZWdleCI6ICJeKCAqKChodHRwcz86XFwvXFwvfGZpbGU6XFwvXFwvXFwvKVtcXC1cXHdAOiUuK34jPV0rW1xcLVxcd1xcKFxcKSFAOiUrLn4jPyZcXC89JF0qKSg/IS4qXFwyKD8hLikpICopKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMCIsICJwYXR0ZXJuIjogIl4oICooKGh0dHBzPzpcXC9cXC98ZmlsZTpcXC9cXC9cXC8pW1xcLVxcd0A6JS4rfiM9XStbXFwtXFx3XFwoXFwpIUA6JSsufiM/JlxcLz0kXSopKD8hLipcXDIoPyEuKSkgKikqJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiUmVhbCBJUCBmcm9tIFVSTHMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIFVSTHMgY29udGFpbmluZyB0cnVzdGVkIElQcyAvIG5ldHdvcmtzLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIHdoZXJlIHByb3hpZWQgcmVxdWVzdHMgY29tZSBmcm9tLiJ9XX19LCAiY2hlY2tzdW0iOiBudWxsLCAibXVsdGlwbGVzIjoge319LCB7ImlkIjogInJlZGlyZWN0IiwgInN0cmVhbSI6ICJubyIsICJuYW1lIjogIlJlZGlyZWN0IiwgImRlc2NyaXB0aW9uIjogIk1hbmFnZSBIVFRQIHJlZGlyZWN0cy4iLCAidmVyc2lvbiI6ICIxLjAiLCAidHlwZSI6ICJjb3JlIiwgIm1ldGhvZCI6ICJtYW51YWwiLCAicGFnZSI6IGZhbHNlLCAic2V0dGluZ3MiOiB7IlJFRElSRUNUX1RPIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIlJlZGlyZWN0IGEgd2hvbGUgc2l0ZSB0byBhbm90aGVyIG9uZS4iLCAiaWQiOiAicmVkaXJlY3QtdG8iLCAibGFiZWwiOiAiUmVkaXJlY3QgdG8iLCAicmVnZXgiOiAiXihodHRwcz86XFwvXFwvW1xcLVxcd0A6JS4rfiM9XStbXFwtXFx3XFwoXFwpIUA6JSsufiM/JlxcLz0kXSopPyQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMiIsICJwYXR0ZXJuIjogIl4oaHR0cHM/OlxcL1xcL1tcXC1cXHdAOiUuK34jPV0rW1xcLVxcd1xcKFxcKSFAOiUrLn4jPyZcXC89JF0qKT8kIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJSZWRpcmVjdCB0byIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiUmVkaXJlY3QgYSB3aG9sZSBzaXRlIHRvIGFub3RoZXIgb25lLiJ9XX0sICJSRURJUkVDVF9UT19SRVFVRVNUX1VSSSI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJubyIsICJoZWxwIjogIkFwcGVuZCB0aGUgcmVxdWVzdGVkIFVSSSB0byB0aGUgcmVkaXJlY3QgYWRkcmVzcy4iLCAiaWQiOiAicmVkaXJlY3QtdG8tcmVxdWVzdC11cmkiLCAibGFiZWwiOiAiQXBwZW5kIHJlcXVlc3QgVVJJIiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJjb250YWluZXJDbGFzcyI6ICJ6LTEiLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJBcHBlbmQgcmVxdWVzdCBVUkkiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJubyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiQXBwZW5kIHRoZSByZXF1ZXN0ZWQgVVJJIHRvIHRoZSByZWRpcmVjdCBhZGRyZXNzLiJ9XX0sICJSRURJUkVDVF9UT19TVEFUVVNfQ09ERSI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIzMDEiLCAiaGVscCI6ICJTdGF0dXMgY29kZSB0byBzZW5kIHRvIGNsaWVudCB3aGVuIHJlZGlyZWN0aW5nLiIsICJpZCI6ICJyZWRpcmVjdC10by1zdGF0dXMtY29kZSIsICJsYWJlbCI6ICJBcHBlbmQgcmVxdWVzdCBVUkkiLCAicmVnZXgiOiAiXigzMDF8MzAyKSQiLCAidHlwZSI6ICJzZWxlY3QiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0wIiwgInBhdHRlcm4iOiAiXigzMDF8MzAyKSQiLCAiaW5wVHlwZSI6ICJzZWxlY3QiLCAibmFtZSI6ICJBcHBlbmQgcmVxdWVzdCBVUkkiLCAidmFsdWVzIjogWyIzMDEiLCAiMzAyIl0sICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIjMwMSIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiU3RhdHVzIGNvZGUgdG8gc2VuZCB0byBjbGllbnQgd2hlbiByZWRpcmVjdGluZy4ifV19fSwgImNoZWNrc3VtIjogbnVsbCwgIm11bHRpcGxlcyI6IHt9fSwgeyJpZCI6ICJyZWRpcyIsICJzdHJlYW0iOiAieWVzIiwgIm5hbWUiOiAiUmVkaXMiLCAiZGVzY3JpcHRpb24iOiAiUmVkaXMgc2VydmVyIGNvbmZpZ3VyYXRpb24gd2hlbiB1c2luZyBCdW5rZXJXZWIgaW4gY2x1c3RlciBtb2RlLiIsICJ2ZXJzaW9uIjogIjEuMCIsICJ0eXBlIjogImNvcmUiLCAibWV0aG9kIjogIm1hbnVhbCIsICJwYWdlIjogdHJ1ZSwgInNldHRpbmdzIjogeyJVU0VfUkVESVMiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAibm8iLCAiaGVscCI6ICJBY3RpdmF0ZSBSZWRpcy4iLCAiaWQiOiAidXNlLXJlZGlzIiwgImxhYmVsIjogIkFjdGl2YXRlIFJlZGlzIiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJjb250YWluZXJDbGFzcyI6ICJ6LTE0IiwgInBhdHRlcm4iOiAiXih5ZXN8bm8pJCIsICJpbnBUeXBlIjogImNoZWNrYm94IiwgIm5hbWUiOiAiQWN0aXZhdGUgUmVkaXMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJubyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkFjdGl2YXRlIFJlZGlzLiJ9XX0sICJSRURJU19IT1NUIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIlJlZGlzIHNlcnZlciBJUCBvciBob3N0bmFtZS4iLCAiaWQiOiAicmVkaXMtaG9zdCIsICJsYWJlbCI6ICJSZWRpcyBzZXJ2ZXIiLCAicmVnZXgiOiAiXigoPyEtKVthLXpBLVowLTlcXC1dezEsNjN9KC5bYS16QS1aXXsyLH0pK3woXFxiMjVbMC01XXxcXGIyWzAtNF1cXGR8XFxiWzAxXT9cXGRcXGQ/KShcXC4oMjVbMC01XXwyWzAtNF1cXGR8WzAxXT9cXGRcXGQ/KSl7M318KChbMC05YS1mQS1GXXsxLDR9Oil7N31bMC05YS1mQS1GXXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw3fTp8KFswLTlhLWZBLUZdezEsNH06KXsxLDZ9OlswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDV9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDJ9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw0fSg6WzAtOWEtZkEtRl17MSw0fSl7MSwzfXwoWzAtOWEtZkEtRl17MSw0fTopezEsM30oOlswLTlhLWZBLUZdezEsNH0pezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDJ9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDV9fFswLTlhLWZBLUZdezEsNH06KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw2fSl8OigoOlswLTlhLWZBLUZdezEsNH0pezEsN318Oil8ZmU4MDooOlswLTlhLWZBLUZdWnswLDR9KXswLDR9JVswLTlhLXpBLVpdK3w6OihmZmZmKDowezEsNH0pPzopPygoMjVbMC01XXwoMlswLTRdfDE/XFxkKT9cXGQpXFwuKXszfSgyNVswLTVdfCgyWzAtNF18MT9cXGQpP1xcZCl8KFswLTlhLWZBLUZdezEsNH06KXsxLDR9OigoMjVbMC01XXwoMlswLTRdfDE/XFxkKT9cXGQpXFwuKXszfSgyNVswLTVdfCgyWzAtNF18MT9cXGQpP1xcZCkpKT8kIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTEzIiwgInBhdHRlcm4iOiAiXigoPyEtKVthLXpBLVowLTlcXC1dezEsNjN9KC5bYS16QS1aXXsyLH0pK3woXFxiMjVbMC01XXxcXGIyWzAtNF1cXGR8XFxiWzAxXT9cXGRcXGQ/KShcXC4oMjVbMC01XXwyWzAtNF1cXGR8WzAxXT9cXGRcXGQ/KSl7M318KChbMC05YS1mQS1GXXsxLDR9Oil7N31bMC05YS1mQS1GXXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw3fTp8KFswLTlhLWZBLUZdezEsNH06KXsxLDZ9OlswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDV9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDJ9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw0fSg6WzAtOWEtZkEtRl17MSw0fSl7MSwzfXwoWzAtOWEtZkEtRl17MSw0fTopezEsM30oOlswLTlhLWZBLUZdezEsNH0pezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDJ9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDV9fFswLTlhLWZBLUZdezEsNH06KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw2fSl8OigoOlswLTlhLWZBLUZdezEsNH0pezEsN318Oil8ZmU4MDooOlswLTlhLWZBLUZdWnswLDR9KXswLDR9JVswLTlhLXpBLVpdK3w6OihmZmZmKDowezEsNH0pPzopPygoMjVbMC01XXwoMlswLTRdfDE/XFxkKT9cXGQpXFwuKXszfSgyNVswLTVdfCgyWzAtNF18MT9cXGQpP1xcZCl8KFswLTlhLWZBLUZdezEsNH06KXsxLDR9OigoMjVbMC01XXwoMlswLTRdfDE/XFxkKT9cXGQpXFwuKXszfSgyNVswLTVdfCgyWzAtNF18MT9cXGQpP1xcZCkpKT8kIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJSZWRpcyBzZXJ2ZXIiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJSZWRpcyBzZXJ2ZXIgSVAgb3IgaG9zdG5hbWUuIn1dfSwgIlJFRElTX1BPUlQiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAiNjM3OSIsICJoZWxwIjogIlJlZGlzIHNlcnZlciBwb3J0LiIsICJpZCI6ICJyZWRpcy1wb3J0IiwgImxhYmVsIjogIlJlZGlzIHBvcnQiLCAicmVnZXgiOiAiXlswLTldKyQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMTIiLCAicGF0dGVybiI6ICJeWzAtOV0rJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiUmVkaXMgcG9ydCIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIjYzNzkiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJSZWRpcyBzZXJ2ZXIgcG9ydC4ifV19LCAiUkVESVNfREFUQUJBU0UiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAiMCIsICJoZWxwIjogIlJlZGlzIGRhdGFiYXNlIG51bWJlci4iLCAiaWQiOiAicmVkaXMtZGF0YWJhc2UiLCAibGFiZWwiOiAiUmVkaXMgZGF0YWJhc2UiLCAicmVnZXgiOiAiXlswLTldKyQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMTEiLCAicGF0dGVybiI6ICJeWzAtOV0rJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiUmVkaXMgZGF0YWJhc2UiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIwIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiUmVkaXMgZGF0YWJhc2UgbnVtYmVyLiJ9XX0sICJSRURJU19TU0wiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAibm8iLCAiaGVscCI6ICJVc2UgU1NML1RMUyBjb25uZWN0aW9uIHdpdGggUmVkaXMgc2VydmVyLiIsICJpZCI6ICJyZWRpcy1zc2wiLCAibGFiZWwiOiAiUmVkaXMgU1NML1RMUyIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xMCIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIlJlZGlzIFNTTC9UTFMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJubyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlVzZSBTU0wvVExTIGNvbm5lY3Rpb24gd2l0aCBSZWRpcyBzZXJ2ZXIuIn1dfSwgIlJFRElTX1NTTF9WRVJJRlkiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAibm8iLCAiaGVscCI6ICJWZXJpZnkgdGhlIGNlcnRpZmljYXRlIG9mIFJlZGlzIHNlcnZlci4iLCAiaWQiOiAicmVkaXMtc3NsLXZlcmlmeSIsICJsYWJlbCI6ICJSZWRpcyBTU0wvVExTIHZlcmlmeSIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei05IiwgInBhdHRlcm4iOiAiXih5ZXN8bm8pJCIsICJpbnBUeXBlIjogImNoZWNrYm94IiwgIm5hbWUiOiAiUmVkaXMgU1NML1RMUyB2ZXJpZnkiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJubyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlZlcmlmeSB0aGUgY2VydGlmaWNhdGUgb2YgUmVkaXMgc2VydmVyLiJ9XX0sICJSRURJU19USU1FT1VUIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIjEwMDAiLCAiaGVscCI6ICJSZWRpcyBzZXJ2ZXIgdGltZW91dCAoaW4gbXMpIGZvciBjb25uZWN0LCByZWFkIGFuZCB3cml0ZS4iLCAiaWQiOiAicmVkaXMtdGltZW91dCIsICJsYWJlbCI6ICJSZWRpcyB0aW1lb3V0IChtcykiLCAicmVnZXgiOiAiXlswLTldKyQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotOCIsICJwYXR0ZXJuIjogIl5bMC05XSskIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJSZWRpcyB0aW1lb3V0IChtcykiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIxMDAwIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiUmVkaXMgc2VydmVyIHRpbWVvdXQgKGluIG1zKSBmb3IgY29ubmVjdCwgcmVhZCBhbmQgd3JpdGUuIn1dfSwgIlJFRElTX1VTRVJOQU1FIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIlJlZGlzIHVzZXJuYW1lIHVzZWQgaW4gQVVUSCBjb21tYW5kLiIsICJpZCI6ICJyZWRpcy11c2VybmFtZSIsICJsYWJlbCI6ICJSZWRpcyB1c2VybmFtZSIsICJyZWdleCI6ICJeLiokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTciLCAicGF0dGVybiI6ICJeLiokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJSZWRpcyB1c2VybmFtZSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlJlZGlzIHVzZXJuYW1lIHVzZWQgaW4gQVVUSCBjb21tYW5kLiJ9XX0sICJSRURJU19QQVNTV09SRCI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJSZWRpcyBwYXNzd29yZCB1c2VkIGluIEFVVEggY29tbWFuZC4iLCAiaWQiOiAicmVkaXMtcGFzc3dvcmQiLCAibGFiZWwiOiAiUmVkaXMgcGFzc3dvcmQiLCAicmVnZXgiOiAiXi4qJCIsICJ0eXBlIjogInBhc3N3b3JkIiwgImNvbnRhaW5lckNsYXNzIjogInotNiIsICJwYXR0ZXJuIjogIl4uKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIlJlZGlzIHBhc3N3b3JkIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiUmVkaXMgcGFzc3dvcmQgdXNlZCBpbiBBVVRIIGNvbW1hbmQuIn1dfSwgIlJFRElTX1NFTlRJTkVMX0hPU1RTIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIlJlZGlzIHNlbnRpbmVsIGhvc3RzIHdpdGggZm9ybWF0IGhvc3Q6W3BvcnRdIHNlcGFyYXRlZCB3aXRoIHNwYWNlcy4iLCAiaWQiOiAicmVkaXMtc2VudGluZWwtaG9zdHMiLCAibGFiZWwiOiAiUmVkaXMgc2VudGluZWwgaG9zdHMiLCAicmVnZXgiOiAiXi4qJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei01IiwgInBhdHRlcm4iOiAiXi4qJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiUmVkaXMgc2VudGluZWwgaG9zdHMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJSZWRpcyBzZW50aW5lbCBob3N0cyB3aXRoIGZvcm1hdCBob3N0Oltwb3J0XSBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMuIn1dfSwgIlJFRElTX1NFTlRJTkVMX1VTRVJOQU1FIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIlJlZGlzIHNlbnRpbmVsIHVzZXJuYW1lLiIsICJpZCI6ICJyZWRpcy1zZW50aW5lbC11c2VybmFtZSIsICJsYWJlbCI6ICJSZWRpcyBzZW50aW5lbCB1c2VybmFtZSIsICJyZWdleCI6ICJeLiokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTQiLCAicGF0dGVybiI6ICJeLiokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJSZWRpcyBzZW50aW5lbCB1c2VybmFtZSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlJlZGlzIHNlbnRpbmVsIHVzZXJuYW1lLiJ9XX0sICJSRURJU19TRU5USU5FTF9QQVNTV09SRCI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJSZWRpcyBzZW50aW5lbCBwYXNzd29yZC4iLCAiaWQiOiAicmVkaXMtc2VudGluZWwtcGFzc3dvcmQiLCAibGFiZWwiOiAiUmVkaXMgc2VudGluZWwgcGFzc3dvcmQiLCAicmVnZXgiOiAiXi4qJCIsICJ0eXBlIjogInBhc3N3b3JkIiwgImNvbnRhaW5lckNsYXNzIjogInotMyIsICJwYXR0ZXJuIjogIl4uKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIlJlZGlzIHNlbnRpbmVsIHBhc3N3b3JkIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiUmVkaXMgc2VudGluZWwgcGFzc3dvcmQuIn1dfSwgIlJFRElTX1NFTlRJTkVMX01BU1RFUiI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJSZWRpcyBzZW50aW5lbCBtYXN0ZXIgbmFtZS4iLCAiaWQiOiAicmVkaXMtc2VudGluZWwtbWFzdGVyIiwgImxhYmVsIjogIlJlZGlzIHNlbnRpbmVsIG1hc3RlciIsICJyZWdleCI6ICJeLiokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTIiLCAicGF0dGVybiI6ICJeLiokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJSZWRpcyBzZW50aW5lbCBtYXN0ZXIiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJSZWRpcyBzZW50aW5lbCBtYXN0ZXIgbmFtZS4ifV19LCAiUkVESVNfS0VFUEFMSVZFX0lETEUiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAiMzAwMDAiLCAiaGVscCI6ICJNYXggaWRsZSB0aW1lIChpbiBtcykgYmVmb3JlIGNsb3NpbmcgcmVkaXMgY29ubmVjdGlvbiBpbiB0aGUgcG9vbC4iLCAiaWQiOiAicmVkaXMta2VlcGFsaXZlLWlkbGUiLCAibGFiZWwiOiAiUmVkaXMga2VlcGFsaXZlIGlkbGUgKG1zKSIsICJyZWdleCI6ICJeWzAtOV0rJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xIiwgInBhdHRlcm4iOiAiXlswLTldKyQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIlJlZGlzIGtlZXBhbGl2ZSBpZGxlIChtcykiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIzMDAwMCIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIk1heCBpZGxlIHRpbWUgKGluIG1zKSBiZWZvcmUgY2xvc2luZyByZWRpcyBjb25uZWN0aW9uIGluIHRoZSBwb29sLiJ9XX0sICJSRURJU19LRUVQQUxJVkVfUE9PTCI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICIxMCIsICJoZWxwIjogIk1heCBudW1iZXIgb2YgcmVkaXMgY29ubmVjdGlvbihzKSBrZXB0IGluIHRoZSBwb29sLiIsICJpZCI6ICJyZWRpcy1rZWVwYWxpdmUtcG9vbCIsICJsYWJlbCI6ICJSZWRpcyBrZWVwYWxpdmUgcG9vbCIsICJyZWdleCI6ICJeWzAtOV0rJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0wIiwgInBhdHRlcm4iOiAiXlswLTldKyQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIlJlZGlzIGtlZXBhbGl2ZSBwb29sIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiMTAiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJNYXggbnVtYmVyIG9mIHJlZGlzIGNvbm5lY3Rpb24ocykga2VwdCBpbiB0aGUgcG9vbC4ifV19fSwgImNoZWNrc3VtIjogbnVsbCwgIm11bHRpcGxlcyI6IHt9fSwgeyJpZCI6ICJyZXZlcnNlcHJveHkiLCAic3RyZWFtIjogInBhcnRpYWwiLCAibmFtZSI6ICJSZXZlcnNlIHByb3h5IiwgImRlc2NyaXB0aW9uIjogIk1hbmFnZSByZXZlcnNlIHByb3h5IGNvbmZpZ3VyYXRpb25zLiIsICJ2ZXJzaW9uIjogIjEuMCIsICJ0eXBlIjogImNvcmUiLCAibWV0aG9kIjogIm1hbnVhbCIsICJwYWdlIjogZmFsc2UsICJzZXR0aW5ncyI6IHsiVVNFX1JFVkVSU0VfUFJPWFkiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAibm8iLCAiaGVscCI6ICJBY3RpdmF0ZSByZXZlcnNlIHByb3h5IG1vZGUuIiwgImlkIjogInVzZS1yZXZlcnNlLXByb3h5IiwgImxhYmVsIjogIlVzZSByZXZlcnNlIHByb3h5IiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJjb250YWluZXJDbGFzcyI6ICJ6LTI2IiwgInBhdHRlcm4iOiAiXih5ZXN8bm8pJCIsICJpbnBUeXBlIjogImNoZWNrYm94IiwgIm5hbWUiOiAiVXNlIHJldmVyc2UgcHJveHkiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJubyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiQWN0aXZhdGUgcmV2ZXJzZSBwcm94eSBtb2RlLiJ9XX0sICJSRVZFUlNFX1BST1hZX0lOVEVSQ0VQVF9FUlJPUlMiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAieWVzIiwgImhlbHAiOiAiSW50ZXJjZXB0IGFuZCByZXdyaXRlIGVycm9ycy4iLCAiaWQiOiAicmV2ZXJzZS1wcm94eS1pbnRlcmNlcHQtZXJyb3JzIiwgImxhYmVsIjogIkludGVyY2VwdCBlcnJvcnMiLCAicmVnZXgiOiAiXih5ZXN8bm8pJCIsICJ0eXBlIjogImNoZWNrIiwgImNvbnRhaW5lckNsYXNzIjogInotMjUiLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJJbnRlcmNlcHQgZXJyb3JzIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAieWVzIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJJbnRlcmNlcHQgYW5kIHJld3JpdGUgZXJyb3JzLiJ9XX0sICJSRVZFUlNFX1BST1hZX0NVU1RPTV9IT1NUIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIk92ZXJyaWRlIEhvc3QgaGVhZGVyIHNlbnQgdG8gdXBzdHJlYW0gc2VydmVyLiIsICJpZCI6ICJyZXZlcnNlLXByb3h5LWN1c3RvbS1ob3N0IiwgImxhYmVsIjogIlJldmVyc2UgcHJveHkgY3VzdG9tIGhvc3QiLCAicmVnZXgiOiAiXi4qJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0yNCIsICJwYXR0ZXJuIjogIl4uKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIlJldmVyc2UgcHJveHkgY3VzdG9tIGhvc3QiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIk92ZXJyaWRlIEhvc3QgaGVhZGVyIHNlbnQgdG8gdXBzdHJlYW0gc2VydmVyLiJ9XX0sICJVU0VfUFJPWFlfQ0FDSEUiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAibm8iLCAiaGVscCI6ICJFbmFibGUgb3IgZGlzYWJsZSBjYWNoaW5nIG9mIHRoZSBwcm94aWVkIHJlc291cmNlcy4iLCAiaWQiOiAidXNlLXByb3h5LWNhY2hlIiwgImxhYmVsIjogIlJldmVyc2UgcHJveHkgY2FjaGUiLCAicmVnZXgiOiAiXih5ZXN8bm8pJCIsICJ0eXBlIjogImNoZWNrIiwgImNvbnRhaW5lckNsYXNzIjogInotOSIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIlJldmVyc2UgcHJveHkgY2FjaGUiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJubyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiRW5hYmxlIG9yIGRpc2FibGUgY2FjaGluZyBvZiB0aGUgcHJveGllZCByZXNvdXJjZXMuIn1dfSwgIlBST1hZX0NBQ0hFX1BBVEhfTEVWRUxTIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIjE6MiIsICJoZWxwIjogIkhpZXJhcmNoeSBsZXZlbHMgb2YgdGhlIGNhY2hlLiIsICJpZCI6ICJwcm94eS1jYWNoZS1wYXRoLWxldmVscyIsICJsYWJlbCI6ICJIaWVyYXJjaHkgbGV2ZWxzIiwgInJlZ2V4IjogIl4oOj9bMTJdKXsxLDN9JCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei04IiwgInBhdHRlcm4iOiAiXig6P1sxMl0pezEsM30kIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJIaWVyYXJjaHkgbGV2ZWxzIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiMToyIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiSGllcmFyY2h5IGxldmVscyBvZiB0aGUgY2FjaGUuIn1dfSwgIlBST1hZX0NBQ0hFX1BBVEhfWk9ORV9TSVpFIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIjEwbSIsICJoZWxwIjogIk1heGltdW0gc2l6ZSBvZiBjYWNoZWQgbWV0YWRhdGEgd2hlbiBjYWNoaW5nIHByb3hpZWQgcmVzb3VyY2VzLiIsICJpZCI6ICJwcm94eS1jYWNoZS1wYXRoLXpvbmUtc2l6ZSIsICJsYWJlbCI6ICJSZXZlcnNlIHByb3h5IGNhY2hlIHpvbmUgc2l6ZSIsICJyZWdleCI6ICJeXFxkK1trS21NZ0ddPyQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotNyIsICJwYXR0ZXJuIjogIl5cXGQrW2tLbU1nR10/JCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiUmV2ZXJzZSBwcm94eSBjYWNoZSB6b25lIHNpemUiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIxMG0iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJNYXhpbXVtIHNpemUgb2YgY2FjaGVkIG1ldGFkYXRhIHdoZW4gY2FjaGluZyBwcm94aWVkIHJlc291cmNlcy4ifV19LCAiUFJPWFlfQ0FDSEVfUEFUSF9QQVJBTVMiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAibWF4X3NpemU9MTAwbSIsICJoZWxwIjogIkFkZGl0aW9uYWwgcGFyYW1ldGVycyB0byBhZGQgdG8gdGhlIHByb3h5X2NhY2hlIGRpcmVjdGl2ZS4iLCAiaWQiOiAicHJveHktY2FjaGUtcGF0aC1wYXJhbXMiLCAibGFiZWwiOiAiUmV2ZXJzZSBwcm94eSBjYWNoZSBwYXJhbXMiLCAicmVnZXgiOiAiXi4qJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei02IiwgInBhdHRlcm4iOiAiXi4qJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiUmV2ZXJzZSBwcm94eSBjYWNoZSBwYXJhbXMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJtYXhfc2l6ZT0xMDBtIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiQWRkaXRpb25hbCBwYXJhbWV0ZXJzIHRvIGFkZCB0byB0aGUgcHJveHlfY2FjaGUgZGlyZWN0aXZlLiJ9XX0sICJQUk9YWV9DQUNIRV9NRVRIT0RTIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIkdFVCBIRUFEIiwgImhlbHAiOiAiSFRUUCBtZXRob2RzIHRoYXQgc2hvdWxkIHRyaWdnZXIgYSBjYWNoZSBvcGVyYXRpb24uIiwgImlkIjogInByb3h5LWNhY2hlLW1ldGhvZHMiLCAibGFiZWwiOiAiUmV2ZXJzZSBwcm94eSBjYWNoZSBtZXRob2RzIiwgInJlZ2V4IjogIl4oPyEgKSggPyhHRVR8SEVBRHxQT1NUfFBVVHxERUxFVEV8Q09OTkVDVHxPUFRJT05TfFRSQUNFfFBBVENIKSg/IS4qXFwyKSkrJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei01IiwgInBhdHRlcm4iOiAiXig/ISApKCA/KEdFVHxIRUFEfFBPU1R8UFVUfERFTEVURXxDT05ORUNUfE9QVElPTlN8VFJBQ0V8UEFUQ0gpKD8hLipcXDIpKSskIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJSZXZlcnNlIHByb3h5IGNhY2hlIG1ldGhvZHMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJHRVQgSEVBRCIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiSFRUUCBtZXRob2RzIHRoYXQgc2hvdWxkIHRyaWdnZXIgYSBjYWNoZSBvcGVyYXRpb24uIn1dfSwgIlBST1hZX0NBQ0hFX01JTl9VU0VTIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIjIiLCAiaGVscCI6ICJUaGUgbWluaW11bSBudW1iZXIgb2YgcmVxdWVzdHMgYmVmb3JlIGEgcmVzcG9uc2UgaXMgY2FjaGVkLiIsICJpZCI6ICJwcm94eS1jYWNoZS1taW4tdXNlcyIsICJsYWJlbCI6ICJSZXZlcnNlIHByb3h5IGNhY2hlIG1pbmltdW0gdXNlcyIsICJyZWdleCI6ICJeWzEtOV1cXGQqJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei00IiwgInBhdHRlcm4iOiAiXlsxLTldXFxkKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIlJldmVyc2UgcHJveHkgY2FjaGUgbWluaW11bSB1c2VzIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiMiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiVGhlIG1pbmltdW0gbnVtYmVyIG9mIHJlcXVlc3RzIGJlZm9yZSBhIHJlc3BvbnNlIGlzIGNhY2hlZC4ifV19LCAiUFJPWFlfQ0FDSEVfS0VZIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIiRzY2hlbWUkaG9zdCRyZXF1ZXN0X3VyaSIsICJoZWxwIjogIlRoZSBrZXkgdXNlZCB0byB1bmlxdWVseSBpZGVudGlmeSBhIGNhY2hlZCByZXNwb25zZS4iLCAiaWQiOiAicHJveHktY2FjaGUta2V5IiwgImxhYmVsIjogIlJldmVyc2UgcHJveHkgY2FjaGUga2V5IiwgInJlZ2V4IjogIl4oPyEgKSggPyhcXCRbYS16X10rKSg/IS4qXFwyKSkrJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0zIiwgInBhdHRlcm4iOiAiXig/ISApKCA/KFxcJFthLXpfXSspKD8hLipcXDIpKSskIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJSZXZlcnNlIHByb3h5IGNhY2hlIGtleSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiRzY2hlbWUkaG9zdCRyZXF1ZXN0X3VyaSIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiVGhlIGtleSB1c2VkIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IGEgY2FjaGVkIHJlc3BvbnNlLiJ9XX0sICJQUk9YWV9DQUNIRV9WQUxJRCI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIyMDA9MjRoIDMwMT0xaCAzMDI9MjRoIiwgImhlbHAiOiAiRGVmaW5lIHRoZSBjYWNoaW5nIHRpbWUgZGVwZW5kaW5nIG9uIHRoZSBIVFRQIHN0YXR1cyBjb2RlIChsaXN0IG9mIHN0YXR1cz10aW1lKSwgc2VwYXJhdGVkIHdpdGggc3BhY2VzLiIsICJpZCI6ICJwcm94eS1jYWNoZS12YWxpZCIsICJsYWJlbCI6ICJSZXZlcnNlIHByb3h5IGNhY2hlIHZhbGlkIiwgInJlZ2V4IjogIl4oPyEgKSggPyhbMS01XVxcZHsyfSkoPyEuKlxcMj0pPVxcZCsobXM/fFtzaGR3TXldKSkqJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0yIiwgInBhdHRlcm4iOiAiXig/ISApKCA/KFsxLTVdXFxkezJ9KSg/IS4qXFwyPSk9XFxkKyhtcz98W3NoZHdNeV0pKSokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJSZXZlcnNlIHByb3h5IGNhY2hlIHZhbGlkIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiMjAwPTI0aCAzMDE9MWggMzAyPTI0aCIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiRGVmaW5lIHRoZSBjYWNoaW5nIHRpbWUgZGVwZW5kaW5nIG9uIHRoZSBIVFRQIHN0YXR1cyBjb2RlIChsaXN0IG9mIHN0YXR1cz10aW1lKSwgc2VwYXJhdGVkIHdpdGggc3BhY2VzLiJ9XX0sICJQUk9YWV9OT19DQUNIRSI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIkaHR0cF9wcmFnbWEgJGh0dHBfYXV0aG9yaXphdGlvbiIsICJoZWxwIjogIkNvbmRpdGlvbnMgdG8gZGlzYWJsZSBjYWNoaW5nIG9mIHJlc3BvbnNlcy4iLCAiaWQiOiAicHJveHktbm8tY2FjaGUiLCAibGFiZWwiOiAiUmV2ZXJzZSBwcm94eSBubyBjYWNoZSIsICJyZWdleCI6ICJeLiokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTEiLCAicGF0dGVybiI6ICJeLiokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJSZXZlcnNlIHByb3h5IG5vIGNhY2hlIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiJGh0dHBfcHJhZ21hICRodHRwX2F1dGhvcml6YXRpb24iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkNvbmRpdGlvbnMgdG8gZGlzYWJsZSBjYWNoaW5nIG9mIHJlc3BvbnNlcy4ifV19LCAiUFJPWFlfQ0FDSEVfQllQQVNTIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIjAiLCAiaGVscCI6ICJDb25kaXRpb25zIHRvIGJ5cGFzcyBjYWNoaW5nIG9mIHJlc3BvbnNlcy4iLCAiaWQiOiAicHJveHktY2FjaGUtYnlwYXNzIiwgImxhYmVsIjogIlJldmVyc2UgcHJveHkgYnlwYXNzIiwgInJlZ2V4IjogIl4uKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMCIsICJwYXR0ZXJuIjogIl4uKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIlJldmVyc2UgcHJveHkgYnlwYXNzIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiMCIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiQ29uZGl0aW9ucyB0byBieXBhc3MgY2FjaGluZyBvZiByZXNwb25zZXMuIn1dfX0sICJjaGVja3N1bSI6IG51bGwsICJtdWx0aXBsZXMiOiB7InJldmVyc2UtcHJveHkiOiB7IlJFVkVSU0VfUFJPWFlfSE9TVCI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJGdWxsIFVSTCBvZiB0aGUgcHJveGllZCByZXNvdXJjZSAocHJveHlfcGFzcykuIiwgImlkIjogInJldmVyc2UtcHJveHktaG9zdCIsICJsYWJlbCI6ICJSZXZlcnNlIHByb3h5IGhvc3QiLCAicmVnZXgiOiAiXi4qJCIsICJ0eXBlIjogInRleHQiLCAibXVsdGlwbGUiOiAicmV2ZXJzZS1wcm94eSIsICJjb250YWluZXJDbGFzcyI6ICJ6LTIzIiwgInBhdHRlcm4iOiAiXi4qJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiUmV2ZXJzZSBwcm94eSBob3N0IiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJGdWxsIFVSTCBvZiB0aGUgcHJveGllZCByZXNvdXJjZSAocHJveHlfcGFzcykuIn1dfSwgIlJFVkVSU0VfUFJPWFlfVVJMIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIi8iLCAiaGVscCI6ICJMb2NhdGlvbiBVUkwgdGhhdCB3aWxsIGJlIHByb3hpZWQuIiwgImlkIjogInJldmVyc2UtcHJveHktdXJsIiwgImxhYmVsIjogIlJldmVyc2UgcHJveHkgdXJsIiwgInJlZ2V4IjogIl4uKiQiLCAidHlwZSI6ICJ0ZXh0IiwgIm11bHRpcGxlIjogInJldmVyc2UtcHJveHkiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0yMiIsICJwYXR0ZXJuIjogIl4uKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIlJldmVyc2UgcHJveHkgdXJsIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiLyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTG9jYXRpb24gVVJMIHRoYXQgd2lsbCBiZSBwcm94aWVkLiJ9XX0sICJSRVZFUlNFX1BST1hZX1dTIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIm5vIiwgImhlbHAiOiAiRW5hYmxlIHdlYnNvY2tldCBvbiB0aGUgcHJveGllZCByZXNvdXJjZS4iLCAiaWQiOiAicmV2ZXJzZS1wcm94eS13cyIsICJsYWJlbCI6ICJSZXZlcnNlIHByb3h5IFdTIiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJtdWx0aXBsZSI6ICJyZXZlcnNlLXByb3h5IiwgImNvbnRhaW5lckNsYXNzIjogInotMjEiLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJSZXZlcnNlIHByb3h5IFdTIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAibm8iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkVuYWJsZSB3ZWJzb2NrZXQgb24gdGhlIHByb3hpZWQgcmVzb3VyY2UuIn1dfSwgIlJFVkVSU0VfUFJPWFlfSEVBREVSUyI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJMaXN0IG9mIEhUVFAgaGVhZGVycyB0byBzZW5kIHRvIHByb3hpZWQgcmVzb3VyY2Ugc2VwYXJhdGVkIHdpdGggc2VtaWNvbG9ucyAodmFsdWVzIGZvciBwcm94eV9zZXRfaGVhZGVyIGRpcmVjdGl2ZSkuIiwgImlkIjogInJldmVyc2UtcHJveHktaGVhZGVycyIsICJsYWJlbCI6ICJSZXZlcnNlIHByb3h5IGhlYWRlcnMiLCAicmVnZXgiOiAiXig/IVs7IF0pKDs/ID8oW1xcd1xcLV0rKSg/IS4qXFwyICkgW147XSspKiQiLCAidHlwZSI6ICJ0ZXh0IiwgIm11bHRpcGxlIjogInJldmVyc2UtcHJveHkiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0yMCIsICJwYXR0ZXJuIjogIl4oPyFbOyBdKSg7PyA/KFtcXHdcXC1dKykoPyEuKlxcMiApIFteO10rKSokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJSZXZlcnNlIHByb3h5IGhlYWRlcnMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkxpc3Qgb2YgSFRUUCBoZWFkZXJzIHRvIHNlbmQgdG8gcHJveGllZCByZXNvdXJjZSBzZXBhcmF0ZWQgd2l0aCBzZW1pY29sb25zICh2YWx1ZXMgZm9yIHByb3h5X3NldF9oZWFkZXIgZGlyZWN0aXZlKS4ifV19LCAiUkVWRVJTRV9QUk9YWV9IRUFERVJTX0NMSUVOVCI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJMaXN0IG9mIEhUVFAgaGVhZGVycyB0byBzZW5kIHRvIGNsaWVudCBzZXBhcmF0ZWQgd2l0aCBzZW1pY29sb25zICh2YWx1ZXMgZm9yIGFkZF9oZWFkZXIgZGlyZWN0aXZlKS4iLCAiaWQiOiAicmV2ZXJzZS1wcm94eS1oZWFkZXJzLWNsaWVudCIsICJsYWJlbCI6ICJSZXZlcnNlIHByb3h5IGhlYWRlcnMtY2xpZW50IiwgInJlZ2V4IjogIl4oPyFbOyBdKSg7PyA/KFtcXHdcXC1dKykoPyEuKlxcMiApIFteO10rKSokIiwgInR5cGUiOiAidGV4dCIsICJtdWx0aXBsZSI6ICJyZXZlcnNlLXByb3h5IiwgImNvbnRhaW5lckNsYXNzIjogInotMTkiLCAicGF0dGVybiI6ICJeKD8hWzsgXSkoOz8gPyhbXFx3XFwtXSspKD8hLipcXDIgKSBbXjtdKykqJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiUmV2ZXJzZSBwcm94eSBoZWFkZXJzLWNsaWVudCIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTGlzdCBvZiBIVFRQIGhlYWRlcnMgdG8gc2VuZCB0byBjbGllbnQgc2VwYXJhdGVkIHdpdGggc2VtaWNvbG9ucyAodmFsdWVzIGZvciBhZGRfaGVhZGVyIGRpcmVjdGl2ZSkuIn1dfSwgIlJFVkVSU0VfUFJPWFlfQlVGRkVSSU5HIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogInllcyIsICJoZWxwIjogIkVuYWJsZSBvciBkaXNhYmxlIGJ1ZmZlcmluZyBvZiByZXNwb25zZXMgZnJvbSBwcm94aWVkIHJlc291cmNlLiIsICJpZCI6ICJyZXZlcnNlLXByb3h5LWJ1ZmZlcmluZyIsICJsYWJlbCI6ICJSZXZlcnNlIHByb3h5IGJ1ZmZlcmluZyIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAibXVsdGlwbGUiOiAicmV2ZXJzZS1wcm94eSIsICJjb250YWluZXJDbGFzcyI6ICJ6LTE4IiwgInBhdHRlcm4iOiAiXih5ZXN8bm8pJCIsICJpbnBUeXBlIjogImNoZWNrYm94IiwgIm5hbWUiOiAiUmV2ZXJzZSBwcm94eSBidWZmZXJpbmciLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJ5ZXMiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkVuYWJsZSBvciBkaXNhYmxlIGJ1ZmZlcmluZyBvZiByZXNwb25zZXMgZnJvbSBwcm94aWVkIHJlc291cmNlLiJ9XX0sICJSRVZFUlNFX1BST1hZX0tFRVBBTElWRSI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJubyIsICJoZWxwIjogIkVuYWJsZSBvciBkaXNhYmxlIGtlZXBhbGl2ZSBjb25uZWN0aW9ucyB3aXRoIHRoZSBwcm94aWVkIHJlc291cmNlLiIsICJpZCI6ICJyZXZlcnNlLXByb3h5LWtlZXBhbGl2ZSIsICJsYWJlbCI6ICJSZXZlcnNlIHByb3h5IGtlZXBhbGl2ZSIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAibXVsdGlwbGUiOiAicmV2ZXJzZS1wcm94eSIsICJjb250YWluZXJDbGFzcyI6ICJ6LTE3IiwgInBhdHRlcm4iOiAiXih5ZXN8bm8pJCIsICJpbnBUeXBlIjogImNoZWNrYm94IiwgIm5hbWUiOiAiUmV2ZXJzZSBwcm94eSBrZWVwYWxpdmUiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJubyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiRW5hYmxlIG9yIGRpc2FibGUga2VlcGFsaXZlIGNvbm5lY3Rpb25zIHdpdGggdGhlIHByb3hpZWQgcmVzb3VyY2UuIn1dfSwgIlJFVkVSU0VfUFJPWFlfQVVUSF9SRVFVRVNUIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIkVuYWJsZSBhdXRoZW50aWNhdGlvbiB1c2luZyBhbiBleHRlcm5hbCBwcm92aWRlciAodmFsdWUgb2YgYXV0aF9yZXF1ZXN0IGRpcmVjdGl2ZSkuIiwgImlkIjogInJldmVyc2UtcHJveHktYXV0aC1yZXF1ZXN0IiwgImxhYmVsIjogIlJldmVyc2UgcHJveHkgYXV0aCByZXF1ZXN0IiwgInJlZ2V4IjogIl4oXFwvW1xcd1xcXS5+OlxcLz8jXFxbQCEkXFwmJ1xcKFxcKSorLDs9XFwtXSp8b2ZmKT8kIiwgInR5cGUiOiAidGV4dCIsICJtdWx0aXBsZSI6ICJyZXZlcnNlLXByb3h5IiwgImNvbnRhaW5lckNsYXNzIjogInotMTYiLCAicGF0dGVybiI6ICJeKFxcL1tcXHdcXF0ufjpcXC8/I1xcW0AhJFxcJidcXChcXCkqKyw7PVxcLV0qfG9mZik/JCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiUmV2ZXJzZSBwcm94eSBhdXRoIHJlcXVlc3QiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkVuYWJsZSBhdXRoZW50aWNhdGlvbiB1c2luZyBhbiBleHRlcm5hbCBwcm92aWRlciAodmFsdWUgb2YgYXV0aF9yZXF1ZXN0IGRpcmVjdGl2ZSkuIn1dfSwgIlJFVkVSU0VfUFJPWFlfQVVUSF9SRVFVRVNUX1NJR05JTl9VUkwiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiUmVkaXJlY3QgY2xpZW50cyB0byBzaWduLWluIFVSTCB3aGVuIHVzaW5nIFJFVkVSU0VfUFJPWFlfQVVUSF9SRVFVRVNUICh1c2VkIHdoZW4gYXV0aF9yZXF1ZXN0IGNhbGwgcmV0dXJuZWQgNDAxKS4iLCAiaWQiOiAicmV2ZXJzZS1wcm94eS1hdXRoLXJlcXVlc3Qtc2lnbmluLXVybCIsICJsYWJlbCI6ICJBdXRoIHJlcXVlc3Qgc2lnbmluIFVSTCIsICJyZWdleCI6ICJeKGh0dHBzPzpcXC9cXC9bXFwtXFx3QDolLit+Iz1dK1tcXC1cXHdcXChcXCkhQDolKy5+Iz8mXFwvPSRdKik/JCIsICJ0eXBlIjogInRleHQiLCAibXVsdGlwbGUiOiAicmV2ZXJzZS1wcm94eSIsICJjb250YWluZXJDbGFzcyI6ICJ6LTE1IiwgInBhdHRlcm4iOiAiXihodHRwcz86XFwvXFwvW1xcLVxcd0A6JS4rfiM9XStbXFwtXFx3XFwoXFwpIUA6JSsufiM/JlxcLz0kXSopPyQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkF1dGggcmVxdWVzdCBzaWduaW4gVVJMIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJSZWRpcmVjdCBjbGllbnRzIHRvIHNpZ24taW4gVVJMIHdoZW4gdXNpbmcgUkVWRVJTRV9QUk9YWV9BVVRIX1JFUVVFU1QgKHVzZWQgd2hlbiBhdXRoX3JlcXVlc3QgY2FsbCByZXR1cm5lZCA0MDEpLiJ9XX0sICJSRVZFUlNFX1BST1hZX0FVVEhfUkVRVUVTVF9TRVQiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiTGlzdCBvZiB2YXJpYWJsZXMgdG8gc2V0IGZyb20gdGhlIGF1dGhlbnRpY2F0aW9uIHByb3ZpZGVyLCBzZXBhcmF0ZWQgd2l0aCBzZW1pY29sb25zICh2YWx1ZXMgb2YgYXV0aF9yZXF1ZXN0X3NldCBkaXJlY3RpdmVzKS4iLCAiaWQiOiAicmV2ZXJzZS1wcm94eS1hdXRoLXJlcXVlc3Qtc2V0IiwgImxhYmVsIjogIlJldmVyc2UgcHJveHkgYXV0aCByZXF1ZXN0IHNldCIsICJyZWdleCI6ICJeKD8hIDspKDs/ID8oXFwkW2Etel9cXC1dKykoPyEuKlxcMiApIFteO10rKSokIiwgInR5cGUiOiAidGV4dCIsICJtdWx0aXBsZSI6ICJyZXZlcnNlLXByb3h5IiwgImNvbnRhaW5lckNsYXNzIjogInotMTQiLCAicGF0dGVybiI6ICJeKD8hIDspKDs/ID8oXFwkW2Etel9cXC1dKykoPyEuKlxcMiApIFteO10rKSokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJSZXZlcnNlIHByb3h5IGF1dGggcmVxdWVzdCBzZXQiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkxpc3Qgb2YgdmFyaWFibGVzIHRvIHNldCBmcm9tIHRoZSBhdXRoZW50aWNhdGlvbiBwcm92aWRlciwgc2VwYXJhdGVkIHdpdGggc2VtaWNvbG9ucyAodmFsdWVzIG9mIGF1dGhfcmVxdWVzdF9zZXQgZGlyZWN0aXZlcykuIn1dfSwgIlJFVkVSU0VfUFJPWFlfQ09OTkVDVF9USU1FT1VUIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIjYwcyIsICJoZWxwIjogIlRpbWVvdXQgd2hlbiBjb25uZWN0aW5nIHRvIHRoZSBwcm94aWVkIHJlc291cmNlLiIsICJpZCI6ICJyZXZlcnNlLXByb3h5LWNvbm5lY3QtdGltZW91dCIsICJsYWJlbCI6ICJSZXZlcnNlIHByb3h5IGNvbm5lY3QgdGltZW91dCIsICJyZWdleCI6ICJeXFxkKyhtcz98W3NoZHdNeV0pJCIsICJ0eXBlIjogInRleHQiLCAibXVsdGlwbGUiOiAicmV2ZXJzZS1wcm94eSIsICJjb250YWluZXJDbGFzcyI6ICJ6LTEzIiwgInBhdHRlcm4iOiAiXlxcZCsobXM/fFtzaGR3TXldKSQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIlJldmVyc2UgcHJveHkgY29ubmVjdCB0aW1lb3V0IiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiNjBzIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJUaW1lb3V0IHdoZW4gY29ubmVjdGluZyB0byB0aGUgcHJveGllZCByZXNvdXJjZS4ifV19LCAiUkVWRVJTRV9QUk9YWV9SRUFEX1RJTUVPVVQiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiNjBzIiwgImhlbHAiOiAiVGltZW91dCB3aGVuIHJlYWRpbmcgZnJvbSB0aGUgcHJveGllZCByZXNvdXJjZS4iLCAiaWQiOiAicmV2ZXJzZS1wcm94eS1yZWFkLXRpbWVvdXQiLCAibGFiZWwiOiAiUmV2ZXJzZSBwcm94eSByZWFkIHRpbWVvdXQiLCAicmVnZXgiOiAiXlxcZCsobXM/fFtzaGR3TXldKSQiLCAidHlwZSI6ICJ0ZXh0IiwgIm11bHRpcGxlIjogInJldmVyc2UtcHJveHkiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xMiIsICJwYXR0ZXJuIjogIl5cXGQrKG1zP3xbc2hkd015XSkkIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJSZXZlcnNlIHByb3h5IHJlYWQgdGltZW91dCIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIjYwcyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiVGltZW91dCB3aGVuIHJlYWRpbmcgZnJvbSB0aGUgcHJveGllZCByZXNvdXJjZS4ifV19LCAiUkVWRVJTRV9QUk9YWV9TRU5EX1RJTUVPVVQiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiNjBzIiwgImhlbHAiOiAiVGltZW91dCB3aGVuIHNlbmRpbmcgdG8gdGhlIHByb3hpZWQgcmVzb3VyY2UuIiwgImlkIjogInJldmVyc2UtcHJveHktc2VuZC10aW1lb3V0IiwgImxhYmVsIjogIlJldmVyc2UgcHJveHkgc2VuZCB0aW1lb3V0IiwgInJlZ2V4IjogIl5cXGQrKG1zP3xbc2hkd015XSkkIiwgInR5cGUiOiAidGV4dCIsICJtdWx0aXBsZSI6ICJyZXZlcnNlLXByb3h5IiwgImNvbnRhaW5lckNsYXNzIjogInotMTEiLCAicGF0dGVybiI6ICJeXFxkKyhtcz98W3NoZHdNeV0pJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiUmV2ZXJzZSBwcm94eSBzZW5kIHRpbWVvdXQiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICI2MHMiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlRpbWVvdXQgd2hlbiBzZW5kaW5nIHRvIHRoZSBwcm94aWVkIHJlc291cmNlLiJ9XX0sICJSRVZFUlNFX1BST1hZX0lOQ0xVREVTIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIkFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiB0byBpbmNsdWRlIGluIHRoZSBsb2NhdGlvbiBibG9jaywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLiIsICJpZCI6ICJyZXZlcnNlLXByb3h5LWluY2x1ZGVzIiwgImxhYmVsIjogIlJldmVyc2UgcHJveHkgaW5jbHVkZXMiLCAicmVnZXgiOiAiXig/ISApKCA/KFxcdyspKD8hLipcXGJcXDJcXGIpKSokIiwgInR5cGUiOiAidGV4dCIsICJtdWx0aXBsZSI6ICJyZXZlcnNlLXByb3h5IiwgImNvbnRhaW5lckNsYXNzIjogInotMTAiLCAicGF0dGVybiI6ICJeKD8hICkoID8oXFx3KykoPyEuKlxcYlxcMlxcYikpKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIlJldmVyc2UgcHJveHkgaW5jbHVkZXMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiB0byBpbmNsdWRlIGluIHRoZSBsb2NhdGlvbiBibG9jaywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLiJ9XX19fX0sIHsiaWQiOiAicmV2ZXJzZXNjYW4iLCAic3RyZWFtIjogInllcyIsICJuYW1lIjogIlJldmVyc2Ugc2NhbiIsICJkZXNjcmlwdGlvbiI6ICJTY2FuIGNsaWVudHMgcG9ydHMgdG8gZGV0ZWN0IHByb3hpZXMgb3Igc2VydmVycy4iLCAidmVyc2lvbiI6ICIxLjAiLCAidHlwZSI6ICJjb3JlIiwgIm1ldGhvZCI6ICJtYW51YWwiLCAicGFnZSI6IHRydWUsICJzZXR0aW5ncyI6IHsiVVNFX1JFVkVSU0VfU0NBTiI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJubyIsICJoZWxwIjogIkVuYWJsZSBzY2FubmluZyBvZiBjbGllbnRzIHBvcnRzIGFuZCBkZW55IGFjY2VzcyBpZiBvbmUgaXMgb3BlbmVkLiIsICJpZCI6ICJ1c2UtcmV2ZXJzZS1zY2FuIiwgImxhYmVsIjogIlJldmVyc2Ugc2NhbiIsICJyZWdleCI6ICJeKG5vfHllcykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei0yIiwgInBhdHRlcm4iOiAiXihub3x5ZXMpJCIsICJpbnBUeXBlIjogImNoZWNrYm94IiwgIm5hbWUiOiAiUmV2ZXJzZSBzY2FuIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAibm8iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkVuYWJsZSBzY2FubmluZyBvZiBjbGllbnRzIHBvcnRzIGFuZCBkZW55IGFjY2VzcyBpZiBvbmUgaXMgb3BlbmVkLiJ9XX0sICJSRVZFUlNFX1NDQU5fUE9SVFMiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiMjIgODAgNDQzIDMxMjggODAwMCA4MDgwIiwgImhlbHAiOiAiTGlzdCBvZiBwb3J0IHRvIHNjYW4gd2hlbiB1c2luZyByZXZlcnNlIHNjYW4gZmVhdHVyZS4iLCAiaWQiOiAicmV2ZXJzZS1zY2FuLXBvcnRzIiwgImxhYmVsIjogIlJldmVyc2Ugc2NhbiBwb3J0cyIsICJyZWdleCI6ICJeLiokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTEiLCAicGF0dGVybiI6ICJeLiokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJSZXZlcnNlIHNjYW4gcG9ydHMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIyMiA4MCA0NDMgMzEyOCA4MDAwIDgwODAiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkxpc3Qgb2YgcG9ydCB0byBzY2FuIHdoZW4gdXNpbmcgcmV2ZXJzZSBzY2FuIGZlYXR1cmUuIn1dfSwgIlJFVkVSU0VfU0NBTl9USU1FT1VUIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIjUwMCIsICJoZWxwIjogIlNwZWNpZnkgdGhlIG1heGltdW0gdGltZW91dCAoaW4gbXMpIHdoZW4gc2Nhbm5pbmcgYSBwb3J0LiIsICJpZCI6ICJyZXZlcnNlLXNjYW4tdGltZW91dCIsICJsYWJlbCI6ICJSZXZlcnNlIHNjYW4gdGltZW91dCIsICJyZWdleCI6ICJeLiokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTAiLCAicGF0dGVybiI6ICJeLiokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJSZXZlcnNlIHNjYW4gdGltZW91dCIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIjUwMCIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiU3BlY2lmeSB0aGUgbWF4aW11bSB0aW1lb3V0IChpbiBtcykgd2hlbiBzY2FubmluZyBhIHBvcnQuIn1dfX0sICJjaGVja3N1bSI6IG51bGwsICJtdWx0aXBsZXMiOiB7fX0sIHsiaWQiOiAic2VsZnNpZ25lZCIsICJzdHJlYW0iOiAieWVzIiwgIm5hbWUiOiAiU2VsZi1zaWduZWQgY2VydGlmaWNhdGUiLCAiZGVzY3JpcHRpb24iOiAiR2VuZXJhdGUgc2VsZi1zaWduZWQgY2VydGlmaWNhdGUuIiwgInZlcnNpb24iOiAiMS4wIiwgInR5cGUiOiAiY29yZSIsICJtZXRob2QiOiAibWFudWFsIiwgInBhZ2UiOiBmYWxzZSwgInNldHRpbmdzIjogeyJHRU5FUkFURV9TRUxGX1NJR05FRF9TU0wiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAibm8iLCAiaGVscCI6ICJHZW5lcmF0ZSBhbmQgdXNlIHNlbGYtc2lnbmVkIGNlcnRpZmljYXRlLiIsICJpZCI6ICJnZW5lcmF0ZS1zZWxmLXNpZ25lZC1zc2wiLCAibGFiZWwiOiAiQWN0aXZhdGUgc2VsZi1zaWduZWQgY2VydGlmaWNhdGUiLCAicmVnZXgiOiAiXih5ZXN8bm8pJCIsICJ0eXBlIjogImNoZWNrIiwgImNvbnRhaW5lckNsYXNzIjogInotMiIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIkFjdGl2YXRlIHNlbGYtc2lnbmVkIGNlcnRpZmljYXRlIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAibm8iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkdlbmVyYXRlIGFuZCB1c2Ugc2VsZi1zaWduZWQgY2VydGlmaWNhdGUuIn1dfSwgIlNFTEZfU0lHTkVEX1NTTF9FWFBJUlkiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiMzY1IiwgImhlbHAiOiAiU2VsZi1zaWduZWQgY2VydGlmaWNhdGUgZXhwaXJ5IGluIGRheXMuIiwgImlkIjogInNlbGYtc2lnbmVkLXNzbC1leHBpcnkiLCAibGFiZWwiOiAiQ2VydGlmaWNhdGUgZXhwaXJ5IiwgInJlZ2V4IjogIl5cXGQrJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xIiwgInBhdHRlcm4iOiAiXlxcZCskIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJDZXJ0aWZpY2F0ZSBleHBpcnkiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIzNjUiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlNlbGYtc2lnbmVkIGNlcnRpZmljYXRlIGV4cGlyeSBpbiBkYXlzLiJ9XX0sICJTRUxGX1NJR05FRF9TU0xfU1VCSiI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIvQ049d3d3LmV4YW1wbGUuY29tLyIsICJoZWxwIjogIlNlbGYtc2lnbmVkIGNlcnRpZmljYXRlIHN1YmplY3QuIiwgImlkIjogInNlbGYtc2lnbmVkLXNzbC1zdWJqIiwgImxhYmVsIjogIkNlcnRpZmljYXRlIHN1YmplY3QiLCAicmVnZXgiOiAiXi9DTj1bXixdKyQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMCIsICJwYXR0ZXJuIjogIl4vQ049W14sXSskIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJDZXJ0aWZpY2F0ZSBzdWJqZWN0IiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiL0NOPXd3dy5leGFtcGxlLmNvbS8iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlNlbGYtc2lnbmVkIGNlcnRpZmljYXRlIHN1YmplY3QuIn1dfX0sICJjaGVja3N1bSI6IG51bGwsICJtdWx0aXBsZXMiOiB7fX0sIHsiaWQiOiAic2Vzc2lvbnMiLCAic3RyZWFtIjogInllcyIsICJuYW1lIjogIlNlc3Npb25zIiwgImRlc2NyaXB0aW9uIjogIk1hbmFnZW1lbnQgb2Ygc2Vzc2lvbiB1c2VkIGJ5IG90aGVyIHBsdWdpbnMuIiwgInZlcnNpb24iOiAiMS4wIiwgInR5cGUiOiAiY29yZSIsICJtZXRob2QiOiAibWFudWFsIiwgInBhZ2UiOiBmYWxzZSwgInNldHRpbmdzIjogeyJTRVNTSU9OU19TRUNSRVQiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAicmFuZG9tIiwgImhlbHAiOiAiU2VjcmV0IHVzZWQgdG8gZW5jcnlwdCBzZXNzaW9ucyB2YXJpYWJsZXMgZm9yIHN0b3JpbmcgZGF0YSByZWxhdGVkIHRvIGNoYWxsZW5nZXMuIiwgImlkIjogInNlc3Npb24tc2VjcmV0IiwgImxhYmVsIjogIlNlc3Npb25zIHNlY3JldCIsICJyZWdleCI6ICJeXFx3KyQiLCAidHlwZSI6ICJwYXNzd29yZCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTYiLCAicGF0dGVybiI6ICJeXFx3KyQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIlNlc3Npb25zIHNlY3JldCIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogInJhbmRvbSIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlNlY3JldCB1c2VkIHRvIGVuY3J5cHQgc2Vzc2lvbnMgdmFyaWFibGVzIGZvciBzdG9yaW5nIGRhdGEgcmVsYXRlZCB0byBjaGFsbGVuZ2VzLiJ9XX0sICJTRVNTSU9OU19OQU1FIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogInJhbmRvbSIsICJoZWxwIjogIk5hbWUgb2YgdGhlIGNvb2tpZSBnaXZlbiB0byBjbGllbnRzLiIsICJpZCI6ICJzZXNzaW9ucy1uYW1lIiwgImxhYmVsIjogIlNlc3Npb25zIG5hbWUiLCAicmVnZXgiOiAiXlxcdyskIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTUiLCAicGF0dGVybiI6ICJeXFx3KyQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIlNlc3Npb25zIG5hbWUiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJyYW5kb20iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJOYW1lIG9mIHRoZSBjb29raWUgZ2l2ZW4gdG8gY2xpZW50cy4ifV19LCAiU0VTU0lPTlNfSURMSU5HX1RJTUVPVVQiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAiMTgwMCIsICJoZWxwIjogIk1heGltdW0gdGltZSAoaW4gc2Vjb25kcykgb2YgaW5hY3Rpdml0eSBiZWZvcmUgdGhlIHNlc3Npb24gaXMgaW52YWxpZGF0ZWQuIiwgImlkIjogInNlc3Npb25zLWlkbGluZy10aW1lb3V0IiwgImxhYmVsIjogIlNlc3Npb25zIGlkbGluZyB0aW1lb3V0IiwgInJlZ2V4IjogIl5cXGQrJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei00IiwgInBhdHRlcm4iOiAiXlxcZCskIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJTZXNzaW9ucyBpZGxpbmcgdGltZW91dCIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIjE4MDAiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJNYXhpbXVtIHRpbWUgKGluIHNlY29uZHMpIG9mIGluYWN0aXZpdHkgYmVmb3JlIHRoZSBzZXNzaW9uIGlzIGludmFsaWRhdGVkLiJ9XX0sICJTRVNTSU9OU19ST0xMSU5HX1RJTUVPVVQiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAiMzYwMCIsICJoZWxwIjogIk1heGltdW0gdGltZSAoaW4gc2Vjb25kcykgYmVmb3JlIGEgc2Vzc2lvbiBtdXN0IGJlIHJlbmV3ZWQuIiwgImlkIjogInNlc3Npb25zLXJvbGxpbmctdGltZW91dCIsICJsYWJlbCI6ICJTZXNzaW9ucyByb2xsaW5nIHRpbWVvdXQiLCAicmVnZXgiOiAiXlxcZCskIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTMiLCAicGF0dGVybiI6ICJeXFxkKyQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIlNlc3Npb25zIHJvbGxpbmcgdGltZW91dCIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIjM2MDAiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJNYXhpbXVtIHRpbWUgKGluIHNlY29uZHMpIGJlZm9yZSBhIHNlc3Npb24gbXVzdCBiZSByZW5ld2VkLiJ9XX0sICJTRVNTSU9OU19BQlNPTFVURV9USU1FT1VUIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIjg2NDAwIiwgImhlbHAiOiAiTWF4aW11bSB0aW1lIChpbiBzZWNvbmRzKSBiZWZvcmUgYSBzZXNzaW9uIGlzIGRlc3Ryb3llZC4iLCAiaWQiOiAic2Vzc2lvbnMtYWJzb2x1dGUtdGltZW91dCIsICJsYWJlbCI6ICJTZXNzaW9ucyBhYnNvbHV0ZSB0aW1lb3V0IiwgInJlZ2V4IjogIl5cXGQrJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0yIiwgInBhdHRlcm4iOiAiXlxcZCskIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJTZXNzaW9ucyBhYnNvbHV0ZSB0aW1lb3V0IiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiODY0MDAiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJNYXhpbXVtIHRpbWUgKGluIHNlY29uZHMpIGJlZm9yZSBhIHNlc3Npb24gaXMgZGVzdHJveWVkLiJ9XX0sICJTRVNTSU9OU19DSEVDS19JUCI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICJ5ZXMiLCAiaGVscCI6ICJEZXN0cm95IHNlc3Npb24gaWYgSVAgYWRkcmVzcyBpcyBkaWZmZXJlbnQgdGhhbiBvcmlnaW5hbCBvbmUuIiwgImlkIjogInNlc3Npb25zLWNoZWNrLWlwIiwgImxhYmVsIjogIlNlc3Npb25zIGNoZWNrIElQIiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJjb250YWluZXJDbGFzcyI6ICJ6LTEiLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJTZXNzaW9ucyBjaGVjayBJUCIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogInllcyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkRlc3Ryb3kgc2Vzc2lvbiBpZiBJUCBhZGRyZXNzIGlzIGRpZmZlcmVudCB0aGFuIG9yaWdpbmFsIG9uZS4ifV19LCAiU0VTU0lPTlNfQ0hFQ0tfVVNFUl9BR0VOVCI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICJ5ZXMiLCAiaGVscCI6ICJEZXN0cm95IHNlc3Npb24gaWYgVXNlci1BZ2VudCBpcyBkaWZmZXJlbnQgdGhhbiBvcmlnaW5hbCBvbmUuIiwgImlkIjogInNlc3Npb25zLXVzZXItYWdlbnQiLCAibGFiZWwiOiAiU2Vzc2lvbnMgY2hlY2sgVXNlci1BZ2VudCIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei0wIiwgInBhdHRlcm4iOiAiXih5ZXN8bm8pJCIsICJpbnBUeXBlIjogImNoZWNrYm94IiwgIm5hbWUiOiAiU2Vzc2lvbnMgY2hlY2sgVXNlci1BZ2VudCIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogInllcyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkRlc3Ryb3kgc2Vzc2lvbiBpZiBVc2VyLUFnZW50IGlzIGRpZmZlcmVudCB0aGFuIG9yaWdpbmFsIG9uZS4ifV19fSwgImNoZWNrc3VtIjogbnVsbCwgIm11bHRpcGxlcyI6IHt9fSwgeyJpZCI6ICJ1aSIsICJzdHJlYW0iOiAibm8iLCAibmFtZSI6ICJVSSIsICJkZXNjcmlwdGlvbiI6ICJJbnRlZ3JhdGUgZWFzaWx5IHRoZSBCdW5rZXJXZWIgVUkuIiwgInZlcnNpb24iOiAiMS4wIiwgInR5cGUiOiAiY29yZSIsICJtZXRob2QiOiAibWFudWFsIiwgInBhZ2UiOiBmYWxzZSwgInNldHRpbmdzIjogeyJVU0VfVUkiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAibm8iLCAiaGVscCI6ICJVc2UgVUkiLCAiaWQiOiAidXNlLXVpIiwgImxhYmVsIjogIlVzZSBVSSIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xIiwgInBhdHRlcm4iOiAiXih5ZXN8bm8pJCIsICJpbnBUeXBlIjogImNoZWNrYm94IiwgIm5hbWUiOiAiVXNlIFVJIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAieWVzIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJVc2UgVUkifV19LCAiVUlfSE9TVCI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJBZGRyZXNzIG9mIHRoZSB3ZWIgVUkgdXNlZCBmb3IgaW5pdGlhbCBzZXR1cCIsICJpZCI6ICJ1aS1ob3N0IiwgImxhYmVsIjogIlVJIGhvc3QiLCAicmVnZXgiOiAiXi4qJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0wIiwgInBhdHRlcm4iOiAiXi4qJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiVUkgaG9zdCIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkFkZHJlc3Mgb2YgdGhlIHdlYiBVSSB1c2VkIGZvciBpbml0aWFsIHNldHVwIn1dfX0sICJjaGVja3N1bSI6IG51bGwsICJtdWx0aXBsZXMiOiB7fX0sIHsiaWQiOiAid2hpdGVsaXN0IiwgInN0cmVhbSI6ICJwYXJ0aWFsIiwgIm5hbWUiOiAiV2hpdGVsaXN0IiwgImRlc2NyaXB0aW9uIjogIkFsbG93IGFjY2VzcyBiYXNlZCBvbiBpbnRlcm5hbCBhbmQgZXh0ZXJuYWwgSVAvbmV0d29yay9yRE5TL0FTTiB3aGl0ZWxpc3RzLiIsICJ2ZXJzaW9uIjogIjEuMCIsICJ0eXBlIjogImNvcmUiLCAibWV0aG9kIjogIm1hbnVhbCIsICJwYWdlIjogdHJ1ZSwgInNldHRpbmdzIjogeyJVU0VfV0hJVEVMSVNUIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogInllcyIsICJoZWxwIjogIkFjdGl2YXRlIHdoaXRlbGlzdCBmZWF0dXJlLiIsICJpZCI6ICJ1c2Utd2hpdGVsaXN0IiwgImxhYmVsIjogIkFjdGl2YXRlIHdoaXRlbGlzdGluZyIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xMSIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIkFjdGl2YXRlIHdoaXRlbGlzdGluZyIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogInllcyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiQWN0aXZhdGUgd2hpdGVsaXN0IGZlYXR1cmUuIn1dfSwgIldISVRFTElTVF9JUCI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIyMC4xOTEuNDUuMjEyIDQwLjg4LjIxLjIzNSA0MC43Ni4xNzMuMTUxIDQwLjc2LjE2My43IDIwLjE4NS43OS40NyA1Mi4xNDIuMjYuMTc1IDIwLjE4NS43OS4xNSA1Mi4xNDIuMjQuMTQ5IDQwLjc2LjE2Mi4yMDggNDAuNzYuMTYzLjIzIDQwLjc2LjE2Mi4xOTEgNDAuNzYuMTYyLjI0NyIsICJoZWxwIjogIkxpc3Qgb2YgSVAvbmV0d29yaywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCB0byBwdXQgaW50byB0aGUgd2hpdGVsaXN0LiIsICJpZCI6ICJ3aGl0ZWxpc3QtaXAiLCAibGFiZWwiOiAiV2hpdGVsaXN0IElQL25ldHdvcmsiLCAicmVnZXgiOiAiXig/ISApKCAqKCgoXFxiMjVbMC01XXxcXGIyWzAtNF1cXGR8XFxiWzAxXT9cXGRcXGQ/KShcXC4oMjVbMC01XXwyWzAtNF1cXGR8WzAxXT9cXGRcXGQ/KSl7M30pKFxcLyhbMS0yXVswLTldP3wzWzAtMl0/fFswNC05XSkpP3woKFswLTlhLWZBLUZdezEsNH06KXs3fVswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDd9OnwoWzAtOWEtZkEtRl17MSw0fTopezEsNn06WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsNX0oOlswLTlhLWZBLUZdezEsNH0pezEsMn18KFswLTlhLWZBLUZdezEsNH06KXsxLDR9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDN9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwzfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsMn0oOlswLTlhLWZBLUZdezEsNH0pezEsNX18WzAtOWEtZkEtRl17MSw0fTooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDZ9KXw6KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw3fXw6KXxmZTgwOig6WzAtOWEtZkEtRl1aezAsNH0pezAsNH0lWzAtOWEtekEtWl0rfDo6KGZmZmYoOjB7MSw0fSk/Oik/KCgyNVswLTVdfCgyWzAtNF18MT9cXGQpP1xcZClcXC4pezN9KDI1WzAtNV18KDJbMC00XXwxP1xcZCk/XFxkKXwoWzAtOWEtZkEtRl17MSw0fTopezEsNH06KCgyNVswLTVdfCgyWzAtNF18MT9cXGQpP1xcZClcXC4pezN9KDI1WzAtNV18KDJbMC00XXwxP1xcZCk/XFxkKSkoXFwvKDEyWzAtOF18MVswMV1bMC05XXxbMC05XVswLTldPykpPykoPyEuKlxcRFxcMihbXlxcZFxcL118JCkpICopKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMTAiLCAicGF0dGVybiI6ICJeKD8hICkoICooKChcXGIyNVswLTVdfFxcYjJbMC00XVxcZHxcXGJbMDFdP1xcZFxcZD8pKFxcLigyNVswLTVdfDJbMC00XVxcZHxbMDFdP1xcZFxcZD8pKXszfSkoXFwvKFsxLTJdWzAtOV0/fDNbMC0yXT98WzA0LTldKSk/fCgoWzAtOWEtZkEtRl17MSw0fTopezd9WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsN306fChbMC05YS1mQS1GXXsxLDR9Oil7MSw2fTpbMC05YS1mQS1GXXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw1fSg6WzAtOWEtZkEtRl17MSw0fSl7MSwyfXwoWzAtOWEtZkEtRl17MSw0fTopezEsNH0oOlswLTlhLWZBLUZdezEsNH0pezEsM318KFswLTlhLWZBLUZdezEsNH06KXsxLDN9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwyfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw1fXxbMC05YS1mQS1GXXsxLDR9OigoOlswLTlhLWZBLUZdezEsNH0pezEsNn0pfDooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDd9fDopfGZlODA6KDpbMC05YS1mQS1GXVp7MCw0fSl7MCw0fSVbMC05YS16QS1aXSt8OjooZmZmZig6MHsxLDR9KT86KT8oKDI1WzAtNV18KDJbMC00XXwxP1xcZCk/XFxkKVxcLil7M30oMjVbMC01XXwoMlswLTRdfDE/XFxkKT9cXGQpfChbMC05YS1mQS1GXXsxLDR9Oil7MSw0fTooKDI1WzAtNV18KDJbMC00XXwxP1xcZCk/XFxkKVxcLil7M30oMjVbMC01XXwoMlswLTRdfDE/XFxkKT9cXGQpKShcXC8oMTJbMC04XXwxWzAxXVswLTldfFswLTldWzAtOV0/KSk/KSg/IS4qXFxEXFwyKFteXFxkXFwvXXwkKSkgKikqJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiV2hpdGVsaXN0IElQL25ldHdvcmsiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIyMC4xOTEuNDUuMjEyIDQwLjg4LjIxLjIzNSA0MC43Ni4xNzMuMTUxIDQwLjc2LjE2My43IDIwLjE4NS43OS40NyA1Mi4xNDIuMjYuMTc1IDIwLjE4NS43OS4xNSA1Mi4xNDIuMjQuMTQ5IDQwLjc2LjE2Mi4yMDggNDAuNzYuMTYzLjIzIDQwLjc2LjE2Mi4xOTEgNDAuNzYuMTYyLjI0NyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTGlzdCBvZiBJUC9uZXR3b3JrLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIHRvIHB1dCBpbnRvIHRoZSB3aGl0ZWxpc3QuIn1dfSwgIldISVRFTElTVF9SRE5TIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIi5nb29nbGUuY29tIC5nb29nbGVib3QuY29tIC55YW5kZXgucnUgLnlhbmRleC5uZXQgLnlhbmRleC5jb20gLnNlYXJjaC5tc24uY29tIC5iYWlkdS5jb20gLmJhaWR1LmpwIC5jcmF3bC55YWhvby5uZXQgLmZ3ZC5saW5rZWRpbi5jb20gLnR3aXR0ZXIuY29tIC50d3R0ci5jb20gLmRpc2NvcmQuY29tIiwgImhlbHAiOiAiTGlzdCBvZiByZXZlcnNlIEROUyBzdWZmaXhlcywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCB0byB3aGl0ZWxpc3QuIiwgImlkIjogIndoaXRlbGlzdC1yZG5zIiwgImxhYmVsIjogIldoaXRlbGlzdCByZXZlcnNlIEROUyIsICJyZWdleCI6ICJeKCAqKChbXiBdKykoPyEuKlxcMyggfCQpKSkgKikqJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei05IiwgInBhdHRlcm4iOiAiXiggKigoW14gXSspKD8hLipcXDMoIHwkKSkpICopKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIldoaXRlbGlzdCByZXZlcnNlIEROUyIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIi5nb29nbGUuY29tIC5nb29nbGVib3QuY29tIC55YW5kZXgucnUgLnlhbmRleC5uZXQgLnlhbmRleC5jb20gLnNlYXJjaC5tc24uY29tIC5iYWlkdS5jb20gLmJhaWR1LmpwIC5jcmF3bC55YWhvby5uZXQgLmZ3ZC5saW5rZWRpbi5jb20gLnR3aXR0ZXIuY29tIC50d3R0ci5jb20gLmRpc2NvcmQuY29tIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIHJldmVyc2UgRE5TIHN1ZmZpeGVzLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIHRvIHdoaXRlbGlzdC4ifV19LCAiV0hJVEVMSVNUX1JETlNfR0xPQkFMIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogInllcyIsICJoZWxwIjogIk9ubHkgcGVyZm9ybSBSRE5TIHdoaXRlbGlzdCBjaGVja3Mgb24gZ2xvYmFsIElQIGFkZHJlc3Nlcy4iLCAiaWQiOiAid2hpdGVsaXN0LXJkbnMtZ2xvYmFsIiwgImxhYmVsIjogIldoaXRlbGlzdCByZXZlcnNlIEROUyBnbG9iYWwgSVBzIiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJjb250YWluZXJDbGFzcyI6ICJ6LTgiLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJXaGl0ZWxpc3QgcmV2ZXJzZSBETlMgZ2xvYmFsIElQcyIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogInllcyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiT25seSBwZXJmb3JtIFJETlMgd2hpdGVsaXN0IGNoZWNrcyBvbiBnbG9iYWwgSVAgYWRkcmVzc2VzLiJ9XX0sICJXSElURUxJU1RfQVNOIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIjMyOTM0IiwgImhlbHAiOiAiTGlzdCBvZiBBU04gbnVtYmVycywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCB0byB3aGl0ZWxpc3QuIiwgImlkIjogIndoaXRlbGlzdC1hc24iLCAibGFiZWwiOiAiV2hpdGVsaXN0IEFTTiIsICJyZWdleCI6ICJeXiggKigoQVNOPyk/KFxcZCspXFxiKD8hLipbU04gXVxcNFxcYikpICopKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotNyIsICJwYXR0ZXJuIjogIl5eKCAqKChBU04/KT8oXFxkKylcXGIoPyEuKltTTiBdXFw0XFxiKSkgKikqJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiV2hpdGVsaXN0IEFTTiIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIjMyOTM0IiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIEFTTiBudW1iZXJzLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIHRvIHdoaXRlbGlzdC4ifV19LCAiV0hJVEVMSVNUX1VTRVJfQUdFTlQiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiTGlzdCBvZiBVc2VyLUFnZW50IChQQ1JFIHJlZ2V4KSwgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCB0byB3aGl0ZWxpc3QuIiwgImlkIjogIndoaXRlbGlzdC11c2VyLWFnZW50IiwgImxhYmVsIjogIldoaXRlbGlzdCBVc2VyLUFnZW50IiwgInJlZ2V4IjogIl4uKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotNiIsICJwYXR0ZXJuIjogIl4uKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIldoaXRlbGlzdCBVc2VyLUFnZW50IiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIFVzZXItQWdlbnQgKFBDUkUgcmVnZXgpLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIHRvIHdoaXRlbGlzdC4ifV19LCAiV0hJVEVMSVNUX1VSSSI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJMaXN0IG9mIFVSSSAoUENSRSByZWdleCksIHNlcGFyYXRlZCB3aXRoIHNwYWNlcywgdG8gd2hpdGVsaXN0LiIsICJpZCI6ICJ3aGl0ZWxpc3QtdXJpIiwgImxhYmVsIjogIldoaXRlbGlzdCBVUkkiLCAicmVnZXgiOiAiXiggKiguKikoPyEuKlxcMig/IS4pKSAqKSokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTUiLCAicGF0dGVybiI6ICJeKCAqKC4qKSg/IS4qXFwyKD8hLikpICopKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIldoaXRlbGlzdCBVUkkiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkxpc3Qgb2YgVVJJIChQQ1JFIHJlZ2V4KSwgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCB0byB3aGl0ZWxpc3QuIn1dfSwgIldISVRFTElTVF9JUF9VUkxTIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIkxpc3Qgb2YgVVJMcywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCBjb250YWluaW5nIGdvb2QgSVAvbmV0d29yayB0byB3aGl0ZWxpc3QuIiwgImlkIjogIndoaXRlbGlzdC1pcC11cmxzIiwgImxhYmVsIjogIldoaXRlbGlzdCBJUC9uZXR3b3JrIFVSTHMiLCAicmVnZXgiOiAiXiggKigoaHR0cHM/OlxcL1xcL3xmaWxlOlxcL1xcL1xcLylbXFwtXFx3QDolLit+Iz1dK1tcXC1cXHdcXChcXCkhQDolKy5+Iz8mXFwvPSRdKikoPyEuKlxcMig/IS4pKSAqKSokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTQiLCAicGF0dGVybiI6ICJeKCAqKChodHRwcz86XFwvXFwvfGZpbGU6XFwvXFwvXFwvKVtcXC1cXHdAOiUuK34jPV0rW1xcLVxcd1xcKFxcKSFAOiUrLn4jPyZcXC89JF0qKSg/IS4qXFwyKD8hLikpICopKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIldoaXRlbGlzdCBJUC9uZXR3b3JrIFVSTHMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIFVSTHMsIHNlcGFyYXRlZCB3aXRoIHNwYWNlcywgY29udGFpbmluZyBnb29kIElQL25ldHdvcmsgdG8gd2hpdGVsaXN0LiJ9XX0sICJXSElURUxJU1RfUkROU19VUkxTIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIkxpc3Qgb2YgVVJMcywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCBjb250YWluaW5nIHJldmVyc2UgRE5TIHN1ZmZpeGVzIHRvIHdoaXRlbGlzdC4iLCAiaWQiOiAid2hpdGVsaXN0LXJkbnMtdXJscyIsICJsYWJlbCI6ICJXaGl0ZWxpc3QgcmV2ZXJzZSBETlMgVVJMcyIsICJyZWdleCI6ICJeKCAqKChodHRwcz86XFwvXFwvfGZpbGU6XFwvXFwvXFwvKVtcXC1cXHdAOiUuK34jPV0rW1xcLVxcd1xcKFxcKSFAOiUrLn4jPyZcXC89JF0qKSg/IS4qXFwyKD8hLikpICopKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMyIsICJwYXR0ZXJuIjogIl4oICooKGh0dHBzPzpcXC9cXC98ZmlsZTpcXC9cXC9cXC8pW1xcLVxcd0A6JS4rfiM9XStbXFwtXFx3XFwoXFwpIUA6JSsufiM/JlxcLz0kXSopKD8hLipcXDIoPyEuKSkgKikqJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiV2hpdGVsaXN0IHJldmVyc2UgRE5TIFVSTHMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIFVSTHMsIHNlcGFyYXRlZCB3aXRoIHNwYWNlcywgY29udGFpbmluZyByZXZlcnNlIEROUyBzdWZmaXhlcyB0byB3aGl0ZWxpc3QuIn1dfSwgIldISVRFTElTVF9BU05fVVJMUyI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJMaXN0IG9mIFVSTHMsIHNlcGFyYXRlZCB3aXRoIHNwYWNlcywgY29udGFpbmluZyBBU04gdG8gd2hpdGVsaXN0LiIsICJpZCI6ICJ3aGl0ZWxpc3QtYXNuLXVybHMiLCAibGFiZWwiOiAiV2hpdGVsaXN0IEFTTiBVUkxzIiwgInJlZ2V4IjogIl4oICooKGh0dHBzPzpcXC9cXC98ZmlsZTpcXC9cXC9cXC8pW1xcLVxcd0A6JS4rfiM9XStbXFwtXFx3XFwoXFwpIUA6JSsufiM/JlxcLz0kXSopKD8hLipcXDIoPyEuKSkgKikqJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0yIiwgInBhdHRlcm4iOiAiXiggKigoaHR0cHM/OlxcL1xcL3xmaWxlOlxcL1xcL1xcLylbXFwtXFx3QDolLit+Iz1dK1tcXC1cXHdcXChcXCkhQDolKy5+Iz8mXFwvPSRdKikoPyEuKlxcMig/IS4pKSAqKSokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJXaGl0ZWxpc3QgQVNOIFVSTHMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIFVSTHMsIHNlcGFyYXRlZCB3aXRoIHNwYWNlcywgY29udGFpbmluZyBBU04gdG8gd2hpdGVsaXN0LiJ9XX0sICJXSElURUxJU1RfVVNFUl9BR0VOVF9VUkxTIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIkxpc3Qgb2YgVVJMcywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCBjb250YWluaW5nIGdvb2QgVXNlci1BZ2VudCB0byB3aGl0ZWxpc3QuIiwgImlkIjogIndoaXRlbGlzdC11c2VyLWFnZW50LXVybHMiLCAibGFiZWwiOiAiV2hpdGVsaXN0IFVzZXItQWdlbnQgVVJMcyIsICJyZWdleCI6ICJeKCAqKChodHRwcz86XFwvXFwvfGZpbGU6XFwvXFwvXFwvKVtcXC1cXHdAOiUuK34jPV0rW1xcLVxcd1xcKFxcKSFAOiUrLn4jPyZcXC89JF0qKSg/IS4qXFwyKD8hLikpICopKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMSIsICJwYXR0ZXJuIjogIl4oICooKGh0dHBzPzpcXC9cXC98ZmlsZTpcXC9cXC9cXC8pW1xcLVxcd0A6JS4rfiM9XStbXFwtXFx3XFwoXFwpIUA6JSsufiM/JlxcLz0kXSopKD8hLipcXDIoPyEuKSkgKikqJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiV2hpdGVsaXN0IFVzZXItQWdlbnQgVVJMcyIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkxpc3Qgb2YgVVJMcywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCBjb250YWluaW5nIGdvb2QgVXNlci1BZ2VudCB0byB3aGl0ZWxpc3QuIn1dfSwgIldISVRFTElTVF9VUklfVVJMUyI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJMaXN0IG9mIFVSTHMsIHNlcGFyYXRlZCB3aXRoIHNwYWNlcywgY29udGFpbmluZyBiYWQgVVJJIHRvIHdoaXRlbGlzdC4iLCAiaWQiOiAid2hpdGVsaXN0LXVyaS11cmxzIiwgImxhYmVsIjogIldoaXRlbGlzdCBVUkkgVVJMcyIsICJyZWdleCI6ICJeKCAqKChodHRwcz86XFwvXFwvfGZpbGU6XFwvXFwvXFwvKVtcXC1cXHdAOiUuK34jPV0rW1xcLVxcd1xcKFxcKSFAOiUrLn4jPyZcXC89JF0qKSg/IS4qXFwyKD8hLikpICopKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMCIsICJwYXR0ZXJuIjogIl4oICooKGh0dHBzPzpcXC9cXC98ZmlsZTpcXC9cXC9cXC8pW1xcLVxcd0A6JS4rfiM9XStbXFwtXFx3XFwoXFwpIUA6JSsufiM/JlxcLz0kXSopKD8hLipcXDIoPyEuKSkgKikqJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiV2hpdGVsaXN0IFVSSSBVUkxzIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTGlzdCBvZiBVUkxzLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIGNvbnRhaW5pbmcgYmFkIFVSSSB0byB3aGl0ZWxpc3QuIn1dfX0sICJjaGVja3N1bSI6IG51bGwsICJtdWx0aXBsZXMiOiB7fX1dfSwgImVhc3kiOiB7ImRlZmF1bHQiOiBbeyJ0aXRsZSI6ICJUaXRsZSAxIiwgInN1YnRpdGxlIjogInN1YnRpdGxlIDEiLCAic2V0dGluZ3MiOiB7IlVTRV9VSSI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJubyIsICJoZWxwIjogIlVzZSBVSSIsICJpZCI6ICJ1c2UtdWkiLCAibGFiZWwiOiAiVXNlIFVJIiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJjb250YWluZXJDbGFzcyI6ICJ6LTEiLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJVc2UgVUkiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJ5ZXMiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlVzZSBVSSJ9XX0sICJVU0VfQ09SUyI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJubyIsICJoZWxwIjogIlVzZSBDT1JTIiwgImlkIjogInVzZS1jb3JzIiwgImxhYmVsIjogIlVzZSBDT1JTIiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJjb250YWluZXJDbGFzcyI6ICJ6LTAiLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJVc2UgQ09SUyIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiB0cnVlLCAidmFsdWUiOiAieWVzIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAidHJlc3Bhc3MiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tZXRob2RfZGlzYWJsZWQifSwgeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlVzZSBDT1JTIn1dfX19LCB7InRpdGxlIjogIlRpdGxlIDIiLCAic3VidGl0bGUiOiAic3VidGl0bGUgMiIsICJzZXR0aW5ncyI6IHsiVVNFX1VJIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIm5vIiwgImhlbHAiOiAiVXNlIFVJIiwgImlkIjogInVzZS11aSIsICJsYWJlbCI6ICJVc2UgVUkiLCAicmVnZXgiOiAiXih5ZXN8bm8pJCIsICJ0eXBlIjogImNoZWNrIiwgImNvbnRhaW5lckNsYXNzIjogInotMSIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIlVzZSBVSSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogInllcyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiVXNlIFVJIn1dfSwgIlVTRV9DT1JTIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIm5vIiwgImhlbHAiOiAiVXNlIENPUlMiLCAiaWQiOiAidXNlLWNvcnMiLCAibGFiZWwiOiAiVXNlIENPUlMiLCAicmVnZXgiOiAiXih5ZXN8bm8pJCIsICJ0eXBlIjogImNoZWNrIiwgImNvbnRhaW5lckNsYXNzIjogInotMCIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIlVzZSBDT1JTIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IHRydWUsICJ2YWx1ZSI6ICJ5ZXMiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJ0cmVzcGFzcyIsICJ0ZXh0IjogImlucF9wb3BvdmVyX21ldGhvZF9kaXNhYmxlZCJ9LCB7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiVXNlIENPUlMifV19fX1dfSwgInJhdyI6IHsiZGVmYXVsdCI6IHsiVVNFX0daSVAiOiAiZHNmcmdyZGdyZGdyZGhnZCIsICJVU0VfVUkiOiAieWVzIn19fX19XX1d \ No newline at end of file diff --git a/src/client/tests/globalconfig.py b/src/client/tests/globalconfig.py index 51f8cbd86..864db3aed 100644 --- a/src/client/tests/globalconfig.py +++ b/src/client/tests/globalconfig.py @@ -1,5 +1,6 @@ import json import copy +import base64 plugins = [ @@ -3036,15 +3037,9 @@ def get_service_forms(templates=[], plugins=[], service_settings={}): forms = {"advanced": {}, "easy": {}, "raw": {}} for template in templates: - forms["advanced"][template.get("name")] = set_advanced( - template, plugins, service_settings - ) - forms["raw"][template.get("name")] = set_raw( - template, plugins, service_settings - ) - forms["easy"][template.get("name")] = set_easy( - template, plugins, service_settings - ) + forms["advanced"][template.get("name")] = set_advanced(template, plugins, service_settings) + forms["raw"][template.get("name")] = set_raw(template, plugins, service_settings) + forms["easy"][template.get("name")] = set_easy(template, plugins, service_settings) return forms @@ -3111,9 +3106,7 @@ def set_raw(template, plugins_base, service_settings): for plugin in plugins: for setting, value in plugin.get("settings").items(): # avoid some methods from services_settings - if setting in service_settings and service_settings[setting].get( - "method", "ui" - ) not in ("ui", "default"): + if setting in service_settings and service_settings[setting].get("method", "ui") not in ("ui", "default"): continue raw_value = False @@ -3125,9 +3118,7 @@ def set_raw(template, plugins_base, service_settings): # Then override by service settings if setting in service_settings: - raw_value = service_settings[setting].get( - "value", value.get("value", value.get("default")) - ) + raw_value = service_settings[setting].get("value", value.get("value", value.get("default"))) # Add value only if exists if raw_value: @@ -3158,9 +3149,45 @@ def set_advanced(template, plugins_base, service_settings): template_settings, service_settings, ) + + set_multiples(plugins) + return plugins +def set_multiples(format_plugins): + """ + Set the multiples settings for each plugin. + """ + # copy of format plugins + for plugin in format_plugins: + # Prepare multiples key + plugin["multiples"] = {} + # Get multiples + multiples = {} + settings_to_delete = [] + for setting, value in plugin.get("settings").items(): + if not value.get("multiple"): + continue + + mult_name = value.get("multiple") + # Get the multiple value and set it as key if not in multiples dict + if mult_name not in multiples: + multiples[mult_name] = {} + + multiples[mult_name][setting] = value + settings_to_delete.append(setting) + + # Delete multiple settings from regular settings + for setting in settings_to_delete: + del plugin["settings"][setting] + + if len(multiples): + plugin["multiples"].update(multiples) + + return format_plugins + + def format_setting( setting_name, setting_value, @@ -3182,11 +3209,7 @@ def format_setting( inpType = ( "checkbox" if setting_value.get("type") == "check" - else ( - "select" - if setting_value.get("type") == "select" - else "datepicker" if setting_value.get("type") == "date" else "input" - ) + else ("select" if setting_value.get("type") == "select" else "datepicker" if setting_value.get("type") == "date" else "input") ) setting_value["inpType"] = inpType @@ -3209,27 +3232,17 @@ def format_setting( # Start by setting template value if exists if setting_name in template_settings: # Update value or set default as value - setting_value["value"] = template_settings.get( - setting_name, setting_value.get("default") - ) + setting_value["value"] = template_settings.get(setting_name, setting_value.get("default")) # Then override by service settings if setting_name in service_settings: - setting_value["value"] = service_settings[setting_name].get( - "value", setting_value.get("value", setting_value.get("default")) - ) - setting_value["disabled"] = ( - False - if service_settings[setting_name].get("method", "ui") in ("ui", "default") - else True - ) + setting_value["value"] = service_settings[setting_name].get("value", setting_value.get("value", setting_value.get("default"))) + setting_value["disabled"] = False if service_settings[setting_name].get("method", "ui") in ("ui", "default") else True # Prepare popover checking "help", "context" popovers = [] - if (setting_value.get("disabled", False)) and service_settings[setting_name].get( - "method", "ui" - ) not in ("ui", "default"): + if (setting_value.get("disabled", False)) and service_settings[setting_name].get("method", "ui") not in ("ui", "default"): popovers.append( { "iconName": "trespass", @@ -3240,14 +3253,8 @@ def format_setting( if setting_value.get("context"): popovers.append( { - "iconName": ( - "disk" if setting_value.get("context") == "multisite" else "globe" - ), - "text": ( - "inp_popover_multisite" - if setting_value.get("context") == "multisite" - else "inp_popover_global" - ), + "iconName": ("disk" if setting_value.get("context") == "multisite" else "globe"), + "text": ("inp_popover_multisite" if setting_value.get("context") == "multisite" else "inp_popover_global"), } ) @@ -3283,9 +3290,7 @@ def global_config_builder(): { "type": "Templates", "data": { - "templates": get_service_forms( - templates, plugins, service_settings - ), + "templates": get_service_forms(templates, plugins, service_settings), }, }, ], @@ -3296,6 +3301,10 @@ def global_config_builder(): output = global_config_builder() - -with open("globalconfig.json", "w") as f: +with open("globalconfig64.txt", "w") as f: json.dump(output, f, indent=4) + +output_base64_bytes = base64.b64encode(bytes(json.dumps(output), "utf-8")) +output_base64_string = output_base64_bytes.decode("ascii") +with open("globalconfig64.txt", "w") as f: + f.write(output_base64_string) diff --git a/src/client/tests/globalconfig64.txt b/src/client/tests/globalconfig64.txt new file mode 100644 index 000000000..0a84eb0b2 --- /dev/null +++ b/src/client/tests/globalconfig64.txt @@ -0,0 +1 @@ +W3sidHlwZSI6ICJjYXJkIiwgImNvbnRhaW5lckNvbHVtbnMiOiB7InBjIjogMTIsICJ0YWJsZXQiOiAxMiwgIm1vYmlsZSI6IDEyfSwgIndpZGdldHMiOiBbeyJ0eXBlIjogIlRpdGxlIiwgImRhdGEiOiB7InRpdGxlIjogImdsb2JhbF9jb25maWdfdGl0bGUiLCAidHlwZSI6ICJjb250YWluZXIifX0sIHsidHlwZSI6ICJTdWJ0aXRsZSIsICJkYXRhIjogeyJzdWJ0aXRsZSI6ICJnbG9iYWxfY29uZmlnX3N1YnRpdGxlIiwgInR5cGUiOiAiY29udGFpbmVyIn19LCB7InR5cGUiOiAiVGVtcGxhdGVzIiwgImRhdGEiOiB7InRlbXBsYXRlcyI6IHsiYWR2YW5jZWQiOiB7ImRlZmF1bHQiOiBbeyJpZCI6ICJnZW5lcmFsIiwgInN0cmVhbSI6ICJwYXJ0aWFsIiwgIm5hbWUiOiAiR2VuZXJhbCIsICJkZXNjcmlwdGlvbiI6ICJUaGUgZ2VuZXJhbCBzZXR0aW5ncyBmb3IgdGhlIHNlcnZlciIsICJ2ZXJzaW9uIjogIjAuMSIsICJ0eXBlIjogImNvcmUiLCAibWV0aG9kIjogIm1hbnVhbCIsICJwYWdlIjogZmFsc2UsICJzZXR0aW5ncyI6IHsiSVNfTE9BRElORyI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICJubyIsICJoZWxwIjogIkludGVybmFsIHVzZSA6IHNldCB0byB5ZXMgd2hlbiBCVyBpcyBsb2FkaW5nLiIsICJpZCI6ICJpbnRlcm5hbC11c2UtbG9hZGluZyIsICJsYWJlbCI6ICJpbnRlcm5hbCB1c2UgbG9hZGluZyIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei0zMyIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogImludGVybmFsIHVzZSBsb2FkaW5nIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAibm8iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJJbnRlcm5hbCB1c2UgOiBzZXQgdG8geWVzIHdoZW4gQlcgaXMgbG9hZGluZy4ifV19LCAiTkdJTlhfUFJFRklYIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIi9ldGMvbmdpbngvIiwgImhlbHAiOiAiV2hlcmUgbmdpbnggd2lsbCBzZWFyY2ggZm9yIGNvbmZpZ3VyYXRpb25zLiIsICJpZCI6ICJuZ2lueC1wcmVmaXgiLCAibGFiZWwiOiAibmdpbnggcHJlZml4IiwgInJlZ2V4IjogIl4oXFwvW1xcLVxcdy5cXHNdKykqXFwvJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0zMiIsICJwYXR0ZXJuIjogIl4oXFwvW1xcLVxcdy5cXHNdKykqXFwvJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAibmdpbnggcHJlZml4IiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiL2V0Yy9uZ2lueC8iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJXaGVyZSBuZ2lueCB3aWxsIHNlYXJjaCBmb3IgY29uZmlndXJhdGlvbnMuIn1dfSwgIkhUVFBfUE9SVCI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICI4MDgwIiwgImhlbHAiOiAiSFRUUCBwb3J0IG51bWJlciB3aGljaCBidW5rZXJ3ZWIgYmluZHMgdG8uIiwgImlkIjogImh0dHAtcG9ydCIsICJsYWJlbCI6ICJIVFRQIHBvcnQiLCAicmVnZXgiOiAiXlxcZCskIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTMxIiwgInBhdHRlcm4iOiAiXlxcZCskIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJIVFRQIHBvcnQiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICI4MDgwIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiSFRUUCBwb3J0IG51bWJlciB3aGljaCBidW5rZXJ3ZWIgYmluZHMgdG8uIn1dfSwgIkhUVFBTX1BPUlQiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAiODQ0MyIsICJoZWxwIjogIkhUVFBTIHBvcnQgbnVtYmVyIHdoaWNoIGJ1bmtlcndlYiBiaW5kcyB0by4iLCAiaWQiOiAiaHR0cHMtcG9ydCIsICJsYWJlbCI6ICJIVFRQUyBwb3J0IiwgInJlZ2V4IjogIl5cXGQrJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0zMCIsICJwYXR0ZXJuIjogIl5cXGQrJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiSFRUUFMgcG9ydCIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIjg0NDMiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJIVFRQUyBwb3J0IG51bWJlciB3aGljaCBidW5rZXJ3ZWIgYmluZHMgdG8uIn1dfSwgIk1VTFRJU0lURSI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICJubyIsICJoZWxwIjogIk11bHRpIHNpdGUgYWN0aXZhdGlvbi4iLCAiaWQiOiAibXVsdGlzaXRlIiwgImxhYmVsIjogIk11bHRpc2l0ZSIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei0yOSIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIk11bHRpc2l0ZSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIm5vIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTXVsdGkgc2l0ZSBhY3RpdmF0aW9uLiJ9XX0sICJTRVJWRVJfTkFNRSI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJ3d3cuZXhhbXBsZS5jb20iLCAiaGVscCI6ICJMaXN0IG9mIHRoZSB2aXJ0dWFsIGhvc3RzIHNlcnZlZCBieSBidW5rZXJ3ZWIuIiwgImlkIjogInNlcnZlci1uYW1lIiwgImxhYmVsIjogIlNlcnZlciBuYW1lIiwgInJlZ2V4IjogIl4oKFxcU3sxLDI1NX0pKD8hLipcXHNcXDIoXFxzfCQpKSk/KFxccyhcXFN7MSwyNTV9KSg/IS4qXFxzXFw1KFxcc3wkKSkpKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMjgiLCAicGF0dGVybiI6ICJeKChcXFN7MSwyNTV9KSg/IS4qXFxzXFwyKFxcc3wkKSkpPyhcXHMoXFxTezEsMjU1fSkoPyEuKlxcc1xcNShcXHN8JCkpKSokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJTZXJ2ZXIgbmFtZSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogInd3dy5leGFtcGxlLmNvbSIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTGlzdCBvZiB0aGUgdmlydHVhbCBob3N0cyBzZXJ2ZWQgYnkgYnVua2Vyd2ViLiJ9XX0sICJXT1JLRVJfUFJPQ0VTU0VTIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogImF1dG8iLCAiaGVscCI6ICJOdW1iZXIgb2Ygd29ya2VyIHByb2Nlc3Nlcy4iLCAiaWQiOiAid29ya2VyLXByb2Nlc3NlcyIsICJsYWJlbCI6ICJXb3JrZXIgcHJvY2Vzc2VzIiwgInJlZ2V4IjogIl4oYXV0b3xcXGQrKSQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMjciLCAicGF0dGVybiI6ICJeKGF1dG98XFxkKykkIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJXb3JrZXIgcHJvY2Vzc2VzIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiYXV0byIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIk51bWJlciBvZiB3b3JrZXIgcHJvY2Vzc2VzLiJ9XX0sICJXT1JLRVJfUkxJTUlUX05PRklMRSI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICIyMDQ4IiwgImhlbHAiOiAiTWF4aW11bSBudW1iZXIgb2Ygb3BlbiBmaWxlcyBmb3Igd29ya2VyIHByb2Nlc3Nlcy4iLCAiaWQiOiAid29ya2VyLXJsaW1pdC1ub2ZpbGUiLCAibGFiZWwiOiAiT3BlbiBmaWxlcyBwZXIgd29ya2VyIiwgInJlZ2V4IjogIl5cXGQrJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0yNiIsICJwYXR0ZXJuIjogIl5cXGQrJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiT3BlbiBmaWxlcyBwZXIgd29ya2VyIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiMjA0OCIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIk1heGltdW0gbnVtYmVyIG9mIG9wZW4gZmlsZXMgZm9yIHdvcmtlciBwcm9jZXNzZXMuIn1dfSwgIldPUktFUl9DT05ORUNUSU9OUyI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICIxMDI0IiwgImhlbHAiOiAiTWF4aW11bSBudW1iZXIgb2YgY29ubmVjdGlvbnMgcGVyIHdvcmtlci4iLCAiaWQiOiAid29ya2VyLWNvbm5lY3Rpb25zIiwgImxhYmVsIjogIkNvbm5lY3Rpb25zIHBlciB3b3JrZXIiLCAicmVnZXgiOiAiXlxcZCskIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTI1IiwgInBhdHRlcm4iOiAiXlxcZCskIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJDb25uZWN0aW9ucyBwZXIgd29ya2VyIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiMTAyNCIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIk1heGltdW0gbnVtYmVyIG9mIGNvbm5lY3Rpb25zIHBlciB3b3JrZXIuIn1dfSwgIkxPR19GT1JNQVQiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAiJGhvc3QgJHJlbW90ZV9hZGRyIC0gJHJlbW90ZV91c2VyIFskdGltZV9sb2NhbF0gXCIkcmVxdWVzdFwiICRzdGF0dXMgJGJvZHlfYnl0ZXNfc2VudCBcIiRodHRwX3JlZmVyZXJcIiBcIiRodHRwX3VzZXJfYWdlbnRcIiIsICJoZWxwIjogIlRoZSBmb3JtYXQgdG8gdXNlIGZvciBhY2Nlc3MgbG9ncy4iLCAiaWQiOiAibG9nLWZvcm1hdCIsICJsYWJlbCI6ICJMb2cgZm9ybWF0IiwgInJlZ2V4IjogIl4uKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMjQiLCAicGF0dGVybiI6ICJeLiokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJMb2cgZm9ybWF0IiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiJGhvc3QgJHJlbW90ZV9hZGRyIC0gJHJlbW90ZV91c2VyIFskdGltZV9sb2NhbF0gXCIkcmVxdWVzdFwiICRzdGF0dXMgJGJvZHlfYnl0ZXNfc2VudCBcIiRodHRwX3JlZmVyZXJcIiBcIiRodHRwX3VzZXJfYWdlbnRcIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlRoZSBmb3JtYXQgdG8gdXNlIGZvciBhY2Nlc3MgbG9ncy4ifV19LCAiTE9HX0xFVkVMIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIm5vdGljZSIsICJoZWxwIjogIlRoZSBsZXZlbCB0byB1c2UgZm9yIGVycm9yIGxvZ3MuIiwgImlkIjogImxvZy1sZXZlbCIsICJsYWJlbCI6ICJMb2cgbGV2ZWwiLCAicmVnZXgiOiAiXihkZWJ1Z3xpbmZvfG5vdGljZXx3YXJufGVycm9yfGNyaXR8YWxlcnR8ZW1lcmcpJCIsICJ0eXBlIjogInNlbGVjdCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTIzIiwgInBhdHRlcm4iOiAiXihkZWJ1Z3xpbmZvfG5vdGljZXx3YXJufGVycm9yfGNyaXR8YWxlcnR8ZW1lcmcpJCIsICJpbnBUeXBlIjogInNlbGVjdCIsICJuYW1lIjogIkxvZyBsZXZlbCIsICJ2YWx1ZXMiOiBbImFsZXJ0IiwgImNyaXQiLCAiZGVidWciLCAiZW1lcmciLCAiZXJyb3IiLCAiaW5mbyIsICJub3RpY2UiLCAid2FybiJdLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJub3RpY2UiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJUaGUgbGV2ZWwgdG8gdXNlIGZvciBlcnJvciBsb2dzLiJ9XX0sICJETlNfUkVTT0xWRVJTIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIjEyNy4wLjAuMTEiLCAiaGVscCI6ICJETlMgYWRkcmVzc2VzIG9mIHJlc29sdmVycyB0byB1c2UuIiwgImlkIjogImRucy1yZXNvbHZlcnMiLCAibGFiZWwiOiAiRE5TIHJlc29sdmVycyIsICJyZWdleCI6ICJeKD8hICkoKCAqW14gXSspKD8hLipcXDIpKSokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTIyIiwgInBhdHRlcm4iOiAiXig/ISApKCggKlteIF0rKSg/IS4qXFwyKSkqJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiRE5TIHJlc29sdmVycyIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIjEyNy4wLjAuMTEiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJETlMgYWRkcmVzc2VzIG9mIHJlc29sdmVycyB0byB1c2UuIn1dfSwgIkRBVEFTVE9SRV9NRU1PUllfU0laRSI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICI2NG0iLCAiaGVscCI6ICJTaXplIG9mIHRoZSBpbnRlcm5hbCBkYXRhc3RvcmUuIiwgImlkIjogImRhdGFzdG9yZS1tZW1vcnktc2l6ZSIsICJsYWJlbCI6ICJEYXRhc3RvcmUgbWVtb3J5IHNpemUiLCAicmVnZXgiOiAiXlxcZCtba0ttTWdHXT8kIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTIxIiwgInBhdHRlcm4iOiAiXlxcZCtba0ttTWdHXT8kIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJEYXRhc3RvcmUgbWVtb3J5IHNpemUiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICI2NG0iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJTaXplIG9mIHRoZSBpbnRlcm5hbCBkYXRhc3RvcmUuIn1dfSwgIkNBQ0hFU1RPUkVfTUVNT1JZX1NJWkUiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAiNjRtIiwgImhlbHAiOiAiU2l6ZSBvZiB0aGUgaW50ZXJuYWwgY2FjaGVzdG9yZS4iLCAiaWQiOiAiY2FjaGVzdG9yZS1tZW1vcnktc2l6ZSIsICJsYWJlbCI6ICJDYWNoZXN0b3JlIG1lbW9yeSBzaXplIiwgInJlZ2V4IjogIl5cXGQrW2tLbU1nR10/JCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0yMCIsICJwYXR0ZXJuIjogIl5cXGQrW2tLbU1nR10/JCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiQ2FjaGVzdG9yZSBtZW1vcnkgc2l6ZSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIjY0bSIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlNpemUgb2YgdGhlIGludGVybmFsIGNhY2hlc3RvcmUuIn1dfSwgIkNBQ0hFU1RPUkVfSVBDX01FTU9SWV9TSVpFIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIjE2bSIsICJoZWxwIjogIlNpemUgb2YgdGhlIGludGVybmFsIGNhY2hlc3RvcmUgKGlwYykuIiwgImlkIjogImNhY2hlc3RvcmUtaXBjLW1lbW9yeS1zaXplIiwgImxhYmVsIjogIkNhY2hlc3RvcmUgaXBjIG1lbW9yeSBzaXplIiwgInJlZ2V4IjogIl5cXGQrW2tLbU1nR10/JCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xOSIsICJwYXR0ZXJuIjogIl5cXGQrW2tLbU1nR10/JCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiQ2FjaGVzdG9yZSBpcGMgbWVtb3J5IHNpemUiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIxNm0iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJTaXplIG9mIHRoZSBpbnRlcm5hbCBjYWNoZXN0b3JlIChpcGMpLiJ9XX0sICJDQUNIRVNUT1JFX01JU1NfTUVNT1JZX1NJWkUiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAiMTZtIiwgImhlbHAiOiAiU2l6ZSBvZiB0aGUgaW50ZXJuYWwgY2FjaGVzdG9yZSAobWlzcykuIiwgImlkIjogImNhY2hlc3RvcmUtbWlzcy1tZW1vcnktc2l6ZSIsICJsYWJlbCI6ICJDYWNoZXN0b3JlIG1pc3MgbWVtb3J5IHNpemUiLCAicmVnZXgiOiAiXlxcZCtba0ttTWdHXT8kIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTE4IiwgInBhdHRlcm4iOiAiXlxcZCtba0ttTWdHXT8kIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJDYWNoZXN0b3JlIG1pc3MgbWVtb3J5IHNpemUiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIxNm0iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJTaXplIG9mIHRoZSBpbnRlcm5hbCBjYWNoZXN0b3JlIChtaXNzKS4ifV19LCAiQ0FDSEVTVE9SRV9MT0NLU19NRU1PUllfU0laRSI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICIxNm0iLCAiaGVscCI6ICJTaXplIG9mIHRoZSBpbnRlcm5hbCBjYWNoZXN0b3JlIChsb2NrcykuIiwgImlkIjogImNhY2hlc3RvcmUtbG9ja3MtbWVtb3J5LXNpemUiLCAibGFiZWwiOiAiQ2FjaGVzdG9yZSBsb2NrcyBtZW1vcnkgc2l6ZSIsICJyZWdleCI6ICJeXFxkK1trS21NZ0ddPyQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMTciLCAicGF0dGVybiI6ICJeXFxkK1trS21NZ0ddPyQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkNhY2hlc3RvcmUgbG9ja3MgbWVtb3J5IHNpemUiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIxNm0iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJTaXplIG9mIHRoZSBpbnRlcm5hbCBjYWNoZXN0b3JlIChsb2NrcykuIn1dfSwgIlVTRV9BUEkiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAieWVzIiwgImhlbHAiOiAiQWN0aXZhdGUgdGhlIEFQSSB0byBjb250cm9sIEJ1bmtlcldlYi4iLCAiaWQiOiAidXNlLWFwaSIsICJsYWJlbCI6ICJBY3RpdmF0ZSBBUEkiLCAicmVnZXgiOiAiXih5ZXN8bm8pJCIsICJ0eXBlIjogImNoZWNrIiwgImNvbnRhaW5lckNsYXNzIjogInotMTYiLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJBY3RpdmF0ZSBBUEkiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJ5ZXMiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJBY3RpdmF0ZSB0aGUgQVBJIHRvIGNvbnRyb2wgQnVua2VyV2ViLiJ9XX0sICJBUElfSFRUUF9QT1JUIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIjUwMDAiLCAiaGVscCI6ICJMaXN0ZW4gcG9ydCBudW1iZXIgZm9yIHRoZSBBUEkuIiwgImlkIjogImFwaS1odHRwLWxpc3RlbiIsICJsYWJlbCI6ICJBUEkgcG9ydCBudW1iZXIiLCAicmVnZXgiOiAiXlxcZCskIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTE1IiwgInBhdHRlcm4iOiAiXlxcZCskIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJBUEkgcG9ydCBudW1iZXIiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICI1MDAwIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTGlzdGVuIHBvcnQgbnVtYmVyIGZvciB0aGUgQVBJLiJ9XX0sICJBUElfTElTVEVOX0lQIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIjAuMC4wLjAiLCAiaGVscCI6ICJMaXN0ZW4gSVAgYWRkcmVzcyBmb3IgdGhlIEFQSS4iLCAiaWQiOiAiYXBpLWlwLWxpc3RlbiIsICJsYWJlbCI6ICJBUEkgbGlzdGVuIElQIiwgInJlZ2V4IjogIl4uKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMTQiLCAicGF0dGVybiI6ICJeLiokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJBUEkgbGlzdGVuIElQIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiMC4wLjAuMCIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkxpc3RlbiBJUCBhZGRyZXNzIGZvciB0aGUgQVBJLiJ9XX0sICJBUElfU0VSVkVSX05BTUUiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAiYndhcGkiLCAiaGVscCI6ICJTZXJ2ZXIgbmFtZSAodmlydHVhbCBob3N0KSBmb3IgdGhlIEFQSS4iLCAiaWQiOiAiYXBpLXNlcnZlci1uYW1lIiwgImxhYmVsIjogIkFQSSBzZXJ2ZXIgbmFtZSIsICJyZWdleCI6ICJeW14gXXsxLDI1NX0kIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTEzIiwgInBhdHRlcm4iOiAiXlteIF17MSwyNTV9JCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiQVBJIHNlcnZlciBuYW1lIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiYndhcGkiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJTZXJ2ZXIgbmFtZSAodmlydHVhbCBob3N0KSBmb3IgdGhlIEFQSS4ifV19LCAiQVBJX1dISVRFTElTVF9JUCI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICIxMjcuMC4wLjAvOCIsICJoZWxwIjogIkxpc3Qgb2YgSVAvbmV0d29yayBhbGxvd2VkIHRvIGNvbnRhY3QgdGhlIEFQSS4iLCAiaWQiOiAiYXBpLXdoaXRlbGlzdC1pcCIsICJsYWJlbCI6ICJBUEkgd2hpdGVsaXN0IElQIiwgInJlZ2V4IjogIl4oPyEgKSggKigoKFxcYjI1WzAtNV18XFxiMlswLTRdXFxkfFxcYlswMV0/XFxkXFxkPykoXFwuKDI1WzAtNV18MlswLTRdXFxkfFswMV0/XFxkXFxkPykpezN9KShcXC8oWzEtMl1bMC05XT98M1swLTJdP3xbMDQtOV0pKT98KChbMC05YS1mQS1GXXsxLDR9Oil7N31bMC05YS1mQS1GXXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw3fTp8KFswLTlhLWZBLUZdezEsNH06KXsxLDZ9OlswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDV9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDJ9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw0fSg6WzAtOWEtZkEtRl17MSw0fSl7MSwzfXwoWzAtOWEtZkEtRl17MSw0fTopezEsM30oOlswLTlhLWZBLUZdezEsNH0pezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDJ9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDV9fFswLTlhLWZBLUZdezEsNH06KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw2fSl8OigoOlswLTlhLWZBLUZdezEsNH0pezEsN318Oil8ZmU4MDooOlswLTlhLWZBLUZdWnswLDR9KXswLDR9JVswLTlhLXpBLVpdK3w6OihmZmZmKDowezEsNH0pPzopPygoMjVbMC01XXwoMlswLTRdfDE/XFxkKT9cXGQpXFwuKXszfSgyNVswLTVdfCgyWzAtNF18MT9cXGQpP1xcZCl8KFswLTlhLWZBLUZdezEsNH06KXsxLDR9OigoMjVbMC01XXwoMlswLTRdfDE/XFxkKT9cXGQpXFwuKXszfSgyNVswLTVdfCgyWzAtNF18MT9cXGQpP1xcZCkpKFxcLygxMlswLThdfDFbMDFdWzAtOV18WzAtOV1bMC05XT8pKT8pKD8hLipcXERcXDIoW15cXGRcXC9dfCQpKSAqKSokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTEyIiwgInBhdHRlcm4iOiAiXig/ISApKCAqKCgoXFxiMjVbMC01XXxcXGIyWzAtNF1cXGR8XFxiWzAxXT9cXGRcXGQ/KShcXC4oMjVbMC01XXwyWzAtNF1cXGR8WzAxXT9cXGRcXGQ/KSl7M30pKFxcLyhbMS0yXVswLTldP3wzWzAtMl0/fFswNC05XSkpP3woKFswLTlhLWZBLUZdezEsNH06KXs3fVswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDd9OnwoWzAtOWEtZkEtRl17MSw0fTopezEsNn06WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsNX0oOlswLTlhLWZBLUZdezEsNH0pezEsMn18KFswLTlhLWZBLUZdezEsNH06KXsxLDR9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDN9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwzfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsMn0oOlswLTlhLWZBLUZdezEsNH0pezEsNX18WzAtOWEtZkEtRl17MSw0fTooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDZ9KXw6KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw3fXw6KXxmZTgwOig6WzAtOWEtZkEtRl1aezAsNH0pezAsNH0lWzAtOWEtekEtWl0rfDo6KGZmZmYoOjB7MSw0fSk/Oik/KCgyNVswLTVdfCgyWzAtNF18MT9cXGQpP1xcZClcXC4pezN9KDI1WzAtNV18KDJbMC00XXwxP1xcZCk/XFxkKXwoWzAtOWEtZkEtRl17MSw0fTopezEsNH06KCgyNVswLTVdfCgyWzAtNF18MT9cXGQpP1xcZClcXC4pezN9KDI1WzAtNV18KDJbMC00XXwxP1xcZCk/XFxkKSkoXFwvKDEyWzAtOF18MVswMV1bMC05XXxbMC05XVswLTldPykpPykoPyEuKlxcRFxcMihbXlxcZFxcL118JCkpICopKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkFQSSB3aGl0ZWxpc3QgSVAiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIxMjcuMC4wLjAvOCIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkxpc3Qgb2YgSVAvbmV0d29yayBhbGxvd2VkIHRvIGNvbnRhY3QgdGhlIEFQSS4ifV19LCAiQVVUT0NPTkZfTU9ERSI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICJubyIsICJoZWxwIjogIkVuYWJsZSBBdXRvY29uZiBEb2NrZXIgaW50ZWdyYXRpb24uIiwgImlkIjogImF1dG9jb25mLW1vZGUiLCAibGFiZWwiOiAiQXV0b2NvbmYgbW9kZSIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xMSIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIkF1dG9jb25mIG1vZGUiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJubyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkVuYWJsZSBBdXRvY29uZiBEb2NrZXIgaW50ZWdyYXRpb24uIn1dfSwgIlNXQVJNX01PREUiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAibm8iLCAiaGVscCI6ICJFbmFibGUgRG9ja2VyIFN3YXJtIGludGVncmF0aW9uLiIsICJpZCI6ICJzd2FybS1tb2RlIiwgImxhYmVsIjogIlN3YXJtIG1vZGUiLCAicmVnZXgiOiAiXih5ZXN8bm8pJCIsICJ0eXBlIjogImNoZWNrIiwgImNvbnRhaW5lckNsYXNzIjogInotMTAiLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJTd2FybSBtb2RlIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAibm8iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJFbmFibGUgRG9ja2VyIFN3YXJtIGludGVncmF0aW9uLiJ9XX0sICJLVUJFUk5FVEVTX01PREUiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAibm8iLCAiaGVscCI6ICJFbmFibGUgS3ViZXJuZXRlcyBpbnRlZ3JhdGlvbi4iLCAiaWQiOiAia3ViZXJuZXRlcy1tb2RlIiwgImxhYmVsIjogIkt1YmVybmV0ZXMgbW9kZSIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei05IiwgInBhdHRlcm4iOiAiXih5ZXN8bm8pJCIsICJpbnBUeXBlIjogImNoZWNrYm94IiwgIm5hbWUiOiAiS3ViZXJuZXRlcyBtb2RlIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAibm8iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJFbmFibGUgS3ViZXJuZXRlcyBpbnRlZ3JhdGlvbi4ifV19LCAiU0VSVkVSX1RZUEUiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiaHR0cCIsICJoZWxwIjogIlNlcnZlciB0eXBlIDogaHR0cCBvciBzdHJlYW0uIiwgImlkIjogInNlcnZlci10eXBlIiwgImxhYmVsIjogIlNlcnZlciB0eXBlIiwgInJlZ2V4IjogIl4oaHR0cHxzdHJlYW0pJCIsICJ0eXBlIjogInNlbGVjdCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTgiLCAicGF0dGVybiI6ICJeKGh0dHB8c3RyZWFtKSQiLCAiaW5wVHlwZSI6ICJzZWxlY3QiLCAibmFtZSI6ICJTZXJ2ZXIgdHlwZSIsICJ2YWx1ZXMiOiBbImh0dHAiLCAic3RyZWFtIl0sICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogImh0dHAiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlNlcnZlciB0eXBlIDogaHR0cCBvciBzdHJlYW0uIn1dfSwgIkxJU1RFTl9TVFJFQU0iOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAieWVzIiwgImhlbHAiOiAiRW5hYmxlIGxpc3RlbmluZyBmb3Igbm9uLXNzbCAocGFzc3Rocm91Z2gpLiIsICJpZCI6ICJsaXN0ZW4tc3RyZWFtIiwgImxhYmVsIjogIkxpc3RlbiBzdHJlYW0iLCAicmVnZXgiOiAiXih5ZXN8bm8pJCIsICJ0eXBlIjogImNoZWNrIiwgImNvbnRhaW5lckNsYXNzIjogInotNyIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIkxpc3RlbiBzdHJlYW0iLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJ5ZXMiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkVuYWJsZSBsaXN0ZW5pbmcgZm9yIG5vbi1zc2wgKHBhc3N0aHJvdWdoKS4ifV19LCAiTElTVEVOX1NUUkVBTV9QT1JUIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIjEzMzciLCAiaGVscCI6ICJMaXN0ZW5pbmcgcG9ydCBmb3Igbm9uLXNzbCAocGFzc3Rocm91Z2gpLiIsICJpZCI6ICJsaXN0ZW4tc3RyZWFtLXBvcnQiLCAibGFiZWwiOiAiTGlzdGVuIHN0cmVhbSBwb3J0IiwgInJlZ2V4IjogIl5bMC05XSskIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTYiLCAicGF0dGVybiI6ICJeWzAtOV0rJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiTGlzdGVuIHN0cmVhbSBwb3J0IiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiMTMzNyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTGlzdGVuaW5nIHBvcnQgZm9yIG5vbi1zc2wgKHBhc3N0aHJvdWdoKS4ifV19LCAiTElTVEVOX1NUUkVBTV9QT1JUX1NTTCI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICI0MjQyIiwgImhlbHAiOiAiTGlzdGVuaW5nIHBvcnQgZm9yIHNzbCAocGFzc3Rocm91Z2gpLiIsICJpZCI6ICJsaXN0ZW4tc3RyZWFtLXBvcnQtc3NsIiwgImxhYmVsIjogIkxpc3RlbiBzdHJlYW0gcG9ydCBzc2wiLCAicmVnZXgiOiAiXlswLTldKyQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotNSIsICJwYXR0ZXJuIjogIl5bMC05XSskIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJMaXN0ZW4gc3RyZWFtIHBvcnQgc3NsIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiNDI0MiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTGlzdGVuaW5nIHBvcnQgZm9yIHNzbCAocGFzc3Rocm91Z2gpLiJ9XX0sICJVU0VfVURQIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIm5vIiwgImhlbHAiOiAiVURQIGxpc3RlbiBpbnN0ZWFkIG9mIFRDUCAoc3RyZWFtKS4iLCAiaWQiOiAidXNlLXVkcCIsICJsYWJlbCI6ICJMaXN0ZW4gVURQIiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJjb250YWluZXJDbGFzcyI6ICJ6LTQiLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJMaXN0ZW4gVURQIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAibm8iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlVEUCBsaXN0ZW4gaW5zdGVhZCBvZiBUQ1AgKHN0cmVhbSkuIn1dfSwgIlVTRV9JUFY2IjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIm5vIiwgImhlbHAiOiAiRW5hYmxlIElQdjYgY29ubmVjdGl2aXR5LiIsICJpZCI6ICJ1c2UtaXB2NiIsICJsYWJlbCI6ICJVc2UgSVB2NiIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei0zIiwgInBhdHRlcm4iOiAiXih5ZXN8bm8pJCIsICJpbnBUeXBlIjogImNoZWNrYm94IiwgIm5hbWUiOiAiVXNlIElQdjYiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJubyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkVuYWJsZSBJUHY2IGNvbm5lY3Rpdml0eS4ifV19LCAiSVNfRFJBRlQiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAibm8iLCAiaGVscCI6ICJJbnRlcm5hbCB1c2UgOiBzZXQgdG8geWVzIHdoZW4gdGhlIHNlcnZpY2UgaXMgaW4gZHJhZnQgbW9kZS4iLCAiaWQiOiAiaW50ZXJuYWwtdXNlLWRyYWZ0IiwgImxhYmVsIjogImludGVybmFsIHVzZSBkcmFmdCIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei0yIiwgInBhdHRlcm4iOiAiXih5ZXN8bm8pJCIsICJpbnBUeXBlIjogImNoZWNrYm94IiwgIm5hbWUiOiAiaW50ZXJuYWwgdXNlIGRyYWZ0IiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAibm8iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkludGVybmFsIHVzZSA6IHNldCB0byB5ZXMgd2hlbiB0aGUgc2VydmljZSBpcyBpbiBkcmFmdCBtb2RlLiJ9XX0sICJUSU1FUlNfTE9HX0xFVkVMIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogImRlYnVnIiwgImhlbHAiOiAiTG9nIGxldmVsIGZvciB0aW1lcnMuIiwgImlkIjogInRpbWVycy1sb2ctbGV2ZWwiLCAibGFiZWwiOiAiVGltZXJzIGxvZyBsZXZlbCIsICJyZWdleCI6ICJeKGRlYnVnfGluZm98bm90aWNlfHdhcm58ZXJyfGNyaXR8YWxlcnR8ZW1lcmcpJCIsICJ0eXBlIjogInNlbGVjdCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTEiLCAicGF0dGVybiI6ICJeKGRlYnVnfGluZm98bm90aWNlfHdhcm58ZXJyfGNyaXR8YWxlcnR8ZW1lcmcpJCIsICJpbnBUeXBlIjogInNlbGVjdCIsICJuYW1lIjogIlRpbWVycyBsb2cgbGV2ZWwiLCAidmFsdWVzIjogWyJhbGVydCIsICJjcml0IiwgImRlYnVnIiwgImVtZXJnIiwgImVyciIsICJpbmZvIiwgIm5vdGljZSIsICJ3YXJuIl0sICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogImRlYnVnIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTG9nIGxldmVsIGZvciB0aW1lcnMuIn1dfSwgIkJVTktFUldFQl9JTlNUQU5DRVMiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAiMTI3LjAuMC4xIiwgImhlbHAiOiAiTGlzdCBvZiBCdW5rZXJXZWIgaW5zdGFuY2VzIHNlcGFyYXRlZCB3aXRoIHNwYWNlcyAoZm9ybWF0IDogZnFkbi1vci1pcDo1MDAwIGh0dHA6Ly9mcWRuLW9yLWlwOjUwMDApIiwgImlkIjogImJ1bmtlcndlYi1pbnN0YW5jZXMiLCAibGFiZWwiOiAiQnVua2VyV2ViIGluc3RhbmNlcyIsICJyZWdleCI6ICJeLiokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTAiLCAicGF0dGVybiI6ICJeLiokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJCdW5rZXJXZWIgaW5zdGFuY2VzIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiMTI3LjAuMC4xIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTGlzdCBvZiBCdW5rZXJXZWIgaW5zdGFuY2VzIHNlcGFyYXRlZCB3aXRoIHNwYWNlcyAoZm9ybWF0IDogZnFkbi1vci1pcDo1MDAwIGh0dHA6Ly9mcWRuLW9yLWlwOjUwMDApIn1dfX0sICJjaGVja3N1bSI6IG51bGwsICJtdWx0aXBsZXMiOiB7fX0sIHsiaWQiOiAiYW50aWJvdCIsICJzdHJlYW0iOiAibm8iLCAibmFtZSI6ICJBbnRpYm90IiwgImRlc2NyaXB0aW9uIjogIkJvdCBkZXRlY3Rpb24gYnkgdXNpbmcgYSBjaGFsbGVuZ2UuIiwgInZlcnNpb24iOiAiMS4wIiwgInR5cGUiOiAiY29yZSIsICJtZXRob2QiOiAibWFudWFsIiwgInBhZ2UiOiB0cnVlLCAic2V0dGluZ3MiOiB7IlVTRV9BTlRJQk9UIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIm5vIiwgImhlbHAiOiAiQWN0aXZhdGUgYW50aWJvdCBmZWF0dXJlLiIsICJpZCI6ICJ1c2UtYW50aWJvdCIsICJsYWJlbCI6ICJBbnRpYm90IGNoYWxsZW5nZSIsICJyZWdleCI6ICJeKG5vfGNvb2tpZXxqYXZhc2NyaXB0fGNhcHRjaGF8cmVjYXB0Y2hhfGhjYXB0Y2hhfHR1cm5zdGlsZSkkIiwgInR5cGUiOiAic2VsZWN0IiwgImNvbnRhaW5lckNsYXNzIjogInotMTAiLCAicGF0dGVybiI6ICJeKG5vfGNvb2tpZXxqYXZhc2NyaXB0fGNhcHRjaGF8cmVjYXB0Y2hhfGhjYXB0Y2hhfHR1cm5zdGlsZSkkIiwgImlucFR5cGUiOiAic2VsZWN0IiwgIm5hbWUiOiAiQW50aWJvdCBjaGFsbGVuZ2UiLCAidmFsdWVzIjogWyJjYXB0Y2hhIiwgImNvb2tpZSIsICJoY2FwdGNoYSIsICJqYXZhc2NyaXB0IiwgIm5vIiwgInJlY2FwdGNoYSIsICJ0dXJuc3RpbGUiXSwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAibm8iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkFjdGl2YXRlIGFudGlib3QgZmVhdHVyZS4ifV19LCAiQU5USUJPVF9VUkkiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiL2NoYWxsZW5nZSIsICJoZWxwIjogIlVudXNlZCBVUkkgdGhhdCBjbGllbnRzIHdpbGwgYmUgcmVkaXJlY3RlZCB0byB0byBzb2x2ZSB0aGUgY2hhbGxlbmdlLiIsICJpZCI6ICJhbnRpYm90LXVyaSIsICJsYWJlbCI6ICJBbnRpYm90IFVSTCIsICJyZWdleCI6ICJeXFwvW1xcd1xcXS5+OlxcLz8jXFxbQCEkXFwmJ1xcKFxcKSorLDs9XFwtXSokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTkiLCAicGF0dGVybiI6ICJeXFwvW1xcd1xcXS5+OlxcLz8jXFxbQCEkXFwmJ1xcKFxcKSorLDs9XFwtXSokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJBbnRpYm90IFVSTCIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIi9jaGFsbGVuZ2UiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlVudXNlZCBVUkkgdGhhdCBjbGllbnRzIHdpbGwgYmUgcmVkaXJlY3RlZCB0byB0byBzb2x2ZSB0aGUgY2hhbGxlbmdlLiJ9XX0sICJBTlRJQk9UX1RJTUVfUkVTT0xWRSI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICI2MCIsICJoZWxwIjogIk1heGltdW0gdGltZSAoaW4gc2Vjb25kcykgY2xpZW50cyBoYXZlIHRvIHJlc29sdmUgdGhlIGNoYWxsZW5nZS4gT25jZSB0aGlzIHRpbWUgaGFzIHBhc3NlZCwgYSBuZXcgY2hhbGxlbmdlIHdpbGwgYmUgZ2VuZXJhdGVkLiIsICJpZCI6ICJhbnRpYm90LXRpbWUtcmVzb2x2ZSIsICJsYWJlbCI6ICJUaW1lIHRvIHJlc29sdmUiLCAicmVnZXgiOiAiXlswLTldKyQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotOCIsICJwYXR0ZXJuIjogIl5bMC05XSskIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJUaW1lIHRvIHJlc29sdmUiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICI2MCIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTWF4aW11bSB0aW1lIChpbiBzZWNvbmRzKSBjbGllbnRzIGhhdmUgdG8gcmVzb2x2ZSB0aGUgY2hhbGxlbmdlLiBPbmNlIHRoaXMgdGltZSBoYXMgcGFzc2VkLCBhIG5ldyBjaGFsbGVuZ2Ugd2lsbCBiZSBnZW5lcmF0ZWQuIn1dfSwgIkFOVElCT1RfVElNRV9WQUxJRCI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICI4NjQwMCIsICJoZWxwIjogIk1heGltdW0gdmFsaWRpdHkgdGltZSBvZiBzb2x2ZWQgY2hhbGxlbmdlcy4gT25jZSB0aGlzIHRpbWUgaGFzIHBhc3NlZCwgY2xpZW50cyB3aWxsIG5lZWQgdG8gcmVzb2x2ZSBhIG5ldyBvbmUuIiwgImlkIjogImFudGlib3QtdGltZS12YWxpZCIsICJsYWJlbCI6ICJUaW1lIHZhbGlkIiwgInJlZ2V4IjogIl5bMC05XSskIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTciLCAicGF0dGVybiI6ICJeWzAtOV0rJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiVGltZSB2YWxpZCIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIjg2NDAwIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJNYXhpbXVtIHZhbGlkaXR5IHRpbWUgb2Ygc29sdmVkIGNoYWxsZW5nZXMuIE9uY2UgdGhpcyB0aW1lIGhhcyBwYXNzZWQsIGNsaWVudHMgd2lsbCBuZWVkIHRvIHJlc29sdmUgYSBuZXcgb25lLiJ9XX0sICJBTlRJQk9UX1JFQ0FQVENIQV9TQ09SRSI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIwLjciLCAiaGVscCI6ICJNaW5pbXVtIHNjb3JlIHJlcXVpcmVkIGZvciByZUNBUFRDSEEgY2hhbGxlbmdlLiIsICJpZCI6ICJhbnRpYm90LXJlY2FwdGNoYS1zY29yZSIsICJsYWJlbCI6ICJyZUNBUFRDSEEgc2NvcmUiLCAicmVnZXgiOiAiXigwXFwuWzEtOV18MVxcLjApJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei02IiwgInBhdHRlcm4iOiAiXigwXFwuWzEtOV18MVxcLjApJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAicmVDQVBUQ0hBIHNjb3JlIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiMC43IiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJNaW5pbXVtIHNjb3JlIHJlcXVpcmVkIGZvciByZUNBUFRDSEEgY2hhbGxlbmdlLiJ9XX0sICJBTlRJQk9UX1JFQ0FQVENIQV9TSVRFS0VZIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIlNpdGVrZXkgZm9yIHJlQ0FQVENIQSBjaGFsbGVuZ2UuIiwgImlkIjogImFudGlib3QtcmVjYXB0Y2hhLXNpdGVrZXkiLCAibGFiZWwiOiAicmVDQVBUQ0hBIHNpdGVrZXkiLCAicmVnZXgiOiAiXltcXHdcXC1dKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotNSIsICJwYXR0ZXJuIjogIl5bXFx3XFwtXSokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJyZUNBUFRDSEEgc2l0ZWtleSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiU2l0ZWtleSBmb3IgcmVDQVBUQ0hBIGNoYWxsZW5nZS4ifV19LCAiQU5USUJPVF9SRUNBUFRDSEFfU0VDUkVUIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIlNlY3JldCBmb3IgcmVDQVBUQ0hBIGNoYWxsZW5nZS4iLCAiaWQiOiAiYW50aWJvdC1yZWNhcHRjaGEtc2VjcmV0IiwgImxhYmVsIjogInJlQ0FQVENIQSBzZWNyZXQiLCAicmVnZXgiOiAiXltcXHdcXC1dKiQiLCAidHlwZSI6ICJwYXNzd29yZCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTQiLCAicGF0dGVybiI6ICJeW1xcd1xcLV0qJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAicmVDQVBUQ0hBIHNlY3JldCIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiU2VjcmV0IGZvciByZUNBUFRDSEEgY2hhbGxlbmdlLiJ9XX0sICJBTlRJQk9UX0hDQVBUQ0hBX1NJVEVLRVkiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiU2l0ZWtleSBmb3IgaENhcHRjaGEgY2hhbGxlbmdlLiIsICJpZCI6ICJhbnRpYm90LWhjYXB0Y2hhLXNpdGVrZXkiLCAibGFiZWwiOiAiaENhcHRjaGEgc2l0ZWtleSIsICJyZWdleCI6ICJeW2EtekEtWjAtOVxcLV0qJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0zIiwgInBhdHRlcm4iOiAiXlthLXpBLVowLTlcXC1dKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogImhDYXB0Y2hhIHNpdGVrZXkiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlNpdGVrZXkgZm9yIGhDYXB0Y2hhIGNoYWxsZW5nZS4ifV19LCAiQU5USUJPVF9IQ0FQVENIQV9TRUNSRVQiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiU2VjcmV0IGZvciBoQ2FwdGNoYSBjaGFsbGVuZ2UuIiwgImlkIjogImFudGlib3QtaGNhcHRjaGEtc2VjcmV0IiwgImxhYmVsIjogImhDYXB0Y2hhIHNlY3JldCIsICJyZWdleCI6ICJeXFx3KiQiLCAidHlwZSI6ICJwYXNzd29yZCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTIiLCAicGF0dGVybiI6ICJeXFx3KiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogImhDYXB0Y2hhIHNlY3JldCIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiU2VjcmV0IGZvciBoQ2FwdGNoYSBjaGFsbGVuZ2UuIn1dfSwgIkFOVElCT1RfVFVSTlNUSUxFX1NJVEVLRVkiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiU2l0ZWtleSBmb3IgVHVybnN0aWxlIGNoYWxsZW5nZS4iLCAiaWQiOiAiYW50aWJvdC10dXJuc3RpbGUtc2l0ZWtleSIsICJsYWJlbCI6ICJUdXJuc3RpbGUgc2l0ZWtleSIsICJyZWdleCI6ICJeKDB4W1xcd1xcLV0rKT8kIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTEiLCAicGF0dGVybiI6ICJeKDB4W1xcd1xcLV0rKT8kIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJUdXJuc3RpbGUgc2l0ZWtleSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiU2l0ZWtleSBmb3IgVHVybnN0aWxlIGNoYWxsZW5nZS4ifV19LCAiQU5USUJPVF9UVVJOU1RJTEVfU0VDUkVUIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIlNlY3JldCBmb3IgVHVybnN0aWxlIGNoYWxsZW5nZS4iLCAiaWQiOiAiYW50aWJvdC10dXJuc3RpbGUtc2VjcmV0IiwgImxhYmVsIjogIlR1cm5zdGlsZSBzZWNyZXQiLCAicmVnZXgiOiAiXigweFtcXHdcXC1dKyk/JCIsICJ0eXBlIjogInBhc3N3b3JkIiwgImNvbnRhaW5lckNsYXNzIjogInotMCIsICJwYXR0ZXJuIjogIl4oMHhbXFx3XFwtXSspPyQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIlR1cm5zdGlsZSBzZWNyZXQiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlNlY3JldCBmb3IgVHVybnN0aWxlIGNoYWxsZW5nZS4ifV19fSwgImNoZWNrc3VtIjogbnVsbCwgIm11bHRpcGxlcyI6IHt9fSwgeyJpZCI6ICJhdXRoYmFzaWMiLCAic3RyZWFtIjogIm5vIiwgIm5hbWUiOiAiQXV0aCBiYXNpYyIsICJkZXNjcmlwdGlvbiI6ICJFbmZvcmNlIGxvZ2luIGJlZm9yZSBhY2Nlc3NpbmcgYSByZXNvdXJjZSBvciB0aGUgd2hvbGUgc2l0ZSB1c2luZyBIVFRQIGJhc2ljIGF1dGggbWV0aG9kLiIsICJ2ZXJzaW9uIjogIjEuMCIsICJ0eXBlIjogImNvcmUiLCAibWV0aG9kIjogIm1hbnVhbCIsICJwYWdlIjogZmFsc2UsICJzZXR0aW5ncyI6IHsiVVNFX0FVVEhfQkFTSUMiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAibm8iLCAiaGVscCI6ICJVc2UgSFRUUCBiYXNpYyBhdXRoIiwgImlkIjogInVzZS1hdXRoLWJhc2ljIiwgImxhYmVsIjogIlVzZSBIVFRQIGJhc2ljIGF1dGgiLCAicmVnZXgiOiAiXih5ZXN8bm8pJCIsICJ0eXBlIjogImNoZWNrIiwgImNvbnRhaW5lckNsYXNzIjogInotNCIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIlVzZSBIVFRQIGJhc2ljIGF1dGgiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJubyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiVXNlIEhUVFAgYmFzaWMgYXV0aCJ9XX0sICJBVVRIX0JBU0lDX0xPQ0FUSU9OIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogInNpdGV3aWRlIiwgImhlbHAiOiAiVVJMIG9mIHRoZSBwcm90ZWN0ZWQgcmVzb3VyY2Ugb3Igc2l0ZXdpZGUgdmFsdWUuIiwgImlkIjogImF1dGgtYmFzaWMtbG9jYXRpb24iLCAibGFiZWwiOiAiQXV0aCBiYXNpYyBMb2NhdGlvbiIsICJyZWdleCI6ICJeKHNpdGV3aWRlfC9bYS16QS1aMC05LlxcL1xcLV0qKSQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMyIsICJwYXR0ZXJuIjogIl4oc2l0ZXdpZGV8L1thLXpBLVowLTkuXFwvXFwtXSopJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiQXV0aCBiYXNpYyBMb2NhdGlvbiIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogInNpdGV3aWRlIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJVUkwgb2YgdGhlIHByb3RlY3RlZCByZXNvdXJjZSBvciBzaXRld2lkZSB2YWx1ZS4ifV19LCAiQVVUSF9CQVNJQ19VU0VSIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogImNoYW5nZW1lIiwgImhlbHAiOiAiVXNlcm5hbWUiLCAiaWQiOiAiYXV0aC1iYXNpYy11c2VyIiwgImxhYmVsIjogIkF1dGggYmFzaWMgVXNlcm5hbWUiLCAicmVnZXgiOiAiXltcXHdcXC1dKyIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0yIiwgInBhdHRlcm4iOiAiXltcXHdcXC1dKyIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiQXV0aCBiYXNpYyBVc2VybmFtZSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogImNoYW5nZW1lIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJVc2VybmFtZSJ9XX0sICJBVVRIX0JBU0lDX1BBU1NXT1JEIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogImNoYW5nZW1lIiwgImhlbHAiOiAiUGFzc3dvcmQiLCAiaWQiOiAiYXV0aC1iYXNpYy1wYXNzd29yZCIsICJsYWJlbCI6ICJQYXNzd29yZCIsICJyZWdleCI6ICJeLisiLCAidHlwZSI6ICJwYXNzd29yZCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTEiLCAicGF0dGVybiI6ICJeLisiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIlBhc3N3b3JkIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiY2hhbmdlbWUiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlBhc3N3b3JkIn1dfSwgIkFVVEhfQkFTSUNfVEVYVCI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJSZXN0cmljdGVkIGFyZWEiLCAiaGVscCI6ICJUZXh0IHRvIGRpc3BsYXkiLCAiaWQiOiAiYXV0aC1iYXNpYy10ZXh0IiwgImxhYmVsIjogIlRleHQiLCAicmVnZXgiOiAiXi4rIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTAiLCAicGF0dGVybiI6ICJeLisiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIlRleHQiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJSZXN0cmljdGVkIGFyZWEiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlRleHQgdG8gZGlzcGxheSJ9XX19LCAiY2hlY2tzdW0iOiBudWxsLCAibXVsdGlwbGVzIjoge319LCB7ImlkIjogImJhY2t1cCIsICJzdHJlYW0iOiAieWVzIiwgIm5hbWUiOiAiQmFja3VwIiwgImRlc2NyaXB0aW9uIjogIkJhY2t1cCB5b3VyIGRhdGEgdG8gYSBjdXN0b20gbG9jYXRpb24uIEVuc3VyZSB0aGUgc2FmZXR5IGFuZCBhdmFpbGFiaWxpdHkgb2YgeW91ciBpbXBvcnRhbnQgZmlsZXMgYnkgY3JlYXRpbmcgcmVndWxhciBiYWNrdXBzLiIsICJ2ZXJzaW9uIjogIjEuMCIsICJ0eXBlIjogImNvcmUiLCAibWV0aG9kIjogIm1hbnVhbCIsICJwYWdlIjogdHJ1ZSwgInNldHRpbmdzIjogeyJVU0VfQkFDS1VQIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogInllcyIsICJoZWxwIjogIkVuYWJsZSBvciBkaXNhYmxlIHRoZSBiYWNrdXAgZmVhdHVyZSIsICJpZCI6ICJ1c2UtYmFja3VwIiwgImxhYmVsIjogIkFjdGl2YXRlIGF1dG9tYXRpYyBiYWNrdXAiLCAicmVnZXgiOiAiXih5ZXN8bm8pJCIsICJ0eXBlIjogImNoZWNrIiwgImNvbnRhaW5lckNsYXNzIjogInotMyIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIkFjdGl2YXRlIGF1dG9tYXRpYyBiYWNrdXAiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJ5ZXMiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJFbmFibGUgb3IgZGlzYWJsZSB0aGUgYmFja3VwIGZlYXR1cmUifV19LCAiQkFDS1VQX1NDSEVEVUxFIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogImRhaWx5IiwgImhlbHAiOiAiVGhlIGZyZXF1ZW5jeSBvZiB0aGUgYmFja3VwIChkYWlseSwgd2Vla2x5IG9yIG1vbnRobHkpIiwgImlkIjogImJhY2t1cC1zY2hlZHVsZSIsICJsYWJlbCI6ICJCYWNrdXAgc2NoZWR1bGUiLCAicmVnZXgiOiAiXihkYWlseXx3ZWVrbHl8bW9udGhseSkkIiwgInR5cGUiOiAic2VsZWN0IiwgImNvbnRhaW5lckNsYXNzIjogInotMiIsICJwYXR0ZXJuIjogIl4oZGFpbHl8d2Vla2x5fG1vbnRobHkpJCIsICJpbnBUeXBlIjogInNlbGVjdCIsICJuYW1lIjogIkJhY2t1cCBzY2hlZHVsZSIsICJ2YWx1ZXMiOiBbImRhaWx5IiwgIm1vbnRobHkiLCAid2Vla2x5Il0sICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogImRhaWx5IiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiVGhlIGZyZXF1ZW5jeSBvZiB0aGUgYmFja3VwIChkYWlseSwgd2Vla2x5IG9yIG1vbnRobHkpIn1dfSwgIkJBQ0tVUF9ST1RBVElPTiI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICI3IiwgImhlbHAiOiAiVGhlIG51bWJlciBvZiBiYWNrdXBzIHRvIGtlZXAiLCAiaWQiOiAiYmFja3VwLXJvdGF0aW9uIiwgImxhYmVsIjogIkJhY2t1cCByb3RhdGlvbiIsICJyZWdleCI6ICJeWzEtOV1bMC05XSokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTEiLCAicGF0dGVybiI6ICJeWzEtOV1bMC05XSokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJCYWNrdXAgcm90YXRpb24iLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICI3IiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiVGhlIG51bWJlciBvZiBiYWNrdXBzIHRvIGtlZXAifV19LCAiQkFDS1VQX0RJUkVDVE9SWSI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICIvdmFyL2xpYi9idW5rZXJ3ZWIvYmFja3VwcyIsICJoZWxwIjogIlRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIGJhY2t1cCB3aWxsIGJlIHN0b3JlZCIsICJpZCI6ICJiYWNrdXAtZGlyZWN0b3J5IiwgImxhYmVsIjogIkJhY2t1cCBkaXJlY3RvcnkiLCAicmVnZXgiOiAiXi4qJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0wIiwgInBhdHRlcm4iOiAiXi4qJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiQmFja3VwIGRpcmVjdG9yeSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIi92YXIvbGliL2J1bmtlcndlYi9iYWNrdXBzIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiVGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgYmFja3VwIHdpbGwgYmUgc3RvcmVkIn1dfX0sICJjaGVja3N1bSI6IG51bGwsICJid2NsaSI6IHsibGlzdCI6ICJsaXN0LnB5IiwgInJlc3RvcmUiOiAicmVzdG9yZS5weSIsICJzYXZlIjogInNhdmUucHkifSwgIm11bHRpcGxlcyI6IHt9fSwgeyJpZCI6ICJiYWRiZWhhdmlvciIsICJzdHJlYW0iOiAieWVzIiwgIm5hbWUiOiAiQmFkIGJlaGF2aW9yIiwgImRlc2NyaXB0aW9uIjogIkJhbiBJUCBnZW5lcmF0aW5nIHRvbyBtdWNoICdiYWQnIEhUVFAgc3RhdHVzIGNvZGUgaW4gYSBwZXJpb2Qgb2YgdGltZS4iLCAidmVyc2lvbiI6ICIxLjAiLCAidHlwZSI6ICJjb3JlIiwgIm1ldGhvZCI6ICJtYW51YWwiLCAicGFnZSI6IHRydWUsICJzZXR0aW5ncyI6IHsiVVNFX0JBRF9CRUhBVklPUiI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJ5ZXMiLCAiaGVscCI6ICJBY3RpdmF0ZSBCYWQgYmVoYXZpb3IgZmVhdHVyZS4iLCAiaWQiOiAidXNlLWJhZC1iZWhhdmlvciIsICJsYWJlbCI6ICJBY3RpdmF0ZSBiYWQgYmVoYXZpb3IiLCAicmVnZXgiOiAiXih5ZXN8bm8pJCIsICJ0eXBlIjogImNoZWNrIiwgImNvbnRhaW5lckNsYXNzIjogInotNCIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIkFjdGl2YXRlIGJhZCBiZWhhdmlvciIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogInllcyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiQWN0aXZhdGUgQmFkIGJlaGF2aW9yIGZlYXR1cmUuIn1dfSwgIkJBRF9CRUhBVklPUl9TVEFUVVNfQ09ERVMiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiNDAwIDQwMSA0MDMgNDA0IDQwNSA0MjkgNDQ0IiwgImhlbHAiOiAiTGlzdCBvZiBIVFRQIHN0YXR1cyBjb2RlcyBjb25zaWRlcmVkIGFzICdiYWQnLiIsICJpZCI6ICJiYWQtYmVoYXZpb3Itc3RhdHVzLWNvZGUiLCAibGFiZWwiOiAiQmFkIHN0YXR1cyBjb2RlcyIsICJyZWdleCI6ICJeKCAqKFsxLTVdXFxkezJ9KSg/IS4qXFwyKSAqKSskIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTMiLCAicGF0dGVybiI6ICJeKCAqKFsxLTVdXFxkezJ9KSg/IS4qXFwyKSAqKSskIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJCYWQgc3RhdHVzIGNvZGVzIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiNDAwIDQwMSA0MDMgNDA0IDQwNSA0MjkgNDQ0IiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIEhUVFAgc3RhdHVzIGNvZGVzIGNvbnNpZGVyZWQgYXMgJ2JhZCcuIn1dfSwgIkJBRF9CRUhBVklPUl9USFJFU0hPTEQiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiMTAiLCAiaGVscCI6ICJNYXhpbXVtIG51bWJlciBvZiAnYmFkJyBIVFRQIHN0YXR1cyBjb2RlcyB3aXRoaW4gdGhlIHBlcmlvZCBvZiB0aW1lIGJlZm9yZSBJUCBpcyBiYW5uZWQuIiwgImlkIjogImJhZC1iZWhhdmlvci10aHJlc2hvbGQiLCAibGFiZWwiOiAiVGhyZXNob2xkIiwgInJlZ2V4IjogIl5bMS05XVswLTldKiIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0yIiwgInBhdHRlcm4iOiAiXlsxLTldWzAtOV0qIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJUaHJlc2hvbGQiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIxMCIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTWF4aW11bSBudW1iZXIgb2YgJ2JhZCcgSFRUUCBzdGF0dXMgY29kZXMgd2l0aGluIHRoZSBwZXJpb2Qgb2YgdGltZSBiZWZvcmUgSVAgaXMgYmFubmVkLiJ9XX0sICJCQURfQkVIQVZJT1JfQ09VTlRfVElNRSI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICI2MCIsICJoZWxwIjogIlBlcmlvZCBvZiB0aW1lIChpbiBzZWNvbmRzKSBkdXJpbmcgd2hpY2ggd2UgY291bnQgJ2JhZCcgSFRUUCBzdGF0dXMgY29kZXMuIiwgImlkIjogImJhZC1iZWhhdmlvci1wZXJpb2QiLCAibGFiZWwiOiAiUGVyaW9kIChpbiBzZWNvbmRzKSIsICJyZWdleCI6ICJeXFxkKyIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xIiwgInBhdHRlcm4iOiAiXlxcZCsiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIlBlcmlvZCAoaW4gc2Vjb25kcykiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICI2MCIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiUGVyaW9kIG9mIHRpbWUgKGluIHNlY29uZHMpIGR1cmluZyB3aGljaCB3ZSBjb3VudCAnYmFkJyBIVFRQIHN0YXR1cyBjb2Rlcy4ifV19LCAiQkFEX0JFSEFWSU9SX0JBTl9USU1FIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIjg2NDAwIiwgImhlbHAiOiAiVGhlIGR1cmF0aW9uIHRpbWUgKGluIHNlY29uZHMpIG9mIGEgYmFuIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgSVAgaGFzIHJlYWNoZWQgdGhlIHRocmVzaG9sZC4iLCAiaWQiOiAiYmFkLWJlaGF2aW9yLWJhbi10aW1lIiwgImxhYmVsIjogIkJhbiBkdXJhdGlvbiAoaW4gc2Vjb25kcykiLCAicmVnZXgiOiAiXlxcZCsiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMCIsICJwYXR0ZXJuIjogIl5cXGQrIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJCYW4gZHVyYXRpb24gKGluIHNlY29uZHMpIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiODY0MDAiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlRoZSBkdXJhdGlvbiB0aW1lIChpbiBzZWNvbmRzKSBvZiBhIGJhbiB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIElQIGhhcyByZWFjaGVkIHRoZSB0aHJlc2hvbGQuIn1dfX0sICJjaGVja3N1bSI6IG51bGwsICJtdWx0aXBsZXMiOiB7fX0sIHsiaWQiOiAiYmxhY2tsaXN0IiwgInN0cmVhbSI6ICJwYXJ0aWFsIiwgIm5hbWUiOiAiQmxhY2tsaXN0IiwgImRlc2NyaXB0aW9uIjogIkRlbnkgYWNjZXNzIGJhc2VkIG9uIGludGVybmFsIGFuZCBleHRlcm5hbCBJUC9uZXR3b3JrL3JETlMvQVNOIGJsYWNrbGlzdHMuIiwgInZlcnNpb24iOiAiMS4wIiwgInR5cGUiOiAiY29yZSIsICJtZXRob2QiOiAibWFudWFsIiwgInBhZ2UiOiB0cnVlLCAic2V0dGluZ3MiOiB7IlVTRV9CTEFDS0xJU1QiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAieWVzIiwgImhlbHAiOiAiQWN0aXZhdGUgYmxhY2tsaXN0IGZlYXR1cmUuIiwgImlkIjogInVzZS1ibGFja2xpc3QiLCAibGFiZWwiOiAiQWN0aXZhdGUgYmxhY2tsaXN0aW5nIiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJjb250YWluZXJDbGFzcyI6ICJ6LTIxIiwgInBhdHRlcm4iOiAiXih5ZXN8bm8pJCIsICJpbnBUeXBlIjogImNoZWNrYm94IiwgIm5hbWUiOiAiQWN0aXZhdGUgYmxhY2tsaXN0aW5nIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAieWVzIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJBY3RpdmF0ZSBibGFja2xpc3QgZmVhdHVyZS4ifV19LCAiQkxBQ0tMSVNUX0lQIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIkxpc3Qgb2YgSVAvbmV0d29yaywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCB0byBibG9jay4iLCAiaWQiOiAiYmxhY2tsaXN0LWlwIiwgImxhYmVsIjogIkJsYWNrbGlzdCBJUC9uZXR3b3JrIiwgInJlZ2V4IjogIl4oPyEgKSggKigoKFxcYjI1WzAtNV18XFxiMlswLTRdXFxkfFxcYlswMV0/XFxkXFxkPykoXFwuKDI1WzAtNV18MlswLTRdXFxkfFswMV0/XFxkXFxkPykpezN9KShcXC8oWzEtMl1bMC05XT98M1swLTJdP3xbMDQtOV0pKT98KChbMC05YS1mQS1GXXsxLDR9Oil7N31bMC05YS1mQS1GXXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw3fTp8KFswLTlhLWZBLUZdezEsNH06KXsxLDZ9OlswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDV9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDJ9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw0fSg6WzAtOWEtZkEtRl17MSw0fSl7MSwzfXwoWzAtOWEtZkEtRl17MSw0fTopezEsM30oOlswLTlhLWZBLUZdezEsNH0pezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDJ9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDV9fFswLTlhLWZBLUZdezEsNH06KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw2fSl8OigoOlswLTlhLWZBLUZdezEsNH0pezEsN318Oil8ZmU4MDooOlswLTlhLWZBLUZdWnswLDR9KXswLDR9JVswLTlhLXpBLVpdK3w6OihmZmZmKDowezEsNH0pPzopPygoMjVbMC01XXwoMlswLTRdfDE/XFxkKT9cXGQpXFwuKXszfSgyNVswLTVdfCgyWzAtNF18MT9cXGQpP1xcZCl8KFswLTlhLWZBLUZdezEsNH06KXsxLDR9OigoMjVbMC01XXwoMlswLTRdfDE/XFxkKT9cXGQpXFwuKXszfSgyNVswLTVdfCgyWzAtNF18MT9cXGQpP1xcZCkpKFxcLygxMlswLThdfDFbMDFdWzAtOV18WzAtOV1bMC05XT8pKT8pKD8hLipcXERcXDIoW15cXGRcXC9dfCQpKSAqKSokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTIwIiwgInBhdHRlcm4iOiAiXig/ISApKCAqKCgoXFxiMjVbMC01XXxcXGIyWzAtNF1cXGR8XFxiWzAxXT9cXGRcXGQ/KShcXC4oMjVbMC01XXwyWzAtNF1cXGR8WzAxXT9cXGRcXGQ/KSl7M30pKFxcLyhbMS0yXVswLTldP3wzWzAtMl0/fFswNC05XSkpP3woKFswLTlhLWZBLUZdezEsNH06KXs3fVswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDd9OnwoWzAtOWEtZkEtRl17MSw0fTopezEsNn06WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsNX0oOlswLTlhLWZBLUZdezEsNH0pezEsMn18KFswLTlhLWZBLUZdezEsNH06KXsxLDR9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDN9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwzfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsMn0oOlswLTlhLWZBLUZdezEsNH0pezEsNX18WzAtOWEtZkEtRl17MSw0fTooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDZ9KXw6KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw3fXw6KXxmZTgwOig6WzAtOWEtZkEtRl1aezAsNH0pezAsNH0lWzAtOWEtekEtWl0rfDo6KGZmZmYoOjB7MSw0fSk/Oik/KCgyNVswLTVdfCgyWzAtNF18MT9cXGQpP1xcZClcXC4pezN9KDI1WzAtNV18KDJbMC00XXwxP1xcZCk/XFxkKXwoWzAtOWEtZkEtRl17MSw0fTopezEsNH06KCgyNVswLTVdfCgyWzAtNF18MT9cXGQpP1xcZClcXC4pezN9KDI1WzAtNV18KDJbMC00XXwxP1xcZCk/XFxkKSkoXFwvKDEyWzAtOF18MVswMV1bMC05XXxbMC05XVswLTldPykpPykoPyEuKlxcRFxcMihbXlxcZFxcL118JCkpICopKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkJsYWNrbGlzdCBJUC9uZXR3b3JrIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIElQL25ldHdvcmssIHNlcGFyYXRlZCB3aXRoIHNwYWNlcywgdG8gYmxvY2suIn1dfSwgIkJMQUNLTElTVF9SRE5TIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIi5zaG9kYW4uaW8gLmNlbnN5cy5pbyIsICJoZWxwIjogIkxpc3Qgb2YgcmV2ZXJzZSBETlMgc3VmZml4ZXMsIHNlcGFyYXRlZCB3aXRoIHNwYWNlcywgdG8gYmxvY2suIiwgImlkIjogImJsYWNrbGlzdC1yZG5zIiwgImxhYmVsIjogIkJsYWNrbGlzdCByZXZlcnNlIEROUyIsICJyZWdleCI6ICJeKCAqKChbXiBdKykoPyEuKlxcMyggfCQpKSkgKikqJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xOSIsICJwYXR0ZXJuIjogIl4oICooKFteIF0rKSg/IS4qXFwzKCB8JCkpKSAqKSokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJCbGFja2xpc3QgcmV2ZXJzZSBETlMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIuc2hvZGFuLmlvIC5jZW5zeXMuaW8iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkxpc3Qgb2YgcmV2ZXJzZSBETlMgc3VmZml4ZXMsIHNlcGFyYXRlZCB3aXRoIHNwYWNlcywgdG8gYmxvY2suIn1dfSwgIkJMQUNLTElTVF9SRE5TX0dMT0JBTCI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJ5ZXMiLCAiaGVscCI6ICJPbmx5IHBlcmZvcm0gUkROUyBibGFja2xpc3QgY2hlY2tzIG9uIGdsb2JhbCBJUCBhZGRyZXNzZXMuIiwgImlkIjogImJsYWNrbGlzdC1yZG5zLWdsb2JhbCIsICJsYWJlbCI6ICJCbGFja2xpc3QgcmV2ZXJzZSBETlMgZ2xvYmFsIElQcyIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xOCIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIkJsYWNrbGlzdCByZXZlcnNlIEROUyBnbG9iYWwgSVBzIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAieWVzIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJPbmx5IHBlcmZvcm0gUkROUyBibGFja2xpc3QgY2hlY2tzIG9uIGdsb2JhbCBJUCBhZGRyZXNzZXMuIn1dfSwgIkJMQUNLTElTVF9BU04iOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiTGlzdCBvZiBBU04gbnVtYmVycywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCB0byBibG9jay4iLCAiaWQiOiAiYmxhY2tsaXN0LWFzbiIsICJsYWJlbCI6ICJCbGFja2xpc3QgQVNOIiwgInJlZ2V4IjogIl5eKCAqKChBU04/KT8oXFxkKylcXGIoPyEuKltTTiBdXFw0XFxiKSkgKikqJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xNyIsICJwYXR0ZXJuIjogIl5eKCAqKChBU04/KT8oXFxkKylcXGIoPyEuKltTTiBdXFw0XFxiKSkgKikqJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiQmxhY2tsaXN0IEFTTiIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTGlzdCBvZiBBU04gbnVtYmVycywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCB0byBibG9jay4ifV19LCAiQkxBQ0tMSVNUX1VTRVJfQUdFTlQiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiTGlzdCBvZiBVc2VyLUFnZW50IChQQ1JFIHJlZ2V4KSwgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCB0byBibG9jay4iLCAiaWQiOiAiYmxhY2tsaXN0LXVzZXItYWdlbnQiLCAibGFiZWwiOiAiQmxhY2tsaXN0IFVzZXItQWdlbnQiLCAicmVnZXgiOiAiXi4qJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xNiIsICJwYXR0ZXJuIjogIl4uKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkJsYWNrbGlzdCBVc2VyLUFnZW50IiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIFVzZXItQWdlbnQgKFBDUkUgcmVnZXgpLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIHRvIGJsb2NrLiJ9XX0sICJCTEFDS0xJU1RfVVJJIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIkxpc3Qgb2YgVVJJIChQQ1JFIHJlZ2V4KSwgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCB0byBibG9jay4iLCAiaWQiOiAiYmxhY2tsaXN0LXVyaSIsICJsYWJlbCI6ICJCbGFja2xpc3QgVVJJIiwgInJlZ2V4IjogIl4oICooLiopKD8hLipcXDIoPyEuKSkgKikqJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xNSIsICJwYXR0ZXJuIjogIl4oICooLiopKD8hLipcXDIoPyEuKSkgKikqJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiQmxhY2tsaXN0IFVSSSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTGlzdCBvZiBVUkkgKFBDUkUgcmVnZXgpLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIHRvIGJsb2NrLiJ9XX0sICJCTEFDS0xJU1RfSUdOT1JFX0lQIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIkxpc3Qgb2YgSVAvbmV0d29yaywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCB0byBpZ25vcmUgaW4gdGhlIGJsYWNrbGlzdC4iLCAiaWQiOiAiYmxhY2tsaXN0LWlnbm9yZS1pcCIsICJsYWJlbCI6ICJCbGFja2xpc3QgaWdub3JlIElQL25ldHdvcmsiLCAicmVnZXgiOiAiXig/ISApKCAqKCgoXFxiMjVbMC01XXxcXGIyWzAtNF1cXGR8XFxiWzAxXT9cXGRcXGQ/KShcXC4oMjVbMC01XXwyWzAtNF1cXGR8WzAxXT9cXGRcXGQ/KSl7M30pKFxcLyhbMS0yXVswLTldP3wzWzAtMl0/fFswNC05XSkpP3woKFswLTlhLWZBLUZdezEsNH06KXs3fVswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDd9OnwoWzAtOWEtZkEtRl17MSw0fTopezEsNn06WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsNX0oOlswLTlhLWZBLUZdezEsNH0pezEsMn18KFswLTlhLWZBLUZdezEsNH06KXsxLDR9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDN9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwzfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsMn0oOlswLTlhLWZBLUZdezEsNH0pezEsNX18WzAtOWEtZkEtRl17MSw0fTooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDZ9KXw6KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw3fXw6KXxmZTgwOig6WzAtOWEtZkEtRl1aezAsNH0pezAsNH0lWzAtOWEtekEtWl0rfDo6KGZmZmYoOjB7MSw0fSk/Oik/KCgyNVswLTVdfCgyWzAtNF18MT9cXGQpP1xcZClcXC4pezN9KDI1WzAtNV18KDJbMC00XXwxP1xcZCk/XFxkKXwoWzAtOWEtZkEtRl17MSw0fTopezEsNH06KCgyNVswLTVdfCgyWzAtNF18MT9cXGQpP1xcZClcXC4pezN9KDI1WzAtNV18KDJbMC00XXwxP1xcZCk/XFxkKSkoXFwvKDEyWzAtOF18MVswMV1bMC05XXxbMC05XVswLTldPykpPykoPyEuKlxcRFxcMihbXlxcZFxcL118JCkpICopKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMTQiLCAicGF0dGVybiI6ICJeKD8hICkoICooKChcXGIyNVswLTVdfFxcYjJbMC00XVxcZHxcXGJbMDFdP1xcZFxcZD8pKFxcLigyNVswLTVdfDJbMC00XVxcZHxbMDFdP1xcZFxcZD8pKXszfSkoXFwvKFsxLTJdWzAtOV0/fDNbMC0yXT98WzA0LTldKSk/fCgoWzAtOWEtZkEtRl17MSw0fTopezd9WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsN306fChbMC05YS1mQS1GXXsxLDR9Oil7MSw2fTpbMC05YS1mQS1GXXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw1fSg6WzAtOWEtZkEtRl17MSw0fSl7MSwyfXwoWzAtOWEtZkEtRl17MSw0fTopezEsNH0oOlswLTlhLWZBLUZdezEsNH0pezEsM318KFswLTlhLWZBLUZdezEsNH06KXsxLDN9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwyfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw1fXxbMC05YS1mQS1GXXsxLDR9OigoOlswLTlhLWZBLUZdezEsNH0pezEsNn0pfDooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDd9fDopfGZlODA6KDpbMC05YS1mQS1GXVp7MCw0fSl7MCw0fSVbMC05YS16QS1aXSt8OjooZmZmZig6MHsxLDR9KT86KT8oKDI1WzAtNV18KDJbMC00XXwxP1xcZCk/XFxkKVxcLil7M30oMjVbMC01XXwoMlswLTRdfDE/XFxkKT9cXGQpfChbMC05YS1mQS1GXXsxLDR9Oil7MSw0fTooKDI1WzAtNV18KDJbMC00XXwxP1xcZCk/XFxkKVxcLil7M30oMjVbMC01XXwoMlswLTRdfDE/XFxkKT9cXGQpKShcXC8oMTJbMC04XXwxWzAxXVswLTldfFswLTldWzAtOV0/KSk/KSg/IS4qXFxEXFwyKFteXFxkXFwvXXwkKSkgKikqJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiQmxhY2tsaXN0IGlnbm9yZSBJUC9uZXR3b3JrIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIElQL25ldHdvcmssIHNlcGFyYXRlZCB3aXRoIHNwYWNlcywgdG8gaWdub3JlIGluIHRoZSBibGFja2xpc3QuIn1dfSwgIkJMQUNLTElTVF9JR05PUkVfUkROUyI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJMaXN0IG9mIHJldmVyc2UgRE5TIHN1ZmZpeGVzLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIHRvIGlnbm9yZSBpbiB0aGUgYmxhY2tsaXN0LiIsICJpZCI6ICJibGFja2xpc3QtaWdub3JlLXJkbnMiLCAibGFiZWwiOiAiQmxhY2tsaXN0IGlnbm9yZSByZXZlcnNlIEROUyIsICJyZWdleCI6ICJeKCAqKChbXiBdKykoPyEuKlxcMyggfCQpKSkgKikqJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xMyIsICJwYXR0ZXJuIjogIl4oICooKFteIF0rKSg/IS4qXFwzKCB8JCkpKSAqKSokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJCbGFja2xpc3QgaWdub3JlIHJldmVyc2UgRE5TIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIHJldmVyc2UgRE5TIHN1ZmZpeGVzLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIHRvIGlnbm9yZSBpbiB0aGUgYmxhY2tsaXN0LiJ9XX0sICJCTEFDS0xJU1RfSUdOT1JFX0FTTiI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJMaXN0IG9mIEFTTiBudW1iZXJzLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIHRvIGlnbm9yZSBpbiB0aGUgYmxhY2tsaXN0LiIsICJpZCI6ICJibGFja2xpc3QtaWdub3JlLWFzbiIsICJsYWJlbCI6ICJCbGFja2xpc3QgaWdub3JlIEFTTiIsICJyZWdleCI6ICJeXiggKigoQVNOPyk/KFxcZCspXFxiKD8hLipbU04gXVxcNFxcYikpICopKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMTIiLCAicGF0dGVybiI6ICJeXiggKigoQVNOPyk/KFxcZCspXFxiKD8hLipbU04gXVxcNFxcYikpICopKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkJsYWNrbGlzdCBpZ25vcmUgQVNOIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIEFTTiBudW1iZXJzLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIHRvIGlnbm9yZSBpbiB0aGUgYmxhY2tsaXN0LiJ9XX0sICJCTEFDS0xJU1RfSUdOT1JFX1VTRVJfQUdFTlQiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiTGlzdCBvZiBVc2VyLUFnZW50IChQQ1JFIHJlZ2V4KSwgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCB0byBpZ25vcmUgaW4gdGhlIGJsYWNrbGlzdC4iLCAiaWQiOiAiYmxhY2tsaXN0LWlnbm9yZS11c2VyLWFnZW50IiwgImxhYmVsIjogIkJsYWNrbGlzdCBpZ25vcmUgVXNlci1BZ2VudCIsICJyZWdleCI6ICJeLiokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTExIiwgInBhdHRlcm4iOiAiXi4qJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiQmxhY2tsaXN0IGlnbm9yZSBVc2VyLUFnZW50IiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIFVzZXItQWdlbnQgKFBDUkUgcmVnZXgpLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIHRvIGlnbm9yZSBpbiB0aGUgYmxhY2tsaXN0LiJ9XX0sICJCTEFDS0xJU1RfSUdOT1JFX1VSSSI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJMaXN0IG9mIFVSSSAoUENSRSByZWdleCksIHNlcGFyYXRlZCB3aXRoIHNwYWNlcywgdG8gaWdub3JlIGluIHRoZSBibGFja2xpc3QuIiwgImlkIjogImJsYWNrbGlzdC1pZ25vcmUtdXJpIiwgImxhYmVsIjogIkJsYWNrbGlzdCBpZ25vcmUgVVJJIiwgInJlZ2V4IjogIl4oICooLiopKD8hLipcXDIoPyEuKSkgKikqJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xMCIsICJwYXR0ZXJuIjogIl4oICooLiopKD8hLipcXDIoPyEuKSkgKikqJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiQmxhY2tsaXN0IGlnbm9yZSBVUkkiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkxpc3Qgb2YgVVJJIChQQ1JFIHJlZ2V4KSwgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCB0byBpZ25vcmUgaW4gdGhlIGJsYWNrbGlzdC4ifV19LCAiQkxBQ0tMSVNUX0lQX1VSTFMiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAiaHR0cHM6Ly93d3cuZGFuLm1lLnVrL3Rvcmxpc3QvP2V4aXQiLCAiaGVscCI6ICJMaXN0IG9mIFVSTHMsIHNlcGFyYXRlZCB3aXRoIHNwYWNlcywgY29udGFpbmluZyBiYWQgSVAvbmV0d29yayB0byBibG9jay4iLCAiaWQiOiAiYmxhY2tsaXN0LWlwLXVybHMiLCAibGFiZWwiOiAiQmxhY2tsaXN0IElQL25ldHdvcmsgVVJMcyIsICJyZWdleCI6ICJeKCAqKChodHRwcz86XFwvXFwvfGZpbGU6XFwvXFwvXFwvKVtcXC1cXHdAOiUuK34jPV0rW1xcLVxcd1xcKFxcKSFAOiUrLn4jPyZcXC89JF0qKSg/IS4qXFwyKD8hLikpICopKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotOSIsICJwYXR0ZXJuIjogIl4oICooKGh0dHBzPzpcXC9cXC98ZmlsZTpcXC9cXC9cXC8pW1xcLVxcd0A6JS4rfiM9XStbXFwtXFx3XFwoXFwpIUA6JSsufiM/JlxcLz0kXSopKD8hLipcXDIoPyEuKSkgKikqJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiQmxhY2tsaXN0IElQL25ldHdvcmsgVVJMcyIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogImh0dHBzOi8vd3d3LmRhbi5tZS51ay90b3JsaXN0Lz9leGl0IiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTGlzdCBvZiBVUkxzLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIGNvbnRhaW5pbmcgYmFkIElQL25ldHdvcmsgdG8gYmxvY2suIn1dfSwgIkJMQUNLTElTVF9SRE5TX1VSTFMiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiTGlzdCBvZiBVUkxzLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIGNvbnRhaW5pbmcgcmV2ZXJzZSBETlMgc3VmZml4ZXMgdG8gYmxvY2suIiwgImlkIjogImJsYWNrbGlzdC1yZG5zLXVybHMiLCAibGFiZWwiOiAiQmxhY2tsaXN0IHJldmVyc2UgRE5TIFVSTHMiLCAicmVnZXgiOiAiXiggKigoaHR0cHM/OlxcL1xcL3xmaWxlOlxcL1xcL1xcLylbXFwtXFx3QDolLit+Iz1dK1tcXC1cXHdcXChcXCkhQDolKy5+Iz8mXFwvPSRdKikoPyEuKlxcMig/IS4pKSAqKSokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTgiLCAicGF0dGVybiI6ICJeKCAqKChodHRwcz86XFwvXFwvfGZpbGU6XFwvXFwvXFwvKVtcXC1cXHdAOiUuK34jPV0rW1xcLVxcd1xcKFxcKSFAOiUrLn4jPyZcXC89JF0qKSg/IS4qXFwyKD8hLikpICopKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkJsYWNrbGlzdCByZXZlcnNlIEROUyBVUkxzIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTGlzdCBvZiBVUkxzLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIGNvbnRhaW5pbmcgcmV2ZXJzZSBETlMgc3VmZml4ZXMgdG8gYmxvY2suIn1dfSwgIkJMQUNLTElTVF9BU05fVVJMUyI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJMaXN0IG9mIFVSTHMsIHNlcGFyYXRlZCB3aXRoIHNwYWNlcywgY29udGFpbmluZyBBU04gdG8gYmxvY2suIiwgImlkIjogImJsYWNrbGlzdC1hc24tdXJscyIsICJsYWJlbCI6ICJCbGFja2xpc3QgQVNOIFVSTHMiLCAicmVnZXgiOiAiXiggKigoaHR0cHM/OlxcL1xcL3xmaWxlOlxcL1xcL1xcLylbXFwtXFx3QDolLit+Iz1dK1tcXC1cXHdcXChcXCkhQDolKy5+Iz8mXFwvPSRdKikoPyEuKlxcMig/IS4pKSAqKSokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTciLCAicGF0dGVybiI6ICJeKCAqKChodHRwcz86XFwvXFwvfGZpbGU6XFwvXFwvXFwvKVtcXC1cXHdAOiUuK34jPV0rW1xcLVxcd1xcKFxcKSFAOiUrLn4jPyZcXC89JF0qKSg/IS4qXFwyKD8hLikpICopKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkJsYWNrbGlzdCBBU04gVVJMcyIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkxpc3Qgb2YgVVJMcywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCBjb250YWluaW5nIEFTTiB0byBibG9jay4ifV19LCAiQkxBQ0tMSVNUX1VTRVJfQUdFTlRfVVJMUyI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vbWl0Y2hlbGxrcm9nemEvbmdpbngtdWx0aW1hdGUtYmFkLWJvdC1ibG9ja2VyL21hc3Rlci9fZ2VuZXJhdG9yX2xpc3RzL2JhZC11c2VyLWFnZW50cy5saXN0IiwgImhlbHAiOiAiTGlzdCBvZiBVUkxzLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIGNvbnRhaW5pbmcgYmFkIFVzZXItQWdlbnQgdG8gYmxvY2suIiwgImlkIjogImJsYWNrbGlzdC11c2VyLWFnZW50LXVybHMiLCAibGFiZWwiOiAiQmxhY2tsaXN0IFVzZXItQWdlbnQgVVJMcyIsICJyZWdleCI6ICJeKCAqKChodHRwcz86XFwvXFwvfGZpbGU6XFwvXFwvXFwvKVtcXC1cXHdAOiUuK34jPV0rW1xcLVxcd1xcKFxcKSFAOiUrLn4jPyZcXC89JF0qKSg/IS4qXFwyKD8hLikpICopKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotNiIsICJwYXR0ZXJuIjogIl4oICooKGh0dHBzPzpcXC9cXC98ZmlsZTpcXC9cXC9cXC8pW1xcLVxcd0A6JS4rfiM9XStbXFwtXFx3XFwoXFwpIUA6JSsufiM/JlxcLz0kXSopKD8hLipcXDIoPyEuKSkgKikqJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiQmxhY2tsaXN0IFVzZXItQWdlbnQgVVJMcyIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9taXRjaGVsbGtyb2d6YS9uZ2lueC11bHRpbWF0ZS1iYWQtYm90LWJsb2NrZXIvbWFzdGVyL19nZW5lcmF0b3JfbGlzdHMvYmFkLXVzZXItYWdlbnRzLmxpc3QiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIFVSTHMsIHNlcGFyYXRlZCB3aXRoIHNwYWNlcywgY29udGFpbmluZyBiYWQgVXNlci1BZ2VudCB0byBibG9jay4ifV19LCAiQkxBQ0tMSVNUX1VSSV9VUkxTIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIkxpc3Qgb2YgVVJMcywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCBjb250YWluaW5nIGJhZCBVUkkgdG8gYmxvY2suIiwgImlkIjogImJsYWNrbGlzdC11cmktdXJscyIsICJsYWJlbCI6ICJCbGFja2xpc3QgVVJJIFVSTHMiLCAicmVnZXgiOiAiXiggKigoaHR0cHM/OlxcL1xcL3xmaWxlOlxcL1xcL1xcLylbXFwtXFx3QDolLit+Iz1dK1tcXC1cXHdcXChcXCkhQDolKy5+Iz8mXFwvPSRdKikoPyEuKlxcMig/IS4pKSAqKSokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTUiLCAicGF0dGVybiI6ICJeKCAqKChodHRwcz86XFwvXFwvfGZpbGU6XFwvXFwvXFwvKVtcXC1cXHdAOiUuK34jPV0rW1xcLVxcd1xcKFxcKSFAOiUrLn4jPyZcXC89JF0qKSg/IS4qXFwyKD8hLikpICopKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkJsYWNrbGlzdCBVUkkgVVJMcyIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkxpc3Qgb2YgVVJMcywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCBjb250YWluaW5nIGJhZCBVUkkgdG8gYmxvY2suIn1dfSwgIkJMQUNLTElTVF9JR05PUkVfSVBfVVJMUyI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJMaXN0IG9mIFVSTHMsIHNlcGFyYXRlZCB3aXRoIHNwYWNlcywgY29udGFpbmluZyBJUC9uZXR3b3JrIHRvIGlnbm9yZSBpbiB0aGUgYmxhY2tsaXN0LiIsICJpZCI6ICJibGFja2xpc3QtaWdub3JlLWlwLXVybHMiLCAibGFiZWwiOiAiQmxhY2tsaXN0IGlnbm9yZSBJUC9uZXR3b3JrIFVSTHMiLCAicmVnZXgiOiAiXiggKigoaHR0cHM/OlxcL1xcL3xmaWxlOlxcL1xcL1xcLylbXFwtXFx3QDolLit+Iz1dK1tcXC1cXHdcXChcXCkhQDolKy5+Iz8mXFwvPSRdKikoPyEuKlxcMig/IS4pKSAqKSokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTQiLCAicGF0dGVybiI6ICJeKCAqKChodHRwcz86XFwvXFwvfGZpbGU6XFwvXFwvXFwvKVtcXC1cXHdAOiUuK34jPV0rW1xcLVxcd1xcKFxcKSFAOiUrLn4jPyZcXC89JF0qKSg/IS4qXFwyKD8hLikpICopKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkJsYWNrbGlzdCBpZ25vcmUgSVAvbmV0d29yayBVUkxzIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTGlzdCBvZiBVUkxzLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIGNvbnRhaW5pbmcgSVAvbmV0d29yayB0byBpZ25vcmUgaW4gdGhlIGJsYWNrbGlzdC4ifV19LCAiQkxBQ0tMSVNUX0lHTk9SRV9SRE5TX1VSTFMiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiTGlzdCBvZiBVUkxzLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIGNvbnRhaW5pbmcgcmV2ZXJzZSBETlMgc3VmZml4ZXMgdG8gaWdub3JlIGluIHRoZSBibGFja2xpc3QuIiwgImlkIjogImJsYWNrbGlzdC1pZ25vcmUtcmRucy11cmxzIiwgImxhYmVsIjogIkJsYWNrbGlzdCBpZ25vcmUgcmV2ZXJzZSBETlMgVVJMcyIsICJyZWdleCI6ICJeKCAqKChodHRwcz86XFwvXFwvfGZpbGU6XFwvXFwvXFwvKVtcXC1cXHdAOiUuK34jPV0rW1xcLVxcd1xcKFxcKSFAOiUrLn4jPyZcXC89JF0qKSg/IS4qXFwyKD8hLikpICopKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMyIsICJwYXR0ZXJuIjogIl4oICooKGh0dHBzPzpcXC9cXC98ZmlsZTpcXC9cXC9cXC8pW1xcLVxcd0A6JS4rfiM9XStbXFwtXFx3XFwoXFwpIUA6JSsufiM/JlxcLz0kXSopKD8hLipcXDIoPyEuKSkgKikqJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiQmxhY2tsaXN0IGlnbm9yZSByZXZlcnNlIEROUyBVUkxzIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTGlzdCBvZiBVUkxzLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIGNvbnRhaW5pbmcgcmV2ZXJzZSBETlMgc3VmZml4ZXMgdG8gaWdub3JlIGluIHRoZSBibGFja2xpc3QuIn1dfSwgIkJMQUNLTElTVF9JR05PUkVfQVNOX1VSTFMiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiTGlzdCBvZiBVUkxzLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIGNvbnRhaW5pbmcgQVNOIHRvIGlnbm9yZSBpbiB0aGUgYmxhY2tsaXN0LiIsICJpZCI6ICJibGFja2xpc3QtaWdub3JlLWFzbi11cmxzIiwgImxhYmVsIjogIkJsYWNrbGlzdCBpZ25vcmUgQVNOIFVSTHMiLCAicmVnZXgiOiAiXiggKigoaHR0cHM/OlxcL1xcL3xmaWxlOlxcL1xcL1xcLylbXFwtXFx3QDolLit+Iz1dK1tcXC1cXHdcXChcXCkhQDolKy5+Iz8mXFwvPSRdKikoPyEuKlxcMig/IS4pKSAqKSokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTIiLCAicGF0dGVybiI6ICJeKCAqKChodHRwcz86XFwvXFwvfGZpbGU6XFwvXFwvXFwvKVtcXC1cXHdAOiUuK34jPV0rW1xcLVxcd1xcKFxcKSFAOiUrLn4jPyZcXC89JF0qKSg/IS4qXFwyKD8hLikpICopKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkJsYWNrbGlzdCBpZ25vcmUgQVNOIFVSTHMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIFVSTHMsIHNlcGFyYXRlZCB3aXRoIHNwYWNlcywgY29udGFpbmluZyBBU04gdG8gaWdub3JlIGluIHRoZSBibGFja2xpc3QuIn1dfSwgIkJMQUNLTElTVF9JR05PUkVfVVNFUl9BR0VOVF9VUkxTIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIkxpc3Qgb2YgVVJMcywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCBjb250YWluaW5nIFVzZXItQWdlbnQgdG8gaWdub3JlIGluIHRoZSBibGFja2xpc3QuIiwgImlkIjogImJsYWNrbGlzdC1pZ25vcmUtdXNlci1hZ2VudC11cmxzIiwgImxhYmVsIjogIkJsYWNrbGlzdCBpZ25vcmUgVXNlci1BZ2VudCBVUkxzIiwgInJlZ2V4IjogIl4oICooKGh0dHBzPzpcXC9cXC98ZmlsZTpcXC9cXC9cXC8pW1xcLVxcd0A6JS4rfiM9XStbXFwtXFx3XFwoXFwpIUA6JSsufiM/JlxcLz0kXSopKD8hLipcXDIoPyEuKSkgKikqJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xIiwgInBhdHRlcm4iOiAiXiggKigoaHR0cHM/OlxcL1xcL3xmaWxlOlxcL1xcL1xcLylbXFwtXFx3QDolLit+Iz1dK1tcXC1cXHdcXChcXCkhQDolKy5+Iz8mXFwvPSRdKikoPyEuKlxcMig/IS4pKSAqKSokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJCbGFja2xpc3QgaWdub3JlIFVzZXItQWdlbnQgVVJMcyIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkxpc3Qgb2YgVVJMcywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCBjb250YWluaW5nIFVzZXItQWdlbnQgdG8gaWdub3JlIGluIHRoZSBibGFja2xpc3QuIn1dfSwgIkJMQUNLTElTVF9JR05PUkVfVVJJX1VSTFMiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiTGlzdCBvZiBVUkxzLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIGNvbnRhaW5pbmcgVVJJIHRvIGlnbm9yZSBpbiB0aGUgYmxhY2tsaXN0LiIsICJpZCI6ICJibGFja2xpc3QtaWdub3JlLXVyaS11cmxzIiwgImxhYmVsIjogIkJsYWNrbGlzdCBpZ25vcmUgVVJJIFVSTHMiLCAicmVnZXgiOiAiXiggKigoaHR0cHM/OlxcL1xcL3xmaWxlOlxcL1xcL1xcLylbXFwtXFx3QDolLit+Iz1dK1tcXC1cXHdcXChcXCkhQDolKy5+Iz8mXFwvPSRdKikoPyEuKlxcMig/IS4pKSAqKSokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTAiLCAicGF0dGVybiI6ICJeKCAqKChodHRwcz86XFwvXFwvfGZpbGU6XFwvXFwvXFwvKVtcXC1cXHdAOiUuK34jPV0rW1xcLVxcd1xcKFxcKSFAOiUrLn4jPyZcXC89JF0qKSg/IS4qXFwyKD8hLikpICopKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkJsYWNrbGlzdCBpZ25vcmUgVVJJIFVSTHMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIFVSTHMsIHNlcGFyYXRlZCB3aXRoIHNwYWNlcywgY29udGFpbmluZyBVUkkgdG8gaWdub3JlIGluIHRoZSBibGFja2xpc3QuIn1dfX0sICJjaGVja3N1bSI6IG51bGwsICJtdWx0aXBsZXMiOiB7fX0sIHsiaWQiOiAiYnJvdGxpIiwgInN0cmVhbSI6ICJubyIsICJuYW1lIjogIkJyb3RsaSIsICJkZXNjcmlwdGlvbiI6ICJDb21wcmVzcyBIVFRQIHJlcXVlc3RzIHdpdGggdGhlIGJyb3RsaSBhbGdvcml0aG0uIiwgInZlcnNpb24iOiAiMS4wIiwgInR5cGUiOiAiY29yZSIsICJtZXRob2QiOiAibWFudWFsIiwgInBhZ2UiOiBmYWxzZSwgInNldHRpbmdzIjogeyJVU0VfQlJPVExJIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIm5vIiwgImhlbHAiOiAiVXNlIGJyb3RsaSIsICJpZCI6ICJ1c2UtYnJvdGxpIiwgImxhYmVsIjogIlVzZSBicm90bGkiLCAicmVnZXgiOiAiXih5ZXN8bm8pJCIsICJ0eXBlIjogImNoZWNrIiwgImNvbnRhaW5lckNsYXNzIjogInotMyIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIlVzZSBicm90bGkiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJubyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiVXNlIGJyb3RsaSJ9XX0sICJCUk9UTElfVFlQRVMiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiYXBwbGljYXRpb24vYXRvbSt4bWwgYXBwbGljYXRpb24vamF2YXNjcmlwdCBhcHBsaWNhdGlvbi9qc29uIGFwcGxpY2F0aW9uL3Jzcyt4bWwgYXBwbGljYXRpb24vdm5kLm1zLWZvbnRvYmplY3QgYXBwbGljYXRpb24veC1mb250LW9wZW50eXBlIGFwcGxpY2F0aW9uL3gtZm9udC10cnVldHlwZSBhcHBsaWNhdGlvbi94LWZvbnQtdHRmIGFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCBhcHBsaWNhdGlvbi94aHRtbCt4bWwgYXBwbGljYXRpb24veG1sIGZvbnQvZW90IGZvbnQvb3BlbnR5cGUgZm9udC9vdGYgZm9udC90cnVldHlwZSBpbWFnZS9zdmcreG1sIGltYWdlL3ZuZC5taWNyb3NvZnQuaWNvbiBpbWFnZS94LWljb24gaW1hZ2UveC13aW4tYml0bWFwIHRleHQvY3NzIHRleHQvamF2YXNjcmlwdCB0ZXh0L3BsYWluIHRleHQveG1sIiwgImhlbHAiOiAiTGlzdCBvZiBNSU1FIHR5cGVzIHRoYXQgd2lsbCBiZSBjb21wcmVzc2VkIHdpdGggYnJvdGxpLiIsICJpZCI6ICJicm90bGktdHlwZXMiLCAibGFiZWwiOiAiTUlNRSB0eXBlcyIsICJyZWdleCI6ICJeKD8hICkoID8oW1xcLVxcdy5dKy9bXFwtXFx3LitdKykoPyEuKlxcMig/IS4pKSkrJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0yIiwgInBhdHRlcm4iOiAiXig/ISApKCA/KFtcXC1cXHcuXSsvW1xcLVxcdy4rXSspKD8hLipcXDIoPyEuKSkpKyQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIk1JTUUgdHlwZXMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJhcHBsaWNhdGlvbi9hdG9tK3htbCBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IGFwcGxpY2F0aW9uL2pzb24gYXBwbGljYXRpb24vcnNzK3htbCBhcHBsaWNhdGlvbi92bmQubXMtZm9udG9iamVjdCBhcHBsaWNhdGlvbi94LWZvbnQtb3BlbnR5cGUgYXBwbGljYXRpb24veC1mb250LXRydWV0eXBlIGFwcGxpY2F0aW9uL3gtZm9udC10dGYgYXBwbGljYXRpb24veC1qYXZhc2NyaXB0IGFwcGxpY2F0aW9uL3hodG1sK3htbCBhcHBsaWNhdGlvbi94bWwgZm9udC9lb3QgZm9udC9vcGVudHlwZSBmb250L290ZiBmb250L3RydWV0eXBlIGltYWdlL3N2Zyt4bWwgaW1hZ2Uvdm5kLm1pY3Jvc29mdC5pY29uIGltYWdlL3gtaWNvbiBpbWFnZS94LXdpbi1iaXRtYXAgdGV4dC9jc3MgdGV4dC9qYXZhc2NyaXB0IHRleHQvcGxhaW4gdGV4dC94bWwiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkxpc3Qgb2YgTUlNRSB0eXBlcyB0aGF0IHdpbGwgYmUgY29tcHJlc3NlZCB3aXRoIGJyb3RsaS4ifV19LCAiQlJPVExJX01JTl9MRU5HVEgiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiMTAwMCIsICJoZWxwIjogIk1pbmltdW0gbGVuZ3RoIGZvciBicm90bGkgY29tcHJlc3Npb24uIiwgImlkIjogImJyb3RsaS1taW4tbGVuZ3RoIiwgImxhYmVsIjogIk1pbmltdW0gbGVuZ3RoIiwgInJlZ2V4IjogIl5cXGQrIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTEiLCAicGF0dGVybiI6ICJeXFxkKyIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiTWluaW11bSBsZW5ndGgiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIxMDAwIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJNaW5pbXVtIGxlbmd0aCBmb3IgYnJvdGxpIGNvbXByZXNzaW9uLiJ9XX0sICJCUk9UTElfQ09NUF9MRVZFTCI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICI2IiwgImhlbHAiOiAiVGhlIGNvbXByZXNzaW9uIGxldmVsIG9mIHRoZSBicm90bGkgYWxnb3JpdGhtLiIsICJpZCI6ICJicm90bGktY29tcC1sZXZlbCIsICJsYWJlbCI6ICJDb21wcmVzc2lvbiBsZXZlbCIsICJyZWdleCI6ICJeKFswMi05XXwxWzAxXT8pJCIsICJ0eXBlIjogInNlbGVjdCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTAiLCAicGF0dGVybiI6ICJeKFswMi05XXwxWzAxXT8pJCIsICJpbnBUeXBlIjogInNlbGVjdCIsICJuYW1lIjogIkNvbXByZXNzaW9uIGxldmVsIiwgInZhbHVlcyI6IFsiMCIsICIxIiwgIjEwIiwgIjExIiwgIjIiLCAiMyIsICI0IiwgIjUiLCAiNiIsICI3IiwgIjgiLCAiOSJdLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICI2IiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJUaGUgY29tcHJlc3Npb24gbGV2ZWwgb2YgdGhlIGJyb3RsaSBhbGdvcml0aG0uIn1dfX0sICJjaGVja3N1bSI6IG51bGwsICJtdWx0aXBsZXMiOiB7fX0sIHsiaWQiOiAiYnVua2VybmV0IiwgInN0cmVhbSI6ICJ5ZXMiLCAibmFtZSI6ICJCdW5rZXJOZXQiLCAiZGVzY3JpcHRpb24iOiAiU2hhcmUgdGhyZWF0IGRhdGEgd2l0aCBvdGhlciBCdW5rZXJXZWIgaW5zdGFuY2VzIHZpYSBCdW5rZXJOZXQuIiwgInZlcnNpb24iOiAiMS4wIiwgInR5cGUiOiAiY29yZSIsICJtZXRob2QiOiAibWFudWFsIiwgInBhZ2UiOiB0cnVlLCAic2V0dGluZ3MiOiB7IlVTRV9CVU5LRVJORVQiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAieWVzIiwgImhlbHAiOiAiQWN0aXZhdGUgQnVua2VyTmV0IGZlYXR1cmUuIiwgImlkIjogInVzZS1idW5rZXJuZXQiLCAibGFiZWwiOiAiQWN0aXZhdGUgQnVua2VyTmV0IiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJjb250YWluZXJDbGFzcyI6ICJ6LTEiLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJBY3RpdmF0ZSBCdW5rZXJOZXQiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJ5ZXMiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkFjdGl2YXRlIEJ1bmtlck5ldCBmZWF0dXJlLiJ9XX0sICJCVU5LRVJORVRfU0VSVkVSIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogImh0dHBzOi8vYXBpLmJ1bmtlcndlYi5pbyIsICJoZWxwIjogIkFkZHJlc3Mgb2YgdGhlIEJ1bmtlck5ldCBBUEkuIiwgImlkIjogImJ1bmtlcm5ldC1zZXJ2ZXIiLCAibGFiZWwiOiAiQnVua2VyTmV0IHNlcnZlciIsICJyZWdleCI6ICJeaHR0cHM/OlxcL1xcL1tcXC1cXHdAOiUuK34jPV0rW1xcLVxcd1xcKFxcKSFAOiUrLn4jPyZcXC89JF0qJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0wIiwgInBhdHRlcm4iOiAiXmh0dHBzPzpcXC9cXC9bXFwtXFx3QDolLit+Iz1dK1tcXC1cXHdcXChcXCkhQDolKy5+Iz8mXFwvPSRdKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkJ1bmtlck5ldCBzZXJ2ZXIiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJodHRwczovL2FwaS5idW5rZXJ3ZWIuaW8iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJBZGRyZXNzIG9mIHRoZSBCdW5rZXJOZXQgQVBJLiJ9XX19LCAiY2hlY2tzdW0iOiBudWxsLCAibXVsdGlwbGVzIjoge319LCB7ImlkIjogImNvcnMiLCAic3RyZWFtIjogIm5vIiwgIm5hbWUiOiAiQ09SUyIsICJkZXNjcmlwdGlvbiI6ICJDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZy4iLCAidmVyc2lvbiI6ICIxLjAiLCAidHlwZSI6ICJjb3JlIiwgIm1ldGhvZCI6ICJtYW51YWwiLCAicGFnZSI6IHRydWUsICJzZXR0aW5ncyI6IHsiVVNFX0NPUlMiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAibm8iLCAiaGVscCI6ICJVc2UgQ09SUyIsICJpZCI6ICJ1c2UtY29ycyIsICJsYWJlbCI6ICJVc2UgQ09SUyIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xMCIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIlVzZSBDT1JTIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IHRydWUsICJ2YWx1ZSI6ICJ5ZXMiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJ0cmVzcGFzcyIsICJ0ZXh0IjogImlucF9wb3BvdmVyX21ldGhvZF9kaXNhYmxlZCJ9LCB7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiVXNlIENPUlMifV19LCAiQ09SU19BTExPV19PUklHSU4iOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiKiIsICJoZWxwIjogIkFsbG93ZWQgb3JpZ2lucyB0byBtYWtlIENPUlMgcmVxdWVzdHMgOiBQQ1JFIHJlZ2V4IG9yICouIiwgImlkIjogImNvcnMtYWxsb3ctb3JpZ2luIiwgImxhYmVsIjogIkFsbG93ZWQgb3JpZ2lucyIsICJyZWdleCI6ICJeLiokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTkiLCAicGF0dGVybiI6ICJeLiokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJBbGxvd2VkIG9yaWdpbnMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIqIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJBbGxvd2VkIG9yaWdpbnMgdG8gbWFrZSBDT1JTIHJlcXVlc3RzIDogUENSRSByZWdleCBvciAqLiJ9XX0sICJDT1JTX0FMTE9XX01FVEhPRFMiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiR0VULCBQT1NULCBPUFRJT05TIiwgImhlbHAiOiAiVmFsdWUgb2YgdGhlIEFjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMgaGVhZGVyLiIsICJpZCI6ICJjb3JzLWFsbG93LW1ldGhvZHMiLCAibGFiZWwiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctTWV0aG9kcyB2YWx1ZSIsICJyZWdleCI6ICJeKFxcKnwoPyFbLCBdKSgsPyA/KEdFVHxIRUFEfFBPU1R8UFVUfERFTEVURXxDT05ORUNUfE9QVElPTlN8VFJBQ0V8UEFUQ0gpKD8hLipcXDMpKSopPyQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotOCIsICJwYXR0ZXJuIjogIl4oXFwqfCg/IVssIF0pKCw/ID8oR0VUfEhFQUR8UE9TVHxQVVR8REVMRVRFfENPTk5FQ1R8T1BUSU9OU3xUUkFDRXxQQVRDSCkoPyEuKlxcMykpKik/JCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctTWV0aG9kcyB2YWx1ZSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIkdFVCwgUE9TVCwgT1BUSU9OUyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiVmFsdWUgb2YgdGhlIEFjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMgaGVhZGVyLiJ9XX0sICJDT1JTX0FMTE9XX0hFQURFUlMiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiRE5ULFVzZXItQWdlbnQsWC1SZXF1ZXN0ZWQtV2l0aCxJZi1Nb2RpZmllZC1TaW5jZSxDYWNoZS1Db250cm9sLENvbnRlbnQtVHlwZSxSYW5nZSIsICJoZWxwIjogIlZhbHVlIG9mIHRoZSBBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIGhlYWRlci4iLCAiaWQiOiAiY29ycy1hbGxvdy1oZWFkZXJzIiwgImxhYmVsIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMgdmFsdWUiLCAicmVnZXgiOiAiXihcXCp8KD8hWywgXSkoLD8gPyhbXFx3XFwtXSspKD8hLipcXDMoPyEuKSkpKik/JCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei03IiwgInBhdHRlcm4iOiAiXihcXCp8KD8hWywgXSkoLD8gPyhbXFx3XFwtXSspKD8hLipcXDMoPyEuKSkpKik/JCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyB2YWx1ZSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIkROVCxVc2VyLUFnZW50LFgtUmVxdWVzdGVkLVdpdGgsSWYtTW9kaWZpZWQtU2luY2UsQ2FjaGUtQ29udHJvbCxDb250ZW50LVR5cGUsUmFuZ2UiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlZhbHVlIG9mIHRoZSBBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIGhlYWRlci4ifV19LCAiQ09SU19BTExPV19DUkVERU5USUFMUyI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJubyIsICJoZWxwIjogIlNlbmQgdGhlIEFjY2Vzcy1Db250cm9sLUFsbG93LUNyZWRlbnRpYWxzIGhlYWRlci4iLCAiaWQiOiAiY29ycy1hbGxvdy1jcmVkZW50aWFscyIsICJsYWJlbCI6ICJTZW5kIEFjY2Vzcy1Db250cm9sLUFsbG93LUNyZWRlbnRpYWxzIiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJjb250YWluZXJDbGFzcyI6ICJ6LTYiLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJTZW5kIEFjY2Vzcy1Db250cm9sLUFsbG93LUNyZWRlbnRpYWxzIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAibm8iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlNlbmQgdGhlIEFjY2Vzcy1Db250cm9sLUFsbG93LUNyZWRlbnRpYWxzIGhlYWRlci4ifV19LCAiQ09SU19FWFBPU0VfSEVBREVSUyI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJDb250ZW50LUxlbmd0aCxDb250ZW50LVJhbmdlIiwgImhlbHAiOiAiVmFsdWUgb2YgdGhlIEFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIGhlYWRlci4iLCAiaWQiOiAiY29ycy1leHBvc2UtaGVhZGVycyIsICJsYWJlbCI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyB2YWx1ZSIsICJyZWdleCI6ICJeKFxcKnwoPyFbLCBdKykoLD8gPyhbXFx3XFwtXSspKD8hLipcXDMoPyEuKSkpKik/JCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei01IiwgInBhdHRlcm4iOiAiXihcXCp8KD8hWywgXSspKCw/ID8oW1xcd1xcLV0rKSg/IS4qXFwzKD8hLikpKSopPyQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIHZhbHVlIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiQ29udGVudC1MZW5ndGgsQ29udGVudC1SYW5nZSIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiVmFsdWUgb2YgdGhlIEFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIGhlYWRlci4ifV19LCAiQ1JPU1NfT1JJR0lOX09QRU5FUl9QT0xJQ1kiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiVmFsdWUgZm9yIHRoZSBDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSBoZWFkZXIuIiwgImlkIjogImNyb3NzLW9yaWdpbi1vcGVuZXItcG9saWN5IiwgImxhYmVsIjogIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5IiwgInJlZ2V4IjogIl4odW5zYWZlLW5vbmV8c2FtZS1vcmlnaW4tYWxsb3ctcG9wdXBzfHNhbWUtb3JpZ2luKT8kIiwgInR5cGUiOiAic2VsZWN0IiwgImNvbnRhaW5lckNsYXNzIjogInotNCIsICJwYXR0ZXJuIjogIl4odW5zYWZlLW5vbmV8c2FtZS1vcmlnaW4tYWxsb3ctcG9wdXBzfHNhbWUtb3JpZ2luKT8kIiwgImlucFR5cGUiOiAic2VsZWN0IiwgIm5hbWUiOiAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiLCAidmFsdWVzIjogWyIiLCAic2FtZS1vcmlnaW4iLCAic2FtZS1vcmlnaW4tYWxsb3ctcG9wdXBzIiwgInVuc2FmZS1ub25lIl0sICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiVmFsdWUgZm9yIHRoZSBDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSBoZWFkZXIuIn1dfSwgIkNST1NTX09SSUdJTl9FTUJFRERFUl9QT0xJQ1kiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiVmFsdWUgZm9yIHRoZSBDcm9zcy1PcmlnaW4tRW1iZWRkZXItUG9saWN5IGhlYWRlci4iLCAiaWQiOiAiY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeSIsICJsYWJlbCI6ICJDcm9zcy1PcmlnaW4tRW1iZWRkZXItUG9saWN5IiwgInJlZ2V4IjogIl4odW5zYWZlLW5vbmV8cmVxdWlyZS1jb3JwfGNyZWRlbnRpYWxsZXNzKT8kIiwgInR5cGUiOiAic2VsZWN0IiwgImNvbnRhaW5lckNsYXNzIjogInotMyIsICJwYXR0ZXJuIjogIl4odW5zYWZlLW5vbmV8cmVxdWlyZS1jb3JwfGNyZWRlbnRpYWxsZXNzKT8kIiwgImlucFR5cGUiOiAic2VsZWN0IiwgIm5hbWUiOiAiQ3Jvc3MtT3JpZ2luLUVtYmVkZGVyLVBvbGljeSIsICJ2YWx1ZXMiOiBbIiIsICJjcmVkZW50aWFsbGVzcyIsICJyZXF1aXJlLWNvcnAiLCAidW5zYWZlLW5vbmUiXSwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJWYWx1ZSBmb3IgdGhlIENyb3NzLU9yaWdpbi1FbWJlZGRlci1Qb2xpY3kgaGVhZGVyLiJ9XX0sICJDUk9TU19PUklHSU5fUkVTT1VSQ0VfUE9MSUNZIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIlZhbHVlIGZvciB0aGUgQ3Jvc3MtT3JpZ2luLVJlc291cmNlLVBvbGljeSBoZWFkZXIuIiwgImlkIjogImNyb3NzLW9yaWdpbi1yZXNvdXJjZS1wb2xpY3kiLCAibGFiZWwiOiAiQ3Jvc3MtT3JpZ2luLVJlc291cmNlLVBvbGljeSIsICJyZWdleCI6ICJeKHNhbWUtc2l0ZXxzYW1lLW9yaWdpbnxjcm9zcy1vcmlnaW4pPyQiLCAidHlwZSI6ICJzZWxlY3QiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0yIiwgInBhdHRlcm4iOiAiXihzYW1lLXNpdGV8c2FtZS1vcmlnaW58Y3Jvc3Mtb3JpZ2luKT8kIiwgImlucFR5cGUiOiAic2VsZWN0IiwgIm5hbWUiOiAiQ3Jvc3MtT3JpZ2luLVJlc291cmNlLVBvbGljeSIsICJ2YWx1ZXMiOiBbIiIsICJjcm9zcy1vcmlnaW4iLCAic2FtZS1vcmlnaW4iLCAic2FtZS1zaXRlIl0sICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiVmFsdWUgZm9yIHRoZSBDcm9zcy1PcmlnaW4tUmVzb3VyY2UtUG9saWN5IGhlYWRlci4ifV19LCAiQ09SU19NQVhfQUdFIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIjg2NDAwIiwgImhlbHAiOiAiVmFsdWUgb2YgdGhlIEFjY2Vzcy1Db250cm9sLU1heC1BZ2UgaGVhZGVyLiIsICJpZCI6ICJjb3JzLW1heC1hZ2UiLCAibGFiZWwiOiAiQWNjZXNzLUNvbnRyb2wtTWF4LUFnZSB2YWx1ZSIsICJyZWdleCI6ICJeXFxkKyQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMSIsICJwYXR0ZXJuIjogIl5cXGQrJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtTWF4LUFnZSB2YWx1ZSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIjg2NDAwIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJWYWx1ZSBvZiB0aGUgQWNjZXNzLUNvbnRyb2wtTWF4LUFnZSBoZWFkZXIuIn1dfSwgIkNPUlNfREVOWV9SRVFVRVNUIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogInllcyIsICJoZWxwIjogIkRlbnkgcmVxdWVzdCBhbmQgZG9uJ3Qgc2VuZCBpdCB0byBiYWNrZW5kIGlmIE9yaWdpbiBpcyBub3QgYWxsb3dlZC4iLCAiaWQiOiAiY29ycy1kZW55LXJlcXVlc3QiLCAibGFiZWwiOiAiRGVueSByZXF1ZXN0IiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJjb250YWluZXJDbGFzcyI6ICJ6LTAiLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJEZW55IHJlcXVlc3QiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJ5ZXMiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkRlbnkgcmVxdWVzdCBhbmQgZG9uJ3Qgc2VuZCBpdCB0byBiYWNrZW5kIGlmIE9yaWdpbiBpcyBub3QgYWxsb3dlZC4ifV19fSwgImNoZWNrc3VtIjogbnVsbCwgIm11bHRpcGxlcyI6IHt9fSwgeyJpZCI6ICJjbGllbnRjYWNoZSIsICJzdHJlYW0iOiAibm8iLCAibmFtZSI6ICJDbGllbnQgY2FjaGUiLCAiZGVzY3JpcHRpb24iOiAiTWFuYWdlIGNhY2hpbmcgZm9yIGNsaWVudHMuIiwgInZlcnNpb24iOiAiMS4wIiwgInR5cGUiOiAiY29yZSIsICJtZXRob2QiOiAibWFudWFsIiwgInBhZ2UiOiBmYWxzZSwgInNldHRpbmdzIjogeyJVU0VfQ0xJRU5UX0NBQ0hFIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIm5vIiwgImhlbHAiOiAiVGVsbCBjbGllbnQgdG8gc3RvcmUgbG9jYWxseSBzdGF0aWMgZmlsZXMuIiwgImlkIjogInVzZS1jbGllbnQtY2FjaGUiLCAibGFiZWwiOiAiVXNlIGNsaWVudCBjYWNoZSIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei0zIiwgInBhdHRlcm4iOiAiXih5ZXN8bm8pJCIsICJpbnBUeXBlIjogImNoZWNrYm94IiwgIm5hbWUiOiAiVXNlIGNsaWVudCBjYWNoZSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIm5vIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJUZWxsIGNsaWVudCB0byBzdG9yZSBsb2NhbGx5IHN0YXRpYyBmaWxlcy4ifV19LCAiQ0xJRU5UX0NBQ0hFX0VYVEVOU0lPTlMiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAianBnfGpwZWd8cG5nfGJtcHxpY298c3ZnfHRpZnxjc3N8anN8b3RmfHR0Znxlb3R8d29mZnx3b2ZmMiIsICJoZWxwIjogIkxpc3Qgb2YgZmlsZSBleHRlbnNpb25zLCBzZXBhcmF0ZWQgd2l0aCBwaXBlcyB0aGF0IHNob3VsZCBiZSBjYWNoZWQuIiwgImlkIjogImNsaWVudC1jYWNoZS1leHRlbnNpb25zIiwgImxhYmVsIjogIkV4dGVuc2lvbnMgdGhhdCBzaG91bGQgYmUgY2FjaGVkIGJ5IHRoZSBjbGllbnQiLCAicmVnZXgiOiAiXig/IVxcfCkoXFx8PyhbYS16MC05XSspKD8hLipcXDIoPyEuKSkpKyQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMiIsICJwYXR0ZXJuIjogIl4oPyFcXHwpKFxcfD8oW2EtejAtOV0rKSg/IS4qXFwyKD8hLikpKSskIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJFeHRlbnNpb25zIHRoYXQgc2hvdWxkIGJlIGNhY2hlZCBieSB0aGUgY2xpZW50IiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAianBnfGpwZWd8cG5nfGJtcHxpY298c3ZnfHRpZnxjc3N8anN8b3RmfHR0Znxlb3R8d29mZnx3b2ZmMiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkxpc3Qgb2YgZmlsZSBleHRlbnNpb25zLCBzZXBhcmF0ZWQgd2l0aCBwaXBlcyB0aGF0IHNob3VsZCBiZSBjYWNoZWQuIn1dfSwgIkNMSUVOVF9DQUNIRV9FVEFHIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogInllcyIsICJoZWxwIjogIlNlbmQgdGhlIEhUVFAgRVRhZyBoZWFkZXIgZm9yIHN0YXRpYyByZXNvdXJjZXMuIiwgImlkIjogImNsaWVudC1jYWNoZS1ldGFnIiwgImxhYmVsIjogIkVUYWciLCAicmVnZXgiOiAiXih5ZXN8bm8pJCIsICJ0eXBlIjogImNoZWNrIiwgImNvbnRhaW5lckNsYXNzIjogInotMSIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIkVUYWciLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJ5ZXMiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlNlbmQgdGhlIEhUVFAgRVRhZyBoZWFkZXIgZm9yIHN0YXRpYyByZXNvdXJjZXMuIn1dfSwgIkNMSUVOVF9DQUNIRV9DT05UUk9MIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogInB1YmxpYywgbWF4LWFnZT0xNTU1MjAwMCIsICJoZWxwIjogIlZhbHVlIG9mIHRoZSBDYWNoZS1Db250cm9sIEhUVFAgaGVhZGVyLiIsICJpZCI6ICJjbGllbnQtY2FjaGUtY29udHJvbCIsICJsYWJlbCI6ICJDYWNoZS1Db250cm9sIGhlYWRlciIsICJyZWdleCI6ICJeKD8hKCwgP3wgKSkoKCwgKT8oKChtYXgtYWdlfHMtbWF4YWdlfHN0YWxlLXdoaWxlLXJldmFsaWRhdGV8c3RhbGUtaWYtZXJyb3IpPVxcZCsoPyEuKlxcNikpfCgoPyEuKnB1YmxpYylwcml2YXRlfCg/IS4qcHJpdmF0ZSlwdWJsaWMpfChtdXN0fHByb3h5KS1yZXZhbGlkYXRlfG11c3QtdW5kZXJzdGFuZHxpbW11dGFibGV8bm8tKGNhY2hlfHN0b3JlfHRyYW5zZm9ybSkpKD8hLipcXDQpKSskIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTAiLCAicGF0dGVybiI6ICJeKD8hKCwgP3wgKSkoKCwgKT8oKChtYXgtYWdlfHMtbWF4YWdlfHN0YWxlLXdoaWxlLXJldmFsaWRhdGV8c3RhbGUtaWYtZXJyb3IpPVxcZCsoPyEuKlxcNikpfCgoPyEuKnB1YmxpYylwcml2YXRlfCg/IS4qcHJpdmF0ZSlwdWJsaWMpfChtdXN0fHByb3h5KS1yZXZhbGlkYXRlfG11c3QtdW5kZXJzdGFuZHxpbW11dGFibGV8bm8tKGNhY2hlfHN0b3JlfHRyYW5zZm9ybSkpKD8hLipcXDQpKSskIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJDYWNoZS1Db250cm9sIGhlYWRlciIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogInB1YmxpYywgbWF4LWFnZT0xNTU1MjAwMCIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiVmFsdWUgb2YgdGhlIENhY2hlLUNvbnRyb2wgSFRUUCBoZWFkZXIuIn1dfX0sICJjaGVja3N1bSI6IG51bGwsICJtdWx0aXBsZXMiOiB7fX0sIHsiaWQiOiAiY291bnRyeSIsICJzdHJlYW0iOiAieWVzIiwgIm5hbWUiOiAiQ291bnRyeSIsICJkZXNjcmlwdGlvbiI6ICJEZW55IGFjY2VzcyBiYXNlZCBvbiB0aGUgY291bnRyeSBvZiB0aGUgY2xpZW50IElQLiIsICJ2ZXJzaW9uIjogIjEuMCIsICJ0eXBlIjogImNvcmUiLCAibWV0aG9kIjogIm1hbnVhbCIsICJwYWdlIjogdHJ1ZSwgInNldHRpbmdzIjogeyJCTEFDS0xJU1RfQ09VTlRSWSI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJEZW55IGFjY2VzcyBpZiB0aGUgY291bnRyeSBvZiB0aGUgY2xpZW50IGlzIGluIHRoZSBsaXN0IChJU08gMzE2Ni0xIGFscGhhLTIgZm9ybWF0IHNlcGFyYXRlZCB3aXRoIHNwYWNlcykuIiwgImlkIjogImNvdW50cnktYmxhY2tsaXN0IiwgImxhYmVsIjogIkNvdW50cnkgYmxhY2tsaXN0IiwgInJlZ2V4IjogIl4oPyEgKSggKihbQS1aXXsyfSkoPyEuKlxcMikgKikqJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xIiwgInBhdHRlcm4iOiAiXig/ISApKCAqKFtBLVpdezJ9KSg/IS4qXFwyKSAqKSokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJDb3VudHJ5IGJsYWNrbGlzdCIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiRGVueSBhY2Nlc3MgaWYgdGhlIGNvdW50cnkgb2YgdGhlIGNsaWVudCBpcyBpbiB0aGUgbGlzdCAoSVNPIDMxNjYtMSBhbHBoYS0yIGZvcm1hdCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMpLiJ9XX0sICJXSElURUxJU1RfQ09VTlRSWSI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJEZW55IGFjY2VzcyBpZiB0aGUgY291bnRyeSBvZiB0aGUgY2xpZW50IGlzIG5vdCBpbiB0aGUgbGlzdCAoSVNPIDMxNjYtMSBhbHBoYS0yIGZvcm1hdCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMpLiIsICJpZCI6ICJjb3VudHJ5LXdoaXRlbGlzdCIsICJsYWJlbCI6ICJDb3VudHJ5IHdoaXRlbGlzdCIsICJyZWdleCI6ICJeKD8hICkoICooW0EtWl17Mn0pKD8hLipcXDIpICopKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMCIsICJwYXR0ZXJuIjogIl4oPyEgKSggKihbQS1aXXsyfSkoPyEuKlxcMikgKikqJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiQ291bnRyeSB3aGl0ZWxpc3QiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkRlbnkgYWNjZXNzIGlmIHRoZSBjb3VudHJ5IG9mIHRoZSBjbGllbnQgaXMgbm90IGluIHRoZSBsaXN0IChJU08gMzE2Ni0xIGFscGhhLTIgZm9ybWF0IHNlcGFyYXRlZCB3aXRoIHNwYWNlcykuIn1dfX0sICJjaGVja3N1bSI6IG51bGwsICJtdWx0aXBsZXMiOiB7fX0sIHsiaWQiOiAiY3VzdG9tY2VydCIsICJzdHJlYW0iOiAieWVzIiwgIm5hbWUiOiAiQ3VzdG9tIEhUVFBTIGNlcnRpZmljYXRlIiwgImRlc2NyaXB0aW9uIjogIkNob29zZSBjdXN0b20gY2VydGlmaWNhdGUgZm9yIEhUVFBTLiIsICJ2ZXJzaW9uIjogIjEuMCIsICJ0eXBlIjogImNvcmUiLCAibWV0aG9kIjogIm1hbnVhbCIsICJwYWdlIjogZmFsc2UsICJzZXR0aW5ncyI6IHsiVVNFX0NVU1RPTV9TU0wiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAibm8iLCAiaGVscCI6ICJVc2UgY3VzdG9tIEhUVFBTIGNlcnRpZmljYXRlLiIsICJpZCI6ICJ1c2UtY3VzdG9tLWh0dHBzIiwgImxhYmVsIjogIlVzZSBjdXN0b20gY2VydGlmaWNhdGUiLCAicmVnZXgiOiAiXih5ZXN8bm8pJCIsICJ0eXBlIjogImNoZWNrIiwgImNvbnRhaW5lckNsYXNzIjogInotNCIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIlVzZSBjdXN0b20gY2VydGlmaWNhdGUiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJubyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiVXNlIGN1c3RvbSBIVFRQUyBjZXJ0aWZpY2F0ZS4ifV19LCAiQ1VTVE9NX1NTTF9DRVJUIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIkZ1bGwgcGF0aCBvZiB0aGUgY2VydGlmaWNhdGUgb3IgYnVuZGxlIGZpbGUgKG11c3QgYmUgcmVhZGFibGUgYnkgdGhlIHNjaGVkdWxlcikuIiwgImlkIjogImN1c3RvbS1odHRwcy1jZXJ0IiwgImxhYmVsIjogIkNlcnRpZmljYXRlIHBhdGgiLCAicmVnZXgiOiAiXigvW1xcdy4gXFwtXSspKi8/JCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0zIiwgInBhdHRlcm4iOiAiXigvW1xcdy4gXFwtXSspKi8/JCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiQ2VydGlmaWNhdGUgcGF0aCIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiRnVsbCBwYXRoIG9mIHRoZSBjZXJ0aWZpY2F0ZSBvciBidW5kbGUgZmlsZSAobXVzdCBiZSByZWFkYWJsZSBieSB0aGUgc2NoZWR1bGVyKS4ifV19LCAiQ1VTVE9NX1NTTF9LRVkiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiRnVsbCBwYXRoIG9mIHRoZSBrZXkgZmlsZSAobXVzdCBiZSByZWFkYWJsZSBieSB0aGUgc2NoZWR1bGVyKS4iLCAiaWQiOiAiY3VzdG9tLWh0dHBzLWtleSIsICJsYWJlbCI6ICJLZXkgcGF0aCIsICJyZWdleCI6ICJeKC9bXFx3LiBcXC1dKykqLz8kIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTIiLCAicGF0dGVybiI6ICJeKC9bXFx3LiBcXC1dKykqLz8kIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJLZXkgcGF0aCIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiRnVsbCBwYXRoIG9mIHRoZSBrZXkgZmlsZSAobXVzdCBiZSByZWFkYWJsZSBieSB0aGUgc2NoZWR1bGVyKS4ifV19LCAiQ1VTVE9NX1NTTF9DRVJUX0RBVEEiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiQ2VydGlmaWNhdGUgZGF0YSBlbmNvZGVkIGluIGJhc2U2NC4iLCAiaWQiOiAiY3VzdG9tLWh0dHBzLWNlcnQtZGF0YSIsICJsYWJlbCI6ICJDZXJ0aWZpY2F0ZSBkYXRhIChiYXNlNjQpIiwgInJlZ2V4IjogIl4uKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMSIsICJwYXR0ZXJuIjogIl4uKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkNlcnRpZmljYXRlIGRhdGEgKGJhc2U2NCkiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkNlcnRpZmljYXRlIGRhdGEgZW5jb2RlZCBpbiBiYXNlNjQuIn1dfSwgIkNVU1RPTV9TU0xfS0VZX0RBVEEiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiS2V5IGRhdGEgZW5jb2RlZCBpbiBiYXNlNjQuIiwgImlkIjogImN1c3RvbS1odHRwcy1rZXktZGF0YSIsICJsYWJlbCI6ICJLZXkgZGF0YSAoYmFzZTY0KSIsICJyZWdleCI6ICJeLiokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTAiLCAicGF0dGVybiI6ICJeLiokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJLZXkgZGF0YSAoYmFzZTY0KSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiS2V5IGRhdGEgZW5jb2RlZCBpbiBiYXNlNjQuIn1dfX0sICJjaGVja3N1bSI6IG51bGwsICJtdWx0aXBsZXMiOiB7fX0sIHsiaWQiOiAiZGIiLCAic3RyZWFtIjogInllcyIsICJuYW1lIjogIkRCIiwgImRlc2NyaXB0aW9uIjogIkludGVncmF0ZSBlYXNpbHkgdGhlIERhdGFiYXNlLiIsICJ2ZXJzaW9uIjogIjEuMCIsICJ0eXBlIjogImNvcmUiLCAibWV0aG9kIjogIm1hbnVhbCIsICJwYWdlIjogZmFsc2UsICJzZXR0aW5ncyI6IHsiREFUQUJBU0VfVVJJIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogInNxbGl0ZTovLy8vdmFyL2xpYi9idW5rZXJ3ZWIvZGIuc3FsaXRlMyIsICJoZWxwIjogIlRoZSBkYXRhYmFzZSBVUkksIGZvbGxvd2luZyB0aGUgc3FsYWxjaGVteSBmb3JtYXQuIiwgImlkIjogImRhdGFiYXNlLXVyaSIsICJsYWJlbCI6ICJUaGUgZGF0YWJhc2UgVVJJIiwgInJlZ2V4IjogIl4oKHBvc3RncmVzcWx8bXlzcWx8bWFyaWFkYnxzcWxpdGUpKFxcK1tcXHdcXC1dKyk/Oi4rKT8kIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTIiLCAicGF0dGVybiI6ICJeKChwb3N0Z3Jlc3FsfG15c3FsfG1hcmlhZGJ8c3FsaXRlKShcXCtbXFx3XFwtXSspPzouKyk/JCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiVGhlIGRhdGFiYXNlIFVSSSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogInNxbGl0ZTovLy8vdmFyL2xpYi9idW5rZXJ3ZWIvZGIuc3FsaXRlMyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlRoZSBkYXRhYmFzZSBVUkksIGZvbGxvd2luZyB0aGUgc3FsYWxjaGVteSBmb3JtYXQuIn1dfSwgIkRBVEFCQVNFX1VSSV9SRUFET05MWSI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJUaGUgZGF0YWJhc2UgVVJJIGZvciByZWFkLW9ubHkgb3BlcmF0aW9ucywgaXQgY2FuIGFsc28gc2VydmUgYXMgYSBmYWxsYmFjayBpZiB0aGUgbWFpbiBkYXRhYmFzZSBpcyBkb3duLiBGb2xsb3dpbmcgdGhlIHNxbGFsY2hlbXkgZm9ybWF0LiIsICJpZCI6ICJkYXRhYmFzZS11cmktcmVhZG9ubHkiLCAibGFiZWwiOiAiVGhlIGRhdGFiYXNlIFVSSSBmb3IgcmVhZC1vbmx5IG9wZXJhdGlvbnMiLCAicmVnZXgiOiAiXigocG9zdGdyZXNxbHxteXNxbHxtYXJpYWRifHNxbGl0ZSkoXFwrW1xcd1xcLV0rKT86LispPyQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMSIsICJwYXR0ZXJuIjogIl4oKHBvc3RncmVzcWx8bXlzcWx8bWFyaWFkYnxzcWxpdGUpKFxcK1tcXHdcXC1dKyk/Oi4rKT8kIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJUaGUgZGF0YWJhc2UgVVJJIGZvciByZWFkLW9ubHkgb3BlcmF0aW9ucyIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlRoZSBkYXRhYmFzZSBVUkkgZm9yIHJlYWQtb25seSBvcGVyYXRpb25zLCBpdCBjYW4gYWxzbyBzZXJ2ZSBhcyBhIGZhbGxiYWNrIGlmIHRoZSBtYWluIGRhdGFiYXNlIGlzIGRvd24uIEZvbGxvd2luZyB0aGUgc3FsYWxjaGVteSBmb3JtYXQuIn1dfSwgIkRBVEFCQVNFX0xPR19MRVZFTCI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICJ3YXJuaW5nIiwgImhlbHAiOiAiVGhlIGxldmVsIHRvIHVzZSBmb3IgZGF0YWJhc2UgbG9ncy4iLCAiaWQiOiAiZGF0YWJhc2UtbG9nLWxldmVsIiwgImxhYmVsIjogIkRhdGFiYXNlIGxvZyBsZXZlbCIsICJyZWdleCI6ICJeKGRlYnVnfGluZm98d2Fybnx3YXJuaW5nfGVycm9yKSQiLCAidHlwZSI6ICJzZWxlY3QiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0wIiwgInBhdHRlcm4iOiAiXihkZWJ1Z3xpbmZvfHdhcm58d2FybmluZ3xlcnJvcikkIiwgImlucFR5cGUiOiAic2VsZWN0IiwgIm5hbWUiOiAiRGF0YWJhc2UgbG9nIGxldmVsIiwgInZhbHVlcyI6IFsiZGVidWciLCAiZXJyb3IiLCAiaW5mbyIsICJ3YXJuIiwgIndhcm5pbmciXSwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAid2FybmluZyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlRoZSBsZXZlbCB0byB1c2UgZm9yIGRhdGFiYXNlIGxvZ3MuIn1dfX0sICJjaGVja3N1bSI6IG51bGwsICJtdWx0aXBsZXMiOiB7fX0sIHsiaWQiOiAiZG5zYmwiLCAic3RyZWFtIjogInllcyIsICJuYW1lIjogIkROU0JMIiwgImRlc2NyaXB0aW9uIjogIkRlbnkgYWNjZXNzIGJhc2VkIG9uIGV4dGVybmFsIEROU0JMIHNlcnZlcnMuIiwgInZlcnNpb24iOiAiMS4wIiwgInR5cGUiOiAiY29yZSIsICJtZXRob2QiOiAibWFudWFsIiwgInBhZ2UiOiB0cnVlLCAic2V0dGluZ3MiOiB7IlVTRV9ETlNCTCI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJ5ZXMiLCAiaGVscCI6ICJBY3RpdmF0ZSBETlNCTCBmZWF0dXJlLiIsICJpZCI6ICJ1c2UtZG5zYmwiLCAibGFiZWwiOiAiQWN0aXZhdGUgRE5TQkwiLCAicmVnZXgiOiAiXih5ZXN8bm8pJCIsICJ0eXBlIjogImNoZWNrIiwgImNvbnRhaW5lckNsYXNzIjogInotMSIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIkFjdGl2YXRlIEROU0JMIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAieWVzIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJBY3RpdmF0ZSBETlNCTCBmZWF0dXJlLiJ9XX0sICJETlNCTF9MSVNUIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogImJsLmJsb2NrbGlzdC5kZSBwcm9ibGVtcy5kbnNibC5zb3Jicy5uZXQgc2JsLnNwYW1oYXVzLm9yZyB4Ymwuc3BhbWhhdXMub3JnIiwgImhlbHAiOiAiTGlzdCBvZiBETlNCTCBzZXJ2ZXJzLiIsICJpZCI6ICJkbnNibC1saXN0IiwgImxhYmVsIjogIkROU0JMIGxpc3QiLCAicmVnZXgiOiAiXig/ISApKCA/KCg/IVxcLilbXFx3Ll0rKSg/IS4qXFwyKD8hLikpKSokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTAiLCAicGF0dGVybiI6ICJeKD8hICkoID8oKD8hXFwuKVtcXHcuXSspKD8hLipcXDIoPyEuKSkpKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkROU0JMIGxpc3QiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJibC5ibG9ja2xpc3QuZGUgcHJvYmxlbXMuZG5zYmwuc29yYnMubmV0IHNibC5zcGFtaGF1cy5vcmcgeGJsLnNwYW1oYXVzLm9yZyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkxpc3Qgb2YgRE5TQkwgc2VydmVycy4ifV19fSwgImNoZWNrc3VtIjogbnVsbCwgIm11bHRpcGxlcyI6IHt9fSwgeyJpZCI6ICJlcnJvcnMiLCAic3RyZWFtIjogIm5vIiwgIm5hbWUiOiAiRXJyb3JzIiwgImRlc2NyaXB0aW9uIjogIk1hbmFnZSBkZWZhdWx0IGVycm9yIHBhZ2VzIiwgInZlcnNpb24iOiAiMS4wIiwgInR5cGUiOiAiY29yZSIsICJtZXRob2QiOiAibWFudWFsIiwgInBhZ2UiOiB0cnVlLCAic2V0dGluZ3MiOiB7IkVSUk9SUyI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJMaXN0IG9mIEhUVFAgZXJyb3IgY29kZSBhbmQgY29ycmVzcG9uZGluZyBlcnJvciBwYWdlcywgc2VwYXJhdGVkIHdpdGggc3BhY2VzICg0MDQ9L215NDA0Lmh0bWwgNDAzPS9lcnJvcnMvNDAzLmh0bWwgLi4uKS4iLCAiaWQiOiAiZXJyb3JzIiwgImxhYmVsIjogIkVycm9ycyIsICJyZWdleCI6ICJeKD8hICkoID8oWzEtNV1cXGR7Mn0pKD8hLipcXDIoPyFbXj1dKSk9KFxcL1tcXHdcXF0ufjpcXC8/I1xcW0AhJFxcJidcXChcXCkqKyw7PVxcLV0qKSg/IS4qXFwzKD8hLikpKSokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTEiLCAicGF0dGVybiI6ICJeKD8hICkoID8oWzEtNV1cXGR7Mn0pKD8hLipcXDIoPyFbXj1dKSk9KFxcL1tcXHdcXF0ufjpcXC8/I1xcW0AhJFxcJidcXChcXCkqKyw7PVxcLV0qKSg/IS4qXFwzKD8hLikpKSokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJFcnJvcnMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogdHJ1ZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogInRyZXNwYXNzIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbWV0aG9kX2Rpc2FibGVkIn0sIHsiaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIEhUVFAgZXJyb3IgY29kZSBhbmQgY29ycmVzcG9uZGluZyBlcnJvciBwYWdlcywgc2VwYXJhdGVkIHdpdGggc3BhY2VzICg0MDQ9L215NDA0Lmh0bWwgNDAzPS9lcnJvcnMvNDAzLmh0bWwgLi4uKS4ifV19LCAiSU5URVJDRVBURURfRVJST1JfQ09ERVMiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiNDAwIDQwMSA0MDMgNDA0IDQwNSA0MTMgNDI5IDUwMCA1MDEgNTAyIDUwMyA1MDQiLCAiaGVscCI6ICJMaXN0IG9mIEhUVFAgZXJyb3IgY29kZSBpbnRlcmNlcHRlZCBieSBCdW5rZXJXZWIiLCAiaWQiOiAiaW50ZXJjZXB0ZWQtZXJyb3ItY29kZXMiLCAibGFiZWwiOiAiSW50ZXJjZXB0ZWQgZXJyb3IgY29kZXMiLCAicmVnZXgiOiAiXiggKihbMS01XVxcZHsyfSkoPyEuKlxcMikgKikrJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0wIiwgInBhdHRlcm4iOiAiXiggKihbMS01XVxcZHsyfSkoPyEuKlxcMikgKikrJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiSW50ZXJjZXB0ZWQgZXJyb3IgY29kZXMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICI0MDAgNDAxIDQwMyA0MDQgNDA1IDQxMyA0MjkgNTAwIDUwMSA1MDIgNTAzIDUwNCIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTGlzdCBvZiBIVFRQIGVycm9yIGNvZGUgaW50ZXJjZXB0ZWQgYnkgQnVua2VyV2ViIn1dfX0sICJjaGVja3N1bSI6IG51bGwsICJtdWx0aXBsZXMiOiB7fX0sIHsiaWQiOiAiZ3JleWxpc3QiLCAic3RyZWFtIjogInBhcnRpYWwiLCAibmFtZSI6ICJHcmV5bGlzdCIsICJkZXNjcmlwdGlvbiI6ICJBbGxvdyBhY2Nlc3Mgd2hpbGUga2VlcGluZyBzZWN1cml0eSBmZWF0dXJlcyBiYXNlZCBvbiBpbnRlcm5hbCBhbmQgZXh0ZXJuYWwgSVAvbmV0d29yay9yRE5TL0FTTiBncmV5bGlzdHMuIiwgInZlcnNpb24iOiAiMS4wIiwgInR5cGUiOiAiY29yZSIsICJtZXRob2QiOiAibWFudWFsIiwgInBhZ2UiOiB0cnVlLCAic2V0dGluZ3MiOiB7IlVTRV9HUkVZTElTVCI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJubyIsICJoZWxwIjogIkFjdGl2YXRlIGdyZXlsaXN0IGZlYXR1cmUuIiwgImlkIjogInVzZS1ncmV5bGlzdCIsICJsYWJlbCI6ICJBY3RpdmF0ZSBncmV5bGlzdGluZyIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xMSIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIkFjdGl2YXRlIGdyZXlsaXN0aW5nIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAibm8iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkFjdGl2YXRlIGdyZXlsaXN0IGZlYXR1cmUuIn1dfSwgIkdSRVlMSVNUX0lQIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIkxpc3Qgb2YgSVAvbmV0d29yaywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCB0byBwdXQgaW50byB0aGUgZ3JleWxpc3QuIiwgImlkIjogImdyZXlsaXN0LWlwIiwgImxhYmVsIjogIkdyZXlsaXN0IElQL25ldHdvcmsiLCAicmVnZXgiOiAiXig/ISApKCAqKCgoXFxiMjVbMC01XXxcXGIyWzAtNF1cXGR8XFxiWzAxXT9cXGRcXGQ/KShcXC4oMjVbMC01XXwyWzAtNF1cXGR8WzAxXT9cXGRcXGQ/KSl7M30pKFxcLyhbMS0yXVswLTldP3wzWzAtMl0/fFswNC05XSkpP3woKFswLTlhLWZBLUZdezEsNH06KXs3fVswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDd9OnwoWzAtOWEtZkEtRl17MSw0fTopezEsNn06WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsNX0oOlswLTlhLWZBLUZdezEsNH0pezEsMn18KFswLTlhLWZBLUZdezEsNH06KXsxLDR9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDN9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwzfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsMn0oOlswLTlhLWZBLUZdezEsNH0pezEsNX18WzAtOWEtZkEtRl17MSw0fTooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDZ9KXw6KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw3fXw6KXxmZTgwOig6WzAtOWEtZkEtRl1aezAsNH0pezAsNH0lWzAtOWEtekEtWl0rfDo6KGZmZmYoOjB7MSw0fSk/Oik/KCgyNVswLTVdfCgyWzAtNF18MT9cXGQpP1xcZClcXC4pezN9KDI1WzAtNV18KDJbMC00XXwxP1xcZCk/XFxkKXwoWzAtOWEtZkEtRl17MSw0fTopezEsNH06KCgyNVswLTVdfCgyWzAtNF18MT9cXGQpP1xcZClcXC4pezN9KDI1WzAtNV18KDJbMC00XXwxP1xcZCk/XFxkKSkoXFwvKDEyWzAtOF18MVswMV1bMC05XXxbMC05XVswLTldPykpPykoPyEuKlxcRFxcMihbXlxcZFxcL118JCkpICopKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMTAiLCAicGF0dGVybiI6ICJeKD8hICkoICooKChcXGIyNVswLTVdfFxcYjJbMC00XVxcZHxcXGJbMDFdP1xcZFxcZD8pKFxcLigyNVswLTVdfDJbMC00XVxcZHxbMDFdP1xcZFxcZD8pKXszfSkoXFwvKFsxLTJdWzAtOV0/fDNbMC0yXT98WzA0LTldKSk/fCgoWzAtOWEtZkEtRl17MSw0fTopezd9WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsN306fChbMC05YS1mQS1GXXsxLDR9Oil7MSw2fTpbMC05YS1mQS1GXXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw1fSg6WzAtOWEtZkEtRl17MSw0fSl7MSwyfXwoWzAtOWEtZkEtRl17MSw0fTopezEsNH0oOlswLTlhLWZBLUZdezEsNH0pezEsM318KFswLTlhLWZBLUZdezEsNH06KXsxLDN9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwyfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw1fXxbMC05YS1mQS1GXXsxLDR9OigoOlswLTlhLWZBLUZdezEsNH0pezEsNn0pfDooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDd9fDopfGZlODA6KDpbMC05YS1mQS1GXVp7MCw0fSl7MCw0fSVbMC05YS16QS1aXSt8OjooZmZmZig6MHsxLDR9KT86KT8oKDI1WzAtNV18KDJbMC00XXwxP1xcZCk/XFxkKVxcLil7M30oMjVbMC01XXwoMlswLTRdfDE/XFxkKT9cXGQpfChbMC05YS1mQS1GXXsxLDR9Oil7MSw0fTooKDI1WzAtNV18KDJbMC00XXwxP1xcZCk/XFxkKVxcLil7M30oMjVbMC01XXwoMlswLTRdfDE/XFxkKT9cXGQpKShcXC8oMTJbMC04XXwxWzAxXVswLTldfFswLTldWzAtOV0/KSk/KSg/IS4qXFxEXFwyKFteXFxkXFwvXXwkKSkgKikqJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiR3JleWxpc3QgSVAvbmV0d29yayIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTGlzdCBvZiBJUC9uZXR3b3JrLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIHRvIHB1dCBpbnRvIHRoZSBncmV5bGlzdC4ifV19LCAiR1JFWUxJU1RfUkROUyI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJMaXN0IG9mIHJldmVyc2UgRE5TIHN1ZmZpeGVzLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIHRvIHB1dCBpbnRvIHRoZSBncmV5bGlzdC4iLCAiaWQiOiAiZ3JleWxpc3QtcmRucyIsICJsYWJlbCI6ICJHcmV5bGlzdCByZXZlcnNlIEROUyIsICJyZWdleCI6ICJeKCAqKChbXiBdKykoPyEuKlxcMyggfCQpKSkgKikqJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei05IiwgInBhdHRlcm4iOiAiXiggKigoW14gXSspKD8hLipcXDMoIHwkKSkpICopKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkdyZXlsaXN0IHJldmVyc2UgRE5TIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIHJldmVyc2UgRE5TIHN1ZmZpeGVzLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIHRvIHB1dCBpbnRvIHRoZSBncmV5bGlzdC4ifV19LCAiR1JFWUxJU1RfUkROU19HTE9CQUwiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAieWVzIiwgImhlbHAiOiAiT25seSBwZXJmb3JtIFJETlMgZ3JleWxpc3QgY2hlY2tzIG9uIGdsb2JhbCBJUCBhZGRyZXNzZXMuIiwgImlkIjogImdyZXlsaXN0LXJkbnMtZ2xvYmFsIiwgImxhYmVsIjogIkdyZXlsaXN0IHJldmVyc2UgRE5TIGdsb2JhbCBJUHMiLCAicmVnZXgiOiAiXih5ZXN8bm8pJCIsICJ0eXBlIjogImNoZWNrIiwgImNvbnRhaW5lckNsYXNzIjogInotOCIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIkdyZXlsaXN0IHJldmVyc2UgRE5TIGdsb2JhbCBJUHMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJ5ZXMiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIk9ubHkgcGVyZm9ybSBSRE5TIGdyZXlsaXN0IGNoZWNrcyBvbiBnbG9iYWwgSVAgYWRkcmVzc2VzLiJ9XX0sICJHUkVZTElTVF9BU04iOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiTGlzdCBvZiBBU04gbnVtYmVycywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCB0byBwdXQgaW50byB0aGUgZ3JleWxpc3QuIiwgImlkIjogImdyZXlsaXN0LWFzbiIsICJsYWJlbCI6ICJHcmV5bGlzdCBBU04iLCAicmVnZXgiOiAiXl4oICooKEFTTj8pPyhcXGQrKVxcYig/IS4qW1NOIF1cXDRcXGIpKSAqKSokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTciLCAicGF0dGVybiI6ICJeXiggKigoQVNOPyk/KFxcZCspXFxiKD8hLipbU04gXVxcNFxcYikpICopKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkdyZXlsaXN0IEFTTiIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTGlzdCBvZiBBU04gbnVtYmVycywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCB0byBwdXQgaW50byB0aGUgZ3JleWxpc3QuIn1dfSwgIkdSRVlMSVNUX1VTRVJfQUdFTlQiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiTGlzdCBvZiBVc2VyLUFnZW50IChQQ1JFIHJlZ2V4KSwgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCB0byBwdXQgaW50byB0aGUgZ3JleWxpc3QuIiwgImlkIjogImdyZXlsaXN0LXVzZXItYWdlbnQiLCAibGFiZWwiOiAiR3JleWxpc3QgVXNlci1BZ2VudCIsICJyZWdleCI6ICJeLiokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTYiLCAicGF0dGVybiI6ICJeLiokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJHcmV5bGlzdCBVc2VyLUFnZW50IiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIFVzZXItQWdlbnQgKFBDUkUgcmVnZXgpLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIHRvIHB1dCBpbnRvIHRoZSBncmV5bGlzdC4ifV19LCAiR1JFWUxJU1RfVVJJIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIkxpc3Qgb2YgVVJJIChQQ1JFIHJlZ2V4KSwgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCB0byBwdXQgaW50byB0aGUgZ3JleWxpc3QuIiwgImlkIjogImdyZXlsaXN0LXVyaSIsICJsYWJlbCI6ICJHcmV5bGlzdCBVUkkiLCAicmVnZXgiOiAiXi4qJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei01IiwgInBhdHRlcm4iOiAiXi4qJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiR3JleWxpc3QgVVJJIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIFVSSSAoUENSRSByZWdleCksIHNlcGFyYXRlZCB3aXRoIHNwYWNlcywgdG8gcHV0IGludG8gdGhlIGdyZXlsaXN0LiJ9XX0sICJHUkVZTElTVF9JUF9VUkxTIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIkxpc3Qgb2YgVVJMcywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCBjb250YWluaW5nIGdvb2QgSVAvbmV0d29yayB0byBwdXQgaW50byB0aGUgZ3JleWxpc3QuIiwgImlkIjogImdyZXlsaXN0LWlwLXVybHMiLCAibGFiZWwiOiAiR3JleWxpc3QgSVAvbmV0d29yayBVUkxzIiwgInJlZ2V4IjogIl4oICooKGh0dHBzPzpcXC9cXC98ZmlsZTpcXC9cXC9cXC8pW1xcLVxcd0A6JS4rfiM9XStbXFwtXFx3XFwoXFwpIUA6JSsufiM/JlxcLz0kXSopKD8hLipcXDIoPyEuKSkgKikqJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei00IiwgInBhdHRlcm4iOiAiXiggKigoaHR0cHM/OlxcL1xcL3xmaWxlOlxcL1xcL1xcLylbXFwtXFx3QDolLit+Iz1dK1tcXC1cXHdcXChcXCkhQDolKy5+Iz8mXFwvPSRdKikoPyEuKlxcMig/IS4pKSAqKSokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJHcmV5bGlzdCBJUC9uZXR3b3JrIFVSTHMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIFVSTHMsIHNlcGFyYXRlZCB3aXRoIHNwYWNlcywgY29udGFpbmluZyBnb29kIElQL25ldHdvcmsgdG8gcHV0IGludG8gdGhlIGdyZXlsaXN0LiJ9XX0sICJHUkVZTElTVF9SRE5TX1VSTFMiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiTGlzdCBvZiBVUkxzLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIGNvbnRhaW5pbmcgcmV2ZXJzZSBETlMgc3VmZml4ZXMgdG8gcHV0IGludG8gdGhlIGdyZXlsaXN0LiIsICJpZCI6ICJncmV5bGlzdC1yZG5zLXVybHMiLCAibGFiZWwiOiAiR3JleWxpc3QgcmV2ZXJzZSBETlMgVVJMcyIsICJyZWdleCI6ICJeKCAqKChodHRwcz86XFwvXFwvfGZpbGU6XFwvXFwvXFwvKVtcXC1cXHdAOiUuK34jPV0rW1xcLVxcd1xcKFxcKSFAOiUrLn4jPyZcXC89JF0qKSg/IS4qXFwyKD8hLikpICopKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMyIsICJwYXR0ZXJuIjogIl4oICooKGh0dHBzPzpcXC9cXC98ZmlsZTpcXC9cXC9cXC8pW1xcLVxcd0A6JS4rfiM9XStbXFwtXFx3XFwoXFwpIUA6JSsufiM/JlxcLz0kXSopKD8hLipcXDIoPyEuKSkgKikqJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiR3JleWxpc3QgcmV2ZXJzZSBETlMgVVJMcyIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkxpc3Qgb2YgVVJMcywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCBjb250YWluaW5nIHJldmVyc2UgRE5TIHN1ZmZpeGVzIHRvIHB1dCBpbnRvIHRoZSBncmV5bGlzdC4ifV19LCAiR1JFWUxJU1RfQVNOX1VSTFMiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiTGlzdCBvZiBVUkxzLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIGNvbnRhaW5pbmcgQVNOIHRvIHB1dCBpbnRvIHRoZSBncmV5bGlzdC4iLCAiaWQiOiAiZ3JleWxpc3QtYXNuLXVybHMiLCAibGFiZWwiOiAiR3JleWxpc3QgQVNOIFVSTHMiLCAicmVnZXgiOiAiXiggKigoaHR0cHM/OlxcL1xcL3xmaWxlOlxcL1xcL1xcLylbXFwtXFx3QDolLit+Iz1dK1tcXC1cXHdcXChcXCkhQDolKy5+Iz8mXFwvPSRdKikoPyEuKlxcMig/IS4pKSAqKSokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTIiLCAicGF0dGVybiI6ICJeKCAqKChodHRwcz86XFwvXFwvfGZpbGU6XFwvXFwvXFwvKVtcXC1cXHdAOiUuK34jPV0rW1xcLVxcd1xcKFxcKSFAOiUrLn4jPyZcXC89JF0qKSg/IS4qXFwyKD8hLikpICopKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkdyZXlsaXN0IEFTTiBVUkxzIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTGlzdCBvZiBVUkxzLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIGNvbnRhaW5pbmcgQVNOIHRvIHB1dCBpbnRvIHRoZSBncmV5bGlzdC4ifV19LCAiR1JFWUxJU1RfVVNFUl9BR0VOVF9VUkxTIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIkxpc3Qgb2YgVVJMcywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCBjb250YWluaW5nIGdvb2QgVXNlci1BZ2VudCB0byBwdXQgaW50byB0aGUgZ3JleWxpc3QuIiwgImlkIjogImdyZXlsaXN0LXVzZXItYWdlbnQtdXJscyIsICJsYWJlbCI6ICJHcmV5bGlzdCBVc2VyLUFnZW50IFVSTHMiLCAicmVnZXgiOiAiXiggKigoaHR0cHM/OlxcL1xcL3xmaWxlOlxcL1xcL1xcLylbXFwtXFx3QDolLit+Iz1dK1tcXC1cXHdcXChcXCkhQDolKy5+Iz8mXFwvPSRdKikoPyEuKlxcMig/IS4pKSAqKSokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTEiLCAicGF0dGVybiI6ICJeKCAqKChodHRwcz86XFwvXFwvfGZpbGU6XFwvXFwvXFwvKVtcXC1cXHdAOiUuK34jPV0rW1xcLVxcd1xcKFxcKSFAOiUrLn4jPyZcXC89JF0qKSg/IS4qXFwyKD8hLikpICopKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkdyZXlsaXN0IFVzZXItQWdlbnQgVVJMcyIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkxpc3Qgb2YgVVJMcywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCBjb250YWluaW5nIGdvb2QgVXNlci1BZ2VudCB0byBwdXQgaW50byB0aGUgZ3JleWxpc3QuIn1dfSwgIkdSRVlMSVNUX1VSSV9VUkxTIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIkxpc3Qgb2YgVVJMcywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCBjb250YWluaW5nIGJhZCBVUkkgdG8gcHV0IGludG8gdGhlIGdyZXlsaXN0LiIsICJpZCI6ICJncmV5bGlzdC11cmktdXJscyIsICJsYWJlbCI6ICJHcmV5bGlzdCBVUkkgVVJMcyIsICJyZWdleCI6ICJeKCAqKChodHRwcz86XFwvXFwvfGZpbGU6XFwvXFwvXFwvKVtcXC1cXHdAOiUuK34jPV0rW1xcLVxcd1xcKFxcKSFAOiUrLn4jPyZcXC89JF0qKSg/IS4qXFwyKD8hLikpICopKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMCIsICJwYXR0ZXJuIjogIl4oICooKGh0dHBzPzpcXC9cXC98ZmlsZTpcXC9cXC9cXC8pW1xcLVxcd0A6JS4rfiM9XStbXFwtXFx3XFwoXFwpIUA6JSsufiM/JlxcLz0kXSopKD8hLipcXDIoPyEuKSkgKikqJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiR3JleWxpc3QgVVJJIFVSTHMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIFVSTHMsIHNlcGFyYXRlZCB3aXRoIHNwYWNlcywgY29udGFpbmluZyBiYWQgVVJJIHRvIHB1dCBpbnRvIHRoZSBncmV5bGlzdC4ifV19fSwgImNoZWNrc3VtIjogbnVsbCwgIm11bHRpcGxlcyI6IHt9fSwgeyJpZCI6ICJnemlwIiwgInN0cmVhbSI6ICJubyIsICJuYW1lIjogIkd6aXAiLCAiZGVzY3JpcHRpb24iOiAiQ29tcHJlc3MgSFRUUCByZXF1ZXN0cyB3aXRoIHRoZSBnemlwIGFsZ29yaXRobS4iLCAidmVyc2lvbiI6ICIxLjAiLCAidHlwZSI6ICJjb3JlIiwgIm1ldGhvZCI6ICJtYW51YWwiLCAicGFnZSI6IGZhbHNlLCAic2V0dGluZ3MiOiB7IlVTRV9HWklQIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIm5vIiwgImhlbHAiOiAiVXNlIGd6aXAiLCAiaWQiOiAidXNlLWd6aXAiLCAibGFiZWwiOiAiVXNlIGd6aXAiLCAicmVnZXgiOiAiXih5ZXN8bm8pJCIsICJ0eXBlIjogImNoZWNrIiwgImNvbnRhaW5lckNsYXNzIjogInotNCIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIlVzZSBnemlwIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiZHNmcmdyZGdyZGdyZGhnZCIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiVXNlIGd6aXAifV19LCAiR1pJUF9UWVBFUyI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJhcHBsaWNhdGlvbi9hdG9tK3htbCBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IGFwcGxpY2F0aW9uL2pzb24gYXBwbGljYXRpb24vcnNzK3htbCBhcHBsaWNhdGlvbi92bmQubXMtZm9udG9iamVjdCBhcHBsaWNhdGlvbi94LWZvbnQtb3BlbnR5cGUgYXBwbGljYXRpb24veC1mb250LXRydWV0eXBlIGFwcGxpY2F0aW9uL3gtZm9udC10dGYgYXBwbGljYXRpb24veC1qYXZhc2NyaXB0IGFwcGxpY2F0aW9uL3hodG1sK3htbCBhcHBsaWNhdGlvbi94bWwgZm9udC9lb3QgZm9udC9vcGVudHlwZSBmb250L290ZiBmb250L3RydWV0eXBlIGltYWdlL3N2Zyt4bWwgaW1hZ2Uvdm5kLm1pY3Jvc29mdC5pY29uIGltYWdlL3gtaWNvbiBpbWFnZS94LXdpbi1iaXRtYXAgdGV4dC9jc3MgdGV4dC9qYXZhc2NyaXB0IHRleHQvcGxhaW4gdGV4dC94bWwiLCAiaGVscCI6ICJMaXN0IG9mIE1JTUUgdHlwZXMgdGhhdCB3aWxsIGJlIGNvbXByZXNzZWQgd2l0aCBnemlwLiIsICJpZCI6ICJnemlwLXR5cGVzIiwgImxhYmVsIjogIk1JTUUgdHlwZXMiLCAicmVnZXgiOiAiXig/ISApKCA/KFtcXC1cXHcuXSsvW1xcLVxcdy4rXSspKD8hLipcXDIoPyEuKSkpKyQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMyIsICJwYXR0ZXJuIjogIl4oPyEgKSggPyhbXFwtXFx3Ll0rL1tcXC1cXHcuK10rKSg/IS4qXFwyKD8hLikpKSskIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJNSU1FIHR5cGVzIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiYXBwbGljYXRpb24vYXRvbSt4bWwgYXBwbGljYXRpb24vamF2YXNjcmlwdCBhcHBsaWNhdGlvbi9qc29uIGFwcGxpY2F0aW9uL3Jzcyt4bWwgYXBwbGljYXRpb24vdm5kLm1zLWZvbnRvYmplY3QgYXBwbGljYXRpb24veC1mb250LW9wZW50eXBlIGFwcGxpY2F0aW9uL3gtZm9udC10cnVldHlwZSBhcHBsaWNhdGlvbi94LWZvbnQtdHRmIGFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCBhcHBsaWNhdGlvbi94aHRtbCt4bWwgYXBwbGljYXRpb24veG1sIGZvbnQvZW90IGZvbnQvb3BlbnR5cGUgZm9udC9vdGYgZm9udC90cnVldHlwZSBpbWFnZS9zdmcreG1sIGltYWdlL3ZuZC5taWNyb3NvZnQuaWNvbiBpbWFnZS94LWljb24gaW1hZ2UveC13aW4tYml0bWFwIHRleHQvY3NzIHRleHQvamF2YXNjcmlwdCB0ZXh0L3BsYWluIHRleHQveG1sIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIE1JTUUgdHlwZXMgdGhhdCB3aWxsIGJlIGNvbXByZXNzZWQgd2l0aCBnemlwLiJ9XX0sICJHWklQX01JTl9MRU5HVEgiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiMTAwMCIsICJoZWxwIjogIk1pbmltdW0gbGVuZ3RoIGZvciBnemlwIGNvbXByZXNzaW9uLiIsICJpZCI6ICJnemlwLW1pbi1sZW5ndGgiLCAibGFiZWwiOiAiTWluaW11bSBsZW5ndGgiLCAicmVnZXgiOiAiXlxcZCskIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTIiLCAicGF0dGVybiI6ICJeXFxkKyQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIk1pbmltdW0gbGVuZ3RoIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiMTAwMCIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTWluaW11bSBsZW5ndGggZm9yIGd6aXAgY29tcHJlc3Npb24uIn1dfSwgIkdaSVBfQ09NUF9MRVZFTCI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICI1IiwgImhlbHAiOiAiVGhlIGNvbXByZXNzaW9uIGxldmVsIG9mIHRoZSBnemlwIGFsZ29yaXRobS4iLCAiaWQiOiAiZ3ppcC1jb21wLWxldmVsIiwgImxhYmVsIjogIkNvbXByZXNzaW9uIGxldmVsIiwgInJlZ2V4IjogIl5bMS05XSQiLCAidHlwZSI6ICJzZWxlY3QiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xIiwgInBhdHRlcm4iOiAiXlsxLTldJCIsICJpbnBUeXBlIjogInNlbGVjdCIsICJuYW1lIjogIkNvbXByZXNzaW9uIGxldmVsIiwgInZhbHVlcyI6IFsiMSIsICIyIiwgIjMiLCAiNCIsICI1IiwgIjYiLCAiNyIsICI4IiwgIjkiXSwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiNSIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiVGhlIGNvbXByZXNzaW9uIGxldmVsIG9mIHRoZSBnemlwIGFsZ29yaXRobS4ifV19LCAiR1pJUF9QUk9YSUVEIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIm5vLWNhY2hlIG5vLXN0b3JlIHByaXZhdGUgZXhwaXJlZCBhdXRoIiwgImhlbHAiOiAiV2hpY2gga2luZCBvZiBwcm94aWVkIHJlcXVlc3RzIHdlIHNob3VsZCBjb21wcmVzcy4iLCAiaWQiOiAiZ3ppcC1wcm94aWVkIiwgImxhYmVsIjogIlByb3hpZWQgcmVxdWVzdHMiLCAicmVnZXgiOiAiXi4qJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0wIiwgInBhdHRlcm4iOiAiXi4qJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiUHJveGllZCByZXF1ZXN0cyIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIm5vLWNhY2hlIG5vLXN0b3JlIHByaXZhdGUgZXhwaXJlZCBhdXRoIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJXaGljaCBraW5kIG9mIHByb3hpZWQgcmVxdWVzdHMgd2Ugc2hvdWxkIGNvbXByZXNzLiJ9XX19LCAiY2hlY2tzdW0iOiBudWxsLCAibXVsdGlwbGVzIjoge319LCB7ImlkIjogImluamVjdCIsICJzdHJlYW0iOiAibm8iLCAibmFtZSI6ICJIVE1MIGluamVjdGlvbiIsICJkZXNjcmlwdGlvbiI6ICJJbmplY3QgY3VzdG9tIEhUTUwgY29kZSBiZWZvcmUgdGhlIDwvYm9keT4gdGFnLiIsICJ2ZXJzaW9uIjogIjEuMCIsICJ0eXBlIjogImNvcmUiLCAibWV0aG9kIjogIm1hbnVhbCIsICJwYWdlIjogZmFsc2UsICJzZXR0aW5ncyI6IHsiSU5KRUNUX0JPRFkiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiVGhlIEhUTUwgY29kZSB0byBpbmplY3QuIiwgImlkIjogImluamVjdC1ib2R5IiwgImxhYmVsIjogIkhUTUwgY29kZSIsICJyZWdleCI6ICJeLiokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTAiLCAicGF0dGVybiI6ICJeLiokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJIVE1MIGNvZGUiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlRoZSBIVE1MIGNvZGUgdG8gaW5qZWN0LiJ9XX19LCAiY2hlY2tzdW0iOiBudWxsLCAibXVsdGlwbGVzIjoge319LCB7ImlkIjogImhlYWRlcnMiLCAic3RyZWFtIjogIm5vIiwgIm5hbWUiOiAiSGVhZGVycyIsICJkZXNjcmlwdGlvbiI6ICJNYW5hZ2UgSFRUUCBoZWFkZXJzIHNlbnQgdG8gY2xpZW50cy4iLCAidmVyc2lvbiI6ICIxLjAiLCAidHlwZSI6ICJjb3JlIiwgIm1ldGhvZCI6ICJtYW51YWwiLCAicGFnZSI6IGZhbHNlLCAic2V0dGluZ3MiOiB7IlJFTU9WRV9IRUFERVJTIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIlNlcnZlciBFeHBlY3QtQ1QgWC1Qb3dlcmVkLUJ5IFgtQXNwTmV0LVZlcnNpb24gWC1Bc3BOZXRNdmMtVmVyc2lvbiIsICJoZWxwIjogIkhlYWRlcnMgdG8gcmVtb3ZlIChIZWFkZXIxIEhlYWRlcjIgSGVhZGVyMyAuLi4pIiwgImlkIjogInJlbW92ZS1oZWFkZXJzIiwgImxhYmVsIjogIlJlbW92ZSBoZWFkZXJzIiwgInJlZ2V4IjogIl4oPyEgKSggP1tcXHdcXC1dKykqJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xMiIsICJwYXR0ZXJuIjogIl4oPyEgKSggP1tcXHdcXC1dKykqJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiUmVtb3ZlIGhlYWRlcnMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJTZXJ2ZXIgRXhwZWN0LUNUIFgtUG93ZXJlZC1CeSBYLUFzcE5ldC1WZXJzaW9uIFgtQXNwTmV0TXZjLVZlcnNpb24iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkhlYWRlcnMgdG8gcmVtb3ZlIChIZWFkZXIxIEhlYWRlcjIgSGVhZGVyMyAuLi4pIn1dfSwgIktFRVBfVVBTVFJFQU1fSEVBREVSUyI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJDb250ZW50LVNlY3VyaXR5LVBvbGljeSBQZXJtaXNzaW9ucy1Qb2xpY3kgRmVhdHVyZS1Qb2xpY3kgWC1GcmFtZS1PcHRpb25zIiwgImhlbHAiOiAiSGVhZGVycyB0byBrZWVwIGZyb20gdXBzdHJlYW0gKEhlYWRlcjEgSGVhZGVyMiBIZWFkZXIzIC4uLiBvciAqIGZvciBhbGwpLiIsICJpZCI6ICJrZWVwLXVwc3RyZWFtLWhlYWRlcnMiLCAibGFiZWwiOiAiS2VlcCB1cHN0cmVhbSBoZWFkZXJzIiwgInJlZ2V4IjogIl4oKD8hICkoID9bXFx3XFwtXSspK3xcXCopPyQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMTEiLCAicGF0dGVybiI6ICJeKCg/ISApKCA/W1xcd1xcLV0rKSt8XFwqKT8kIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJLZWVwIHVwc3RyZWFtIGhlYWRlcnMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJDb250ZW50LVNlY3VyaXR5LVBvbGljeSBQZXJtaXNzaW9ucy1Qb2xpY3kgRmVhdHVyZS1Qb2xpY3kgWC1GcmFtZS1PcHRpb25zIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJIZWFkZXJzIHRvIGtlZXAgZnJvbSB1cHN0cmVhbSAoSGVhZGVyMSBIZWFkZXIyIEhlYWRlcjMgLi4uIG9yICogZm9yIGFsbCkuIn1dfSwgIlNUUklDVF9UUkFOU1BPUlRfU0VDVVJJVFkiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAibWF4LWFnZT0zMTUzNjAwMCIsICJoZWxwIjogIlZhbHVlIGZvciB0aGUgU3RyaWN0LVRyYW5zcG9ydC1TZWN1cml0eSBoZWFkZXIuIiwgImlkIjogInN0cmljdC10cmFuc3BvcnQtc2VjdXJpdHkiLCAibGFiZWwiOiAiU3RyaWN0LVRyYW5zcG9ydC1TZWN1cml0eSIsICJyZWdleCI6ICJebWF4LWFnZT1cXGQrKDsgaW5jbHVkZVN1YkRvbWFpbnMoOyBwcmVsb2FkKT8pPyQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMTAiLCAicGF0dGVybiI6ICJebWF4LWFnZT1cXGQrKDsgaW5jbHVkZVN1YkRvbWFpbnMoOyBwcmVsb2FkKT8pPyQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIlN0cmljdC1UcmFuc3BvcnQtU2VjdXJpdHkiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJtYXgtYWdlPTMxNTM2MDAwIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJWYWx1ZSBmb3IgdGhlIFN0cmljdC1UcmFuc3BvcnQtU2VjdXJpdHkgaGVhZGVyLiJ9XX0sICJDT09LSUVfQVVUT19TRUNVUkVfRkxBRyI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJ5ZXMiLCAiaGVscCI6ICJBdXRvbWF0aWNhbGx5IGFkZCB0aGUgU2VjdXJlIGZsYWcgdG8gYWxsIGNvb2tpZXMuIiwgImlkIjogImNvb2tpZS1hdXRvLXNlY3VyZS1mbGFnIiwgImxhYmVsIjogIkNvb2tpZSBhdXRvIFNlY3VyZSBmbGFnIiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJjb250YWluZXJDbGFzcyI6ICJ6LTgiLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJDb29raWUgYXV0byBTZWN1cmUgZmxhZyIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogInllcyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiQXV0b21hdGljYWxseSBhZGQgdGhlIFNlY3VyZSBmbGFnIHRvIGFsbCBjb29raWVzLiJ9XX0sICJDT05URU5UX1NFQ1VSSVRZX1BPTElDWSI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJvYmplY3Qtc3JjICdub25lJzsgZm9ybS1hY3Rpb24gJ3NlbGYnOyBmcmFtZS1hbmNlc3RvcnMgJ3NlbGYnOyIsICJoZWxwIjogIlZhbHVlIGZvciB0aGUgQ29udGVudC1TZWN1cml0eS1Qb2xpY3kgaGVhZGVyLiIsICJpZCI6ICJjb250ZW50LXNlY3VyaXR5LXBvbGljeSIsICJsYWJlbCI6ICJDb250ZW50LVNlY3VyaXR5LVBvbGljeSIsICJyZWdleCI6ICJeLiokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTciLCAicGF0dGVybiI6ICJeLiokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJDb250ZW50LVNlY3VyaXR5LVBvbGljeSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIm9iamVjdC1zcmMgJ25vbmUnOyBmb3JtLWFjdGlvbiAnc2VsZic7IGZyYW1lLWFuY2VzdG9ycyAnc2VsZic7IiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJWYWx1ZSBmb3IgdGhlIENvbnRlbnQtU2VjdXJpdHktUG9saWN5IGhlYWRlci4ifV19LCAiQ09OVEVOVF9TRUNVUklUWV9QT0xJQ1lfUkVQT1JUX09OTFkiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAibm8iLCAiaGVscCI6ICJTZW5kIHJlcG9ydHMgZm9yIHZpb2xhdGlvbnMgb2YgdGhlIENvbnRlbnQtU2VjdXJpdHktUG9saWN5IGhlYWRlciBpbnN0ZWFkIG9mIGJsb2NraW5nIHRoZW0uIiwgImlkIjogImNvbnRlbnQtc2VjdXJpdHktcG9saWN5LXJlcG9ydC1vbmx5IiwgImxhYmVsIjogIkNvbnRlbnQtU2VjdXJpdHktUG9saWN5LVJlcG9ydC1Pbmx5IiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJjb250YWluZXJDbGFzcyI6ICJ6LTYiLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJDb250ZW50LVNlY3VyaXR5LVBvbGljeS1SZXBvcnQtT25seSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIm5vIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJTZW5kIHJlcG9ydHMgZm9yIHZpb2xhdGlvbnMgb2YgdGhlIENvbnRlbnQtU2VjdXJpdHktUG9saWN5IGhlYWRlciBpbnN0ZWFkIG9mIGJsb2NraW5nIHRoZW0uIn1dfSwgIlJFRkVSUkVSX1BPTElDWSI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJzdHJpY3Qtb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luIiwgImhlbHAiOiAiVmFsdWUgZm9yIHRoZSBSZWZlcnJlci1Qb2xpY3kgaGVhZGVyLiIsICJpZCI6ICJyZWZlcnJlci1wb2xpY3kiLCAibGFiZWwiOiAiUmVmZXJyZXItUG9saWN5IiwgInJlZ2V4IjogIl4oPyFeKCx8ICkpKCgsICk/KG5vLXJlZmVycmVyLXdoZW4tZG93bmdyYWRlfG5vLXJlZmVycmVyfG9yaWdpbi13aGVuLWNyb3NzLW9yaWdpbnxzYW1lLW9yaWdpbnxzdHJpY3Qtb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2lufHN0cmljdC1vcmlnaW58b3JpZ2lufHVuc2FmZS11cmwpKD8hXFxiLiosIFxcNFxcYikpKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotNSIsICJwYXR0ZXJuIjogIl4oPyFeKCx8ICkpKCgsICk/KG5vLXJlZmVycmVyLXdoZW4tZG93bmdyYWRlfG5vLXJlZmVycmVyfG9yaWdpbi13aGVuLWNyb3NzLW9yaWdpbnxzYW1lLW9yaWdpbnxzdHJpY3Qtb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2lufHN0cmljdC1vcmlnaW58b3JpZ2lufHVuc2FmZS11cmwpKD8hXFxiLiosIFxcNFxcYikpKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIlJlZmVycmVyLVBvbGljeSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogInN0cmljdC1vcmlnaW4td2hlbi1jcm9zcy1vcmlnaW4iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlZhbHVlIGZvciB0aGUgUmVmZXJyZXItUG9saWN5IGhlYWRlci4ifV19LCAiUEVSTUlTU0lPTlNfUE9MSUNZIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogImFjY2VsZXJvbWV0ZXI9KCksIGFtYmllbnQtbGlnaHQtc2Vuc29yPSgpLCBhdXRvcGxheT0oKSwgYmF0dGVyeT0oKSwgY2FtZXJhPSgpLCBjcm9zcy1vcmlnaW4taXNvbGF0ZWQ9KCksIGRpc3BsYXktY2FwdHVyZT0oKSwgZG9jdW1lbnQtZG9tYWluPSgpLCBlbmNyeXB0ZWQtbWVkaWE9KCksIGV4ZWN1dGlvbi13aGlsZS1ub3QtcmVuZGVyZWQ9KCksIGV4ZWN1dGlvbi13aGlsZS1vdXQtb2Ytdmlld3BvcnQ9KCksIGZ1bGxzY3JlZW49KCksIGdlb2xvY2F0aW9uPSgpLCBneXJvc2NvcGU9KCksIGhpZD0oKSwgaWRsZS1kZXRlY3Rpb249KCksIG1hZ25ldG9tZXRlcj0oKSwgbWljcm9waG9uZT0oKSwgbWlkaT0oKSwgbmF2aWdhdGlvbi1vdmVycmlkZT0oKSwgcGF5bWVudD0oKSwgcGljdHVyZS1pbi1waWN0dXJlPSgpLCBwdWJsaWNrZXktY3JlZGVudGlhbHMtZ2V0PSgpLCBzY3JlZW4td2FrZS1sb2NrPSgpLCBzZXJpYWw9KCksIHVzYj0oKSwgd2ViLXNoYXJlPSgpLCB4ci1zcGF0aWFsLXRyYWNraW5nPSgpIiwgImhlbHAiOiAiVmFsdWUgZm9yIHRoZSBQZXJtaXNzaW9ucy1Qb2xpY3kgaGVhZGVyLiIsICJpZCI6ICJwZXJtaXNzaW9ucy1wb2xpY3kiLCAibGFiZWwiOiAiUGVybWlzc2lvbnMtUG9saWN5IiwgInJlZ2V4IjogIl4oPyFbLCBdKSgsPyA/KFthLXpcXC1dKykoPyEuKlteXFwtXVxcMj0pPShcXCp8XFwoKCA/KHNlbGZ8XFx1MDAyMmh0dHBzPzpcXC9cXC9bXFwtXFx3QDolLit+Iz1dK1tcXC1cXHdcXChcXCkhQDolKy5+Iz8mXFwvPSRdKlxcdTAwMjIpKD89WyBcXCldKSkqXFwpKSkqJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei00IiwgInBhdHRlcm4iOiAiXig/IVssIF0pKCw/ID8oW2EtelxcLV0rKSg/IS4qW15cXC1dXFwyPSk9KFxcKnxcXCgoID8oc2VsZnxcXHUwMDIyaHR0cHM/OlxcL1xcL1tcXC1cXHdAOiUuK34jPV0rW1xcLVxcd1xcKFxcKSFAOiUrLn4jPyZcXC89JF0qXFx1MDAyMikoPz1bIFxcKV0pKSpcXCkpKSokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJQZXJtaXNzaW9ucy1Qb2xpY3kiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJhY2NlbGVyb21ldGVyPSgpLCBhbWJpZW50LWxpZ2h0LXNlbnNvcj0oKSwgYXV0b3BsYXk9KCksIGJhdHRlcnk9KCksIGNhbWVyYT0oKSwgY3Jvc3Mtb3JpZ2luLWlzb2xhdGVkPSgpLCBkaXNwbGF5LWNhcHR1cmU9KCksIGRvY3VtZW50LWRvbWFpbj0oKSwgZW5jcnlwdGVkLW1lZGlhPSgpLCBleGVjdXRpb24td2hpbGUtbm90LXJlbmRlcmVkPSgpLCBleGVjdXRpb24td2hpbGUtb3V0LW9mLXZpZXdwb3J0PSgpLCBmdWxsc2NyZWVuPSgpLCBnZW9sb2NhdGlvbj0oKSwgZ3lyb3Njb3BlPSgpLCBoaWQ9KCksIGlkbGUtZGV0ZWN0aW9uPSgpLCBtYWduZXRvbWV0ZXI9KCksIG1pY3JvcGhvbmU9KCksIG1pZGk9KCksIG5hdmlnYXRpb24tb3ZlcnJpZGU9KCksIHBheW1lbnQ9KCksIHBpY3R1cmUtaW4tcGljdHVyZT0oKSwgcHVibGlja2V5LWNyZWRlbnRpYWxzLWdldD0oKSwgc2NyZWVuLXdha2UtbG9jaz0oKSwgc2VyaWFsPSgpLCB1c2I9KCksIHdlYi1zaGFyZT0oKSwgeHItc3BhdGlhbC10cmFja2luZz0oKSIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiVmFsdWUgZm9yIHRoZSBQZXJtaXNzaW9ucy1Qb2xpY3kgaGVhZGVyLiJ9XX0sICJGRUFUVVJFX1BPTElDWSI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJhY2NlbGVyb21ldGVyICdub25lJzsgYW1iaWVudC1saWdodC1zZW5zb3IgJ25vbmUnOyBhdXRvcGxheSAnbm9uZSc7IGJhdHRlcnkgJ25vbmUnOyBjYW1lcmEgJ25vbmUnOyBkaXNwbGF5LWNhcHR1cmUgJ25vbmUnOyBkb2N1bWVudC1kb21haW4gJ25vbmUnOyBlbmNyeXB0ZWQtbWVkaWEgJ25vbmUnOyBleGVjdXRpb24td2hpbGUtbm90LXJlbmRlcmVkICdub25lJzsgZXhlY3V0aW9uLXdoaWxlLW91dC1vZi12aWV3cG9ydCAnbm9uZSc7IGZ1bGxzY3JlZW4gJ25vbmUnOyBnZW9sb2NhdGlvbiAnbm9uZSc7IGd5cm9zY29wZSAnbm9uZSc7IGxheW91dC1hbmltYXRpb24gJ25vbmUnOyBsZWdhY3ktaW1hZ2UtZm9ybWF0cyAnbm9uZSc7IG1hZ25ldG9tZXRlciAnbm9uZSc7IG1pY3JvcGhvbmUgJ25vbmUnOyBtaWRpICdub25lJzsgbmF2aWdhdGlvbi1vdmVycmlkZSAnbm9uZSc7IHBheW1lbnQgJ25vbmUnOyBwaWN0dXJlLWluLXBpY3R1cmUgJ25vbmUnOyBwdWJsaWNrZXktY3JlZGVudGlhbHMtZ2V0ICdub25lJzsgc3BlYWtlci1zZWxlY3Rpb24gJ25vbmUnOyBzeW5jLXhociAnbm9uZSc7IHVub3B0aW1pemVkLWltYWdlcyAnbm9uZSc7IHVuc2l6ZWQtbWVkaWEgJ25vbmUnOyB1c2IgJ25vbmUnOyBzY3JlZW4td2FrZS1sb2NrICdub25lJzsgd2ViLXNoYXJlICdub25lJzsgeHItc3BhdGlhbC10cmFja2luZyAnbm9uZSc7IiwgImhlbHAiOiAiVmFsdWUgZm9yIHRoZSBGZWF0dXJlLVBvbGljeSBoZWFkZXIuIiwgImlkIjogImZlYXR1cmUtcG9saWN5IiwgImxhYmVsIjogIkZlYXR1cmUtUG9saWN5IiwgInJlZ2V4IjogIl4oPyFbOyBdKSggPyhbXFx3XFwtXSspKD8hLipbXlxcLV1cXDIgKSggKCcobm9uZXxzZWxmfHN0cmljdC1keW5hbWljfHJlcG9ydC1zYW1wbGV8dW5zYWZlLWlubGluZXx1bnNhZmUtZXZhbHx1bnNhZmUtaGFzaGVzfHVuc2FmZS1hbGxvdy1yZWRpcmVjdHMpJ3xodHRwcz86XFwvXFwvW1xcd0A6JS4rfiM9XFwtXStbXFx3XFwoXFwpIUA6JSsufiM/JlxcLz0kXFwtXSopKSs7KSokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTMiLCAicGF0dGVybiI6ICJeKD8hWzsgXSkoID8oW1xcd1xcLV0rKSg/IS4qW15cXC1dXFwyICkoICgnKG5vbmV8c2VsZnxzdHJpY3QtZHluYW1pY3xyZXBvcnQtc2FtcGxlfHVuc2FmZS1pbmxpbmV8dW5zYWZlLWV2YWx8dW5zYWZlLWhhc2hlc3x1bnNhZmUtYWxsb3ctcmVkaXJlY3RzKSd8aHR0cHM/OlxcL1xcL1tcXHdAOiUuK34jPVxcLV0rW1xcd1xcKFxcKSFAOiUrLn4jPyZcXC89JFxcLV0qKSkrOykqJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiRmVhdHVyZS1Qb2xpY3kiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJhY2NlbGVyb21ldGVyICdub25lJzsgYW1iaWVudC1saWdodC1zZW5zb3IgJ25vbmUnOyBhdXRvcGxheSAnbm9uZSc7IGJhdHRlcnkgJ25vbmUnOyBjYW1lcmEgJ25vbmUnOyBkaXNwbGF5LWNhcHR1cmUgJ25vbmUnOyBkb2N1bWVudC1kb21haW4gJ25vbmUnOyBlbmNyeXB0ZWQtbWVkaWEgJ25vbmUnOyBleGVjdXRpb24td2hpbGUtbm90LXJlbmRlcmVkICdub25lJzsgZXhlY3V0aW9uLXdoaWxlLW91dC1vZi12aWV3cG9ydCAnbm9uZSc7IGZ1bGxzY3JlZW4gJ25vbmUnOyBnZW9sb2NhdGlvbiAnbm9uZSc7IGd5cm9zY29wZSAnbm9uZSc7IGxheW91dC1hbmltYXRpb24gJ25vbmUnOyBsZWdhY3ktaW1hZ2UtZm9ybWF0cyAnbm9uZSc7IG1hZ25ldG9tZXRlciAnbm9uZSc7IG1pY3JvcGhvbmUgJ25vbmUnOyBtaWRpICdub25lJzsgbmF2aWdhdGlvbi1vdmVycmlkZSAnbm9uZSc7IHBheW1lbnQgJ25vbmUnOyBwaWN0dXJlLWluLXBpY3R1cmUgJ25vbmUnOyBwdWJsaWNrZXktY3JlZGVudGlhbHMtZ2V0ICdub25lJzsgc3BlYWtlci1zZWxlY3Rpb24gJ25vbmUnOyBzeW5jLXhociAnbm9uZSc7IHVub3B0aW1pemVkLWltYWdlcyAnbm9uZSc7IHVuc2l6ZWQtbWVkaWEgJ25vbmUnOyB1c2IgJ25vbmUnOyBzY3JlZW4td2FrZS1sb2NrICdub25lJzsgd2ViLXNoYXJlICdub25lJzsgeHItc3BhdGlhbC10cmFja2luZyAnbm9uZSc7IiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJWYWx1ZSBmb3IgdGhlIEZlYXR1cmUtUG9saWN5IGhlYWRlci4ifV19LCAiWF9GUkFNRV9PUFRJT05TIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIlNBTUVPUklHSU4iLCAiaGVscCI6ICJWYWx1ZSBmb3IgdGhlIFgtRnJhbWUtT3B0aW9ucyBoZWFkZXIuIiwgImlkIjogIngtZnJhbWUtb3B0aW9ucyIsICJsYWJlbCI6ICJYLUZyYW1lLU9wdGlvbnMiLCAicmVnZXgiOiAiXihERU5ZfFNBTUVPUklHSU4pPyQiLCAidHlwZSI6ICJzZWxlY3QiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0yIiwgInBhdHRlcm4iOiAiXihERU5ZfFNBTUVPUklHSU4pPyQiLCAiaW5wVHlwZSI6ICJzZWxlY3QiLCAibmFtZSI6ICJYLUZyYW1lLU9wdGlvbnMiLCAidmFsdWVzIjogWyIiLCAiREVOWSIsICJTQU1FT1JJR0lOIl0sICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIlNBTUVPUklHSU4iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlZhbHVlIGZvciB0aGUgWC1GcmFtZS1PcHRpb25zIGhlYWRlci4ifV19LCAiWF9DT05URU5UX1RZUEVfT1BUSU9OUyI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJub3NuaWZmIiwgImhlbHAiOiAiVmFsdWUgZm9yIHRoZSBYLUNvbnRlbnQtVHlwZS1PcHRpb25zIGhlYWRlci4iLCAiaWQiOiAieC1jb250ZW50LXR5cGUtb3B0aW9ucyIsICJsYWJlbCI6ICJYLUNvbnRlbnQtVHlwZS1PcHRpb25zIiwgInJlZ2V4IjogIl4obm9zbmlmZik/JCIsICJ0eXBlIjogInNlbGVjdCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTEiLCAicGF0dGVybiI6ICJeKG5vc25pZmYpPyQiLCAiaW5wVHlwZSI6ICJzZWxlY3QiLCAibmFtZSI6ICJYLUNvbnRlbnQtVHlwZS1PcHRpb25zIiwgInZhbHVlcyI6IFsiIiwgIm5vc25pZmYiXSwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAibm9zbmlmZiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiVmFsdWUgZm9yIHRoZSBYLUNvbnRlbnQtVHlwZS1PcHRpb25zIGhlYWRlci4ifV19LCAiWF9YU1NfUFJPVEVDVElPTiI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIxOyBtb2RlPWJsb2NrIiwgImhlbHAiOiAiVmFsdWUgZm9yIHRoZSBYLVhTUy1Qcm90ZWN0aW9uIGhlYWRlci4iLCAiaWQiOiAieC14c3MtcHJvdGVjdGlvbiIsICJsYWJlbCI6ICJYLVhTUy1Qcm90ZWN0aW9uIiwgInJlZ2V4IjogIl4wfDEoOyAobW9kZT1ibG9ja3xyZXBvcnQ9aHR0cHM/OlxcL1xcL1tcXC1cXHdAOiUuK34jPV0rW1xcLVxcd1xcKFxcKSFAOiUrLn4jPyZcXC89JF0qKSk/JCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0wIiwgInBhdHRlcm4iOiAiXjB8MSg7IChtb2RlPWJsb2NrfHJlcG9ydD1odHRwcz86XFwvXFwvW1xcLVxcd0A6JS4rfiM9XStbXFwtXFx3XFwoXFwpIUA6JSsufiM/JlxcLz0kXSopKT8kIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJYLVhTUy1Qcm90ZWN0aW9uIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiMTsgbW9kZT1ibG9jayIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiVmFsdWUgZm9yIHRoZSBYLVhTUy1Qcm90ZWN0aW9uIGhlYWRlci4ifV19fSwgImNoZWNrc3VtIjogbnVsbCwgIm11bHRpcGxlcyI6IHsiY3VzdG9tLWhlYWRlcnMiOiB7IkNVU1RPTV9IRUFERVIiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiQ3VzdG9tIGhlYWRlciB0byBhZGQgKEhlYWRlck5hbWU6IEhlYWRlclZhbHVlKS4iLCAiaWQiOiAiY3VzdG9tLWhlYWRlciIsICJsYWJlbCI6ICJDdXN0b20gaGVhZGVyIChIZWFkZXJOYW1lOiBIZWFkZXJWYWx1ZSkiLCAicmVnZXgiOiAiXihbXFx3XFwtXSs6IC4rKT8kIiwgInR5cGUiOiAidGV4dCIsICJtdWx0aXBsZSI6ICJjdXN0b20taGVhZGVycyIsICJjb250YWluZXJDbGFzcyI6ICJ6LTEzIiwgInBhdHRlcm4iOiAiXihbXFx3XFwtXSs6IC4rKT8kIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJDdXN0b20gaGVhZGVyIChIZWFkZXJOYW1lOiBIZWFkZXJWYWx1ZSkiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkN1c3RvbSBoZWFkZXIgdG8gYWRkIChIZWFkZXJOYW1lOiBIZWFkZXJWYWx1ZSkuIn1dfX0sICJjb29raWUtZmxhZ3MiOiB7IkNPT0tJRV9GTEFHUyI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIqIEh0dHBPbmx5IFNhbWVTaXRlPUxheCIsICJoZWxwIjogIkNvb2tpZSBmbGFncyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIGFsbCBjb29raWVzICh2YWx1ZSBhY2NlcHRlZCBmb3IgbmdpbnhfY29va2llX2ZsYWdfbW9kdWxlKS4iLCAiaWQiOiAiY29va2llLWZsYWdzIiwgImxhYmVsIjogIkNvb2tpZSBmbGFncyIsICJyZWdleCI6ICJeKFxcKnxbXjtdKykoIChIdHRwT25seXwoU2FtZVNpdGUpKD8hLipcXDQpKD0oTGF4fFN0cmljdCkpPykoPyEuKlxcMykpKiQiLCAidHlwZSI6ICJ0ZXh0IiwgIm11bHRpcGxlIjogImNvb2tpZS1mbGFncyIsICJjb250YWluZXJDbGFzcyI6ICJ6LTkiLCAicGF0dGVybiI6ICJeKFxcKnxbXjtdKykoIChIdHRwT25seXwoU2FtZVNpdGUpKD8hLipcXDQpKD0oTGF4fFN0cmljdCkpPykoPyEuKlxcMykpKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkNvb2tpZSBmbGFncyIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiogSHR0cE9ubHkgU2FtZVNpdGU9TGF4IiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJDb29raWUgZmxhZ3MgYXV0b21hdGljYWxseSBhZGRlZCB0byBhbGwgY29va2llcyAodmFsdWUgYWNjZXB0ZWQgZm9yIG5naW54X2Nvb2tpZV9mbGFnX21vZHVsZSkuIn1dfX19fSwgeyJpZCI6ICJqb2JzIiwgInN0cmVhbSI6ICJ5ZXMiLCAibmFtZSI6ICJKb2JzIiwgImRlc2NyaXB0aW9uIjogIkZha2UgY29yZSBwbHVnaW4gZm9yIGludGVybmFsIGpvYnMuIiwgInZlcnNpb24iOiAiMS4wIiwgInR5cGUiOiAiY29yZSIsICJtZXRob2QiOiAibWFudWFsIiwgInBhZ2UiOiBmYWxzZSwgInNldHRpbmdzIjoge30sICJjaGVja3N1bSI6IG51bGwsICJtdWx0aXBsZXMiOiB7fX0sIHsiaWQiOiAibGV0c2VuY3J5cHQiLCAic3RyZWFtIjogInllcyIsICJuYW1lIjogIkxldCdzIEVuY3J5cHQiLCAiZGVzY3JpcHRpb24iOiAiQXV0b21hdGljIGNyZWF0aW9uLCByZW5ld2FsIGFuZCBjb25maWd1cmF0aW9uIG9mIExldCdzIEVuY3J5cHQgY2VydGlmaWNhdGVzLiIsICJ2ZXJzaW9uIjogIjEuMCIsICJ0eXBlIjogImNvcmUiLCAibWV0aG9kIjogIm1hbnVhbCIsICJwYWdlIjogZmFsc2UsICJzZXR0aW5ncyI6IHsiQVVUT19MRVRTX0VOQ1JZUFQiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAibm8iLCAiaGVscCI6ICJBY3RpdmF0ZSBhdXRvbWF0aWMgTGV0J3MgRW5jcnlwdCBtb2RlLiIsICJpZCI6ICJhdXRvLWxldHMtZW5jcnlwdCIsICJsYWJlbCI6ICJBdXRvbWF0aWMgTGV0J3MgRW5jcnlwdCIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei0zIiwgInBhdHRlcm4iOiAiXih5ZXN8bm8pJCIsICJpbnBUeXBlIjogImNoZWNrYm94IiwgIm5hbWUiOiAiQXV0b21hdGljIExldCdzIEVuY3J5cHQiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJubyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiQWN0aXZhdGUgYXV0b21hdGljIExldCdzIEVuY3J5cHQgbW9kZS4ifV19LCAiRU1BSUxfTEVUU19FTkNSWVBUIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIkVtYWlsIHVzZWQgZm9yIExldCdzIEVuY3J5cHQgbm90aWZpY2F0aW9uIGFuZCBpbiBjZXJ0aWZpY2F0ZS4iLCAiaWQiOiAiZW1haWwtbGV0cy1lbmNyeXB0IiwgImxhYmVsIjogIkVtYWlsIExldCdzIEVuY3J5cHQiLCAicmVnZXgiOiAiXihbXkAgXFx0XFxyXFxuXStAW15AIFxcdFxcclxcbl0rXFwuW15AIFxcdFxcclxcbl0rKT8kIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTIiLCAicGF0dGVybiI6ICJeKFteQCBcXHRcXHJcXG5dK0BbXkAgXFx0XFxyXFxuXStcXC5bXkAgXFx0XFxyXFxuXSspPyQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkVtYWlsIExldCdzIEVuY3J5cHQiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkVtYWlsIHVzZWQgZm9yIExldCdzIEVuY3J5cHQgbm90aWZpY2F0aW9uIGFuZCBpbiBjZXJ0aWZpY2F0ZS4ifV19LCAiVVNFX0xFVFNfRU5DUllQVF9TVEFHSU5HIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIm5vIiwgImhlbHAiOiAiVXNlIHRoZSBzdGFnaW5nIGVudmlyb25tZW50IGZvciBMZXRcdTIwMTlzIEVuY3J5cHQgY2VydGlmaWNhdGUgZ2VuZXJhdGlvbi4gVXNlZnVsIHdoZW4geW91IGFyZSB0ZXN0aW5nIHlvdXIgZGVwbG95bWVudHMgdG8gYXZvaWQgYmVpbmcgcmF0ZSBsaW1pdGVkIGluIHRoZSBwcm9kdWN0aW9uIGVudmlyb25tZW50LiIsICJpZCI6ICJ1c2UtbGV0cy1lbmNyeXB0LXN0YWdpbmciLCAibGFiZWwiOiAiVXNlIExldCdzIEVuY3J5cHQgU3RhZ2luZyIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xIiwgInBhdHRlcm4iOiAiXih5ZXN8bm8pJCIsICJpbnBUeXBlIjogImNoZWNrYm94IiwgIm5hbWUiOiAiVXNlIExldCdzIEVuY3J5cHQgU3RhZ2luZyIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIm5vIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJVc2UgdGhlIHN0YWdpbmcgZW52aXJvbm1lbnQgZm9yIExldFx1MjAxOXMgRW5jcnlwdCBjZXJ0aWZpY2F0ZSBnZW5lcmF0aW9uLiBVc2VmdWwgd2hlbiB5b3UgYXJlIHRlc3RpbmcgeW91ciBkZXBsb3ltZW50cyB0byBhdm9pZCBiZWluZyByYXRlIGxpbWl0ZWQgaW4gdGhlIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQuIn1dfSwgIkxFVFNfRU5DUllQVF9DTEVBUl9PTERfQ0VSVFMiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAibm8iLCAiaGVscCI6ICJDbGVhciBvbGQgY2VydGlmaWNhdGVzIHdoZW4gcmVuZXdpbmcuIiwgImlkIjogImxldHMtZW5jcnlwdC1jbGVhci1vbGQtY2VydHMiLCAibGFiZWwiOiAiQ2xlYXIgb2xkIGNlcnRpZmljYXRlcyB3aGVuIHRoZXkgYXJlIG5vIGxvbmdlciBuZWVkZWQiLCAicmVnZXgiOiAiXih5ZXN8bm8pJCIsICJ0eXBlIjogImNoZWNrIiwgImNvbnRhaW5lckNsYXNzIjogInotMCIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIkNsZWFyIG9sZCBjZXJ0aWZpY2F0ZXMgd2hlbiB0aGV5IGFyZSBubyBsb25nZXIgbmVlZGVkIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAibm8iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJDbGVhciBvbGQgY2VydGlmaWNhdGVzIHdoZW4gcmVuZXdpbmcuIn1dfX0sICJjaGVja3N1bSI6IG51bGwsICJtdWx0aXBsZXMiOiB7fX0sIHsiaWQiOiAibGltaXQiLCAic3RyZWFtIjogInBhcnRpYWwiLCAibmFtZSI6ICJMaW1pdCIsICJkZXNjcmlwdGlvbiI6ICJMaW1pdCBtYXhpbXVtIG51bWJlciBvZiByZXF1ZXN0cyBhbmQgY29ubmVjdGlvbnMuIiwgInZlcnNpb24iOiAiMS4wIiwgInR5cGUiOiAiY29yZSIsICJtZXRob2QiOiAibWFudWFsIiwgInBhZ2UiOiB0cnVlLCAic2V0dGluZ3MiOiB7IlVTRV9MSU1JVF9SRVEiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAieWVzIiwgImhlbHAiOiAiQWN0aXZhdGUgbGltaXQgcmVxdWVzdHMgZmVhdHVyZS4iLCAiaWQiOiAidXNlLWxpbWl0LXJlcSIsICJsYWJlbCI6ICJBY3RpdmF0ZSBsaW1pdCByZXF1ZXN0cyIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei02IiwgInBhdHRlcm4iOiAiXih5ZXN8bm8pJCIsICJpbnBUeXBlIjogImNoZWNrYm94IiwgIm5hbWUiOiAiQWN0aXZhdGUgbGltaXQgcmVxdWVzdHMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJ5ZXMiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkFjdGl2YXRlIGxpbWl0IHJlcXVlc3RzIGZlYXR1cmUuIn1dfSwgIlVTRV9MSU1JVF9DT05OIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogInllcyIsICJoZWxwIjogIkFjdGl2YXRlIGxpbWl0IGNvbm5lY3Rpb25zIGZlYXR1cmUuIiwgImlkIjogInVzZS1saW1pdC1jb25uIiwgImxhYmVsIjogIkFjdGl2YXRlIGxpbWl0IGNvbm5lY3Rpb25zIiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJjb250YWluZXJDbGFzcyI6ICJ6LTMiLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJBY3RpdmF0ZSBsaW1pdCBjb25uZWN0aW9ucyIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogInllcyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiQWN0aXZhdGUgbGltaXQgY29ubmVjdGlvbnMgZmVhdHVyZS4ifV19LCAiTElNSVRfQ09OTl9NQVhfSFRUUDEiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiMTAiLCAiaGVscCI6ICJNYXhpbXVtIG51bWJlciBvZiBjb25uZWN0aW9ucyBwZXIgSVAgd2hlbiB1c2luZyBIVFRQLzEuWCBwcm90b2NvbC4iLCAiaWQiOiAibGltaXQtY29ubi1tYXgtaHR0cDEiLCAibGFiZWwiOiAiTWF4aW11bSBudW1iZXIgb2YgSFRUUC8xLlggY29ubmVjdGlvbnMiLCAicmVnZXgiOiAiXlxcZCskIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTIiLCAicGF0dGVybiI6ICJeXFxkKyQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIk1heGltdW0gbnVtYmVyIG9mIEhUVFAvMS5YIGNvbm5lY3Rpb25zIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiMTAiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIk1heGltdW0gbnVtYmVyIG9mIGNvbm5lY3Rpb25zIHBlciBJUCB3aGVuIHVzaW5nIEhUVFAvMS5YIHByb3RvY29sLiJ9XX0sICJMSU1JVF9DT05OX01BWF9IVFRQMiI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIxMDAiLCAiaGVscCI6ICJNYXhpbXVtIG51bWJlciBvZiBzdHJlYW1zIHBlciBJUCB3aGVuIHVzaW5nIEhUVFAvMiBwcm90b2NvbC4iLCAiaWQiOiAibGltaXQtY29ubi1tYXgtaHR0cDIiLCAibGFiZWwiOiAiTWF4aW11bSBudW1iZXIgb2YgSFRUUC8yIHN0cmVhbXMiLCAicmVnZXgiOiAiXlxcZCskIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTEiLCAicGF0dGVybiI6ICJeXFxkKyQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIk1heGltdW0gbnVtYmVyIG9mIEhUVFAvMiBzdHJlYW1zIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiMTAwIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJNYXhpbXVtIG51bWJlciBvZiBzdHJlYW1zIHBlciBJUCB3aGVuIHVzaW5nIEhUVFAvMiBwcm90b2NvbC4ifV19LCAiTElNSVRfQ09OTl9NQVhfU1RSRUFNIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIjEwIiwgImhlbHAiOiAiTWF4aW11bSBudW1iZXIgb2YgY29ubmVjdGlvbnMgcGVyIElQIHdoZW4gdXNpbmcgc3RyZWFtLiIsICJpZCI6ICJsaW1pdC1jb25uLW1heC1zdHJlYW0iLCAibGFiZWwiOiAiTWF4aW11bSBudW1iZXIgb2Ygc3RyZWFtIGNvbm5lY3Rpb25zIiwgInJlZ2V4IjogIl5cXGQrJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0wIiwgInBhdHRlcm4iOiAiXlxcZCskIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJNYXhpbXVtIG51bWJlciBvZiBzdHJlYW0gY29ubmVjdGlvbnMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIxMCIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTWF4aW11bSBudW1iZXIgb2YgY29ubmVjdGlvbnMgcGVyIElQIHdoZW4gdXNpbmcgc3RyZWFtLiJ9XX19LCAiY2hlY2tzdW0iOiBudWxsLCAibXVsdGlwbGVzIjogeyJsaW1pdC1yZXEiOiB7IkxJTUlUX1JFUV9VUkwiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiLyIsICJoZWxwIjogIlVSTCAoUENSRSByZWdleCkgd2hlcmUgdGhlIGxpbWl0IHJlcXVlc3Qgd2lsbCBiZSBhcHBsaWVkIG9yIHNwZWNpYWwgdmFsdWUgLyBmb3IgYWxsIHJlcXVlc3RzLiIsICJpZCI6ICJsaW1pdC1yZXEtdXJsIiwgImxhYmVsIjogIkxpbWl0IHJlcXVlc3QgVVJMIiwgInJlZ2V4IjogIl4uKyQiLCAidHlwZSI6ICJ0ZXh0IiwgIm11bHRpcGxlIjogImxpbWl0LXJlcSIsICJjb250YWluZXJDbGFzcyI6ICJ6LTUiLCAicGF0dGVybiI6ICJeLiskIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJMaW1pdCByZXF1ZXN0IFVSTCIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIi8iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlVSTCAoUENSRSByZWdleCkgd2hlcmUgdGhlIGxpbWl0IHJlcXVlc3Qgd2lsbCBiZSBhcHBsaWVkIG9yIHNwZWNpYWwgdmFsdWUgLyBmb3IgYWxsIHJlcXVlc3RzLiJ9XX0sICJMSU1JVF9SRVFfUkFURSI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIyci9zIiwgImhlbHAiOiAiUmF0ZSB0byBhcHBseSB0byB0aGUgVVJMIChzIGZvciBzZWNvbmQsIG0gZm9yIG1pbnV0ZSwgaCBmb3IgaG91ciBhbmQgZCBmb3IgZGF5KS4iLCAiaWQiOiAibGltaXQtcmVxLXJhdGUiLCAibGFiZWwiOiAiTGltaXQgcmVxdWVzdCBSYXRlIiwgInJlZ2V4IjogIl5cXGQrci9bc21oZF0kIiwgInR5cGUiOiAidGV4dCIsICJtdWx0aXBsZSI6ICJsaW1pdC1yZXEiLCAiY29udGFpbmVyQ2xhc3MiOiAiei00IiwgInBhdHRlcm4iOiAiXlxcZCtyL1tzbWhkXSQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkxpbWl0IHJlcXVlc3QgUmF0ZSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIjJyL3MiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlJhdGUgdG8gYXBwbHkgdG8gdGhlIFVSTCAocyBmb3Igc2Vjb25kLCBtIGZvciBtaW51dGUsIGggZm9yIGhvdXIgYW5kIGQgZm9yIGRheSkuIn1dfX19fSwgeyJpZCI6ICJtZXRyaWNzIiwgInN0cmVhbSI6ICJwYXJ0aWFsIiwgIm5hbWUiOiAiTWV0cmljcyIsICJkZXNjcmlwdGlvbiI6ICJNZXRyaWNzIGNvbGxlY3Rpb24gYW5kIHJldHJpZXZlLiIsICJ2ZXJzaW9uIjogIjEuMCIsICJ0eXBlIjogImNvcmUiLCAibWV0aG9kIjogIm1hbnVhbCIsICJwYWdlIjogZmFsc2UsICJzZXR0aW5ncyI6IHsiVVNFX01FVFJJQ1MiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAieWVzIiwgImhlbHAiOiAiRW5hYmxlIGNvbGxlY3Rpb24gYW5kIHJldHJpZXZhbCBvZiBpbnRlcm5hbCBtZXRyaWNzLiIsICJpZCI6ICJ1c2UtbWV0cmljcyIsICJsYWJlbCI6ICJVc2UgbWV0cmljcyIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei0yIiwgInBhdHRlcm4iOiAiXih5ZXN8bm8pJCIsICJpbnBUeXBlIjogImNoZWNrYm94IiwgIm5hbWUiOiAiVXNlIG1ldHJpY3MiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJ5ZXMiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkVuYWJsZSBjb2xsZWN0aW9uIGFuZCByZXRyaWV2YWwgb2YgaW50ZXJuYWwgbWV0cmljcy4ifV19LCAiTUVUUklDU19NRU1PUllfU0laRSI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICIxNm0iLCAiaGVscCI6ICJTaXplIG9mIHRoZSBpbnRlcm5hbCBzdG9yYWdlIGZvciBtZXRyaWNzLiIsICJpZCI6ICJtZXRyaWNzLW1lbW9yeS1zaXplIiwgImxhYmVsIjogIk1ldHJpY3MgbWVtb3J5IHNpemUiLCAicmVnZXgiOiAiXlxcZCtba0ttTWdHXT8kIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTEiLCAicGF0dGVybiI6ICJeXFxkK1trS21NZ0ddPyQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIk1ldHJpY3MgbWVtb3J5IHNpemUiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIxNm0iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJTaXplIG9mIHRoZSBpbnRlcm5hbCBzdG9yYWdlIGZvciBtZXRyaWNzLiJ9XX0sICJNRVRSSUNTX01BWF9CTE9DS0VEX1JFUVVFU1RTIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIjEwMCIsICJoZWxwIjogIk1heGltdW0gbnVtYmVyIG9mIGJsb2NrZWQgcmVxdWVzdHMgdG8gc3RvcmUgKHBlciB3b3JrZXIpLiIsICJpZCI6ICJtZXRyaWNzLW1heC1ibG9ja2VkLXJlcXVlc3RzIiwgImxhYmVsIjogIk1ldHJpY3MgbWF4IGJsb2NrZWQgcmVxdWVzdHMiLCAicmVnZXgiOiAiXlxcZCskIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTAiLCAicGF0dGVybiI6ICJeXFxkKyQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIk1ldHJpY3MgbWF4IGJsb2NrZWQgcmVxdWVzdHMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIxMDAiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJNYXhpbXVtIG51bWJlciBvZiBibG9ja2VkIHJlcXVlc3RzIHRvIHN0b3JlIChwZXIgd29ya2VyKS4ifV19fSwgImNoZWNrc3VtIjogbnVsbCwgIm11bHRpcGxlcyI6IHt9fSwgeyJpZCI6ICJtaXNjIiwgInN0cmVhbSI6ICJwYXJ0aWFsIiwgIm5hbWUiOiAiTWlzY2VsbGFuZW91cyIsICJkZXNjcmlwdGlvbiI6ICJNaXNjZWxsYW5lb3VzIHNldHRpbmdzLiIsICJ2ZXJzaW9uIjogIjEuMCIsICJ0eXBlIjogImNvcmUiLCAibWV0aG9kIjogIm1hbnVhbCIsICJwYWdlIjogdHJ1ZSwgInNldHRpbmdzIjogeyJESVNBQkxFX0RFRkFVTFRfU0VSVkVSIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIm5vIiwgImhlbHAiOiAiRGVueSBIVFRQIHJlcXVlc3QgaWYgdGhlIHJlcXVlc3Qgdmhvc3QgaXMgdW5rbm93bi4iLCAiaWQiOiAiZGlzYWJsZS1kZWZhdWx0LXNlcnZlciIsICJsYWJlbCI6ICJEaXNhYmxlIGRlZmF1bHQgc2VydmVyIiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJjb250YWluZXJDbGFzcyI6ICJ6LTIwIiwgInBhdHRlcm4iOiAiXih5ZXN8bm8pJCIsICJpbnBUeXBlIjogImNoZWNrYm94IiwgIm5hbWUiOiAiRGlzYWJsZSBkZWZhdWx0IHNlcnZlciIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIm5vIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiRGVueSBIVFRQIHJlcXVlc3QgaWYgdGhlIHJlcXVlc3Qgdmhvc3QgaXMgdW5rbm93bi4ifV19LCAiRElTQUJMRV9ERUZBVUxUX1NFUlZFUl9TVFJJQ1RfU05JIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIm5vIiwgImhlbHAiOiAiQ2xvc2UgU1NML1RMUyBjb25uZWN0aW9uIGlmIHRoZSBTTkkgaXMgdW5rbm93bi4iLCAiaWQiOiAiZGlzYWJsZS1kZWZhdWx0LXNlcnZlci1zdHJpY3Qtc25pIiwgImxhYmVsIjogIkRpc2FibGUgZGVmYXVsdCBzZXJ2ZXIgc3RyaWN0IFNOSSIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xOSIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIkRpc2FibGUgZGVmYXVsdCBzZXJ2ZXIgc3RyaWN0IFNOSSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIm5vIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiQ2xvc2UgU1NML1RMUyBjb25uZWN0aW9uIGlmIHRoZSBTTkkgaXMgdW5rbm93bi4ifV19LCAiUkVESVJFQ1RfSFRUUF9UT19IVFRQUyI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJubyIsICJoZWxwIjogIlJlZGlyZWN0IGFsbCBIVFRQIHJlcXVlc3QgdG8gSFRUUFMuIiwgImlkIjogInJlZGlyZWN0LWh0dHAtdG8taHR0cHMiLCAibGFiZWwiOiAiUmVkaXJlY3QgSFRUUCB0byBIVFRQUyIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xOCIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIlJlZGlyZWN0IEhUVFAgdG8gSFRUUFMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJubyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiUmVkaXJlY3QgYWxsIEhUVFAgcmVxdWVzdCB0byBIVFRQUy4ifV19LCAiQVVUT19SRURJUkVDVF9IVFRQX1RPX0hUVFBTIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogInllcyIsICJoZWxwIjogIlRyeSB0byBkZXRlY3QgaWYgSFRUUFMgaXMgdXNlZCBhbmQgYWN0aXZhdGUgSFRUUCB0byBIVFRQUyByZWRpcmVjdGlvbiBpZiB0aGF0J3MgdGhlIGNhc2UuIiwgImlkIjogImF1dG8tcmVkaXJlY3QtaHR0cC10by1odHRwcyIsICJsYWJlbCI6ICJBdXRvIHJlZGlyZWN0IEhUVFAgdG8gSFRUUFMiLCAicmVnZXgiOiAiXih5ZXN8bm8pJCIsICJ0eXBlIjogImNoZWNrIiwgImNvbnRhaW5lckNsYXNzIjogInotMTciLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJBdXRvIHJlZGlyZWN0IEhUVFAgdG8gSFRUUFMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJ5ZXMiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlRyeSB0byBkZXRlY3QgaWYgSFRUUFMgaXMgdXNlZCBhbmQgYWN0aXZhdGUgSFRUUCB0byBIVFRQUyByZWRpcmVjdGlvbiBpZiB0aGF0J3MgdGhlIGNhc2UuIn1dfSwgIkFMTE9XRURfTUVUSE9EUyI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJHRVR8UE9TVHxIRUFEIiwgImhlbHAiOiAiQWxsb3dlZCBIVFRQIGFuZCBXZWJEQVYgbWV0aG9kcywgc2VwYXJhdGVkIHdpdGggcGlwZXMgdG8gYmUgc2VudCBieSBjbGllbnRzLiIsICJpZCI6ICJhbGxvd2VkLW1ldGhvZHMiLCAibGFiZWwiOiAiQWxsb3dlZCBtZXRob2RzIiwgInJlZ2V4IjogIl4oPyFcXHwpKFxcfD8oW0EtWl17Myx9KSg/IS4qKF58XFx8KVxcMikpKyQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMTYiLCAicGF0dGVybiI6ICJeKD8hXFx8KShcXHw/KFtBLVpdezMsfSkoPyEuKihefFxcfClcXDIpKSskIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJBbGxvd2VkIG1ldGhvZHMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJHRVR8UE9TVHxIRUFEIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJBbGxvd2VkIEhUVFAgYW5kIFdlYkRBViBtZXRob2RzLCBzZXBhcmF0ZWQgd2l0aCBwaXBlcyB0byBiZSBzZW50IGJ5IGNsaWVudHMuIn1dfSwgIk1BWF9DTElFTlRfU0laRSI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIxMG0iLCAiaGVscCI6ICJNYXhpbXVtIGJvZHkgc2l6ZSAoMCBmb3IgaW5maW5pdGUpLiIsICJpZCI6ICJtYXgtY2xpZW50LXNpemUiLCAibGFiZWwiOiAiTWF4aW11bSBib2R5IHNpemUiLCAicmVnZXgiOiAiXlxcZCtba0ttTWdHXT8kIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTE1IiwgInBhdHRlcm4iOiAiXlxcZCtba0ttTWdHXT8kIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJNYXhpbXVtIGJvZHkgc2l6ZSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIjEwbSIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTWF4aW11bSBib2R5IHNpemUgKDAgZm9yIGluZmluaXRlKS4ifV19LCAiU0VSVkVfRklMRVMiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAieWVzIiwgImhlbHAiOiAiU2VydmUgZmlsZXMgZnJvbSB0aGUgbG9jYWwgZm9sZGVyLiIsICJpZCI6ICJzZXJ2ZS1maWxlcyIsICJsYWJlbCI6ICJTZXJ2ZSBmaWxlcyIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xNCIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIlNlcnZlIGZpbGVzIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAieWVzIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJTZXJ2ZSBmaWxlcyBmcm9tIHRoZSBsb2NhbCBmb2xkZXIuIn1dfSwgIlJPT1RfRk9MREVSIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIlJvb3QgZm9sZGVyIGNvbnRhaW5pbmcgZmlsZXMgdG8gc2VydmUgKC92YXIvd3d3L2h0bWwve3NlcnZlcl9uYW1lfSBpZiB1bnNldCkuIiwgImlkIjogInJvb3QtZm9sZGVyIiwgImxhYmVsIjogIlJvb3QgZm9sZGVyIiwgInJlZ2V4IjogIl4oL1tcXHcuIFxcLV0rKSovPyQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMTMiLCAicGF0dGVybiI6ICJeKC9bXFx3LiBcXC1dKykqLz8kIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJSb290IGZvbGRlciIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiUm9vdCBmb2xkZXIgY29udGFpbmluZyBmaWxlcyB0byBzZXJ2ZSAoL3Zhci93d3cvaHRtbC97c2VydmVyX25hbWV9IGlmIHVuc2V0KS4ifV19LCAiU1NMX1BST1RPQ09MUyI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJUTFN2MS4yIFRMU3YxLjMiLCAiaGVscCI6ICJUaGUgc3VwcG9ydGVkIHZlcnNpb24gb2YgVExTLiBXZSByZWNvbW1lbmQgdGhlIGRlZmF1bHQgdmFsdWUgVExTdjEuMiBUTFN2MS4zIGZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMuIiwgImlkIjogImh0dHBzLXByb3RvY29scyIsICJsYWJlbCI6ICJIVFRQUyBwcm90b2NvbHMiLCAicmVnZXgiOiAiXig/ISApKCA/VExTdjFcXC5bMC0zXSkqJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xMiIsICJwYXR0ZXJuIjogIl4oPyEgKSggP1RMU3YxXFwuWzAtM10pKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkhUVFBTIHByb3RvY29scyIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIlRMU3YxLjIgVExTdjEuMyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiVGhlIHN1cHBvcnRlZCB2ZXJzaW9uIG9mIFRMUy4gV2UgcmVjb21tZW5kIHRoZSBkZWZhdWx0IHZhbHVlIFRMU3YxLjIgVExTdjEuMyBmb3IgY29tcGF0aWJpbGl0eSByZWFzb25zLiJ9XX0sICJIVFRQMiI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJ5ZXMiLCAiaGVscCI6ICJTdXBwb3J0IEhUVFAyIHByb3RvY29sIHdoZW4gSFRUUFMgaXMgZW5hYmxlZC4iLCAiaWQiOiAiaHR0cDIiLCAibGFiZWwiOiAiSFRUUDIiLCAicmVnZXgiOiAiXih5ZXN8bm8pJCIsICJ0eXBlIjogImNoZWNrIiwgImNvbnRhaW5lckNsYXNzIjogInotMTEiLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJIVFRQMiIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogInllcyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiU3VwcG9ydCBIVFRQMiBwcm90b2NvbCB3aGVuIEhUVFBTIGlzIGVuYWJsZWQuIn1dfSwgIkhUVFAzIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIm5vIiwgImhlbHAiOiAiU3VwcG9ydCBIVFRQMyBwcm90b2NvbCB3aGVuIEhUVFBTIGlzIGVuYWJsZWQuIiwgImlkIjogImh0dHAzIiwgImxhYmVsIjogIkhUVFAzIiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJjb250YWluZXJDbGFzcyI6ICJ6LTEwIiwgInBhdHRlcm4iOiAiXih5ZXN8bm8pJCIsICJpbnBUeXBlIjogImNoZWNrYm94IiwgIm5hbWUiOiAiSFRUUDMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJubyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiU3VwcG9ydCBIVFRQMyBwcm90b2NvbCB3aGVuIEhUVFBTIGlzIGVuYWJsZWQuIn1dfSwgIkhUVFAzX0FMVF9TVkNfUE9SVCI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICI0NDMiLCAiaGVscCI6ICJIVFRQMyBhbHRlcm5hdGUgc2VydmljZSBwb3J0LiBUaGlzIHZhbHVlIHdpbGwgYmUgdXNlZCBhcyBwYXJ0IG9mIHRoZSBBbHQtU3ZjIGhlYWRlci4iLCAiaWQiOiAiaHR0cDMtYWx0LXN2Yy1wb3J0IiwgImxhYmVsIjogIkhUVFAzIEFsdC1TdmMgcG9ydCIsICJyZWdleCI6ICJeXFxkKyQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotOSIsICJwYXR0ZXJuIjogIl5cXGQrJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiSFRUUDMgQWx0LVN2YyBwb3J0IiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiNDQzIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJIVFRQMyBhbHRlcm5hdGUgc2VydmljZSBwb3J0LiBUaGlzIHZhbHVlIHdpbGwgYmUgdXNlZCBhcyBwYXJ0IG9mIHRoZSBBbHQtU3ZjIGhlYWRlci4ifV19LCAiTElTVEVOX0hUVFAiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAieWVzIiwgImhlbHAiOiAiUmVzcG9uZCB0byAoaW5zZWN1cmUpIEhUVFAgcmVxdWVzdHMuIiwgImlkIjogImh0dHAtbGlzdGVuIiwgImxhYmVsIjogIkhUVFAgbGlzdGVuIiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJjb250YWluZXJDbGFzcyI6ICJ6LTgiLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJIVFRQIGxpc3RlbiIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogInllcyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiUmVzcG9uZCB0byAoaW5zZWN1cmUpIEhUVFAgcmVxdWVzdHMuIn1dfSwgIlVTRV9PUEVOX0ZJTEVfQ0FDSEUiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAibm8iLCAiaGVscCI6ICJFbmFibGUgb3BlbiBmaWxlIGNhY2hlIGZlYXR1cmUiLCAiaWQiOiAidXNlLW9wZW4tZmlsZS1jYWNoZSIsICJsYWJlbCI6ICJVc2Ugb3BlbiBmaWxlIGNhY2hlIiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJjb250YWluZXJDbGFzcyI6ICJ6LTciLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJVc2Ugb3BlbiBmaWxlIGNhY2hlIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAibm8iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkVuYWJsZSBvcGVuIGZpbGUgY2FjaGUgZmVhdHVyZSJ9XX0sICJPUEVOX0ZJTEVfQ0FDSEUiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAibWF4PTEwMDAgaW5hY3RpdmU9MjBzIiwgImhlbHAiOiAiT3BlbiBmaWxlIGNhY2hlIGRpcmVjdGl2ZSIsICJpZCI6ICJvcGVuLWZpbGUtY2FjaGUiLCAibGFiZWwiOiAiVXNlIG9wZW4gZmlsZSBjYWNoZSIsICJyZWdleCI6ICJeKG9mZnxtYXg9XFxkKyggaW5hY3RpdmU9XFxkKyhtcz98W3NoZHdNeV0pKT8pJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei02IiwgInBhdHRlcm4iOiAiXihvZmZ8bWF4PVxcZCsoIGluYWN0aXZlPVxcZCsobXM/fFtzaGR3TXldKSk/KSQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIlVzZSBvcGVuIGZpbGUgY2FjaGUiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJtYXg9MTAwMCBpbmFjdGl2ZT0yMHMiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIk9wZW4gZmlsZSBjYWNoZSBkaXJlY3RpdmUifV19LCAiT1BFTl9GSUxFX0NBQ0hFX0VSUk9SUyI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJ5ZXMiLCAiaGVscCI6ICJFbmFibGUgb3BlbiBmaWxlIGNhY2hlIGZvciBlcnJvcnMiLCAiaWQiOiAib3Blbi1maWxlLWNhY2hlLWVycm9ycyIsICJsYWJlbCI6ICJPcGVuIGZpbGUgY2FjaGUgZXJyb3JzIiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJjb250YWluZXJDbGFzcyI6ICJ6LTUiLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJPcGVuIGZpbGUgY2FjaGUgZXJyb3JzIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAieWVzIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJFbmFibGUgb3BlbiBmaWxlIGNhY2hlIGZvciBlcnJvcnMifV19LCAiT1BFTl9GSUxFX0NBQ0hFX01JTl9VU0VTIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIjIiLCAiaGVscCI6ICJFbmFibGUgb3BlbiBmaWxlIGNhY2hlIG1pbmltdW0gdXNlcyIsICJpZCI6ICJvcGVuLWZpbGUtY2FjaGUtbWluLXVzZXMiLCAibGFiZWwiOiAiT3BlbiBmaWxlIGNhY2hlIG1pbiB1c2VzIiwgInJlZ2V4IjogIl5bMS05XVxcZCokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTQiLCAicGF0dGVybiI6ICJeWzEtOV1cXGQqJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiT3BlbiBmaWxlIGNhY2hlIG1pbiB1c2VzIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiMiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiRW5hYmxlIG9wZW4gZmlsZSBjYWNoZSBtaW5pbXVtIHVzZXMifV19LCAiT1BFTl9GSUxFX0NBQ0hFX1ZBTElEIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIjMwcyIsICJoZWxwIjogIk9wZW4gZmlsZSBjYWNoZSB2YWxpZCB0aW1lIiwgImlkIjogIm9wZW4tZmlsZS1jYWNoZS12YWxpZCIsICJsYWJlbCI6ICJPcGVuIGZpbGUgY2FjaGUgdmFsaWQgdGltZSIsICJyZWdleCI6ICJeXFxkKyhtcz98W3NoZHdNeV0pJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0zIiwgInBhdHRlcm4iOiAiXlxcZCsobXM/fFtzaGR3TXldKSQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIk9wZW4gZmlsZSBjYWNoZSB2YWxpZCB0aW1lIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiMzBzIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJPcGVuIGZpbGUgY2FjaGUgdmFsaWQgdGltZSJ9XX0sICJFWFRFUk5BTF9QTFVHSU5fVVJMUyI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJMaXN0IG9mIGV4dGVybmFsIHBsdWdpbnMgVVJMcyAoZGlyZWN0IGRvd25sb2FkIHRvIC56aXAgb3IgLnRhciBmaWxlKSB0byBkb3dubG9hZCBhbmQgaW5zdGFsbCAoVVJMcyBhcmUgc2VwYXJhdGVkIHdpdGggc3BhY2UpLiIsICJpZCI6ICJleHRlcm5hbC1wbHVnaW4tdXJscyIsICJsYWJlbCI6ICJFeHRlcm5hbCBwbHVnaW4gVVJMcyIsICJyZWdleCI6ICJeKCAqKChodHRwcz86XFwvXFwvfGZpbGU6XFwvXFwvXFwvKVtcXC1cXHdAOiUuK34jPV0rW1xcLVxcd1xcKFxcKSFAOiUrLn4jPyZcXC89JF0qKSg/IS4qXFwyKD8hLikpICopKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMiIsICJwYXR0ZXJuIjogIl4oICooKGh0dHBzPzpcXC9cXC98ZmlsZTpcXC9cXC9cXC8pW1xcLVxcd0A6JS4rfiM9XStbXFwtXFx3XFwoXFwpIUA6JSsufiM/JlxcLz0kXSopKD8hLipcXDIoPyEuKSkgKikqJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiRXh0ZXJuYWwgcGx1Z2luIFVSTHMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIGV4dGVybmFsIHBsdWdpbnMgVVJMcyAoZGlyZWN0IGRvd25sb2FkIHRvIC56aXAgb3IgLnRhciBmaWxlKSB0byBkb3dubG9hZCBhbmQgaW5zdGFsbCAoVVJMcyBhcmUgc2VwYXJhdGVkIHdpdGggc3BhY2UpLiJ9XX0sICJERU5ZX0hUVFBfU1RBVFVTIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIjQwMyIsICJoZWxwIjogIkhUVFAgc3RhdHVzIGNvZGUgdG8gc2VuZCB3aGVuIHRoZSByZXF1ZXN0IGlzIGRlbmllZCAoNDAzIG9yIDQ0NCkuIFdoZW4gdXNpbmcgNDQ0LCBCdW5rZXJXZWIgd2lsbCBjbG9zZSB0aGUgY29ubmVjdGlvbi4iLCAiaWQiOiAiZGVueS1odHRwLXN0YXR1cyIsICJsYWJlbCI6ICJEZW55IEhUVFAgc3RhdHVzIiwgInJlZ2V4IjogIl4oNDAzfDQ0NCkkIiwgInR5cGUiOiAic2VsZWN0IiwgImNvbnRhaW5lckNsYXNzIjogInotMSIsICJwYXR0ZXJuIjogIl4oNDAzfDQ0NCkkIiwgImlucFR5cGUiOiAic2VsZWN0IiwgIm5hbWUiOiAiRGVueSBIVFRQIHN0YXR1cyIsICJ2YWx1ZXMiOiBbIjQwMyIsICI0NDQiXSwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiNDAzIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiSFRUUCBzdGF0dXMgY29kZSB0byBzZW5kIHdoZW4gdGhlIHJlcXVlc3QgaXMgZGVuaWVkICg0MDMgb3IgNDQ0KS4gV2hlbiB1c2luZyA0NDQsIEJ1bmtlcldlYiB3aWxsIGNsb3NlIHRoZSBjb25uZWN0aW9uLiJ9XX0sICJTRU5EX0FOT05ZTU9VU19SRVBPUlQiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAieWVzIiwgImhlbHAiOiAiU2VuZCBhbm9ueW1vdXMgcmVwb3J0IHRvIEJ1bmtlcldlYiBtYWludGFpbmVycy4iLCAiaWQiOiAic2VuZC1hbm9ueW1vdXMtcmVwb3J0IiwgImxhYmVsIjogIlNlbmQgYW5vbnltb3VzIHJlcG9ydCIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei0wIiwgInBhdHRlcm4iOiAiXih5ZXN8bm8pJCIsICJpbnBUeXBlIjogImNoZWNrYm94IiwgIm5hbWUiOiAiU2VuZCBhbm9ueW1vdXMgcmVwb3J0IiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAieWVzIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiU2VuZCBhbm9ueW1vdXMgcmVwb3J0IHRvIEJ1bmtlcldlYiBtYWludGFpbmVycy4ifV19fSwgImNoZWNrc3VtIjogbnVsbCwgIm11bHRpcGxlcyI6IHt9fSwgeyJpZCI6ICJtb2RzZWN1cml0eSIsICJzdHJlYW0iOiAibm8iLCAibmFtZSI6ICJNb2RTZWN1cml0eSIsICJkZXNjcmlwdGlvbiI6ICJNYW5hZ2VtZW50IG9mIHRoZSBNb2RTZWN1cml0eSBXQUYuIiwgInZlcnNpb24iOiAiMS4wIiwgInR5cGUiOiAiY29yZSIsICJtZXRob2QiOiAibWFudWFsIiwgInBhZ2UiOiBmYWxzZSwgInNldHRpbmdzIjogeyJVU0VfTU9EU0VDVVJJVFkiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAieWVzIiwgImhlbHAiOiAiRW5hYmxlIE1vZFNlY3VyaXR5IFdBRi4iLCAiaWQiOiAidXNlLW1vZHNlY3VyaXR5IiwgImxhYmVsIjogIlVzZSBNb2RTZWN1cml0eSIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei01IiwgInBhdHRlcm4iOiAiXih5ZXN8bm8pJCIsICJpbnBUeXBlIjogImNoZWNrYm94IiwgIm5hbWUiOiAiVXNlIE1vZFNlY3VyaXR5IiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAieWVzIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJFbmFibGUgTW9kU2VjdXJpdHkgV0FGLiJ9XX0sICJVU0VfTU9EU0VDVVJJVFlfQ1JTIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogInllcyIsICJoZWxwIjogIkVuYWJsZSBPV0FTUCBDb3JlIFJ1bGUgU2V0LiIsICJpZCI6ICJ1c2UtbW9kc2VjdXJpdHktY3JzIiwgImxhYmVsIjogIlVzZSBDb3JlIFJ1bGUgU2V0IiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJjb250YWluZXJDbGFzcyI6ICJ6LTQiLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJVc2UgQ29yZSBSdWxlIFNldCIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogInllcyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiRW5hYmxlIE9XQVNQIENvcmUgUnVsZSBTZXQuIn1dfSwgIk1PRFNFQ1VSSVRZX0NSU19WRVJTSU9OIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIjMiLCAiaGVscCI6ICJWZXJzaW9uIG9mIHRoZSBPV0FTUCBDb3JlIFJ1bGUgU2V0IHRvIHVzZSB3aXRoIE1vZFNlY3VyaXR5ICgzLCA0IG9yIG5pZ2h0bHkpLiIsICJpZCI6ICJtb2RzZWN1cml0eS1jcnMtdmVyc2lvbiIsICJsYWJlbCI6ICJDb3JlIFJ1bGUgU2V0IFZlcnNpb24iLCAicmVnZXgiOiAiXigzfDR8bmlnaHRseSkkIiwgInR5cGUiOiAic2VsZWN0IiwgImNvbnRhaW5lckNsYXNzIjogInotMyIsICJwYXR0ZXJuIjogIl4oM3w0fG5pZ2h0bHkpJCIsICJpbnBUeXBlIjogInNlbGVjdCIsICJuYW1lIjogIkNvcmUgUnVsZSBTZXQgVmVyc2lvbiIsICJ2YWx1ZXMiOiBbIjMiLCAiNCIsICJuaWdodGx5Il0sICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIjMiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlZlcnNpb24gb2YgdGhlIE9XQVNQIENvcmUgUnVsZSBTZXQgdG8gdXNlIHdpdGggTW9kU2VjdXJpdHkgKDMsIDQgb3IgbmlnaHRseSkuIn1dfSwgIk1PRFNFQ1VSSVRZX1NFQ19BVURJVF9FTkdJTkUiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiUmVsZXZhbnRPbmx5IiwgImhlbHAiOiAiU2VjQXVkaXRFbmdpbmUgZGlyZWN0aXZlIG9mIE1vZFNlY3VyaXR5LiIsICJpZCI6ICJtb2RzZWN1cml0eS1zZWMtYXVkaXQtZW5naW5lIiwgImxhYmVsIjogIlNlY0F1ZGl0RW5naW5lIiwgInJlZ2V4IjogIl4oT258UmVsZXZhbnRPbmx5fE9mZikkIiwgInR5cGUiOiAic2VsZWN0IiwgImNvbnRhaW5lckNsYXNzIjogInotMiIsICJwYXR0ZXJuIjogIl4oT258UmVsZXZhbnRPbmx5fE9mZikkIiwgImlucFR5cGUiOiAic2VsZWN0IiwgIm5hbWUiOiAiU2VjQXVkaXRFbmdpbmUiLCAidmFsdWVzIjogWyJPZmYiLCAiT24iLCAiUmVsZXZhbnRPbmx5Il0sICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIlJlbGV2YW50T25seSIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiU2VjQXVkaXRFbmdpbmUgZGlyZWN0aXZlIG9mIE1vZFNlY3VyaXR5LiJ9XX0sICJNT0RTRUNVUklUWV9TRUNfUlVMRV9FTkdJTkUiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiT24iLCAiaGVscCI6ICJTZWNSdWxlRW5naW5lIGRpcmVjdGl2ZSBvZiBNb2RTZWN1cml0eS4iLCAiaWQiOiAibW9kc2VjdXJpdHktc2VjLXJ1bGUtZW5naW5lIiwgImxhYmVsIjogIlNlY1J1bGVFbmdpbmUiLCAicmVnZXgiOiAiXihPbnxEZXRlY3Rpb25Pbmx5fE9mZikkIiwgInR5cGUiOiAic2VsZWN0IiwgImNvbnRhaW5lckNsYXNzIjogInotMSIsICJwYXR0ZXJuIjogIl4oT258RGV0ZWN0aW9uT25seXxPZmYpJCIsICJpbnBUeXBlIjogInNlbGVjdCIsICJuYW1lIjogIlNlY1J1bGVFbmdpbmUiLCAidmFsdWVzIjogWyJEZXRlY3Rpb25Pbmx5IiwgIk9mZiIsICJPbiJdLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJPbiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiU2VjUnVsZUVuZ2luZSBkaXJlY3RpdmUgb2YgTW9kU2VjdXJpdHkuIn1dfSwgIk1PRFNFQ1VSSVRZX1NFQ19BVURJVF9MT0dfUEFSVFMiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiQUJDRkhaIiwgImhlbHAiOiAiU2VjQXVkaXRMb2dQYXJ0cyBkaXJlY3RpdmUgb2YgTW9kU2VjdXJpdHkuIiwgImlkIjogIm1vZHNlY3VyaXR5LXNlYy1hdWRpdC1sb2ctcGFydHMiLCAibGFiZWwiOiAiU2VjQXVkaXRMb2dQYXJ0cyIsICJyZWdleCI6ICJeQSgoW0ItS10pKD8hLipcXDIpKStaJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0wIiwgInBhdHRlcm4iOiAiXkEoKFtCLUtdKSg/IS4qXFwyKSkrWiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIlNlY0F1ZGl0TG9nUGFydHMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJBQkNGSFoiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlNlY0F1ZGl0TG9nUGFydHMgZGlyZWN0aXZlIG9mIE1vZFNlY3VyaXR5LiJ9XX19LCAiY2hlY2tzdW0iOiBudWxsLCAibXVsdGlwbGVzIjoge319LCB7ImlkIjogInBocCIsICJzdHJlYW0iOiAibm8iLCAibmFtZSI6ICJQSFAiLCAiZGVzY3JpcHRpb24iOiAiTWFuYWdlIGxvY2FsIG9yIHJlbW90ZSBQSFAtRlBNLiIsICJ2ZXJzaW9uIjogIjEuMCIsICJ0eXBlIjogImNvcmUiLCAibWV0aG9kIjogIm1hbnVhbCIsICJwYWdlIjogZmFsc2UsICJzZXR0aW5ncyI6IHsiUkVNT1RFX1BIUCI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJIb3N0bmFtZSBvZiB0aGUgcmVtb3RlIFBIUC1GUE0gaW5zdGFuY2UuIiwgImlkIjogInJlbW90ZS1waHAiLCAibGFiZWwiOiAiUmVtb3RlIFBIUCIsICJyZWdleCI6ICJeKCg/PS57MSwyNTV9JClbMC05QS1aYS16XSg/Oig/OlswLTlBLVphLXpdfC0pezAsNjF9WzAtOUEtWmEtel0pPyg/OlxcLlswLTlBLVphLXpdKD86KD86WzAtOUEtWmEtel18LSl7MCw2MX1bMC05QS1aYS16XSk/KSpcXC4/KT8kIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTMiLCAicGF0dGVybiI6ICJeKCg/PS57MSwyNTV9JClbMC05QS1aYS16XSg/Oig/OlswLTlBLVphLXpdfC0pezAsNjF9WzAtOUEtWmEtel0pPyg/OlxcLlswLTlBLVphLXpdKD86KD86WzAtOUEtWmEtel18LSl7MCw2MX1bMC05QS1aYS16XSk/KSpcXC4/KT8kIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJSZW1vdGUgUEhQIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJIb3N0bmFtZSBvZiB0aGUgcmVtb3RlIFBIUC1GUE0gaW5zdGFuY2UuIn1dfSwgIlJFTU9URV9QSFBfUEFUSCI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJSb290IGZvbGRlciBjb250YWluaW5nIGZpbGVzIGluIHRoZSByZW1vdGUgUEhQLUZQTSBpbnN0YW5jZS4iLCAiaWQiOiAicmVtb3RlLXBocC1wYXRoIiwgImxhYmVsIjogIlJlbW90ZSBQSFAgcGF0aCIsICJyZWdleCI6ICJeKC9bXFx3LiBcXC1dKykqLz8kIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTIiLCAicGF0dGVybiI6ICJeKC9bXFx3LiBcXC1dKykqLz8kIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJSZW1vdGUgUEhQIHBhdGgiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlJvb3QgZm9sZGVyIGNvbnRhaW5pbmcgZmlsZXMgaW4gdGhlIHJlbW90ZSBQSFAtRlBNIGluc3RhbmNlLiJ9XX0sICJMT0NBTF9QSFAiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiUGF0aCB0byB0aGUgUEhQLUZQTSBzb2NrZXQgZmlsZS4iLCAiaWQiOiAibG9jYWwiLCAibGFiZWwiOiAiTG9jYWwgUEhQIiwgInJlZ2V4IjogIl4oL1tcXHcuIFxcLV0rKSovPyQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMSIsICJwYXR0ZXJuIjogIl4oL1tcXHcuIFxcLV0rKSovPyQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkxvY2FsIFBIUCIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiUGF0aCB0byB0aGUgUEhQLUZQTSBzb2NrZXQgZmlsZS4ifV19LCAiTE9DQUxfUEhQX1BBVEgiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiUm9vdCBmb2xkZXIgY29udGFpbmluZyBmaWxlcyBpbiB0aGUgbG9jYWwgUEhQLUZQTSBpbnN0YW5jZS4iLCAiaWQiOiAibG9jYWwtcGhwLXBhdGgiLCAibGFiZWwiOiAiTG9jYWwgUEhQIHBhdGgiLCAicmVnZXgiOiAiXigvW1xcdy4gXFwtXSspKi8/JCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0wIiwgInBhdHRlcm4iOiAiXigvW1xcdy4gXFwtXSspKi8/JCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiTG9jYWwgUEhQIHBhdGgiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlJvb3QgZm9sZGVyIGNvbnRhaW5pbmcgZmlsZXMgaW4gdGhlIGxvY2FsIFBIUC1GUE0gaW5zdGFuY2UuIn1dfX0sICJjaGVja3N1bSI6IG51bGwsICJtdWx0aXBsZXMiOiB7fX0sIHsiaWQiOiAicHJvIiwgInN0cmVhbSI6ICJubyIsICJuYW1lIjogIlBybyIsICJkZXNjcmlwdGlvbiI6ICJQcm8gc2V0dGluZ3MgZm9yIHRoZSBQcm8gdmVyc2lvbiBvZiBCdW5rZXJXZWIuIiwgInZlcnNpb24iOiAiMS4wIiwgInR5cGUiOiAiY29yZSIsICJtZXRob2QiOiAibWFudWFsIiwgInBhZ2UiOiBmYWxzZSwgInNldHRpbmdzIjogeyJQUk9fTElDRU5TRV9LRVkiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiVGhlIExpY2Vuc2UgS2V5IGZvciB0aGUgUHJvIHZlcnNpb24gb2YgQnVua2VyV2ViLiIsICJpZCI6ICJwcm8tbGljZW5zZS1rZXkiLCAibGFiZWwiOiAiUHJvIExpY2Vuc2UgS2V5IiwgInJlZ2V4IjogIl4uKiQiLCAidHlwZSI6ICJwYXNzd29yZCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTAiLCAicGF0dGVybiI6ICJeLiokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJQcm8gTGljZW5zZSBLZXkiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJUaGUgTGljZW5zZSBLZXkgZm9yIHRoZSBQcm8gdmVyc2lvbiBvZiBCdW5rZXJXZWIuIn1dfX0sICJjaGVja3N1bSI6IG51bGwsICJtdWx0aXBsZXMiOiB7fX0sIHsiaWQiOiAicmVhbGlwIiwgInN0cmVhbSI6ICJwYXJ0aWFsIiwgIm5hbWUiOiAiUmVhbCBJUCIsICJkZXNjcmlwdGlvbiI6ICJHZXQgcmVhbCBJUCBvZiBjbGllbnRzIHdoZW4gQnVua2VyV2ViIGlzIGJlaGluZCBhIHJldmVyc2UgcHJveHkgLyBsb2FkIGJhbGFuY2VyLiIsICJ2ZXJzaW9uIjogIjEuMCIsICJ0eXBlIjogImNvcmUiLCAibWV0aG9kIjogIm1hbnVhbCIsICJwYWdlIjogZmFsc2UsICJzZXR0aW5ncyI6IHsiVVNFX1JFQUxfSVAiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAibm8iLCAiaGVscCI6ICJSZXRyaWV2ZSB0aGUgcmVhbCBJUCBvZiBjbGllbnQuIiwgImlkIjogInVzZS1yZWFsLWlwIiwgImxhYmVsIjogIlVzZSByZWFsIGlwIiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJjb250YWluZXJDbGFzcyI6ICJ6LTUiLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJVc2UgcmVhbCBpcCIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIm5vIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJSZXRyaWV2ZSB0aGUgcmVhbCBJUCBvZiBjbGllbnQuIn1dfSwgIlVTRV9QUk9YWV9QUk9UT0NPTCI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJubyIsICJoZWxwIjogIkVuYWJsZSBQUk9YWSBwcm90b2NvbCBjb21tdW5pY2F0aW9uLiIsICJpZCI6ICJ1c2UtcHJveHktcHJvdG9jb2wiLCAibGFiZWwiOiAiVXNlIFBST1hZIHByb3RvY29sIiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJjb250YWluZXJDbGFzcyI6ICJ6LTQiLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJVc2UgUFJPWFkgcHJvdG9jb2wiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJubyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiRW5hYmxlIFBST1hZIHByb3RvY29sIGNvbW11bmljYXRpb24uIn1dfSwgIlJFQUxfSVBfRlJPTSI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIxOTIuMTY4LjAuMC8xNiAxNzIuMTYuMC4wLzEyIDEwLjAuMC4wLzgiLCAiaGVscCI6ICJMaXN0IG9mIHRydXN0ZWQgSVBzIC8gbmV0d29ya3MsIHNlcGFyYXRlZCB3aXRoIHNwYWNlcywgd2hlcmUgcHJveGllZCByZXF1ZXN0cyBjb21lIGZyb20uIiwgImlkIjogInJlYWwtaXAtZnJvbSIsICJsYWJlbCI6ICJSZWFsIElQIGZyb20iLCAicmVnZXgiOiAiXig/ISApKCAqKCgoXFxiMjVbMC01XXxcXGIyWzAtNF1cXGR8XFxiWzAxXT9cXGRcXGQ/KShcXC4oMjVbMC01XXwyWzAtNF1cXGR8WzAxXT9cXGRcXGQ/KSl7M30pKFxcLyhbMS0yXVswLTldP3wzWzAtMl0/fFswNC05XSkpP3woKFswLTlhLWZBLUZdezEsNH06KXs3fVswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDd9OnwoWzAtOWEtZkEtRl17MSw0fTopezEsNn06WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsNX0oOlswLTlhLWZBLUZdezEsNH0pezEsMn18KFswLTlhLWZBLUZdezEsNH06KXsxLDR9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDN9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwzfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsMn0oOlswLTlhLWZBLUZdezEsNH0pezEsNX18WzAtOWEtZkEtRl17MSw0fTooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDZ9KXw6KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw3fXw6KXxmZTgwOig6WzAtOWEtZkEtRl1aezAsNH0pezAsNH0lWzAtOWEtekEtWl0rfDo6KGZmZmYoOjB7MSw0fSk/Oik/KCgyNVswLTVdfCgyWzAtNF18MT9cXGQpP1xcZClcXC4pezN9KDI1WzAtNV18KDJbMC00XXwxP1xcZCk/XFxkKXwoWzAtOWEtZkEtRl17MSw0fTopezEsNH06KCgyNVswLTVdfCgyWzAtNF18MT9cXGQpP1xcZClcXC4pezN9KDI1WzAtNV18KDJbMC00XXwxP1xcZCk/XFxkKSkoXFwvKDEyWzAtOF18MVswMV1bMC05XXxbMC05XVswLTldPykpPykoPyEuKlxcRFxcMihbXlxcZFxcL118JCkpICopKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMyIsICJwYXR0ZXJuIjogIl4oPyEgKSggKigoKFxcYjI1WzAtNV18XFxiMlswLTRdXFxkfFxcYlswMV0/XFxkXFxkPykoXFwuKDI1WzAtNV18MlswLTRdXFxkfFswMV0/XFxkXFxkPykpezN9KShcXC8oWzEtMl1bMC05XT98M1swLTJdP3xbMDQtOV0pKT98KChbMC05YS1mQS1GXXsxLDR9Oil7N31bMC05YS1mQS1GXXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw3fTp8KFswLTlhLWZBLUZdezEsNH06KXsxLDZ9OlswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDV9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDJ9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw0fSg6WzAtOWEtZkEtRl17MSw0fSl7MSwzfXwoWzAtOWEtZkEtRl17MSw0fTopezEsM30oOlswLTlhLWZBLUZdezEsNH0pezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDJ9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDV9fFswLTlhLWZBLUZdezEsNH06KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw2fSl8OigoOlswLTlhLWZBLUZdezEsNH0pezEsN318Oil8ZmU4MDooOlswLTlhLWZBLUZdWnswLDR9KXswLDR9JVswLTlhLXpBLVpdK3w6OihmZmZmKDowezEsNH0pPzopPygoMjVbMC01XXwoMlswLTRdfDE/XFxkKT9cXGQpXFwuKXszfSgyNVswLTVdfCgyWzAtNF18MT9cXGQpP1xcZCl8KFswLTlhLWZBLUZdezEsNH06KXsxLDR9OigoMjVbMC01XXwoMlswLTRdfDE/XFxkKT9cXGQpXFwuKXszfSgyNVswLTVdfCgyWzAtNF18MT9cXGQpP1xcZCkpKFxcLygxMlswLThdfDFbMDFdWzAtOV18WzAtOV1bMC05XT8pKT8pKD8hLipcXERcXDIoW15cXGRcXC9dfCQpKSAqKSokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJSZWFsIElQIGZyb20iLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIxOTIuMTY4LjAuMC8xNiAxNzIuMTYuMC4wLzEyIDEwLjAuMC4wLzgiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkxpc3Qgb2YgdHJ1c3RlZCBJUHMgLyBuZXR3b3Jrcywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCB3aGVyZSBwcm94aWVkIHJlcXVlc3RzIGNvbWUgZnJvbS4ifV19LCAiUkVBTF9JUF9IRUFERVIiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiWC1Gb3J3YXJkZWQtRm9yIiwgImhlbHAiOiAiSFRUUCBoZWFkZXIgY29udGFpbmluZyB0aGUgcmVhbCBJUCBvciBzcGVjaWFsIHZhbHVlIHByb3h5X3Byb3RvY29sIGZvciBQUk9YWSBwcm90b2NvbC4iLCAiaWQiOiAicmVhbC1pcC1oZWFkZXIiLCAibGFiZWwiOiAiUmVhbCBJUCBoZWFkZXIiLCAicmVnZXgiOiAiXig/ISApKCggPyg/IXByb3h5X3Byb3RvY29sKVtcXHdcXC1dKykqfHByb3h5X3Byb3RvY29sKSQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMiIsICJwYXR0ZXJuIjogIl4oPyEgKSgoID8oPyFwcm94eV9wcm90b2NvbClbXFx3XFwtXSspKnxwcm94eV9wcm90b2NvbCkkIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJSZWFsIElQIGhlYWRlciIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIlgtRm9yd2FyZGVkLUZvciIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiSFRUUCBoZWFkZXIgY29udGFpbmluZyB0aGUgcmVhbCBJUCBvciBzcGVjaWFsIHZhbHVlIHByb3h5X3Byb3RvY29sIGZvciBQUk9YWSBwcm90b2NvbC4ifV19LCAiUkVBTF9JUF9SRUNVUlNJVkUiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAieWVzIiwgImhlbHAiOiAiUGVyZm9ybSBhIHJlY3Vyc2l2ZSBzZWFyY2ggaW4gdGhlIGhlYWRlciBjb250YWluZXIgSVAgYWRkcmVzcy4iLCAiaWQiOiAicmVhbC1pcC1yZWN1cnNpdmUiLCAibGFiZWwiOiAiUmVhbCBJUCByZWN1cnNpdmUiLCAicmVnZXgiOiAiXih5ZXN8bm8pJCIsICJ0eXBlIjogImNoZWNrIiwgImNvbnRhaW5lckNsYXNzIjogInotMSIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIlJlYWwgSVAgcmVjdXJzaXZlIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAieWVzIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJQZXJmb3JtIGEgcmVjdXJzaXZlIHNlYXJjaCBpbiB0aGUgaGVhZGVyIGNvbnRhaW5lciBJUCBhZGRyZXNzLiJ9XX0sICJSRUFMX0lQX0ZST01fVVJMUyI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJMaXN0IG9mIFVSTHMgY29udGFpbmluZyB0cnVzdGVkIElQcyAvIG5ldHdvcmtzLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIHdoZXJlIHByb3hpZWQgcmVxdWVzdHMgY29tZSBmcm9tLiIsICJpZCI6ICJyZWFsLWlwLWZyb20tdXJscyIsICJsYWJlbCI6ICJSZWFsIElQIGZyb20gVVJMcyIsICJyZWdleCI6ICJeKCAqKChodHRwcz86XFwvXFwvfGZpbGU6XFwvXFwvXFwvKVtcXC1cXHdAOiUuK34jPV0rW1xcLVxcd1xcKFxcKSFAOiUrLn4jPyZcXC89JF0qKSg/IS4qXFwyKD8hLikpICopKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMCIsICJwYXR0ZXJuIjogIl4oICooKGh0dHBzPzpcXC9cXC98ZmlsZTpcXC9cXC9cXC8pW1xcLVxcd0A6JS4rfiM9XStbXFwtXFx3XFwoXFwpIUA6JSsufiM/JlxcLz0kXSopKD8hLipcXDIoPyEuKSkgKikqJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiUmVhbCBJUCBmcm9tIFVSTHMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIFVSTHMgY29udGFpbmluZyB0cnVzdGVkIElQcyAvIG5ldHdvcmtzLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIHdoZXJlIHByb3hpZWQgcmVxdWVzdHMgY29tZSBmcm9tLiJ9XX19LCAiY2hlY2tzdW0iOiBudWxsLCAibXVsdGlwbGVzIjoge319LCB7ImlkIjogInJlZGlyZWN0IiwgInN0cmVhbSI6ICJubyIsICJuYW1lIjogIlJlZGlyZWN0IiwgImRlc2NyaXB0aW9uIjogIk1hbmFnZSBIVFRQIHJlZGlyZWN0cy4iLCAidmVyc2lvbiI6ICIxLjAiLCAidHlwZSI6ICJjb3JlIiwgIm1ldGhvZCI6ICJtYW51YWwiLCAicGFnZSI6IGZhbHNlLCAic2V0dGluZ3MiOiB7IlJFRElSRUNUX1RPIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIlJlZGlyZWN0IGEgd2hvbGUgc2l0ZSB0byBhbm90aGVyIG9uZS4iLCAiaWQiOiAicmVkaXJlY3QtdG8iLCAibGFiZWwiOiAiUmVkaXJlY3QgdG8iLCAicmVnZXgiOiAiXihodHRwcz86XFwvXFwvW1xcLVxcd0A6JS4rfiM9XStbXFwtXFx3XFwoXFwpIUA6JSsufiM/JlxcLz0kXSopPyQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMiIsICJwYXR0ZXJuIjogIl4oaHR0cHM/OlxcL1xcL1tcXC1cXHdAOiUuK34jPV0rW1xcLVxcd1xcKFxcKSFAOiUrLn4jPyZcXC89JF0qKT8kIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJSZWRpcmVjdCB0byIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiUmVkaXJlY3QgYSB3aG9sZSBzaXRlIHRvIGFub3RoZXIgb25lLiJ9XX0sICJSRURJUkVDVF9UT19SRVFVRVNUX1VSSSI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJubyIsICJoZWxwIjogIkFwcGVuZCB0aGUgcmVxdWVzdGVkIFVSSSB0byB0aGUgcmVkaXJlY3QgYWRkcmVzcy4iLCAiaWQiOiAicmVkaXJlY3QtdG8tcmVxdWVzdC11cmkiLCAibGFiZWwiOiAiQXBwZW5kIHJlcXVlc3QgVVJJIiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJjb250YWluZXJDbGFzcyI6ICJ6LTEiLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJBcHBlbmQgcmVxdWVzdCBVUkkiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJubyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiQXBwZW5kIHRoZSByZXF1ZXN0ZWQgVVJJIHRvIHRoZSByZWRpcmVjdCBhZGRyZXNzLiJ9XX0sICJSRURJUkVDVF9UT19TVEFUVVNfQ09ERSI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIzMDEiLCAiaGVscCI6ICJTdGF0dXMgY29kZSB0byBzZW5kIHRvIGNsaWVudCB3aGVuIHJlZGlyZWN0aW5nLiIsICJpZCI6ICJyZWRpcmVjdC10by1zdGF0dXMtY29kZSIsICJsYWJlbCI6ICJBcHBlbmQgcmVxdWVzdCBVUkkiLCAicmVnZXgiOiAiXigzMDF8MzAyKSQiLCAidHlwZSI6ICJzZWxlY3QiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0wIiwgInBhdHRlcm4iOiAiXigzMDF8MzAyKSQiLCAiaW5wVHlwZSI6ICJzZWxlY3QiLCAibmFtZSI6ICJBcHBlbmQgcmVxdWVzdCBVUkkiLCAidmFsdWVzIjogWyIzMDEiLCAiMzAyIl0sICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIjMwMSIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiU3RhdHVzIGNvZGUgdG8gc2VuZCB0byBjbGllbnQgd2hlbiByZWRpcmVjdGluZy4ifV19fSwgImNoZWNrc3VtIjogbnVsbCwgIm11bHRpcGxlcyI6IHt9fSwgeyJpZCI6ICJyZWRpcyIsICJzdHJlYW0iOiAieWVzIiwgIm5hbWUiOiAiUmVkaXMiLCAiZGVzY3JpcHRpb24iOiAiUmVkaXMgc2VydmVyIGNvbmZpZ3VyYXRpb24gd2hlbiB1c2luZyBCdW5rZXJXZWIgaW4gY2x1c3RlciBtb2RlLiIsICJ2ZXJzaW9uIjogIjEuMCIsICJ0eXBlIjogImNvcmUiLCAibWV0aG9kIjogIm1hbnVhbCIsICJwYWdlIjogdHJ1ZSwgInNldHRpbmdzIjogeyJVU0VfUkVESVMiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAibm8iLCAiaGVscCI6ICJBY3RpdmF0ZSBSZWRpcy4iLCAiaWQiOiAidXNlLXJlZGlzIiwgImxhYmVsIjogIkFjdGl2YXRlIFJlZGlzIiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJjb250YWluZXJDbGFzcyI6ICJ6LTE0IiwgInBhdHRlcm4iOiAiXih5ZXN8bm8pJCIsICJpbnBUeXBlIjogImNoZWNrYm94IiwgIm5hbWUiOiAiQWN0aXZhdGUgUmVkaXMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJubyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkFjdGl2YXRlIFJlZGlzLiJ9XX0sICJSRURJU19IT1NUIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIlJlZGlzIHNlcnZlciBJUCBvciBob3N0bmFtZS4iLCAiaWQiOiAicmVkaXMtaG9zdCIsICJsYWJlbCI6ICJSZWRpcyBzZXJ2ZXIiLCAicmVnZXgiOiAiXigoPyEtKVthLXpBLVowLTlcXC1dezEsNjN9KC5bYS16QS1aXXsyLH0pK3woXFxiMjVbMC01XXxcXGIyWzAtNF1cXGR8XFxiWzAxXT9cXGRcXGQ/KShcXC4oMjVbMC01XXwyWzAtNF1cXGR8WzAxXT9cXGRcXGQ/KSl7M318KChbMC05YS1mQS1GXXsxLDR9Oil7N31bMC05YS1mQS1GXXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw3fTp8KFswLTlhLWZBLUZdezEsNH06KXsxLDZ9OlswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDV9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDJ9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw0fSg6WzAtOWEtZkEtRl17MSw0fSl7MSwzfXwoWzAtOWEtZkEtRl17MSw0fTopezEsM30oOlswLTlhLWZBLUZdezEsNH0pezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDJ9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDV9fFswLTlhLWZBLUZdezEsNH06KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw2fSl8OigoOlswLTlhLWZBLUZdezEsNH0pezEsN318Oil8ZmU4MDooOlswLTlhLWZBLUZdWnswLDR9KXswLDR9JVswLTlhLXpBLVpdK3w6OihmZmZmKDowezEsNH0pPzopPygoMjVbMC01XXwoMlswLTRdfDE/XFxkKT9cXGQpXFwuKXszfSgyNVswLTVdfCgyWzAtNF18MT9cXGQpP1xcZCl8KFswLTlhLWZBLUZdezEsNH06KXsxLDR9OigoMjVbMC01XXwoMlswLTRdfDE/XFxkKT9cXGQpXFwuKXszfSgyNVswLTVdfCgyWzAtNF18MT9cXGQpP1xcZCkpKT8kIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTEzIiwgInBhdHRlcm4iOiAiXigoPyEtKVthLXpBLVowLTlcXC1dezEsNjN9KC5bYS16QS1aXXsyLH0pK3woXFxiMjVbMC01XXxcXGIyWzAtNF1cXGR8XFxiWzAxXT9cXGRcXGQ/KShcXC4oMjVbMC01XXwyWzAtNF1cXGR8WzAxXT9cXGRcXGQ/KSl7M318KChbMC05YS1mQS1GXXsxLDR9Oil7N31bMC05YS1mQS1GXXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw3fTp8KFswLTlhLWZBLUZdezEsNH06KXsxLDZ9OlswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDV9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDJ9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw0fSg6WzAtOWEtZkEtRl17MSw0fSl7MSwzfXwoWzAtOWEtZkEtRl17MSw0fTopezEsM30oOlswLTlhLWZBLUZdezEsNH0pezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDJ9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDV9fFswLTlhLWZBLUZdezEsNH06KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw2fSl8OigoOlswLTlhLWZBLUZdezEsNH0pezEsN318Oil8ZmU4MDooOlswLTlhLWZBLUZdWnswLDR9KXswLDR9JVswLTlhLXpBLVpdK3w6OihmZmZmKDowezEsNH0pPzopPygoMjVbMC01XXwoMlswLTRdfDE/XFxkKT9cXGQpXFwuKXszfSgyNVswLTVdfCgyWzAtNF18MT9cXGQpP1xcZCl8KFswLTlhLWZBLUZdezEsNH06KXsxLDR9OigoMjVbMC01XXwoMlswLTRdfDE/XFxkKT9cXGQpXFwuKXszfSgyNVswLTVdfCgyWzAtNF18MT9cXGQpP1xcZCkpKT8kIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJSZWRpcyBzZXJ2ZXIiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJSZWRpcyBzZXJ2ZXIgSVAgb3IgaG9zdG5hbWUuIn1dfSwgIlJFRElTX1BPUlQiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAiNjM3OSIsICJoZWxwIjogIlJlZGlzIHNlcnZlciBwb3J0LiIsICJpZCI6ICJyZWRpcy1wb3J0IiwgImxhYmVsIjogIlJlZGlzIHBvcnQiLCAicmVnZXgiOiAiXlswLTldKyQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMTIiLCAicGF0dGVybiI6ICJeWzAtOV0rJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiUmVkaXMgcG9ydCIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIjYzNzkiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJSZWRpcyBzZXJ2ZXIgcG9ydC4ifV19LCAiUkVESVNfREFUQUJBU0UiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAiMCIsICJoZWxwIjogIlJlZGlzIGRhdGFiYXNlIG51bWJlci4iLCAiaWQiOiAicmVkaXMtZGF0YWJhc2UiLCAibGFiZWwiOiAiUmVkaXMgZGF0YWJhc2UiLCAicmVnZXgiOiAiXlswLTldKyQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMTEiLCAicGF0dGVybiI6ICJeWzAtOV0rJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiUmVkaXMgZGF0YWJhc2UiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIwIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiUmVkaXMgZGF0YWJhc2UgbnVtYmVyLiJ9XX0sICJSRURJU19TU0wiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAibm8iLCAiaGVscCI6ICJVc2UgU1NML1RMUyBjb25uZWN0aW9uIHdpdGggUmVkaXMgc2VydmVyLiIsICJpZCI6ICJyZWRpcy1zc2wiLCAibGFiZWwiOiAiUmVkaXMgU1NML1RMUyIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xMCIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIlJlZGlzIFNTTC9UTFMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJubyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlVzZSBTU0wvVExTIGNvbm5lY3Rpb24gd2l0aCBSZWRpcyBzZXJ2ZXIuIn1dfSwgIlJFRElTX1NTTF9WRVJJRlkiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAibm8iLCAiaGVscCI6ICJWZXJpZnkgdGhlIGNlcnRpZmljYXRlIG9mIFJlZGlzIHNlcnZlci4iLCAiaWQiOiAicmVkaXMtc3NsLXZlcmlmeSIsICJsYWJlbCI6ICJSZWRpcyBTU0wvVExTIHZlcmlmeSIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei05IiwgInBhdHRlcm4iOiAiXih5ZXN8bm8pJCIsICJpbnBUeXBlIjogImNoZWNrYm94IiwgIm5hbWUiOiAiUmVkaXMgU1NML1RMUyB2ZXJpZnkiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJubyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlZlcmlmeSB0aGUgY2VydGlmaWNhdGUgb2YgUmVkaXMgc2VydmVyLiJ9XX0sICJSRURJU19USU1FT1VUIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIjEwMDAiLCAiaGVscCI6ICJSZWRpcyBzZXJ2ZXIgdGltZW91dCAoaW4gbXMpIGZvciBjb25uZWN0LCByZWFkIGFuZCB3cml0ZS4iLCAiaWQiOiAicmVkaXMtdGltZW91dCIsICJsYWJlbCI6ICJSZWRpcyB0aW1lb3V0IChtcykiLCAicmVnZXgiOiAiXlswLTldKyQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotOCIsICJwYXR0ZXJuIjogIl5bMC05XSskIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJSZWRpcyB0aW1lb3V0IChtcykiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIxMDAwIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiUmVkaXMgc2VydmVyIHRpbWVvdXQgKGluIG1zKSBmb3IgY29ubmVjdCwgcmVhZCBhbmQgd3JpdGUuIn1dfSwgIlJFRElTX1VTRVJOQU1FIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIlJlZGlzIHVzZXJuYW1lIHVzZWQgaW4gQVVUSCBjb21tYW5kLiIsICJpZCI6ICJyZWRpcy11c2VybmFtZSIsICJsYWJlbCI6ICJSZWRpcyB1c2VybmFtZSIsICJyZWdleCI6ICJeLiokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTciLCAicGF0dGVybiI6ICJeLiokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJSZWRpcyB1c2VybmFtZSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlJlZGlzIHVzZXJuYW1lIHVzZWQgaW4gQVVUSCBjb21tYW5kLiJ9XX0sICJSRURJU19QQVNTV09SRCI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJSZWRpcyBwYXNzd29yZCB1c2VkIGluIEFVVEggY29tbWFuZC4iLCAiaWQiOiAicmVkaXMtcGFzc3dvcmQiLCAibGFiZWwiOiAiUmVkaXMgcGFzc3dvcmQiLCAicmVnZXgiOiAiXi4qJCIsICJ0eXBlIjogInBhc3N3b3JkIiwgImNvbnRhaW5lckNsYXNzIjogInotNiIsICJwYXR0ZXJuIjogIl4uKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIlJlZGlzIHBhc3N3b3JkIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiUmVkaXMgcGFzc3dvcmQgdXNlZCBpbiBBVVRIIGNvbW1hbmQuIn1dfSwgIlJFRElTX1NFTlRJTkVMX0hPU1RTIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIlJlZGlzIHNlbnRpbmVsIGhvc3RzIHdpdGggZm9ybWF0IGhvc3Q6W3BvcnRdIHNlcGFyYXRlZCB3aXRoIHNwYWNlcy4iLCAiaWQiOiAicmVkaXMtc2VudGluZWwtaG9zdHMiLCAibGFiZWwiOiAiUmVkaXMgc2VudGluZWwgaG9zdHMiLCAicmVnZXgiOiAiXi4qJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei01IiwgInBhdHRlcm4iOiAiXi4qJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiUmVkaXMgc2VudGluZWwgaG9zdHMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJSZWRpcyBzZW50aW5lbCBob3N0cyB3aXRoIGZvcm1hdCBob3N0Oltwb3J0XSBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMuIn1dfSwgIlJFRElTX1NFTlRJTkVMX1VTRVJOQU1FIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIlJlZGlzIHNlbnRpbmVsIHVzZXJuYW1lLiIsICJpZCI6ICJyZWRpcy1zZW50aW5lbC11c2VybmFtZSIsICJsYWJlbCI6ICJSZWRpcyBzZW50aW5lbCB1c2VybmFtZSIsICJyZWdleCI6ICJeLiokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTQiLCAicGF0dGVybiI6ICJeLiokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJSZWRpcyBzZW50aW5lbCB1c2VybmFtZSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlJlZGlzIHNlbnRpbmVsIHVzZXJuYW1lLiJ9XX0sICJSRURJU19TRU5USU5FTF9QQVNTV09SRCI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJSZWRpcyBzZW50aW5lbCBwYXNzd29yZC4iLCAiaWQiOiAicmVkaXMtc2VudGluZWwtcGFzc3dvcmQiLCAibGFiZWwiOiAiUmVkaXMgc2VudGluZWwgcGFzc3dvcmQiLCAicmVnZXgiOiAiXi4qJCIsICJ0eXBlIjogInBhc3N3b3JkIiwgImNvbnRhaW5lckNsYXNzIjogInotMyIsICJwYXR0ZXJuIjogIl4uKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIlJlZGlzIHNlbnRpbmVsIHBhc3N3b3JkIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiUmVkaXMgc2VudGluZWwgcGFzc3dvcmQuIn1dfSwgIlJFRElTX1NFTlRJTkVMX01BU1RFUiI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJSZWRpcyBzZW50aW5lbCBtYXN0ZXIgbmFtZS4iLCAiaWQiOiAicmVkaXMtc2VudGluZWwtbWFzdGVyIiwgImxhYmVsIjogIlJlZGlzIHNlbnRpbmVsIG1hc3RlciIsICJyZWdleCI6ICJeLiokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTIiLCAicGF0dGVybiI6ICJeLiokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJSZWRpcyBzZW50aW5lbCBtYXN0ZXIiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJSZWRpcyBzZW50aW5lbCBtYXN0ZXIgbmFtZS4ifV19LCAiUkVESVNfS0VFUEFMSVZFX0lETEUiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAiMzAwMDAiLCAiaGVscCI6ICJNYXggaWRsZSB0aW1lIChpbiBtcykgYmVmb3JlIGNsb3NpbmcgcmVkaXMgY29ubmVjdGlvbiBpbiB0aGUgcG9vbC4iLCAiaWQiOiAicmVkaXMta2VlcGFsaXZlLWlkbGUiLCAibGFiZWwiOiAiUmVkaXMga2VlcGFsaXZlIGlkbGUgKG1zKSIsICJyZWdleCI6ICJeWzAtOV0rJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xIiwgInBhdHRlcm4iOiAiXlswLTldKyQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIlJlZGlzIGtlZXBhbGl2ZSBpZGxlIChtcykiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIzMDAwMCIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIk1heCBpZGxlIHRpbWUgKGluIG1zKSBiZWZvcmUgY2xvc2luZyByZWRpcyBjb25uZWN0aW9uIGluIHRoZSBwb29sLiJ9XX0sICJSRURJU19LRUVQQUxJVkVfUE9PTCI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICIxMCIsICJoZWxwIjogIk1heCBudW1iZXIgb2YgcmVkaXMgY29ubmVjdGlvbihzKSBrZXB0IGluIHRoZSBwb29sLiIsICJpZCI6ICJyZWRpcy1rZWVwYWxpdmUtcG9vbCIsICJsYWJlbCI6ICJSZWRpcyBrZWVwYWxpdmUgcG9vbCIsICJyZWdleCI6ICJeWzAtOV0rJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0wIiwgInBhdHRlcm4iOiAiXlswLTldKyQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIlJlZGlzIGtlZXBhbGl2ZSBwb29sIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiMTAiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJNYXggbnVtYmVyIG9mIHJlZGlzIGNvbm5lY3Rpb24ocykga2VwdCBpbiB0aGUgcG9vbC4ifV19fSwgImNoZWNrc3VtIjogbnVsbCwgIm11bHRpcGxlcyI6IHt9fSwgeyJpZCI6ICJyZXZlcnNlcHJveHkiLCAic3RyZWFtIjogInBhcnRpYWwiLCAibmFtZSI6ICJSZXZlcnNlIHByb3h5IiwgImRlc2NyaXB0aW9uIjogIk1hbmFnZSByZXZlcnNlIHByb3h5IGNvbmZpZ3VyYXRpb25zLiIsICJ2ZXJzaW9uIjogIjEuMCIsICJ0eXBlIjogImNvcmUiLCAibWV0aG9kIjogIm1hbnVhbCIsICJwYWdlIjogZmFsc2UsICJzZXR0aW5ncyI6IHsiVVNFX1JFVkVSU0VfUFJPWFkiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAibm8iLCAiaGVscCI6ICJBY3RpdmF0ZSByZXZlcnNlIHByb3h5IG1vZGUuIiwgImlkIjogInVzZS1yZXZlcnNlLXByb3h5IiwgImxhYmVsIjogIlVzZSByZXZlcnNlIHByb3h5IiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJjb250YWluZXJDbGFzcyI6ICJ6LTI2IiwgInBhdHRlcm4iOiAiXih5ZXN8bm8pJCIsICJpbnBUeXBlIjogImNoZWNrYm94IiwgIm5hbWUiOiAiVXNlIHJldmVyc2UgcHJveHkiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJubyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiQWN0aXZhdGUgcmV2ZXJzZSBwcm94eSBtb2RlLiJ9XX0sICJSRVZFUlNFX1BST1hZX0lOVEVSQ0VQVF9FUlJPUlMiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAieWVzIiwgImhlbHAiOiAiSW50ZXJjZXB0IGFuZCByZXdyaXRlIGVycm9ycy4iLCAiaWQiOiAicmV2ZXJzZS1wcm94eS1pbnRlcmNlcHQtZXJyb3JzIiwgImxhYmVsIjogIkludGVyY2VwdCBlcnJvcnMiLCAicmVnZXgiOiAiXih5ZXN8bm8pJCIsICJ0eXBlIjogImNoZWNrIiwgImNvbnRhaW5lckNsYXNzIjogInotMjUiLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJJbnRlcmNlcHQgZXJyb3JzIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAieWVzIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJJbnRlcmNlcHQgYW5kIHJld3JpdGUgZXJyb3JzLiJ9XX0sICJSRVZFUlNFX1BST1hZX0NVU1RPTV9IT1NUIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIk92ZXJyaWRlIEhvc3QgaGVhZGVyIHNlbnQgdG8gdXBzdHJlYW0gc2VydmVyLiIsICJpZCI6ICJyZXZlcnNlLXByb3h5LWN1c3RvbS1ob3N0IiwgImxhYmVsIjogIlJldmVyc2UgcHJveHkgY3VzdG9tIGhvc3QiLCAicmVnZXgiOiAiXi4qJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0yNCIsICJwYXR0ZXJuIjogIl4uKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIlJldmVyc2UgcHJveHkgY3VzdG9tIGhvc3QiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIk92ZXJyaWRlIEhvc3QgaGVhZGVyIHNlbnQgdG8gdXBzdHJlYW0gc2VydmVyLiJ9XX0sICJVU0VfUFJPWFlfQ0FDSEUiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAibm8iLCAiaGVscCI6ICJFbmFibGUgb3IgZGlzYWJsZSBjYWNoaW5nIG9mIHRoZSBwcm94aWVkIHJlc291cmNlcy4iLCAiaWQiOiAidXNlLXByb3h5LWNhY2hlIiwgImxhYmVsIjogIlJldmVyc2UgcHJveHkgY2FjaGUiLCAicmVnZXgiOiAiXih5ZXN8bm8pJCIsICJ0eXBlIjogImNoZWNrIiwgImNvbnRhaW5lckNsYXNzIjogInotOSIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIlJldmVyc2UgcHJveHkgY2FjaGUiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJubyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiRW5hYmxlIG9yIGRpc2FibGUgY2FjaGluZyBvZiB0aGUgcHJveGllZCByZXNvdXJjZXMuIn1dfSwgIlBST1hZX0NBQ0hFX1BBVEhfTEVWRUxTIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIjE6MiIsICJoZWxwIjogIkhpZXJhcmNoeSBsZXZlbHMgb2YgdGhlIGNhY2hlLiIsICJpZCI6ICJwcm94eS1jYWNoZS1wYXRoLWxldmVscyIsICJsYWJlbCI6ICJIaWVyYXJjaHkgbGV2ZWxzIiwgInJlZ2V4IjogIl4oOj9bMTJdKXsxLDN9JCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei04IiwgInBhdHRlcm4iOiAiXig6P1sxMl0pezEsM30kIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJIaWVyYXJjaHkgbGV2ZWxzIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiMToyIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiSGllcmFyY2h5IGxldmVscyBvZiB0aGUgY2FjaGUuIn1dfSwgIlBST1hZX0NBQ0hFX1BBVEhfWk9ORV9TSVpFIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIjEwbSIsICJoZWxwIjogIk1heGltdW0gc2l6ZSBvZiBjYWNoZWQgbWV0YWRhdGEgd2hlbiBjYWNoaW5nIHByb3hpZWQgcmVzb3VyY2VzLiIsICJpZCI6ICJwcm94eS1jYWNoZS1wYXRoLXpvbmUtc2l6ZSIsICJsYWJlbCI6ICJSZXZlcnNlIHByb3h5IGNhY2hlIHpvbmUgc2l6ZSIsICJyZWdleCI6ICJeXFxkK1trS21NZ0ddPyQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotNyIsICJwYXR0ZXJuIjogIl5cXGQrW2tLbU1nR10/JCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiUmV2ZXJzZSBwcm94eSBjYWNoZSB6b25lIHNpemUiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIxMG0iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJNYXhpbXVtIHNpemUgb2YgY2FjaGVkIG1ldGFkYXRhIHdoZW4gY2FjaGluZyBwcm94aWVkIHJlc291cmNlcy4ifV19LCAiUFJPWFlfQ0FDSEVfUEFUSF9QQVJBTVMiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAibWF4X3NpemU9MTAwbSIsICJoZWxwIjogIkFkZGl0aW9uYWwgcGFyYW1ldGVycyB0byBhZGQgdG8gdGhlIHByb3h5X2NhY2hlIGRpcmVjdGl2ZS4iLCAiaWQiOiAicHJveHktY2FjaGUtcGF0aC1wYXJhbXMiLCAibGFiZWwiOiAiUmV2ZXJzZSBwcm94eSBjYWNoZSBwYXJhbXMiLCAicmVnZXgiOiAiXi4qJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei02IiwgInBhdHRlcm4iOiAiXi4qJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiUmV2ZXJzZSBwcm94eSBjYWNoZSBwYXJhbXMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJtYXhfc2l6ZT0xMDBtIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiQWRkaXRpb25hbCBwYXJhbWV0ZXJzIHRvIGFkZCB0byB0aGUgcHJveHlfY2FjaGUgZGlyZWN0aXZlLiJ9XX0sICJQUk9YWV9DQUNIRV9NRVRIT0RTIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIkdFVCBIRUFEIiwgImhlbHAiOiAiSFRUUCBtZXRob2RzIHRoYXQgc2hvdWxkIHRyaWdnZXIgYSBjYWNoZSBvcGVyYXRpb24uIiwgImlkIjogInByb3h5LWNhY2hlLW1ldGhvZHMiLCAibGFiZWwiOiAiUmV2ZXJzZSBwcm94eSBjYWNoZSBtZXRob2RzIiwgInJlZ2V4IjogIl4oPyEgKSggPyhHRVR8SEVBRHxQT1NUfFBVVHxERUxFVEV8Q09OTkVDVHxPUFRJT05TfFRSQUNFfFBBVENIKSg/IS4qXFwyKSkrJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei01IiwgInBhdHRlcm4iOiAiXig/ISApKCA/KEdFVHxIRUFEfFBPU1R8UFVUfERFTEVURXxDT05ORUNUfE9QVElPTlN8VFJBQ0V8UEFUQ0gpKD8hLipcXDIpKSskIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJSZXZlcnNlIHByb3h5IGNhY2hlIG1ldGhvZHMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJHRVQgSEVBRCIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiSFRUUCBtZXRob2RzIHRoYXQgc2hvdWxkIHRyaWdnZXIgYSBjYWNoZSBvcGVyYXRpb24uIn1dfSwgIlBST1hZX0NBQ0hFX01JTl9VU0VTIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIjIiLCAiaGVscCI6ICJUaGUgbWluaW11bSBudW1iZXIgb2YgcmVxdWVzdHMgYmVmb3JlIGEgcmVzcG9uc2UgaXMgY2FjaGVkLiIsICJpZCI6ICJwcm94eS1jYWNoZS1taW4tdXNlcyIsICJsYWJlbCI6ICJSZXZlcnNlIHByb3h5IGNhY2hlIG1pbmltdW0gdXNlcyIsICJyZWdleCI6ICJeWzEtOV1cXGQqJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei00IiwgInBhdHRlcm4iOiAiXlsxLTldXFxkKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIlJldmVyc2UgcHJveHkgY2FjaGUgbWluaW11bSB1c2VzIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiMiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiVGhlIG1pbmltdW0gbnVtYmVyIG9mIHJlcXVlc3RzIGJlZm9yZSBhIHJlc3BvbnNlIGlzIGNhY2hlZC4ifV19LCAiUFJPWFlfQ0FDSEVfS0VZIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIiRzY2hlbWUkaG9zdCRyZXF1ZXN0X3VyaSIsICJoZWxwIjogIlRoZSBrZXkgdXNlZCB0byB1bmlxdWVseSBpZGVudGlmeSBhIGNhY2hlZCByZXNwb25zZS4iLCAiaWQiOiAicHJveHktY2FjaGUta2V5IiwgImxhYmVsIjogIlJldmVyc2UgcHJveHkgY2FjaGUga2V5IiwgInJlZ2V4IjogIl4oPyEgKSggPyhcXCRbYS16X10rKSg/IS4qXFwyKSkrJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0zIiwgInBhdHRlcm4iOiAiXig/ISApKCA/KFxcJFthLXpfXSspKD8hLipcXDIpKSskIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJSZXZlcnNlIHByb3h5IGNhY2hlIGtleSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiRzY2hlbWUkaG9zdCRyZXF1ZXN0X3VyaSIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiVGhlIGtleSB1c2VkIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IGEgY2FjaGVkIHJlc3BvbnNlLiJ9XX0sICJQUk9YWV9DQUNIRV9WQUxJRCI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIyMDA9MjRoIDMwMT0xaCAzMDI9MjRoIiwgImhlbHAiOiAiRGVmaW5lIHRoZSBjYWNoaW5nIHRpbWUgZGVwZW5kaW5nIG9uIHRoZSBIVFRQIHN0YXR1cyBjb2RlIChsaXN0IG9mIHN0YXR1cz10aW1lKSwgc2VwYXJhdGVkIHdpdGggc3BhY2VzLiIsICJpZCI6ICJwcm94eS1jYWNoZS12YWxpZCIsICJsYWJlbCI6ICJSZXZlcnNlIHByb3h5IGNhY2hlIHZhbGlkIiwgInJlZ2V4IjogIl4oPyEgKSggPyhbMS01XVxcZHsyfSkoPyEuKlxcMj0pPVxcZCsobXM/fFtzaGR3TXldKSkqJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0yIiwgInBhdHRlcm4iOiAiXig/ISApKCA/KFsxLTVdXFxkezJ9KSg/IS4qXFwyPSk9XFxkKyhtcz98W3NoZHdNeV0pKSokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJSZXZlcnNlIHByb3h5IGNhY2hlIHZhbGlkIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiMjAwPTI0aCAzMDE9MWggMzAyPTI0aCIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiRGVmaW5lIHRoZSBjYWNoaW5nIHRpbWUgZGVwZW5kaW5nIG9uIHRoZSBIVFRQIHN0YXR1cyBjb2RlIChsaXN0IG9mIHN0YXR1cz10aW1lKSwgc2VwYXJhdGVkIHdpdGggc3BhY2VzLiJ9XX0sICJQUk9YWV9OT19DQUNIRSI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIkaHR0cF9wcmFnbWEgJGh0dHBfYXV0aG9yaXphdGlvbiIsICJoZWxwIjogIkNvbmRpdGlvbnMgdG8gZGlzYWJsZSBjYWNoaW5nIG9mIHJlc3BvbnNlcy4iLCAiaWQiOiAicHJveHktbm8tY2FjaGUiLCAibGFiZWwiOiAiUmV2ZXJzZSBwcm94eSBubyBjYWNoZSIsICJyZWdleCI6ICJeLiokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTEiLCAicGF0dGVybiI6ICJeLiokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJSZXZlcnNlIHByb3h5IG5vIGNhY2hlIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiJGh0dHBfcHJhZ21hICRodHRwX2F1dGhvcml6YXRpb24iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkNvbmRpdGlvbnMgdG8gZGlzYWJsZSBjYWNoaW5nIG9mIHJlc3BvbnNlcy4ifV19LCAiUFJPWFlfQ0FDSEVfQllQQVNTIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIjAiLCAiaGVscCI6ICJDb25kaXRpb25zIHRvIGJ5cGFzcyBjYWNoaW5nIG9mIHJlc3BvbnNlcy4iLCAiaWQiOiAicHJveHktY2FjaGUtYnlwYXNzIiwgImxhYmVsIjogIlJldmVyc2UgcHJveHkgYnlwYXNzIiwgInJlZ2V4IjogIl4uKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMCIsICJwYXR0ZXJuIjogIl4uKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIlJldmVyc2UgcHJveHkgYnlwYXNzIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiMCIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiQ29uZGl0aW9ucyB0byBieXBhc3MgY2FjaGluZyBvZiByZXNwb25zZXMuIn1dfX0sICJjaGVja3N1bSI6IG51bGwsICJtdWx0aXBsZXMiOiB7InJldmVyc2UtcHJveHkiOiB7IlJFVkVSU0VfUFJPWFlfSE9TVCI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJGdWxsIFVSTCBvZiB0aGUgcHJveGllZCByZXNvdXJjZSAocHJveHlfcGFzcykuIiwgImlkIjogInJldmVyc2UtcHJveHktaG9zdCIsICJsYWJlbCI6ICJSZXZlcnNlIHByb3h5IGhvc3QiLCAicmVnZXgiOiAiXi4qJCIsICJ0eXBlIjogInRleHQiLCAibXVsdGlwbGUiOiAicmV2ZXJzZS1wcm94eSIsICJjb250YWluZXJDbGFzcyI6ICJ6LTIzIiwgInBhdHRlcm4iOiAiXi4qJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiUmV2ZXJzZSBwcm94eSBob3N0IiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJGdWxsIFVSTCBvZiB0aGUgcHJveGllZCByZXNvdXJjZSAocHJveHlfcGFzcykuIn1dfSwgIlJFVkVSU0VfUFJPWFlfVVJMIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIi8iLCAiaGVscCI6ICJMb2NhdGlvbiBVUkwgdGhhdCB3aWxsIGJlIHByb3hpZWQuIiwgImlkIjogInJldmVyc2UtcHJveHktdXJsIiwgImxhYmVsIjogIlJldmVyc2UgcHJveHkgdXJsIiwgInJlZ2V4IjogIl4uKiQiLCAidHlwZSI6ICJ0ZXh0IiwgIm11bHRpcGxlIjogInJldmVyc2UtcHJveHkiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0yMiIsICJwYXR0ZXJuIjogIl4uKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIlJldmVyc2UgcHJveHkgdXJsIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiLyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTG9jYXRpb24gVVJMIHRoYXQgd2lsbCBiZSBwcm94aWVkLiJ9XX0sICJSRVZFUlNFX1BST1hZX1dTIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIm5vIiwgImhlbHAiOiAiRW5hYmxlIHdlYnNvY2tldCBvbiB0aGUgcHJveGllZCByZXNvdXJjZS4iLCAiaWQiOiAicmV2ZXJzZS1wcm94eS13cyIsICJsYWJlbCI6ICJSZXZlcnNlIHByb3h5IFdTIiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJtdWx0aXBsZSI6ICJyZXZlcnNlLXByb3h5IiwgImNvbnRhaW5lckNsYXNzIjogInotMjEiLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJSZXZlcnNlIHByb3h5IFdTIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAibm8iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkVuYWJsZSB3ZWJzb2NrZXQgb24gdGhlIHByb3hpZWQgcmVzb3VyY2UuIn1dfSwgIlJFVkVSU0VfUFJPWFlfSEVBREVSUyI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJMaXN0IG9mIEhUVFAgaGVhZGVycyB0byBzZW5kIHRvIHByb3hpZWQgcmVzb3VyY2Ugc2VwYXJhdGVkIHdpdGggc2VtaWNvbG9ucyAodmFsdWVzIGZvciBwcm94eV9zZXRfaGVhZGVyIGRpcmVjdGl2ZSkuIiwgImlkIjogInJldmVyc2UtcHJveHktaGVhZGVycyIsICJsYWJlbCI6ICJSZXZlcnNlIHByb3h5IGhlYWRlcnMiLCAicmVnZXgiOiAiXig/IVs7IF0pKDs/ID8oW1xcd1xcLV0rKSg/IS4qXFwyICkgW147XSspKiQiLCAidHlwZSI6ICJ0ZXh0IiwgIm11bHRpcGxlIjogInJldmVyc2UtcHJveHkiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0yMCIsICJwYXR0ZXJuIjogIl4oPyFbOyBdKSg7PyA/KFtcXHdcXC1dKykoPyEuKlxcMiApIFteO10rKSokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJSZXZlcnNlIHByb3h5IGhlYWRlcnMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkxpc3Qgb2YgSFRUUCBoZWFkZXJzIHRvIHNlbmQgdG8gcHJveGllZCByZXNvdXJjZSBzZXBhcmF0ZWQgd2l0aCBzZW1pY29sb25zICh2YWx1ZXMgZm9yIHByb3h5X3NldF9oZWFkZXIgZGlyZWN0aXZlKS4ifV19LCAiUkVWRVJTRV9QUk9YWV9IRUFERVJTX0NMSUVOVCI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJMaXN0IG9mIEhUVFAgaGVhZGVycyB0byBzZW5kIHRvIGNsaWVudCBzZXBhcmF0ZWQgd2l0aCBzZW1pY29sb25zICh2YWx1ZXMgZm9yIGFkZF9oZWFkZXIgZGlyZWN0aXZlKS4iLCAiaWQiOiAicmV2ZXJzZS1wcm94eS1oZWFkZXJzLWNsaWVudCIsICJsYWJlbCI6ICJSZXZlcnNlIHByb3h5IGhlYWRlcnMtY2xpZW50IiwgInJlZ2V4IjogIl4oPyFbOyBdKSg7PyA/KFtcXHdcXC1dKykoPyEuKlxcMiApIFteO10rKSokIiwgInR5cGUiOiAidGV4dCIsICJtdWx0aXBsZSI6ICJyZXZlcnNlLXByb3h5IiwgImNvbnRhaW5lckNsYXNzIjogInotMTkiLCAicGF0dGVybiI6ICJeKD8hWzsgXSkoOz8gPyhbXFx3XFwtXSspKD8hLipcXDIgKSBbXjtdKykqJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiUmV2ZXJzZSBwcm94eSBoZWFkZXJzLWNsaWVudCIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTGlzdCBvZiBIVFRQIGhlYWRlcnMgdG8gc2VuZCB0byBjbGllbnQgc2VwYXJhdGVkIHdpdGggc2VtaWNvbG9ucyAodmFsdWVzIGZvciBhZGRfaGVhZGVyIGRpcmVjdGl2ZSkuIn1dfSwgIlJFVkVSU0VfUFJPWFlfQlVGRkVSSU5HIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogInllcyIsICJoZWxwIjogIkVuYWJsZSBvciBkaXNhYmxlIGJ1ZmZlcmluZyBvZiByZXNwb25zZXMgZnJvbSBwcm94aWVkIHJlc291cmNlLiIsICJpZCI6ICJyZXZlcnNlLXByb3h5LWJ1ZmZlcmluZyIsICJsYWJlbCI6ICJSZXZlcnNlIHByb3h5IGJ1ZmZlcmluZyIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAibXVsdGlwbGUiOiAicmV2ZXJzZS1wcm94eSIsICJjb250YWluZXJDbGFzcyI6ICJ6LTE4IiwgInBhdHRlcm4iOiAiXih5ZXN8bm8pJCIsICJpbnBUeXBlIjogImNoZWNrYm94IiwgIm5hbWUiOiAiUmV2ZXJzZSBwcm94eSBidWZmZXJpbmciLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJ5ZXMiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkVuYWJsZSBvciBkaXNhYmxlIGJ1ZmZlcmluZyBvZiByZXNwb25zZXMgZnJvbSBwcm94aWVkIHJlc291cmNlLiJ9XX0sICJSRVZFUlNFX1BST1hZX0tFRVBBTElWRSI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJubyIsICJoZWxwIjogIkVuYWJsZSBvciBkaXNhYmxlIGtlZXBhbGl2ZSBjb25uZWN0aW9ucyB3aXRoIHRoZSBwcm94aWVkIHJlc291cmNlLiIsICJpZCI6ICJyZXZlcnNlLXByb3h5LWtlZXBhbGl2ZSIsICJsYWJlbCI6ICJSZXZlcnNlIHByb3h5IGtlZXBhbGl2ZSIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAibXVsdGlwbGUiOiAicmV2ZXJzZS1wcm94eSIsICJjb250YWluZXJDbGFzcyI6ICJ6LTE3IiwgInBhdHRlcm4iOiAiXih5ZXN8bm8pJCIsICJpbnBUeXBlIjogImNoZWNrYm94IiwgIm5hbWUiOiAiUmV2ZXJzZSBwcm94eSBrZWVwYWxpdmUiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJubyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiRW5hYmxlIG9yIGRpc2FibGUga2VlcGFsaXZlIGNvbm5lY3Rpb25zIHdpdGggdGhlIHByb3hpZWQgcmVzb3VyY2UuIn1dfSwgIlJFVkVSU0VfUFJPWFlfQVVUSF9SRVFVRVNUIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIkVuYWJsZSBhdXRoZW50aWNhdGlvbiB1c2luZyBhbiBleHRlcm5hbCBwcm92aWRlciAodmFsdWUgb2YgYXV0aF9yZXF1ZXN0IGRpcmVjdGl2ZSkuIiwgImlkIjogInJldmVyc2UtcHJveHktYXV0aC1yZXF1ZXN0IiwgImxhYmVsIjogIlJldmVyc2UgcHJveHkgYXV0aCByZXF1ZXN0IiwgInJlZ2V4IjogIl4oXFwvW1xcd1xcXS5+OlxcLz8jXFxbQCEkXFwmJ1xcKFxcKSorLDs9XFwtXSp8b2ZmKT8kIiwgInR5cGUiOiAidGV4dCIsICJtdWx0aXBsZSI6ICJyZXZlcnNlLXByb3h5IiwgImNvbnRhaW5lckNsYXNzIjogInotMTYiLCAicGF0dGVybiI6ICJeKFxcL1tcXHdcXF0ufjpcXC8/I1xcW0AhJFxcJidcXChcXCkqKyw7PVxcLV0qfG9mZik/JCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiUmV2ZXJzZSBwcm94eSBhdXRoIHJlcXVlc3QiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkVuYWJsZSBhdXRoZW50aWNhdGlvbiB1c2luZyBhbiBleHRlcm5hbCBwcm92aWRlciAodmFsdWUgb2YgYXV0aF9yZXF1ZXN0IGRpcmVjdGl2ZSkuIn1dfSwgIlJFVkVSU0VfUFJPWFlfQVVUSF9SRVFVRVNUX1NJR05JTl9VUkwiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiUmVkaXJlY3QgY2xpZW50cyB0byBzaWduLWluIFVSTCB3aGVuIHVzaW5nIFJFVkVSU0VfUFJPWFlfQVVUSF9SRVFVRVNUICh1c2VkIHdoZW4gYXV0aF9yZXF1ZXN0IGNhbGwgcmV0dXJuZWQgNDAxKS4iLCAiaWQiOiAicmV2ZXJzZS1wcm94eS1hdXRoLXJlcXVlc3Qtc2lnbmluLXVybCIsICJsYWJlbCI6ICJBdXRoIHJlcXVlc3Qgc2lnbmluIFVSTCIsICJyZWdleCI6ICJeKGh0dHBzPzpcXC9cXC9bXFwtXFx3QDolLit+Iz1dK1tcXC1cXHdcXChcXCkhQDolKy5+Iz8mXFwvPSRdKik/JCIsICJ0eXBlIjogInRleHQiLCAibXVsdGlwbGUiOiAicmV2ZXJzZS1wcm94eSIsICJjb250YWluZXJDbGFzcyI6ICJ6LTE1IiwgInBhdHRlcm4iOiAiXihodHRwcz86XFwvXFwvW1xcLVxcd0A6JS4rfiM9XStbXFwtXFx3XFwoXFwpIUA6JSsufiM/JlxcLz0kXSopPyQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIkF1dGggcmVxdWVzdCBzaWduaW4gVVJMIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJSZWRpcmVjdCBjbGllbnRzIHRvIHNpZ24taW4gVVJMIHdoZW4gdXNpbmcgUkVWRVJTRV9QUk9YWV9BVVRIX1JFUVVFU1QgKHVzZWQgd2hlbiBhdXRoX3JlcXVlc3QgY2FsbCByZXR1cm5lZCA0MDEpLiJ9XX0sICJSRVZFUlNFX1BST1hZX0FVVEhfUkVRVUVTVF9TRVQiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiTGlzdCBvZiB2YXJpYWJsZXMgdG8gc2V0IGZyb20gdGhlIGF1dGhlbnRpY2F0aW9uIHByb3ZpZGVyLCBzZXBhcmF0ZWQgd2l0aCBzZW1pY29sb25zICh2YWx1ZXMgb2YgYXV0aF9yZXF1ZXN0X3NldCBkaXJlY3RpdmVzKS4iLCAiaWQiOiAicmV2ZXJzZS1wcm94eS1hdXRoLXJlcXVlc3Qtc2V0IiwgImxhYmVsIjogIlJldmVyc2UgcHJveHkgYXV0aCByZXF1ZXN0IHNldCIsICJyZWdleCI6ICJeKD8hIDspKDs/ID8oXFwkW2Etel9cXC1dKykoPyEuKlxcMiApIFteO10rKSokIiwgInR5cGUiOiAidGV4dCIsICJtdWx0aXBsZSI6ICJyZXZlcnNlLXByb3h5IiwgImNvbnRhaW5lckNsYXNzIjogInotMTQiLCAicGF0dGVybiI6ICJeKD8hIDspKDs/ID8oXFwkW2Etel9cXC1dKykoPyEuKlxcMiApIFteO10rKSokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJSZXZlcnNlIHByb3h5IGF1dGggcmVxdWVzdCBzZXQiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkxpc3Qgb2YgdmFyaWFibGVzIHRvIHNldCBmcm9tIHRoZSBhdXRoZW50aWNhdGlvbiBwcm92aWRlciwgc2VwYXJhdGVkIHdpdGggc2VtaWNvbG9ucyAodmFsdWVzIG9mIGF1dGhfcmVxdWVzdF9zZXQgZGlyZWN0aXZlcykuIn1dfSwgIlJFVkVSU0VfUFJPWFlfQ09OTkVDVF9USU1FT1VUIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIjYwcyIsICJoZWxwIjogIlRpbWVvdXQgd2hlbiBjb25uZWN0aW5nIHRvIHRoZSBwcm94aWVkIHJlc291cmNlLiIsICJpZCI6ICJyZXZlcnNlLXByb3h5LWNvbm5lY3QtdGltZW91dCIsICJsYWJlbCI6ICJSZXZlcnNlIHByb3h5IGNvbm5lY3QgdGltZW91dCIsICJyZWdleCI6ICJeXFxkKyhtcz98W3NoZHdNeV0pJCIsICJ0eXBlIjogInRleHQiLCAibXVsdGlwbGUiOiAicmV2ZXJzZS1wcm94eSIsICJjb250YWluZXJDbGFzcyI6ICJ6LTEzIiwgInBhdHRlcm4iOiAiXlxcZCsobXM/fFtzaGR3TXldKSQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIlJldmVyc2UgcHJveHkgY29ubmVjdCB0aW1lb3V0IiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiNjBzIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJUaW1lb3V0IHdoZW4gY29ubmVjdGluZyB0byB0aGUgcHJveGllZCByZXNvdXJjZS4ifV19LCAiUkVWRVJTRV9QUk9YWV9SRUFEX1RJTUVPVVQiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiNjBzIiwgImhlbHAiOiAiVGltZW91dCB3aGVuIHJlYWRpbmcgZnJvbSB0aGUgcHJveGllZCByZXNvdXJjZS4iLCAiaWQiOiAicmV2ZXJzZS1wcm94eS1yZWFkLXRpbWVvdXQiLCAibGFiZWwiOiAiUmV2ZXJzZSBwcm94eSByZWFkIHRpbWVvdXQiLCAicmVnZXgiOiAiXlxcZCsobXM/fFtzaGR3TXldKSQiLCAidHlwZSI6ICJ0ZXh0IiwgIm11bHRpcGxlIjogInJldmVyc2UtcHJveHkiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xMiIsICJwYXR0ZXJuIjogIl5cXGQrKG1zP3xbc2hkd015XSkkIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJSZXZlcnNlIHByb3h5IHJlYWQgdGltZW91dCIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIjYwcyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiVGltZW91dCB3aGVuIHJlYWRpbmcgZnJvbSB0aGUgcHJveGllZCByZXNvdXJjZS4ifV19LCAiUkVWRVJTRV9QUk9YWV9TRU5EX1RJTUVPVVQiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiNjBzIiwgImhlbHAiOiAiVGltZW91dCB3aGVuIHNlbmRpbmcgdG8gdGhlIHByb3hpZWQgcmVzb3VyY2UuIiwgImlkIjogInJldmVyc2UtcHJveHktc2VuZC10aW1lb3V0IiwgImxhYmVsIjogIlJldmVyc2UgcHJveHkgc2VuZCB0aW1lb3V0IiwgInJlZ2V4IjogIl5cXGQrKG1zP3xbc2hkd015XSkkIiwgInR5cGUiOiAidGV4dCIsICJtdWx0aXBsZSI6ICJyZXZlcnNlLXByb3h5IiwgImNvbnRhaW5lckNsYXNzIjogInotMTEiLCAicGF0dGVybiI6ICJeXFxkKyhtcz98W3NoZHdNeV0pJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiUmV2ZXJzZSBwcm94eSBzZW5kIHRpbWVvdXQiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICI2MHMiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlRpbWVvdXQgd2hlbiBzZW5kaW5nIHRvIHRoZSBwcm94aWVkIHJlc291cmNlLiJ9XX0sICJSRVZFUlNFX1BST1hZX0lOQ0xVREVTIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIkFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiB0byBpbmNsdWRlIGluIHRoZSBsb2NhdGlvbiBibG9jaywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLiIsICJpZCI6ICJyZXZlcnNlLXByb3h5LWluY2x1ZGVzIiwgImxhYmVsIjogIlJldmVyc2UgcHJveHkgaW5jbHVkZXMiLCAicmVnZXgiOiAiXig/ISApKCA/KFxcdyspKD8hLipcXGJcXDJcXGIpKSokIiwgInR5cGUiOiAidGV4dCIsICJtdWx0aXBsZSI6ICJyZXZlcnNlLXByb3h5IiwgImNvbnRhaW5lckNsYXNzIjogInotMTAiLCAicGF0dGVybiI6ICJeKD8hICkoID8oXFx3KykoPyEuKlxcYlxcMlxcYikpKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIlJldmVyc2UgcHJveHkgaW5jbHVkZXMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiB0byBpbmNsdWRlIGluIHRoZSBsb2NhdGlvbiBibG9jaywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLiJ9XX19fX0sIHsiaWQiOiAicmV2ZXJzZXNjYW4iLCAic3RyZWFtIjogInllcyIsICJuYW1lIjogIlJldmVyc2Ugc2NhbiIsICJkZXNjcmlwdGlvbiI6ICJTY2FuIGNsaWVudHMgcG9ydHMgdG8gZGV0ZWN0IHByb3hpZXMgb3Igc2VydmVycy4iLCAidmVyc2lvbiI6ICIxLjAiLCAidHlwZSI6ICJjb3JlIiwgIm1ldGhvZCI6ICJtYW51YWwiLCAicGFnZSI6IHRydWUsICJzZXR0aW5ncyI6IHsiVVNFX1JFVkVSU0VfU0NBTiI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJubyIsICJoZWxwIjogIkVuYWJsZSBzY2FubmluZyBvZiBjbGllbnRzIHBvcnRzIGFuZCBkZW55IGFjY2VzcyBpZiBvbmUgaXMgb3BlbmVkLiIsICJpZCI6ICJ1c2UtcmV2ZXJzZS1zY2FuIiwgImxhYmVsIjogIlJldmVyc2Ugc2NhbiIsICJyZWdleCI6ICJeKG5vfHllcykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei0yIiwgInBhdHRlcm4iOiAiXihub3x5ZXMpJCIsICJpbnBUeXBlIjogImNoZWNrYm94IiwgIm5hbWUiOiAiUmV2ZXJzZSBzY2FuIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAibm8iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkVuYWJsZSBzY2FubmluZyBvZiBjbGllbnRzIHBvcnRzIGFuZCBkZW55IGFjY2VzcyBpZiBvbmUgaXMgb3BlbmVkLiJ9XX0sICJSRVZFUlNFX1NDQU5fUE9SVFMiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiMjIgODAgNDQzIDMxMjggODAwMCA4MDgwIiwgImhlbHAiOiAiTGlzdCBvZiBwb3J0IHRvIHNjYW4gd2hlbiB1c2luZyByZXZlcnNlIHNjYW4gZmVhdHVyZS4iLCAiaWQiOiAicmV2ZXJzZS1zY2FuLXBvcnRzIiwgImxhYmVsIjogIlJldmVyc2Ugc2NhbiBwb3J0cyIsICJyZWdleCI6ICJeLiokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTEiLCAicGF0dGVybiI6ICJeLiokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJSZXZlcnNlIHNjYW4gcG9ydHMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIyMiA4MCA0NDMgMzEyOCA4MDAwIDgwODAiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkxpc3Qgb2YgcG9ydCB0byBzY2FuIHdoZW4gdXNpbmcgcmV2ZXJzZSBzY2FuIGZlYXR1cmUuIn1dfSwgIlJFVkVSU0VfU0NBTl9USU1FT1VUIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIjUwMCIsICJoZWxwIjogIlNwZWNpZnkgdGhlIG1heGltdW0gdGltZW91dCAoaW4gbXMpIHdoZW4gc2Nhbm5pbmcgYSBwb3J0LiIsICJpZCI6ICJyZXZlcnNlLXNjYW4tdGltZW91dCIsICJsYWJlbCI6ICJSZXZlcnNlIHNjYW4gdGltZW91dCIsICJyZWdleCI6ICJeLiokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTAiLCAicGF0dGVybiI6ICJeLiokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJSZXZlcnNlIHNjYW4gdGltZW91dCIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIjUwMCIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiU3BlY2lmeSB0aGUgbWF4aW11bSB0aW1lb3V0IChpbiBtcykgd2hlbiBzY2FubmluZyBhIHBvcnQuIn1dfX0sICJjaGVja3N1bSI6IG51bGwsICJtdWx0aXBsZXMiOiB7fX0sIHsiaWQiOiAic2VsZnNpZ25lZCIsICJzdHJlYW0iOiAieWVzIiwgIm5hbWUiOiAiU2VsZi1zaWduZWQgY2VydGlmaWNhdGUiLCAiZGVzY3JpcHRpb24iOiAiR2VuZXJhdGUgc2VsZi1zaWduZWQgY2VydGlmaWNhdGUuIiwgInZlcnNpb24iOiAiMS4wIiwgInR5cGUiOiAiY29yZSIsICJtZXRob2QiOiAibWFudWFsIiwgInBhZ2UiOiBmYWxzZSwgInNldHRpbmdzIjogeyJHRU5FUkFURV9TRUxGX1NJR05FRF9TU0wiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAibm8iLCAiaGVscCI6ICJHZW5lcmF0ZSBhbmQgdXNlIHNlbGYtc2lnbmVkIGNlcnRpZmljYXRlLiIsICJpZCI6ICJnZW5lcmF0ZS1zZWxmLXNpZ25lZC1zc2wiLCAibGFiZWwiOiAiQWN0aXZhdGUgc2VsZi1zaWduZWQgY2VydGlmaWNhdGUiLCAicmVnZXgiOiAiXih5ZXN8bm8pJCIsICJ0eXBlIjogImNoZWNrIiwgImNvbnRhaW5lckNsYXNzIjogInotMiIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIkFjdGl2YXRlIHNlbGYtc2lnbmVkIGNlcnRpZmljYXRlIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAibm8iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkdlbmVyYXRlIGFuZCB1c2Ugc2VsZi1zaWduZWQgY2VydGlmaWNhdGUuIn1dfSwgIlNFTEZfU0lHTkVEX1NTTF9FWFBJUlkiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiMzY1IiwgImhlbHAiOiAiU2VsZi1zaWduZWQgY2VydGlmaWNhdGUgZXhwaXJ5IGluIGRheXMuIiwgImlkIjogInNlbGYtc2lnbmVkLXNzbC1leHBpcnkiLCAibGFiZWwiOiAiQ2VydGlmaWNhdGUgZXhwaXJ5IiwgInJlZ2V4IjogIl5cXGQrJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xIiwgInBhdHRlcm4iOiAiXlxcZCskIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJDZXJ0aWZpY2F0ZSBleHBpcnkiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIzNjUiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlNlbGYtc2lnbmVkIGNlcnRpZmljYXRlIGV4cGlyeSBpbiBkYXlzLiJ9XX0sICJTRUxGX1NJR05FRF9TU0xfU1VCSiI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIvQ049d3d3LmV4YW1wbGUuY29tLyIsICJoZWxwIjogIlNlbGYtc2lnbmVkIGNlcnRpZmljYXRlIHN1YmplY3QuIiwgImlkIjogInNlbGYtc2lnbmVkLXNzbC1zdWJqIiwgImxhYmVsIjogIkNlcnRpZmljYXRlIHN1YmplY3QiLCAicmVnZXgiOiAiXi9DTj1bXixdKyQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMCIsICJwYXR0ZXJuIjogIl4vQ049W14sXSskIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJDZXJ0aWZpY2F0ZSBzdWJqZWN0IiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiL0NOPXd3dy5leGFtcGxlLmNvbS8iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlNlbGYtc2lnbmVkIGNlcnRpZmljYXRlIHN1YmplY3QuIn1dfX0sICJjaGVja3N1bSI6IG51bGwsICJtdWx0aXBsZXMiOiB7fX0sIHsiaWQiOiAic2Vzc2lvbnMiLCAic3RyZWFtIjogInllcyIsICJuYW1lIjogIlNlc3Npb25zIiwgImRlc2NyaXB0aW9uIjogIk1hbmFnZW1lbnQgb2Ygc2Vzc2lvbiB1c2VkIGJ5IG90aGVyIHBsdWdpbnMuIiwgInZlcnNpb24iOiAiMS4wIiwgInR5cGUiOiAiY29yZSIsICJtZXRob2QiOiAibWFudWFsIiwgInBhZ2UiOiBmYWxzZSwgInNldHRpbmdzIjogeyJTRVNTSU9OU19TRUNSRVQiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAicmFuZG9tIiwgImhlbHAiOiAiU2VjcmV0IHVzZWQgdG8gZW5jcnlwdCBzZXNzaW9ucyB2YXJpYWJsZXMgZm9yIHN0b3JpbmcgZGF0YSByZWxhdGVkIHRvIGNoYWxsZW5nZXMuIiwgImlkIjogInNlc3Npb24tc2VjcmV0IiwgImxhYmVsIjogIlNlc3Npb25zIHNlY3JldCIsICJyZWdleCI6ICJeXFx3KyQiLCAidHlwZSI6ICJwYXNzd29yZCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTYiLCAicGF0dGVybiI6ICJeXFx3KyQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIlNlc3Npb25zIHNlY3JldCIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogInJhbmRvbSIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlNlY3JldCB1c2VkIHRvIGVuY3J5cHQgc2Vzc2lvbnMgdmFyaWFibGVzIGZvciBzdG9yaW5nIGRhdGEgcmVsYXRlZCB0byBjaGFsbGVuZ2VzLiJ9XX0sICJTRVNTSU9OU19OQU1FIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogInJhbmRvbSIsICJoZWxwIjogIk5hbWUgb2YgdGhlIGNvb2tpZSBnaXZlbiB0byBjbGllbnRzLiIsICJpZCI6ICJzZXNzaW9ucy1uYW1lIiwgImxhYmVsIjogIlNlc3Npb25zIG5hbWUiLCAicmVnZXgiOiAiXlxcdyskIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTUiLCAicGF0dGVybiI6ICJeXFx3KyQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIlNlc3Npb25zIG5hbWUiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJyYW5kb20iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJOYW1lIG9mIHRoZSBjb29raWUgZ2l2ZW4gdG8gY2xpZW50cy4ifV19LCAiU0VTU0lPTlNfSURMSU5HX1RJTUVPVVQiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAiMTgwMCIsICJoZWxwIjogIk1heGltdW0gdGltZSAoaW4gc2Vjb25kcykgb2YgaW5hY3Rpdml0eSBiZWZvcmUgdGhlIHNlc3Npb24gaXMgaW52YWxpZGF0ZWQuIiwgImlkIjogInNlc3Npb25zLWlkbGluZy10aW1lb3V0IiwgImxhYmVsIjogIlNlc3Npb25zIGlkbGluZyB0aW1lb3V0IiwgInJlZ2V4IjogIl5cXGQrJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei00IiwgInBhdHRlcm4iOiAiXlxcZCskIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJTZXNzaW9ucyBpZGxpbmcgdGltZW91dCIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIjE4MDAiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJNYXhpbXVtIHRpbWUgKGluIHNlY29uZHMpIG9mIGluYWN0aXZpdHkgYmVmb3JlIHRoZSBzZXNzaW9uIGlzIGludmFsaWRhdGVkLiJ9XX0sICJTRVNTSU9OU19ST0xMSU5HX1RJTUVPVVQiOiB7ImNvbnRleHQiOiAiZ2xvYmFsIiwgImRlZmF1bHQiOiAiMzYwMCIsICJoZWxwIjogIk1heGltdW0gdGltZSAoaW4gc2Vjb25kcykgYmVmb3JlIGEgc2Vzc2lvbiBtdXN0IGJlIHJlbmV3ZWQuIiwgImlkIjogInNlc3Npb25zLXJvbGxpbmctdGltZW91dCIsICJsYWJlbCI6ICJTZXNzaW9ucyByb2xsaW5nIHRpbWVvdXQiLCAicmVnZXgiOiAiXlxcZCskIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTMiLCAicGF0dGVybiI6ICJeXFxkKyQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIlNlc3Npb25zIHJvbGxpbmcgdGltZW91dCIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIjM2MDAiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJNYXhpbXVtIHRpbWUgKGluIHNlY29uZHMpIGJlZm9yZSBhIHNlc3Npb24gbXVzdCBiZSByZW5ld2VkLiJ9XX0sICJTRVNTSU9OU19BQlNPTFVURV9USU1FT1VUIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIjg2NDAwIiwgImhlbHAiOiAiTWF4aW11bSB0aW1lIChpbiBzZWNvbmRzKSBiZWZvcmUgYSBzZXNzaW9uIGlzIGRlc3Ryb3llZC4iLCAiaWQiOiAic2Vzc2lvbnMtYWJzb2x1dGUtdGltZW91dCIsICJsYWJlbCI6ICJTZXNzaW9ucyBhYnNvbHV0ZSB0aW1lb3V0IiwgInJlZ2V4IjogIl5cXGQrJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0yIiwgInBhdHRlcm4iOiAiXlxcZCskIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJTZXNzaW9ucyBhYnNvbHV0ZSB0aW1lb3V0IiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiODY0MDAiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJNYXhpbXVtIHRpbWUgKGluIHNlY29uZHMpIGJlZm9yZSBhIHNlc3Npb24gaXMgZGVzdHJveWVkLiJ9XX0sICJTRVNTSU9OU19DSEVDS19JUCI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICJ5ZXMiLCAiaGVscCI6ICJEZXN0cm95IHNlc3Npb24gaWYgSVAgYWRkcmVzcyBpcyBkaWZmZXJlbnQgdGhhbiBvcmlnaW5hbCBvbmUuIiwgImlkIjogInNlc3Npb25zLWNoZWNrLWlwIiwgImxhYmVsIjogIlNlc3Npb25zIGNoZWNrIElQIiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJjb250YWluZXJDbGFzcyI6ICJ6LTEiLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJTZXNzaW9ucyBjaGVjayBJUCIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogInllcyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkRlc3Ryb3kgc2Vzc2lvbiBpZiBJUCBhZGRyZXNzIGlzIGRpZmZlcmVudCB0aGFuIG9yaWdpbmFsIG9uZS4ifV19LCAiU0VTU0lPTlNfQ0hFQ0tfVVNFUl9BR0VOVCI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICJ5ZXMiLCAiaGVscCI6ICJEZXN0cm95IHNlc3Npb24gaWYgVXNlci1BZ2VudCBpcyBkaWZmZXJlbnQgdGhhbiBvcmlnaW5hbCBvbmUuIiwgImlkIjogInNlc3Npb25zLXVzZXItYWdlbnQiLCAibGFiZWwiOiAiU2Vzc2lvbnMgY2hlY2sgVXNlci1BZ2VudCIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei0wIiwgInBhdHRlcm4iOiAiXih5ZXN8bm8pJCIsICJpbnBUeXBlIjogImNoZWNrYm94IiwgIm5hbWUiOiAiU2Vzc2lvbnMgY2hlY2sgVXNlci1BZ2VudCIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogInllcyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkRlc3Ryb3kgc2Vzc2lvbiBpZiBVc2VyLUFnZW50IGlzIGRpZmZlcmVudCB0aGFuIG9yaWdpbmFsIG9uZS4ifV19fSwgImNoZWNrc3VtIjogbnVsbCwgIm11bHRpcGxlcyI6IHt9fSwgeyJpZCI6ICJ1aSIsICJzdHJlYW0iOiAibm8iLCAibmFtZSI6ICJVSSIsICJkZXNjcmlwdGlvbiI6ICJJbnRlZ3JhdGUgZWFzaWx5IHRoZSBCdW5rZXJXZWIgVUkuIiwgInZlcnNpb24iOiAiMS4wIiwgInR5cGUiOiAiY29yZSIsICJtZXRob2QiOiAibWFudWFsIiwgInBhZ2UiOiBmYWxzZSwgInNldHRpbmdzIjogeyJVU0VfVUkiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAibm8iLCAiaGVscCI6ICJVc2UgVUkiLCAiaWQiOiAidXNlLXVpIiwgImxhYmVsIjogIlVzZSBVSSIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xIiwgInBhdHRlcm4iOiAiXih5ZXN8bm8pJCIsICJpbnBUeXBlIjogImNoZWNrYm94IiwgIm5hbWUiOiAiVXNlIFVJIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAieWVzIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJVc2UgVUkifV19LCAiVUlfSE9TVCI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJBZGRyZXNzIG9mIHRoZSB3ZWIgVUkgdXNlZCBmb3IgaW5pdGlhbCBzZXR1cCIsICJpZCI6ICJ1aS1ob3N0IiwgImxhYmVsIjogIlVJIGhvc3QiLCAicmVnZXgiOiAiXi4qJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0wIiwgInBhdHRlcm4iOiAiXi4qJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiVUkgaG9zdCIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkFkZHJlc3Mgb2YgdGhlIHdlYiBVSSB1c2VkIGZvciBpbml0aWFsIHNldHVwIn1dfX0sICJjaGVja3N1bSI6IG51bGwsICJtdWx0aXBsZXMiOiB7fX0sIHsiaWQiOiAid2hpdGVsaXN0IiwgInN0cmVhbSI6ICJwYXJ0aWFsIiwgIm5hbWUiOiAiV2hpdGVsaXN0IiwgImRlc2NyaXB0aW9uIjogIkFsbG93IGFjY2VzcyBiYXNlZCBvbiBpbnRlcm5hbCBhbmQgZXh0ZXJuYWwgSVAvbmV0d29yay9yRE5TL0FTTiB3aGl0ZWxpc3RzLiIsICJ2ZXJzaW9uIjogIjEuMCIsICJ0eXBlIjogImNvcmUiLCAibWV0aG9kIjogIm1hbnVhbCIsICJwYWdlIjogdHJ1ZSwgInNldHRpbmdzIjogeyJVU0VfV0hJVEVMSVNUIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogInllcyIsICJoZWxwIjogIkFjdGl2YXRlIHdoaXRlbGlzdCBmZWF0dXJlLiIsICJpZCI6ICJ1c2Utd2hpdGVsaXN0IiwgImxhYmVsIjogIkFjdGl2YXRlIHdoaXRlbGlzdGluZyIsICJyZWdleCI6ICJeKHllc3xubykkIiwgInR5cGUiOiAiY2hlY2siLCAiY29udGFpbmVyQ2xhc3MiOiAiei0xMSIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIkFjdGl2YXRlIHdoaXRlbGlzdGluZyIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogInllcyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiQWN0aXZhdGUgd2hpdGVsaXN0IGZlYXR1cmUuIn1dfSwgIldISVRFTElTVF9JUCI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIyMC4xOTEuNDUuMjEyIDQwLjg4LjIxLjIzNSA0MC43Ni4xNzMuMTUxIDQwLjc2LjE2My43IDIwLjE4NS43OS40NyA1Mi4xNDIuMjYuMTc1IDIwLjE4NS43OS4xNSA1Mi4xNDIuMjQuMTQ5IDQwLjc2LjE2Mi4yMDggNDAuNzYuMTYzLjIzIDQwLjc2LjE2Mi4xOTEgNDAuNzYuMTYyLjI0NyIsICJoZWxwIjogIkxpc3Qgb2YgSVAvbmV0d29yaywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCB0byBwdXQgaW50byB0aGUgd2hpdGVsaXN0LiIsICJpZCI6ICJ3aGl0ZWxpc3QtaXAiLCAibGFiZWwiOiAiV2hpdGVsaXN0IElQL25ldHdvcmsiLCAicmVnZXgiOiAiXig/ISApKCAqKCgoXFxiMjVbMC01XXxcXGIyWzAtNF1cXGR8XFxiWzAxXT9cXGRcXGQ/KShcXC4oMjVbMC01XXwyWzAtNF1cXGR8WzAxXT9cXGRcXGQ/KSl7M30pKFxcLyhbMS0yXVswLTldP3wzWzAtMl0/fFswNC05XSkpP3woKFswLTlhLWZBLUZdezEsNH06KXs3fVswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDd9OnwoWzAtOWEtZkEtRl17MSw0fTopezEsNn06WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsNX0oOlswLTlhLWZBLUZdezEsNH0pezEsMn18KFswLTlhLWZBLUZdezEsNH06KXsxLDR9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDN9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwzfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsMn0oOlswLTlhLWZBLUZdezEsNH0pezEsNX18WzAtOWEtZkEtRl17MSw0fTooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDZ9KXw6KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw3fXw6KXxmZTgwOig6WzAtOWEtZkEtRl1aezAsNH0pezAsNH0lWzAtOWEtekEtWl0rfDo6KGZmZmYoOjB7MSw0fSk/Oik/KCgyNVswLTVdfCgyWzAtNF18MT9cXGQpP1xcZClcXC4pezN9KDI1WzAtNV18KDJbMC00XXwxP1xcZCk/XFxkKXwoWzAtOWEtZkEtRl17MSw0fTopezEsNH06KCgyNVswLTVdfCgyWzAtNF18MT9cXGQpP1xcZClcXC4pezN9KDI1WzAtNV18KDJbMC00XXwxP1xcZCk/XFxkKSkoXFwvKDEyWzAtOF18MVswMV1bMC05XXxbMC05XVswLTldPykpPykoPyEuKlxcRFxcMihbXlxcZFxcL118JCkpICopKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMTAiLCAicGF0dGVybiI6ICJeKD8hICkoICooKChcXGIyNVswLTVdfFxcYjJbMC00XVxcZHxcXGJbMDFdP1xcZFxcZD8pKFxcLigyNVswLTVdfDJbMC00XVxcZHxbMDFdP1xcZFxcZD8pKXszfSkoXFwvKFsxLTJdWzAtOV0/fDNbMC0yXT98WzA0LTldKSk/fCgoWzAtOWEtZkEtRl17MSw0fTopezd9WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsN306fChbMC05YS1mQS1GXXsxLDR9Oil7MSw2fTpbMC05YS1mQS1GXXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw1fSg6WzAtOWEtZkEtRl17MSw0fSl7MSwyfXwoWzAtOWEtZkEtRl17MSw0fTopezEsNH0oOlswLTlhLWZBLUZdezEsNH0pezEsM318KFswLTlhLWZBLUZdezEsNH06KXsxLDN9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwyfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw1fXxbMC05YS1mQS1GXXsxLDR9OigoOlswLTlhLWZBLUZdezEsNH0pezEsNn0pfDooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDd9fDopfGZlODA6KDpbMC05YS1mQS1GXVp7MCw0fSl7MCw0fSVbMC05YS16QS1aXSt8OjooZmZmZig6MHsxLDR9KT86KT8oKDI1WzAtNV18KDJbMC00XXwxP1xcZCk/XFxkKVxcLil7M30oMjVbMC01XXwoMlswLTRdfDE/XFxkKT9cXGQpfChbMC05YS1mQS1GXXsxLDR9Oil7MSw0fTooKDI1WzAtNV18KDJbMC00XXwxP1xcZCk/XFxkKVxcLil7M30oMjVbMC01XXwoMlswLTRdfDE/XFxkKT9cXGQpKShcXC8oMTJbMC04XXwxWzAxXVswLTldfFswLTldWzAtOV0/KSk/KSg/IS4qXFxEXFwyKFteXFxkXFwvXXwkKSkgKikqJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiV2hpdGVsaXN0IElQL25ldHdvcmsiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIyMC4xOTEuNDUuMjEyIDQwLjg4LjIxLjIzNSA0MC43Ni4xNzMuMTUxIDQwLjc2LjE2My43IDIwLjE4NS43OS40NyA1Mi4xNDIuMjYuMTc1IDIwLjE4NS43OS4xNSA1Mi4xNDIuMjQuMTQ5IDQwLjc2LjE2Mi4yMDggNDAuNzYuMTYzLjIzIDQwLjc2LjE2Mi4xOTEgNDAuNzYuMTYyLjI0NyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTGlzdCBvZiBJUC9uZXR3b3JrLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIHRvIHB1dCBpbnRvIHRoZSB3aGl0ZWxpc3QuIn1dfSwgIldISVRFTElTVF9SRE5TIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIi5nb29nbGUuY29tIC5nb29nbGVib3QuY29tIC55YW5kZXgucnUgLnlhbmRleC5uZXQgLnlhbmRleC5jb20gLnNlYXJjaC5tc24uY29tIC5iYWlkdS5jb20gLmJhaWR1LmpwIC5jcmF3bC55YWhvby5uZXQgLmZ3ZC5saW5rZWRpbi5jb20gLnR3aXR0ZXIuY29tIC50d3R0ci5jb20gLmRpc2NvcmQuY29tIiwgImhlbHAiOiAiTGlzdCBvZiByZXZlcnNlIEROUyBzdWZmaXhlcywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCB0byB3aGl0ZWxpc3QuIiwgImlkIjogIndoaXRlbGlzdC1yZG5zIiwgImxhYmVsIjogIldoaXRlbGlzdCByZXZlcnNlIEROUyIsICJyZWdleCI6ICJeKCAqKChbXiBdKykoPyEuKlxcMyggfCQpKSkgKikqJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei05IiwgInBhdHRlcm4iOiAiXiggKigoW14gXSspKD8hLipcXDMoIHwkKSkpICopKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIldoaXRlbGlzdCByZXZlcnNlIEROUyIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIi5nb29nbGUuY29tIC5nb29nbGVib3QuY29tIC55YW5kZXgucnUgLnlhbmRleC5uZXQgLnlhbmRleC5jb20gLnNlYXJjaC5tc24uY29tIC5iYWlkdS5jb20gLmJhaWR1LmpwIC5jcmF3bC55YWhvby5uZXQgLmZ3ZC5saW5rZWRpbi5jb20gLnR3aXR0ZXIuY29tIC50d3R0ci5jb20gLmRpc2NvcmQuY29tIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIHJldmVyc2UgRE5TIHN1ZmZpeGVzLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIHRvIHdoaXRlbGlzdC4ifV19LCAiV0hJVEVMSVNUX1JETlNfR0xPQkFMIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogInllcyIsICJoZWxwIjogIk9ubHkgcGVyZm9ybSBSRE5TIHdoaXRlbGlzdCBjaGVja3Mgb24gZ2xvYmFsIElQIGFkZHJlc3Nlcy4iLCAiaWQiOiAid2hpdGVsaXN0LXJkbnMtZ2xvYmFsIiwgImxhYmVsIjogIldoaXRlbGlzdCByZXZlcnNlIEROUyBnbG9iYWwgSVBzIiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJjb250YWluZXJDbGFzcyI6ICJ6LTgiLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJXaGl0ZWxpc3QgcmV2ZXJzZSBETlMgZ2xvYmFsIElQcyIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogInllcyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiT25seSBwZXJmb3JtIFJETlMgd2hpdGVsaXN0IGNoZWNrcyBvbiBnbG9iYWwgSVAgYWRkcmVzc2VzLiJ9XX0sICJXSElURUxJU1RfQVNOIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIjMyOTM0IiwgImhlbHAiOiAiTGlzdCBvZiBBU04gbnVtYmVycywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCB0byB3aGl0ZWxpc3QuIiwgImlkIjogIndoaXRlbGlzdC1hc24iLCAibGFiZWwiOiAiV2hpdGVsaXN0IEFTTiIsICJyZWdleCI6ICJeXiggKigoQVNOPyk/KFxcZCspXFxiKD8hLipbU04gXVxcNFxcYikpICopKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotNyIsICJwYXR0ZXJuIjogIl5eKCAqKChBU04/KT8oXFxkKylcXGIoPyEuKltTTiBdXFw0XFxiKSkgKikqJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiV2hpdGVsaXN0IEFTTiIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIjMyOTM0IiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIEFTTiBudW1iZXJzLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIHRvIHdoaXRlbGlzdC4ifV19LCAiV0hJVEVMSVNUX1VTRVJfQUdFTlQiOiB7ImNvbnRleHQiOiAibXVsdGlzaXRlIiwgImRlZmF1bHQiOiAiIiwgImhlbHAiOiAiTGlzdCBvZiBVc2VyLUFnZW50IChQQ1JFIHJlZ2V4KSwgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCB0byB3aGl0ZWxpc3QuIiwgImlkIjogIndoaXRlbGlzdC11c2VyLWFnZW50IiwgImxhYmVsIjogIldoaXRlbGlzdCBVc2VyLUFnZW50IiwgInJlZ2V4IjogIl4uKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotNiIsICJwYXR0ZXJuIjogIl4uKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIldoaXRlbGlzdCBVc2VyLUFnZW50IiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZGlzayIsICJ0ZXh0IjogImlucF9wb3BvdmVyX211bHRpc2l0ZSJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIFVzZXItQWdlbnQgKFBDUkUgcmVnZXgpLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIHRvIHdoaXRlbGlzdC4ifV19LCAiV0hJVEVMSVNUX1VSSSI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJMaXN0IG9mIFVSSSAoUENSRSByZWdleCksIHNlcGFyYXRlZCB3aXRoIHNwYWNlcywgdG8gd2hpdGVsaXN0LiIsICJpZCI6ICJ3aGl0ZWxpc3QtdXJpIiwgImxhYmVsIjogIldoaXRlbGlzdCBVUkkiLCAicmVnZXgiOiAiXiggKiguKikoPyEuKlxcMig/IS4pKSAqKSokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTUiLCAicGF0dGVybiI6ICJeKCAqKC4qKSg/IS4qXFwyKD8hLikpICopKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIldoaXRlbGlzdCBVUkkiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkxpc3Qgb2YgVVJJIChQQ1JFIHJlZ2V4KSwgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCB0byB3aGl0ZWxpc3QuIn1dfSwgIldISVRFTElTVF9JUF9VUkxTIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIkxpc3Qgb2YgVVJMcywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCBjb250YWluaW5nIGdvb2QgSVAvbmV0d29yayB0byB3aGl0ZWxpc3QuIiwgImlkIjogIndoaXRlbGlzdC1pcC11cmxzIiwgImxhYmVsIjogIldoaXRlbGlzdCBJUC9uZXR3b3JrIFVSTHMiLCAicmVnZXgiOiAiXiggKigoaHR0cHM/OlxcL1xcL3xmaWxlOlxcL1xcL1xcLylbXFwtXFx3QDolLit+Iz1dK1tcXC1cXHdcXChcXCkhQDolKy5+Iz8mXFwvPSRdKikoPyEuKlxcMig/IS4pKSAqKSokIiwgInR5cGUiOiAidGV4dCIsICJjb250YWluZXJDbGFzcyI6ICJ6LTQiLCAicGF0dGVybiI6ICJeKCAqKChodHRwcz86XFwvXFwvfGZpbGU6XFwvXFwvXFwvKVtcXC1cXHdAOiUuK34jPV0rW1xcLVxcd1xcKFxcKSFAOiUrLn4jPyZcXC89JF0qKSg/IS4qXFwyKD8hLikpICopKiQiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJuYW1lIjogIldoaXRlbGlzdCBJUC9uZXR3b3JrIFVSTHMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIFVSTHMsIHNlcGFyYXRlZCB3aXRoIHNwYWNlcywgY29udGFpbmluZyBnb29kIElQL25ldHdvcmsgdG8gd2hpdGVsaXN0LiJ9XX0sICJXSElURUxJU1RfUkROU19VUkxTIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIkxpc3Qgb2YgVVJMcywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCBjb250YWluaW5nIHJldmVyc2UgRE5TIHN1ZmZpeGVzIHRvIHdoaXRlbGlzdC4iLCAiaWQiOiAid2hpdGVsaXN0LXJkbnMtdXJscyIsICJsYWJlbCI6ICJXaGl0ZWxpc3QgcmV2ZXJzZSBETlMgVVJMcyIsICJyZWdleCI6ICJeKCAqKChodHRwcz86XFwvXFwvfGZpbGU6XFwvXFwvXFwvKVtcXC1cXHdAOiUuK34jPV0rW1xcLVxcd1xcKFxcKSFAOiUrLn4jPyZcXC89JF0qKSg/IS4qXFwyKD8hLikpICopKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMyIsICJwYXR0ZXJuIjogIl4oICooKGh0dHBzPzpcXC9cXC98ZmlsZTpcXC9cXC9cXC8pW1xcLVxcd0A6JS4rfiM9XStbXFwtXFx3XFwoXFwpIUA6JSsufiM/JlxcLz0kXSopKD8hLipcXDIoPyEuKSkgKikqJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiV2hpdGVsaXN0IHJldmVyc2UgRE5TIFVSTHMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIFVSTHMsIHNlcGFyYXRlZCB3aXRoIHNwYWNlcywgY29udGFpbmluZyByZXZlcnNlIEROUyBzdWZmaXhlcyB0byB3aGl0ZWxpc3QuIn1dfSwgIldISVRFTElTVF9BU05fVVJMUyI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJMaXN0IG9mIFVSTHMsIHNlcGFyYXRlZCB3aXRoIHNwYWNlcywgY29udGFpbmluZyBBU04gdG8gd2hpdGVsaXN0LiIsICJpZCI6ICJ3aGl0ZWxpc3QtYXNuLXVybHMiLCAibGFiZWwiOiAiV2hpdGVsaXN0IEFTTiBVUkxzIiwgInJlZ2V4IjogIl4oICooKGh0dHBzPzpcXC9cXC98ZmlsZTpcXC9cXC9cXC8pW1xcLVxcd0A6JS4rfiM9XStbXFwtXFx3XFwoXFwpIUA6JSsufiM/JlxcLz0kXSopKD8hLipcXDIoPyEuKSkgKikqJCIsICJ0eXBlIjogInRleHQiLCAiY29udGFpbmVyQ2xhc3MiOiAiei0yIiwgInBhdHRlcm4iOiAiXiggKigoaHR0cHM/OlxcL1xcL3xmaWxlOlxcL1xcL1xcLylbXFwtXFx3QDolLit+Iz1dK1tcXC1cXHdcXChcXCkhQDolKy5+Iz8mXFwvPSRdKikoPyEuKlxcMig/IS4pKSAqKSokIiwgImlucFR5cGUiOiAiaW5wdXQiLCAibmFtZSI6ICJXaGl0ZWxpc3QgQVNOIFVSTHMiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICIiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJnbG9iZSIsICJ0ZXh0IjogImlucF9wb3BvdmVyX2dsb2JhbCJ9LCB7Imljb25OYW1lIjogImluZm8iLCAidGV4dCI6ICJMaXN0IG9mIFVSTHMsIHNlcGFyYXRlZCB3aXRoIHNwYWNlcywgY29udGFpbmluZyBBU04gdG8gd2hpdGVsaXN0LiJ9XX0sICJXSElURUxJU1RfVVNFUl9BR0VOVF9VUkxTIjogeyJjb250ZXh0IjogImdsb2JhbCIsICJkZWZhdWx0IjogIiIsICJoZWxwIjogIkxpc3Qgb2YgVVJMcywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCBjb250YWluaW5nIGdvb2QgVXNlci1BZ2VudCB0byB3aGl0ZWxpc3QuIiwgImlkIjogIndoaXRlbGlzdC11c2VyLWFnZW50LXVybHMiLCAibGFiZWwiOiAiV2hpdGVsaXN0IFVzZXItQWdlbnQgVVJMcyIsICJyZWdleCI6ICJeKCAqKChodHRwcz86XFwvXFwvfGZpbGU6XFwvXFwvXFwvKVtcXC1cXHdAOiUuK34jPV0rW1xcLVxcd1xcKFxcKSFAOiUrLn4jPyZcXC89JF0qKSg/IS4qXFwyKD8hLikpICopKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMSIsICJwYXR0ZXJuIjogIl4oICooKGh0dHBzPzpcXC9cXC98ZmlsZTpcXC9cXC9cXC8pW1xcLVxcd0A6JS4rfiM9XStbXFwtXFx3XFwoXFwpIUA6JSsufiM/JlxcLz0kXSopKD8hLipcXDIoPyEuKSkgKikqJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiV2hpdGVsaXN0IFVzZXItQWdlbnQgVVJMcyIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogIiIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImdsb2JlIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfZ2xvYmFsIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIkxpc3Qgb2YgVVJMcywgc2VwYXJhdGVkIHdpdGggc3BhY2VzLCBjb250YWluaW5nIGdvb2QgVXNlci1BZ2VudCB0byB3aGl0ZWxpc3QuIn1dfSwgIldISVRFTElTVF9VUklfVVJMUyI6IHsiY29udGV4dCI6ICJnbG9iYWwiLCAiZGVmYXVsdCI6ICIiLCAiaGVscCI6ICJMaXN0IG9mIFVSTHMsIHNlcGFyYXRlZCB3aXRoIHNwYWNlcywgY29udGFpbmluZyBiYWQgVVJJIHRvIHdoaXRlbGlzdC4iLCAiaWQiOiAid2hpdGVsaXN0LXVyaS11cmxzIiwgImxhYmVsIjogIldoaXRlbGlzdCBVUkkgVVJMcyIsICJyZWdleCI6ICJeKCAqKChodHRwcz86XFwvXFwvfGZpbGU6XFwvXFwvXFwvKVtcXC1cXHdAOiUuK34jPV0rW1xcLVxcd1xcKFxcKSFAOiUrLn4jPyZcXC89JF0qKSg/IS4qXFwyKD8hLikpICopKiQiLCAidHlwZSI6ICJ0ZXh0IiwgImNvbnRhaW5lckNsYXNzIjogInotMCIsICJwYXR0ZXJuIjogIl4oICooKGh0dHBzPzpcXC9cXC98ZmlsZTpcXC9cXC9cXC8pW1xcLVxcd0A6JS4rfiM9XStbXFwtXFx3XFwoXFwpIUA6JSsufiM/JlxcLz0kXSopKD8hLipcXDIoPyEuKSkgKikqJCIsICJpbnBUeXBlIjogImlucHV0IiwgIm5hbWUiOiAiV2hpdGVsaXN0IFVSSSBVUkxzIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IGZhbHNlLCAidmFsdWUiOiAiIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiZ2xvYmUiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9nbG9iYWwifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiTGlzdCBvZiBVUkxzLCBzZXBhcmF0ZWQgd2l0aCBzcGFjZXMsIGNvbnRhaW5pbmcgYmFkIFVSSSB0byB3aGl0ZWxpc3QuIn1dfX0sICJjaGVja3N1bSI6IG51bGwsICJtdWx0aXBsZXMiOiB7fX1dfSwgImVhc3kiOiB7ImRlZmF1bHQiOiBbeyJ0aXRsZSI6ICJUaXRsZSAxIiwgInN1YnRpdGxlIjogInN1YnRpdGxlIDEiLCAic2V0dGluZ3MiOiB7IlVTRV9VSSI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJubyIsICJoZWxwIjogIlVzZSBVSSIsICJpZCI6ICJ1c2UtdWkiLCAibGFiZWwiOiAiVXNlIFVJIiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJjb250YWluZXJDbGFzcyI6ICJ6LTEiLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJVc2UgVUkiLCAiY29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgImRpc2FibGVkIjogZmFsc2UsICJ2YWx1ZSI6ICJ5ZXMiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlVzZSBVSSJ9XX0sICJVU0VfQ09SUyI6IHsiY29udGV4dCI6ICJtdWx0aXNpdGUiLCAiZGVmYXVsdCI6ICJubyIsICJoZWxwIjogIlVzZSBDT1JTIiwgImlkIjogInVzZS1jb3JzIiwgImxhYmVsIjogIlVzZSBDT1JTIiwgInJlZ2V4IjogIl4oeWVzfG5vKSQiLCAidHlwZSI6ICJjaGVjayIsICJjb250YWluZXJDbGFzcyI6ICJ6LTAiLCAicGF0dGVybiI6ICJeKHllc3xubykkIiwgImlucFR5cGUiOiAiY2hlY2tib3giLCAibmFtZSI6ICJVc2UgQ09SUyIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiB0cnVlLCAidmFsdWUiOiAieWVzIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAidHJlc3Bhc3MiLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tZXRob2RfZGlzYWJsZWQifSwgeyJpY29uTmFtZSI6ICJkaXNrIiwgInRleHQiOiAiaW5wX3BvcG92ZXJfbXVsdGlzaXRlIn0sIHsiaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogIlVzZSBDT1JTIn1dfX19LCB7InRpdGxlIjogIlRpdGxlIDIiLCAic3VidGl0bGUiOiAic3VidGl0bGUgMiIsICJzZXR0aW5ncyI6IHsiVVNFX1VJIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIm5vIiwgImhlbHAiOiAiVXNlIFVJIiwgImlkIjogInVzZS11aSIsICJsYWJlbCI6ICJVc2UgVUkiLCAicmVnZXgiOiAiXih5ZXN8bm8pJCIsICJ0eXBlIjogImNoZWNrIiwgImNvbnRhaW5lckNsYXNzIjogInotMSIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIlVzZSBVSSIsICJjb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAiZGlzYWJsZWQiOiBmYWxzZSwgInZhbHVlIjogInllcyIsICJwb3BvdmVycyI6IFt7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiVXNlIFVJIn1dfSwgIlVTRV9DT1JTIjogeyJjb250ZXh0IjogIm11bHRpc2l0ZSIsICJkZWZhdWx0IjogIm5vIiwgImhlbHAiOiAiVXNlIENPUlMiLCAiaWQiOiAidXNlLWNvcnMiLCAibGFiZWwiOiAiVXNlIENPUlMiLCAicmVnZXgiOiAiXih5ZXN8bm8pJCIsICJ0eXBlIjogImNoZWNrIiwgImNvbnRhaW5lckNsYXNzIjogInotMCIsICJwYXR0ZXJuIjogIl4oeWVzfG5vKSQiLCAiaW5wVHlwZSI6ICJjaGVja2JveCIsICJuYW1lIjogIlVzZSBDT1JTIiwgImNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJkaXNhYmxlZCI6IHRydWUsICJ2YWx1ZSI6ICJ5ZXMiLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJ0cmVzcGFzcyIsICJ0ZXh0IjogImlucF9wb3BvdmVyX21ldGhvZF9kaXNhYmxlZCJ9LCB7Imljb25OYW1lIjogImRpc2siLCAidGV4dCI6ICJpbnBfcG9wb3Zlcl9tdWx0aXNpdGUifSwgeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAiVXNlIENPUlMifV19fX1dfSwgInJhdyI6IHsiZGVmYXVsdCI6IHsiVVNFX0daSVAiOiAiZHNmcmdyZGdyZGdyZGhnZCIsICJVU0VfVUkiOiAieWVzIn19fX19XX1d \ No newline at end of file diff --git a/src/client/tests/home.json b/src/client/tests/home.json new file mode 100644 index 000000000..266b882ef --- /dev/null +++ b/src/client/tests/home.json @@ -0,0 +1,107 @@ +[ + { + "type": "card", + "link": "https://panel.bunkerweb.io/?utm_campaign=self&utm_source=ui#pro", + "containerColumns": { + "pc": 4, + "tablet": 6, + "mobile": 12 + }, + "widgets": [ + { + "type": "Stat", + "data": { + "title": "home_version", + "subtitle": "home_upgrade_to_pro", + "subtitleColor": "warning", + "stat": "home_free", + "iconName": "key" + } + } + ] + }, + { + "type": "card", + "link": "https://github.com/bunkerity/bunkerweb", + "containerColumns": { + "pc": 4, + "tablet": 6, + "mobile": 12 + }, + "widgets": [ + { + "type": "Stat", + "data": { + "title": "home_version_number", + "subtitle": "home_update_available", + "subtitleColor": "warning", + "stat": "1.5.8", + "iconName": "wire" + } + } + ] + }, + { + "type": "card", + "link": "/instances", + "containerColumns": { + "pc": 4, + "tablet": 6, + "mobile": 12 + }, + "widgets": [ + { + "type": "Stat", + "data": { + "title": "home_instances", + "subtitle": "home_total_number", + "subtitleColor": "info", + "stat": 1, + "iconName": "box" + } + } + ] + }, + { + "type": "card", + "link": "/services", + "containerColumns": { + "pc": 4, + "tablet": 6, + "mobile": 12 + }, + "widgets": [ + { + "type": "Stat", + "data": { + "title": "home_services", + "subtitle": "home_all_methods_included", + "subtitleColor": "info", + "stat": 2, + "iconName": "disk" + } + } + ] + }, + { + "type": "card", + "link": "/plugins", + "containerColumns": { + "pc": 4, + "tablet": 6, + "mobile": 12 + }, + "widgets": [ + { + "type": "Stat", + "data": { + "title": "home_plugins", + "subtitle": "home_no_error", + "subtitleColor": "success", + "stat": "42", + "iconName": "puzzle" + } + } + ] + } +] \ No newline at end of file diff --git a/src/client/tests/home.py b/src/client/tests/home.py index 7831594a1..4d09c1611 100644 --- a/src/client/tests/home.py +++ b/src/client/tests/home.py @@ -1,4 +1,5 @@ import json +import base64 home = [ { @@ -91,3 +92,8 @@ # store on a file with open("home.json", "w") as f: json.dump(home, f, indent=4) +output_base64_bytes = base64.b64encode(bytes(json.dumps(home), "utf-8")) +output_base64_string = output_base64_bytes.decode("ascii") + +with open("home.txt", "w") as f: + f.write(output_base64_string) diff --git a/src/client/tests/home.txt b/src/client/tests/home.txt new file mode 100644 index 000000000..f53639051 --- /dev/null +++ b/src/client/tests/home.txt @@ -0,0 +1 @@ +W3sidHlwZSI6ICJjYXJkIiwgImxpbmsiOiAiaHR0cHM6Ly9wYW5lbC5idW5rZXJ3ZWIuaW8vP3V0bV9jYW1wYWlnbj1zZWxmJnV0bV9zb3VyY2U9dWkjcHJvIiwgImNvbnRhaW5lckNvbHVtbnMiOiB7InBjIjogNCwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJ3aWRnZXRzIjogW3sidHlwZSI6ICJTdGF0IiwgImRhdGEiOiB7InRpdGxlIjogImhvbWVfdmVyc2lvbiIsICJzdWJ0aXRsZSI6ICJob21lX3VwZ3JhZGVfdG9fcHJvIiwgInN1YnRpdGxlQ29sb3IiOiAid2FybmluZyIsICJzdGF0IjogImhvbWVfZnJlZSIsICJpY29uTmFtZSI6ICJrZXkifX1dfSwgeyJ0eXBlIjogImNhcmQiLCAibGluayI6ICJodHRwczovL2dpdGh1Yi5jb20vYnVua2VyaXR5L2J1bmtlcndlYiIsICJjb250YWluZXJDb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAid2lkZ2V0cyI6IFt7InR5cGUiOiAiU3RhdCIsICJkYXRhIjogeyJ0aXRsZSI6ICJob21lX3ZlcnNpb25fbnVtYmVyIiwgInN1YnRpdGxlIjogImhvbWVfdXBkYXRlX2F2YWlsYWJsZSIsICJzdWJ0aXRsZUNvbG9yIjogIndhcm5pbmciLCAic3RhdCI6ICIxLjUuOCIsICJpY29uTmFtZSI6ICJ3aXJlIn19XX0sIHsidHlwZSI6ICJjYXJkIiwgImxpbmsiOiAiL2luc3RhbmNlcyIsICJjb250YWluZXJDb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAid2lkZ2V0cyI6IFt7InR5cGUiOiAiU3RhdCIsICJkYXRhIjogeyJ0aXRsZSI6ICJob21lX2luc3RhbmNlcyIsICJzdWJ0aXRsZSI6ICJob21lX3RvdGFsX251bWJlciIsICJzdWJ0aXRsZUNvbG9yIjogImluZm8iLCAic3RhdCI6IDEsICJpY29uTmFtZSI6ICJib3gifX1dfSwgeyJ0eXBlIjogImNhcmQiLCAibGluayI6ICIvc2VydmljZXMiLCAiY29udGFpbmVyQ29sdW1ucyI6IHsicGMiOiA0LCAidGFibGV0IjogNiwgIm1vYmlsZSI6IDEyfSwgIndpZGdldHMiOiBbeyJ0eXBlIjogIlN0YXQiLCAiZGF0YSI6IHsidGl0bGUiOiAiaG9tZV9zZXJ2aWNlcyIsICJzdWJ0aXRsZSI6ICJob21lX2FsbF9tZXRob2RzX2luY2x1ZGVkIiwgInN1YnRpdGxlQ29sb3IiOiAiaW5mbyIsICJzdGF0IjogMiwgImljb25OYW1lIjogImRpc2sifX1dfSwgeyJ0eXBlIjogImNhcmQiLCAibGluayI6ICIvcGx1Z2lucyIsICJjb250YWluZXJDb2x1bW5zIjogeyJwYyI6IDQsICJ0YWJsZXQiOiA2LCAibW9iaWxlIjogMTJ9LCAid2lkZ2V0cyI6IFt7InR5cGUiOiAiU3RhdCIsICJkYXRhIjogeyJ0aXRsZSI6ICJob21lX3BsdWdpbnMiLCAic3VidGl0bGUiOiAiaG9tZV9ub19lcnJvciIsICJzdWJ0aXRsZUNvbG9yIjogInN1Y2Nlc3MiLCAic3RhdCI6ICI0MiIsICJpY29uTmFtZSI6ICJwdXp6bGUifX1dfV0= \ No newline at end of file diff --git a/src/client/tests/instances.py b/src/client/tests/instances.py index e9984b735..8a4c5aedd 100644 --- a/src/client/tests/instances.py +++ b/src/client/tests/instances.py @@ -1,4 +1,5 @@ import json +import base64 # Create instance class using keys from the instances list @@ -75,3 +76,9 @@ def instances_builder(instances: list): # store on a file with open("instances.json", "w") as f: json.dump(builder, f) + +output_base64_bytes = base64.b64encode(bytes(json.dumps(builder), "utf-8")) +output_base64_string = output_base64_bytes.decode("ascii") + +with open("instances.txt", "w") as f: + f.write(output_base64_string) diff --git a/src/client/tests/instances.txt b/src/client/tests/instances.txt new file mode 100644 index 000000000..856f6e495 --- /dev/null +++ b/src/client/tests/instances.txt @@ -0,0 +1 @@ +W3sidHlwZSI6ICJjYXJkIiwgImNvbnRhaW5lckNvbHVtbnMiOiB7InBjIjogNiwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJ3aWRnZXRzIjogW3sidHlwZSI6ICJJbnN0YW5jZSIsICJkYXRhIjogeyJwYWlycyI6IFt7ImtleSI6ICJpbnN0YW5jZXNfaG9zdG5hbWUiLCAidmFsdWUiOiAiYnVua2Vyd2ViIn0sIHsia2V5IjogImluc3RhbmNlc190eXBlIiwgInZhbHVlIjogIm1hbnVhbCJ9LCB7ImtleSI6ICJpbnN0YW5jZXNfc3RhdHVzIiwgInZhbHVlIjogImluc3RhbmNlc19hY3RpdmUifV0sICJzdGF0dXMiOiAic3VjY2VzcyIsICJ0aXRsZSI6ICJidW5rZXJ3ZWIiLCAiYnV0dG9ucyI6IFt7ImF0dHJzIjogeyJkYXRhLXN1Ym1pdC1mb3JtIjogIntcIklOU1RBTkNFX0lEXCIgOiBcImJ1bmtlcndlYlwiLCBcIm9wZXJhdGlvblwiIDogXCJyZWxvYWRcIiB9In0sICJ0ZXh0IjogImFjdGlvbl9yZWxvYWQiLCAiY29sb3IiOiAid2FybmluZyJ9LCB7ImF0dHJzIjogeyJkYXRhLXN1Ym1pdC1mb3JtIjogIntcIklOU1RBTkNFX0lEXCIgOiBcImJ1bmtlcndlYlwiLCBcIm9wZXJhdGlvblwiIDogXCJzdG9wXCIgfSJ9LCAidGV4dCI6ICJhY3Rpb25fc3RvcCIsICJjb2xvciI6ICJlcnJvciJ9XX19XX0sIHsidHlwZSI6ICJjYXJkIiwgImNvbnRhaW5lckNvbHVtbnMiOiB7InBjIjogNiwgInRhYmxldCI6IDYsICJtb2JpbGUiOiAxMn0sICJ3aWRnZXRzIjogW3sidHlwZSI6ICJJbnN0YW5jZSIsICJkYXRhIjogeyJwYWlycyI6IFt7ImtleSI6ICJpbnN0YW5jZXNfaG9zdG5hbWUiLCAidmFsdWUiOiAiYnVua2Vyd2ViIn0sIHsia2V5IjogImluc3RhbmNlc190eXBlIiwgInZhbHVlIjogIm1hbnVhbCJ9LCB7ImtleSI6ICJpbnN0YW5jZXNfc3RhdHVzIiwgInZhbHVlIjogImluc3RhbmNlc19hY3RpdmUifV0sICJzdGF0dXMiOiAic3VjY2VzcyIsICJ0aXRsZSI6ICJidW5rZXJ3ZWIiLCAiYnV0dG9ucyI6IFt7ImF0dHJzIjogeyJkYXRhLXN1Ym1pdC1mb3JtIjogIntcIklOU1RBTkNFX0lEXCIgOiBcImJ1bmtlcndlYlwiLCBcIm9wZXJhdGlvblwiIDogXCJyZWxvYWRcIiB9In0sICJ0ZXh0IjogImFjdGlvbl9yZWxvYWQiLCAiY29sb3IiOiAid2FybmluZyJ9LCB7ImF0dHJzIjogeyJkYXRhLXN1Ym1pdC1mb3JtIjogIntcIklOU1RBTkNFX0lEXCIgOiBcImJ1bmtlcndlYlwiLCBcIm9wZXJhdGlvblwiIDogXCJzdG9wXCIgfSJ9LCAidGV4dCI6ICJhY3Rpb25fc3RvcCIsICJjb2xvciI6ICJlcnJvciJ9XX19XX1d \ No newline at end of file diff --git a/src/client/vite/src/pages/global-config/globalConfig.vue b/src/client/vite/src/pages/global-config/globalConfig.vue index dceb19852..9051dd36d 100644 --- a/src/client/vite/src/pages/global-config/globalConfig.vue +++ b/src/client/vite/src/pages/global-config/globalConfig.vue @@ -19,9088 +19,17 @@ onBeforeMount(() => { const dataEl = document.querySelector(`[${dataAtt}]`); const data = dataEl && !dataEl.getAttribute(dataAtt).includes(dataAtt) - ? JSON.parse(dataEl.getAttribute(dataAtt)) + ? JSON.parse(atob(dataEl.getAttribute(dataAtt))) : {}; globalConfig.builder = data; }); - -const builder = [ - { - type: "card", - containerColumns: { - pc: 12, - tablet: 12, - mobile: 12, - }, - widgets: [ - { - type: "Title", - data: { - title: "global_config_title", - type: "container", - }, - }, - { - type: "Subtitle", - data: { - subtitle: "global_config_subtitle", - type: "container", - }, - }, - { - type: "Templates", - data: { - templates: { - advanced: { - default: [ - { - id: "general", - stream: "partial", - name: "General", - description: "The general settings for the server", - version: "0.1", - type: "core", - method: "manual", - page: false, - settings: { - IS_LOADING: { - context: "global", - default: "no", - help: "Internal use : set to yes when BW is loading.", - id: "internal-use-loading", - label: "internal use loading", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-33", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "internal use loading", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Internal use : set to yes when BW is loading.", - }, - ], - }, - NGINX_PREFIX: { - context: "global", - default: "/etc/nginx/", - help: "Where nginx will search for configurations.", - id: "nginx-prefix", - label: "nginx prefix", - regex: "^(\\/[\\-\\w.\\s]+)*\\/$", - type: "text", - containerClass: "z-32", - pattern: "^(\\/[\\-\\w.\\s]+)*\\/$", - inpType: "input", - name: "nginx prefix", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "/etc/nginx/", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Where nginx will search for configurations.", - }, - ], - }, - HTTP_PORT: { - context: "global", - default: "8080", - help: "HTTP port number which bunkerweb binds to.", - id: "http-port", - label: "HTTP port", - regex: "^\\d+$", - type: "text", - containerClass: "z-31", - pattern: "^\\d+$", - inpType: "input", - name: "HTTP port", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "8080", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "HTTP port number which bunkerweb binds to.", - }, - ], - }, - HTTPS_PORT: { - context: "global", - default: "8443", - help: "HTTPS port number which bunkerweb binds to.", - id: "https-port", - label: "HTTPS port", - regex: "^\\d+$", - type: "text", - containerClass: "z-30", - pattern: "^\\d+$", - inpType: "input", - name: "HTTPS port", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "8443", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "HTTPS port number which bunkerweb binds to.", - }, - ], - }, - MULTISITE: { - context: "global", - default: "no", - help: "Multi site activation.", - id: "multisite", - label: "Multisite", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-29", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Multisite", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Multi site activation.", - }, - ], - }, - SERVER_NAME: { - context: "multisite", - default: "www.example.com", - help: "List of the virtual hosts served by bunkerweb.", - id: "server-name", - label: "Server name", - regex: - "^((\\S{1,255})(?!.*\\s\\2(\\s|$)))?(\\s(\\S{1,255})(?!.*\\s\\5(\\s|$)))*$", - type: "text", - containerClass: "z-28", - pattern: - "^((\\S{1,255})(?!.*\\s\\2(\\s|$)))?(\\s(\\S{1,255})(?!.*\\s\\5(\\s|$)))*$", - inpType: "input", - name: "Server name", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "www.example.com", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "List of the virtual hosts served by bunkerweb.", - }, - ], - }, - WORKER_PROCESSES: { - context: "global", - default: "auto", - help: "Number of worker processes.", - id: "worker-processes", - label: "Worker processes", - regex: "^(auto|\\d+)$", - type: "text", - containerClass: "z-27", - pattern: "^(auto|\\d+)$", - inpType: "input", - name: "Worker processes", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "auto", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Number of worker processes.", - }, - ], - }, - WORKER_RLIMIT_NOFILE: { - context: "global", - default: "2048", - help: "Maximum number of open files for worker processes.", - id: "worker-rlimit-nofile", - label: "Open files per worker", - regex: "^\\d+$", - type: "text", - containerClass: "z-26", - pattern: "^\\d+$", - inpType: "input", - name: "Open files per worker", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "2048", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Maximum number of open files for worker processes.", - }, - ], - }, - WORKER_CONNECTIONS: { - context: "global", - default: "1024", - help: "Maximum number of connections per worker.", - id: "worker-connections", - label: "Connections per worker", - regex: "^\\d+$", - type: "text", - containerClass: "z-25", - pattern: "^\\d+$", - inpType: "input", - name: "Connections per worker", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "1024", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Maximum number of connections per worker.", - }, - ], - }, - LOG_FORMAT: { - context: "global", - default: - '$host $remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"', - help: "The format to use for access logs.", - id: "log-format", - label: "Log format", - regex: "^.*$", - type: "text", - containerClass: "z-24", - pattern: "^.*$", - inpType: "input", - name: "Log format", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: - '$host $remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"', - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "The format to use for access logs.", - }, - ], - }, - LOG_LEVEL: { - context: "global", - default: "notice", - help: "The level to use for error logs.", - id: "log-level", - label: "Log level", - regex: - "^(debug|info|notice|warn|error|crit|alert|emerg)$", - type: "select", - containerClass: "z-23", - pattern: - "^(debug|info|notice|warn|error|crit|alert|emerg)$", - inpType: "select", - name: "Log level", - values: [ - "alert", - "crit", - "debug", - "emerg", - "error", - "info", - "notice", - "warn", - ], - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "notice", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "The level to use for error logs.", - }, - ], - }, - DNS_RESOLVERS: { - context: "global", - default: "127.0.0.11", - help: "DNS addresses of resolvers to use.", - id: "dns-resolvers", - label: "DNS resolvers", - regex: "^(?! )(( *[^ ]+)(?!.*\\2))*$", - type: "text", - containerClass: "z-22", - pattern: "^(?! )(( *[^ ]+)(?!.*\\2))*$", - inpType: "input", - name: "DNS resolvers", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "127.0.0.11", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "DNS addresses of resolvers to use.", - }, - ], - }, - DATASTORE_MEMORY_SIZE: { - context: "global", - default: "64m", - help: "Size of the internal datastore.", - id: "datastore-memory-size", - label: "Datastore memory size", - regex: "^\\d+[kKmMgG]?$", - type: "text", - containerClass: "z-21", - pattern: "^\\d+[kKmMgG]?$", - inpType: "input", - name: "Datastore memory size", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "64m", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Size of the internal datastore.", - }, - ], - }, - CACHESTORE_MEMORY_SIZE: { - context: "global", - default: "64m", - help: "Size of the internal cachestore.", - id: "cachestore-memory-size", - label: "Cachestore memory size", - regex: "^\\d+[kKmMgG]?$", - type: "text", - containerClass: "z-20", - pattern: "^\\d+[kKmMgG]?$", - inpType: "input", - name: "Cachestore memory size", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "64m", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Size of the internal cachestore.", - }, - ], - }, - CACHESTORE_IPC_MEMORY_SIZE: { - context: "global", - default: "16m", - help: "Size of the internal cachestore (ipc).", - id: "cachestore-ipc-memory-size", - label: "Cachestore ipc memory size", - regex: "^\\d+[kKmMgG]?$", - type: "text", - containerClass: "z-19", - pattern: "^\\d+[kKmMgG]?$", - inpType: "input", - name: "Cachestore ipc memory size", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "16m", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Size of the internal cachestore (ipc).", - }, - ], - }, - CACHESTORE_MISS_MEMORY_SIZE: { - context: "global", - default: "16m", - help: "Size of the internal cachestore (miss).", - id: "cachestore-miss-memory-size", - label: "Cachestore miss memory size", - regex: "^\\d+[kKmMgG]?$", - type: "text", - containerClass: "z-18", - pattern: "^\\d+[kKmMgG]?$", - inpType: "input", - name: "Cachestore miss memory size", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "16m", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Size of the internal cachestore (miss).", - }, - ], - }, - CACHESTORE_LOCKS_MEMORY_SIZE: { - context: "global", - default: "16m", - help: "Size of the internal cachestore (locks).", - id: "cachestore-locks-memory-size", - label: "Cachestore locks memory size", - regex: "^\\d+[kKmMgG]?$", - type: "text", - containerClass: "z-17", - pattern: "^\\d+[kKmMgG]?$", - inpType: "input", - name: "Cachestore locks memory size", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "16m", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Size of the internal cachestore (locks).", - }, - ], - }, - USE_API: { - context: "global", - default: "yes", - help: "Activate the API to control BunkerWeb.", - id: "use-api", - label: "Activate API", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-16", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Activate API", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Activate the API to control BunkerWeb.", - }, - ], - }, - API_HTTP_PORT: { - context: "global", - default: "5000", - help: "Listen port number for the API.", - id: "api-http-listen", - label: "API port number", - regex: "^\\d+$", - type: "text", - containerClass: "z-15", - pattern: "^\\d+$", - inpType: "input", - name: "API port number", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "5000", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Listen port number for the API.", - }, - ], - }, - API_LISTEN_IP: { - context: "global", - default: "0.0.0.0", - help: "Listen IP address for the API.", - id: "api-ip-listen", - label: "API listen IP", - regex: "^.*$", - type: "text", - containerClass: "z-14", - pattern: "^.*$", - inpType: "input", - name: "API listen IP", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "0.0.0.0", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Listen IP address for the API.", - }, - ], - }, - API_SERVER_NAME: { - context: "global", - default: "bwapi", - help: "Server name (virtual host) for the API.", - id: "api-server-name", - label: "API server name", - regex: "^[^ ]{1,255}$", - type: "text", - containerClass: "z-13", - pattern: "^[^ ]{1,255}$", - inpType: "input", - name: "API server name", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "bwapi", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Server name (virtual host) for the API.", - }, - ], - }, - API_WHITELIST_IP: { - context: "global", - default: "127.0.0.0/8", - help: "List of IP/network allowed to contact the API.", - id: "api-whitelist-ip", - label: "API whitelist IP", - regex: - "^(?! )( *(((\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3})(\\/([1-2][0-9]?|3[0-2]?|[04-9]))?|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d))(\\/(12[0-8]|1[01][0-9]|[0-9][0-9]?))?)(?!.*\\D\\2([^\\d\\/]|$)) *)*$", - type: "text", - containerClass: "z-12", - pattern: - "^(?! )( *(((\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3})(\\/([1-2][0-9]?|3[0-2]?|[04-9]))?|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d))(\\/(12[0-8]|1[01][0-9]|[0-9][0-9]?))?)(?!.*\\D\\2([^\\d\\/]|$)) *)*$", - inpType: "input", - name: "API whitelist IP", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "127.0.0.0/8", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "List of IP/network allowed to contact the API.", - }, - ], - }, - AUTOCONF_MODE: { - context: "global", - default: "no", - help: "Enable Autoconf Docker integration.", - id: "autoconf-mode", - label: "Autoconf mode", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-11", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Autoconf mode", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Enable Autoconf Docker integration.", - }, - ], - }, - SWARM_MODE: { - context: "global", - default: "no", - help: "Enable Docker Swarm integration.", - id: "swarm-mode", - label: "Swarm mode", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-10", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Swarm mode", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Enable Docker Swarm integration.", - }, - ], - }, - KUBERNETES_MODE: { - context: "global", - default: "no", - help: "Enable Kubernetes integration.", - id: "kubernetes-mode", - label: "Kubernetes mode", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-9", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Kubernetes mode", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Enable Kubernetes integration.", - }, - ], - }, - SERVER_TYPE: { - context: "multisite", - default: "http", - help: "Server type : http or stream.", - id: "server-type", - label: "Server type", - regex: "^(http|stream)$", - type: "select", - containerClass: "z-8", - pattern: "^(http|stream)$", - inpType: "select", - name: "Server type", - values: ["http", "stream"], - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "http", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Server type : http or stream.", - }, - ], - }, - LISTEN_STREAM: { - context: "multisite", - default: "yes", - help: "Enable listening for non-ssl (passthrough).", - id: "listen-stream", - label: "Listen stream", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-7", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Listen stream", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Enable listening for non-ssl (passthrough).", - }, - ], - }, - LISTEN_STREAM_PORT: { - context: "multisite", - default: "1337", - help: "Listening port for non-ssl (passthrough).", - id: "listen-stream-port", - label: "Listen stream port", - regex: "^[0-9]+$", - type: "text", - containerClass: "z-6", - pattern: "^[0-9]+$", - inpType: "input", - name: "Listen stream port", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "1337", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Listening port for non-ssl (passthrough).", - }, - ], - }, - LISTEN_STREAM_PORT_SSL: { - context: "multisite", - default: "4242", - help: "Listening port for ssl (passthrough).", - id: "listen-stream-port-ssl", - label: "Listen stream port ssl", - regex: "^[0-9]+$", - type: "text", - containerClass: "z-5", - pattern: "^[0-9]+$", - inpType: "input", - name: "Listen stream port ssl", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "4242", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Listening port for ssl (passthrough).", - }, - ], - }, - USE_UDP: { - context: "multisite", - default: "no", - help: "UDP listen instead of TCP (stream).", - id: "use-udp", - label: "Listen UDP", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-4", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Listen UDP", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "UDP listen instead of TCP (stream).", - }, - ], - }, - USE_IPV6: { - context: "global", - default: "no", - help: "Enable IPv6 connectivity.", - id: "use-ipv6", - label: "Use IPv6", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-3", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Use IPv6", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Enable IPv6 connectivity.", - }, - ], - }, - IS_DRAFT: { - context: "multisite", - default: "no", - help: "Internal use : set to yes when the service is in draft mode.", - id: "internal-use-draft", - label: "internal use draft", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-2", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "internal use draft", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Internal use : set to yes when the service is in draft mode.", - }, - ], - }, - TIMERS_LOG_LEVEL: { - context: "global", - default: "debug", - help: "Log level for timers.", - id: "timers-log-level", - label: "Timers log level", - regex: "^(debug|info|notice|warn|err|crit|alert|emerg)$", - type: "select", - containerClass: "z-1", - pattern: - "^(debug|info|notice|warn|err|crit|alert|emerg)$", - inpType: "select", - name: "Timers log level", - values: [ - "alert", - "crit", - "debug", - "emerg", - "err", - "info", - "notice", - "warn", - ], - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "debug", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Log level for timers.", - }, - ], - }, - BUNKERWEB_INSTANCES: { - context: "global", - default: "127.0.0.1", - help: "List of BunkerWeb instances separated with spaces (format : fqdn-or-ip:5000 http://fqdn-or-ip:5000)", - id: "bunkerweb-instances", - label: "BunkerWeb instances", - regex: "^.*$", - type: "text", - containerClass: "z-0", - pattern: "^.*$", - inpType: "input", - name: "BunkerWeb instances", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "127.0.0.1", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "List of BunkerWeb instances separated with spaces (format : fqdn-or-ip:5000 http://fqdn-or-ip:5000)", - }, - ], - }, - }, - checksum: null, - }, - { - id: "antibot", - stream: "no", - name: "Antibot", - description: "Bot detection by using a challenge.", - version: "1.0", - type: "core", - method: "manual", - page: true, - settings: { - USE_ANTIBOT: { - context: "multisite", - default: "no", - help: "Activate antibot feature.", - id: "use-antibot", - label: "Antibot challenge", - regex: - "^(no|cookie|javascript|captcha|recaptcha|hcaptcha|turnstile)$", - type: "select", - containerClass: "z-10", - pattern: - "^(no|cookie|javascript|captcha|recaptcha|hcaptcha|turnstile)$", - inpType: "select", - name: "Antibot challenge", - values: [ - "captcha", - "cookie", - "hcaptcha", - "javascript", - "no", - "recaptcha", - "turnstile", - ], - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Activate antibot feature.", - }, - ], - }, - ANTIBOT_URI: { - context: "multisite", - default: "/challenge", - help: "Unused URI that clients will be redirected to to solve the challenge.", - id: "antibot-uri", - label: "Antibot URL", - regex: "^\\/[\\w\\].~:\\/?#\\[@!$\\&'\\(\\)*+,;=\\-]*$", - type: "text", - containerClass: "z-9", - pattern: "^\\/[\\w\\].~:\\/?#\\[@!$\\&'\\(\\)*+,;=\\-]*$", - inpType: "input", - name: "Antibot URL", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "/challenge", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Unused URI that clients will be redirected to to solve the challenge.", - }, - ], - }, - ANTIBOT_TIME_RESOLVE: { - context: "multisite", - default: "60", - help: "Maximum time (in seconds) clients have to resolve the challenge. Once this time has passed, a new challenge will be generated.", - id: "antibot-time-resolve", - label: "Time to resolve", - regex: "^[0-9]+$", - type: "text", - containerClass: "z-8", - pattern: "^[0-9]+$", - inpType: "input", - name: "Time to resolve", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "60", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Maximum time (in seconds) clients have to resolve the challenge. Once this time has passed, a new challenge will be generated.", - }, - ], - }, - ANTIBOT_TIME_VALID: { - context: "multisite", - default: "86400", - help: "Maximum validity time of solved challenges. Once this time has passed, clients will need to resolve a new one.", - id: "antibot-time-valid", - label: "Time valid", - regex: "^[0-9]+$", - type: "text", - containerClass: "z-7", - pattern: "^[0-9]+$", - inpType: "input", - name: "Time valid", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "86400", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Maximum validity time of solved challenges. Once this time has passed, clients will need to resolve a new one.", - }, - ], - }, - ANTIBOT_RECAPTCHA_SCORE: { - context: "multisite", - default: "0.7", - help: "Minimum score required for reCAPTCHA challenge.", - id: "antibot-recaptcha-score", - label: "reCAPTCHA score", - regex: "^(0\\.[1-9]|1\\.0)$", - type: "text", - containerClass: "z-6", - pattern: "^(0\\.[1-9]|1\\.0)$", - inpType: "input", - name: "reCAPTCHA score", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "0.7", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Minimum score required for reCAPTCHA challenge.", - }, - ], - }, - ANTIBOT_RECAPTCHA_SITEKEY: { - context: "multisite", - default: "", - help: "Sitekey for reCAPTCHA challenge.", - id: "antibot-recaptcha-sitekey", - label: "reCAPTCHA sitekey", - regex: "^[\\w\\-]*$", - type: "text", - containerClass: "z-5", - pattern: "^[\\w\\-]*$", - inpType: "input", - name: "reCAPTCHA sitekey", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Sitekey for reCAPTCHA challenge.", - }, - ], - }, - ANTIBOT_RECAPTCHA_SECRET: { - context: "multisite", - default: "", - help: "Secret for reCAPTCHA challenge.", - id: "antibot-recaptcha-secret", - label: "reCAPTCHA secret", - regex: "^[\\w\\-]*$", - type: "password", - containerClass: "z-4", - pattern: "^[\\w\\-]*$", - inpType: "input", - name: "reCAPTCHA secret", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Secret for reCAPTCHA challenge.", - }, - ], - }, - ANTIBOT_HCAPTCHA_SITEKEY: { - context: "multisite", - default: "", - help: "Sitekey for hCaptcha challenge.", - id: "antibot-hcaptcha-sitekey", - label: "hCaptcha sitekey", - regex: "^[a-zA-Z0-9\\-]*$", - type: "text", - containerClass: "z-3", - pattern: "^[a-zA-Z0-9\\-]*$", - inpType: "input", - name: "hCaptcha sitekey", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Sitekey for hCaptcha challenge.", - }, - ], - }, - ANTIBOT_HCAPTCHA_SECRET: { - context: "multisite", - default: "", - help: "Secret for hCaptcha challenge.", - id: "antibot-hcaptcha-secret", - label: "hCaptcha secret", - regex: "^\\w*$", - type: "password", - containerClass: "z-2", - pattern: "^\\w*$", - inpType: "input", - name: "hCaptcha secret", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Secret for hCaptcha challenge.", - }, - ], - }, - ANTIBOT_TURNSTILE_SITEKEY: { - context: "multisite", - default: "", - help: "Sitekey for Turnstile challenge.", - id: "antibot-turnstile-sitekey", - label: "Turnstile sitekey", - regex: "^(0x[\\w\\-]+)?$", - type: "text", - containerClass: "z-1", - pattern: "^(0x[\\w\\-]+)?$", - inpType: "input", - name: "Turnstile sitekey", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Sitekey for Turnstile challenge.", - }, - ], - }, - ANTIBOT_TURNSTILE_SECRET: { - context: "multisite", - default: "", - help: "Secret for Turnstile challenge.", - id: "antibot-turnstile-secret", - label: "Turnstile secret", - regex: "^(0x[\\w\\-]+)?$", - type: "password", - containerClass: "z-0", - pattern: "^(0x[\\w\\-]+)?$", - inpType: "input", - name: "Turnstile secret", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Secret for Turnstile challenge.", - }, - ], - }, - }, - checksum: null, - }, - { - id: "authbasic", - stream: "no", - name: "Auth basic", - description: - "Enforce login before accessing a resource or the whole site using HTTP basic auth method.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - USE_AUTH_BASIC: { - context: "multisite", - default: "no", - help: "Use HTTP basic auth", - id: "use-auth-basic", - label: "Use HTTP basic auth", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-4", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Use HTTP basic auth", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Use HTTP basic auth", - }, - ], - }, - AUTH_BASIC_LOCATION: { - context: "multisite", - default: "sitewide", - help: "URL of the protected resource or sitewide value.", - id: "auth-basic-location", - label: "Auth basic Location", - regex: "^(sitewide|/[a-zA-Z0-9.\\/\\-]*)$", - type: "text", - containerClass: "z-3", - pattern: "^(sitewide|/[a-zA-Z0-9.\\/\\-]*)$", - inpType: "input", - name: "Auth basic Location", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "sitewide", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "URL of the protected resource or sitewide value.", - }, - ], - }, - AUTH_BASIC_USER: { - context: "multisite", - default: "changeme", - help: "Username", - id: "auth-basic-user", - label: "Auth basic Username", - regex: "^[\\w\\-]+", - type: "text", - containerClass: "z-2", - pattern: "^[\\w\\-]+", - inpType: "input", - name: "Auth basic Username", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "changeme", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Username", - }, - ], - }, - AUTH_BASIC_PASSWORD: { - context: "multisite", - default: "changeme", - help: "Password", - id: "auth-basic-password", - label: "Password", - regex: "^.+", - type: "password", - containerClass: "z-1", - pattern: "^.+", - inpType: "input", - name: "Password", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "changeme", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Password", - }, - ], - }, - AUTH_BASIC_TEXT: { - context: "multisite", - default: "Restricted area", - help: "Text to display", - id: "auth-basic-text", - label: "Text", - regex: "^.+", - type: "text", - containerClass: "z-0", - pattern: "^.+", - inpType: "input", - name: "Text", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "Restricted area", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Text to display", - }, - ], - }, - }, - checksum: null, - }, - { - id: "backup", - stream: "yes", - name: "Backup", - description: - "Backup your data to a custom location. Ensure the safety and availability of your important files by creating regular backups.", - version: "1.0", - type: "core", - method: "manual", - page: true, - settings: { - USE_BACKUP: { - context: "global", - default: "yes", - help: "Enable or disable the backup feature", - id: "use-backup", - label: "Activate automatic backup", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-3", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Activate automatic backup", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Enable or disable the backup feature", - }, - ], - }, - BACKUP_SCHEDULE: { - context: "global", - default: "daily", - help: "The frequency of the backup (daily, weekly or monthly)", - id: "backup-schedule", - label: "Backup schedule", - regex: "^(daily|weekly|monthly)$", - type: "select", - containerClass: "z-2", - pattern: "^(daily|weekly|monthly)$", - inpType: "select", - name: "Backup schedule", - values: ["daily", "monthly", "weekly"], - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "daily", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "The frequency of the backup (daily, weekly or monthly)", - }, - ], - }, - BACKUP_ROTATION: { - context: "global", - default: "7", - help: "The number of backups to keep", - id: "backup-rotation", - label: "Backup rotation", - regex: "^[1-9][0-9]*$", - type: "text", - containerClass: "z-1", - pattern: "^[1-9][0-9]*$", - inpType: "input", - name: "Backup rotation", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "7", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "The number of backups to keep", - }, - ], - }, - BACKUP_DIRECTORY: { - context: "global", - default: "/var/lib/bunkerweb/backups", - help: "The directory where the backup will be stored", - id: "backup-directory", - label: "Backup directory", - regex: "^.*$", - type: "text", - containerClass: "z-0", - pattern: "^.*$", - inpType: "input", - name: "Backup directory", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "/var/lib/bunkerweb/backups", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "The directory where the backup will be stored", - }, - ], - }, - }, - checksum: null, - bwcli: { - list: "list.py", - restore: "restore.py", - save: "save.py", - }, - }, - { - id: "badbehavior", - stream: "yes", - name: "Bad behavior", - description: - "Ban IP generating too much 'bad' HTTP status code in a period of time.", - version: "1.0", - type: "core", - method: "manual", - page: true, - settings: { - USE_BAD_BEHAVIOR: { - context: "multisite", - default: "yes", - help: "Activate Bad behavior feature.", - id: "use-bad-behavior", - label: "Activate bad behavior", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-4", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Activate bad behavior", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Activate Bad behavior feature.", - }, - ], - }, - BAD_BEHAVIOR_STATUS_CODES: { - context: "multisite", - default: "400 401 403 404 405 429 444", - help: "List of HTTP status codes considered as 'bad'.", - id: "bad-behavior-status-code", - label: "Bad status codes", - regex: "^( *([1-5]\\d{2})(?!.*\\2) *)+$", - type: "text", - containerClass: "z-3", - pattern: "^( *([1-5]\\d{2})(?!.*\\2) *)+$", - inpType: "input", - name: "Bad status codes", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "400 401 403 404 405 429 444", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "List of HTTP status codes considered as 'bad'.", - }, - ], - }, - BAD_BEHAVIOR_THRESHOLD: { - context: "multisite", - default: "10", - help: "Maximum number of 'bad' HTTP status codes within the period of time before IP is banned.", - id: "bad-behavior-threshold", - label: "Threshold", - regex: "^[1-9][0-9]*", - type: "text", - containerClass: "z-2", - pattern: "^[1-9][0-9]*", - inpType: "input", - name: "Threshold", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "10", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Maximum number of 'bad' HTTP status codes within the period of time before IP is banned.", - }, - ], - }, - BAD_BEHAVIOR_COUNT_TIME: { - context: "multisite", - default: "60", - help: "Period of time (in seconds) during which we count 'bad' HTTP status codes.", - id: "bad-behavior-period", - label: "Period (in seconds)", - regex: "^\\d+", - type: "text", - containerClass: "z-1", - pattern: "^\\d+", - inpType: "input", - name: "Period (in seconds)", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "60", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Period of time (in seconds) during which we count 'bad' HTTP status codes.", - }, - ], - }, - BAD_BEHAVIOR_BAN_TIME: { - context: "multisite", - default: "86400", - help: "The duration time (in seconds) of a ban when the corresponding IP has reached the threshold.", - id: "bad-behavior-ban-time", - label: "Ban duration (in seconds)", - regex: "^\\d+", - type: "text", - containerClass: "z-0", - pattern: "^\\d+", - inpType: "input", - name: "Ban duration (in seconds)", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "86400", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "The duration time (in seconds) of a ban when the corresponding IP has reached the threshold.", - }, - ], - }, - }, - checksum: null, - }, - { - id: "blacklist", - stream: "partial", - name: "Blacklist", - description: - "Deny access based on internal and external IP/network/rDNS/ASN blacklists.", - version: "1.0", - type: "core", - method: "manual", - page: true, - settings: { - USE_BLACKLIST: { - context: "multisite", - default: "yes", - help: "Activate blacklist feature.", - id: "use-blacklist", - label: "Activate blacklisting", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-21", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Activate blacklisting", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Activate blacklist feature.", - }, - ], - }, - BLACKLIST_IP: { - context: "multisite", - default: "", - help: "List of IP/network, separated with spaces, to block.", - id: "blacklist-ip", - label: "Blacklist IP/network", - regex: - "^(?! )( *(((\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3})(\\/([1-2][0-9]?|3[0-2]?|[04-9]))?|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d))(\\/(12[0-8]|1[01][0-9]|[0-9][0-9]?))?)(?!.*\\D\\2([^\\d\\/]|$)) *)*$", - type: "text", - containerClass: "z-20", - pattern: - "^(?! )( *(((\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3})(\\/([1-2][0-9]?|3[0-2]?|[04-9]))?|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d))(\\/(12[0-8]|1[01][0-9]|[0-9][0-9]?))?)(?!.*\\D\\2([^\\d\\/]|$)) *)*$", - inpType: "input", - name: "Blacklist IP/network", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "List of IP/network, separated with spaces, to block.", - }, - ], - }, - BLACKLIST_RDNS: { - context: "multisite", - default: ".shodan.io .censys.io", - help: "List of reverse DNS suffixes, separated with spaces, to block.", - id: "blacklist-rdns", - label: "Blacklist reverse DNS", - regex: "^( *(([^ ]+)(?!.*\\3( |$))) *)*$", - type: "text", - containerClass: "z-19", - pattern: "^( *(([^ ]+)(?!.*\\3( |$))) *)*$", - inpType: "input", - name: "Blacklist reverse DNS", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: ".shodan.io .censys.io", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "List of reverse DNS suffixes, separated with spaces, to block.", - }, - ], - }, - BLACKLIST_RDNS_GLOBAL: { - context: "multisite", - default: "yes", - help: "Only perform RDNS blacklist checks on global IP addresses.", - id: "blacklist-rdns-global", - label: "Blacklist reverse DNS global IPs", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-18", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Blacklist reverse DNS global IPs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Only perform RDNS blacklist checks on global IP addresses.", - }, - ], - }, - BLACKLIST_ASN: { - context: "multisite", - default: "", - help: "List of ASN numbers, separated with spaces, to block.", - id: "blacklist-asn", - label: "Blacklist ASN", - regex: "^^( *((ASN?)?(\\d+)\\b(?!.*[SN ]\\4\\b)) *)*$", - type: "text", - containerClass: "z-17", - pattern: "^^( *((ASN?)?(\\d+)\\b(?!.*[SN ]\\4\\b)) *)*$", - inpType: "input", - name: "Blacklist ASN", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "List of ASN numbers, separated with spaces, to block.", - }, - ], - }, - BLACKLIST_USER_AGENT: { - context: "multisite", - default: "", - help: "List of User-Agent (PCRE regex), separated with spaces, to block.", - id: "blacklist-user-agent", - label: "Blacklist User-Agent", - regex: "^.*$", - type: "text", - containerClass: "z-16", - pattern: "^.*$", - inpType: "input", - name: "Blacklist User-Agent", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "List of User-Agent (PCRE regex), separated with spaces, to block.", - }, - ], - }, - BLACKLIST_URI: { - context: "multisite", - default: "", - help: "List of URI (PCRE regex), separated with spaces, to block.", - id: "blacklist-uri", - label: "Blacklist URI", - regex: "^( *(.*)(?!.*\\2(?!.)) *)*$", - type: "text", - containerClass: "z-15", - pattern: "^( *(.*)(?!.*\\2(?!.)) *)*$", - inpType: "input", - name: "Blacklist URI", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "List of URI (PCRE regex), separated with spaces, to block.", - }, - ], - }, - BLACKLIST_IGNORE_IP: { - context: "multisite", - default: "", - help: "List of IP/network, separated with spaces, to ignore in the blacklist.", - id: "blacklist-ignore-ip", - label: "Blacklist ignore IP/network", - regex: - "^(?! )( *(((\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3})(\\/([1-2][0-9]?|3[0-2]?|[04-9]))?|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d))(\\/(12[0-8]|1[01][0-9]|[0-9][0-9]?))?)(?!.*\\D\\2([^\\d\\/]|$)) *)*$", - type: "text", - containerClass: "z-14", - pattern: - "^(?! )( *(((\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3})(\\/([1-2][0-9]?|3[0-2]?|[04-9]))?|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d))(\\/(12[0-8]|1[01][0-9]|[0-9][0-9]?))?)(?!.*\\D\\2([^\\d\\/]|$)) *)*$", - inpType: "input", - name: "Blacklist ignore IP/network", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "List of IP/network, separated with spaces, to ignore in the blacklist.", - }, - ], - }, - BLACKLIST_IGNORE_RDNS: { - context: "multisite", - default: "", - help: "List of reverse DNS suffixes, separated with spaces, to ignore in the blacklist.", - id: "blacklist-ignore-rdns", - label: "Blacklist ignore reverse DNS", - regex: "^( *(([^ ]+)(?!.*\\3( |$))) *)*$", - type: "text", - containerClass: "z-13", - pattern: "^( *(([^ ]+)(?!.*\\3( |$))) *)*$", - inpType: "input", - name: "Blacklist ignore reverse DNS", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "List of reverse DNS suffixes, separated with spaces, to ignore in the blacklist.", - }, - ], - }, - BLACKLIST_IGNORE_ASN: { - context: "multisite", - default: "", - help: "List of ASN numbers, separated with spaces, to ignore in the blacklist.", - id: "blacklist-ignore-asn", - label: "Blacklist ignore ASN", - regex: "^^( *((ASN?)?(\\d+)\\b(?!.*[SN ]\\4\\b)) *)*$", - type: "text", - containerClass: "z-12", - pattern: "^^( *((ASN?)?(\\d+)\\b(?!.*[SN ]\\4\\b)) *)*$", - inpType: "input", - name: "Blacklist ignore ASN", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "List of ASN numbers, separated with spaces, to ignore in the blacklist.", - }, - ], - }, - BLACKLIST_IGNORE_USER_AGENT: { - context: "multisite", - default: "", - help: "List of User-Agent (PCRE regex), separated with spaces, to ignore in the blacklist.", - id: "blacklist-ignore-user-agent", - label: "Blacklist ignore User-Agent", - regex: "^.*$", - type: "text", - containerClass: "z-11", - pattern: "^.*$", - inpType: "input", - name: "Blacklist ignore User-Agent", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "List of User-Agent (PCRE regex), separated with spaces, to ignore in the blacklist.", - }, - ], - }, - BLACKLIST_IGNORE_URI: { - context: "multisite", - default: "", - help: "List of URI (PCRE regex), separated with spaces, to ignore in the blacklist.", - id: "blacklist-ignore-uri", - label: "Blacklist ignore URI", - regex: "^( *(.*)(?!.*\\2(?!.)) *)*$", - type: "text", - containerClass: "z-10", - pattern: "^( *(.*)(?!.*\\2(?!.)) *)*$", - inpType: "input", - name: "Blacklist ignore URI", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "List of URI (PCRE regex), separated with spaces, to ignore in the blacklist.", - }, - ], - }, - BLACKLIST_IP_URLS: { - context: "global", - default: "https://www.dan.me.uk/torlist/?exit", - help: "List of URLs, separated with spaces, containing bad IP/network to block.", - id: "blacklist-ip-urls", - label: "Blacklist IP/network URLs", - regex: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - type: "text", - containerClass: "z-9", - pattern: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - inpType: "input", - name: "Blacklist IP/network URLs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "https://www.dan.me.uk/torlist/?exit", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "List of URLs, separated with spaces, containing bad IP/network to block.", - }, - ], - }, - BLACKLIST_RDNS_URLS: { - context: "global", - default: "", - help: "List of URLs, separated with spaces, containing reverse DNS suffixes to block.", - id: "blacklist-rdns-urls", - label: "Blacklist reverse DNS URLs", - regex: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - type: "text", - containerClass: "z-8", - pattern: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - inpType: "input", - name: "Blacklist reverse DNS URLs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "List of URLs, separated with spaces, containing reverse DNS suffixes to block.", - }, - ], - }, - BLACKLIST_ASN_URLS: { - context: "global", - default: "", - help: "List of URLs, separated with spaces, containing ASN to block.", - id: "blacklist-asn-urls", - label: "Blacklist ASN URLs", - regex: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - type: "text", - containerClass: "z-7", - pattern: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - inpType: "input", - name: "Blacklist ASN URLs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "List of URLs, separated with spaces, containing ASN to block.", - }, - ], - }, - BLACKLIST_USER_AGENT_URLS: { - context: "global", - default: - "https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/_generator_lists/bad-user-agents.list", - help: "List of URLs, separated with spaces, containing bad User-Agent to block.", - id: "blacklist-user-agent-urls", - label: "Blacklist User-Agent URLs", - regex: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - type: "text", - containerClass: "z-6", - pattern: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - inpType: "input", - name: "Blacklist User-Agent URLs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: - "https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/_generator_lists/bad-user-agents.list", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "List of URLs, separated with spaces, containing bad User-Agent to block.", - }, - ], - }, - BLACKLIST_URI_URLS: { - context: "global", - default: "", - help: "List of URLs, separated with spaces, containing bad URI to block.", - id: "blacklist-uri-urls", - label: "Blacklist URI URLs", - regex: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - type: "text", - containerClass: "z-5", - pattern: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - inpType: "input", - name: "Blacklist URI URLs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "List of URLs, separated with spaces, containing bad URI to block.", - }, - ], - }, - BLACKLIST_IGNORE_IP_URLS: { - context: "global", - default: "", - help: "List of URLs, separated with spaces, containing IP/network to ignore in the blacklist.", - id: "blacklist-ignore-ip-urls", - label: "Blacklist ignore IP/network URLs", - regex: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - type: "text", - containerClass: "z-4", - pattern: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - inpType: "input", - name: "Blacklist ignore IP/network URLs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "List of URLs, separated with spaces, containing IP/network to ignore in the blacklist.", - }, - ], - }, - BLACKLIST_IGNORE_RDNS_URLS: { - context: "global", - default: "", - help: "List of URLs, separated with spaces, containing reverse DNS suffixes to ignore in the blacklist.", - id: "blacklist-ignore-rdns-urls", - label: "Blacklist ignore reverse DNS URLs", - regex: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - type: "text", - containerClass: "z-3", - pattern: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - inpType: "input", - name: "Blacklist ignore reverse DNS URLs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "List of URLs, separated with spaces, containing reverse DNS suffixes to ignore in the blacklist.", - }, - ], - }, - BLACKLIST_IGNORE_ASN_URLS: { - context: "global", - default: "", - help: "List of URLs, separated with spaces, containing ASN to ignore in the blacklist.", - id: "blacklist-ignore-asn-urls", - label: "Blacklist ignore ASN URLs", - regex: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - type: "text", - containerClass: "z-2", - pattern: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - inpType: "input", - name: "Blacklist ignore ASN URLs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "List of URLs, separated with spaces, containing ASN to ignore in the blacklist.", - }, - ], - }, - BLACKLIST_IGNORE_USER_AGENT_URLS: { - context: "global", - default: "", - help: "List of URLs, separated with spaces, containing User-Agent to ignore in the blacklist.", - id: "blacklist-ignore-user-agent-urls", - label: "Blacklist ignore User-Agent URLs", - regex: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - type: "text", - containerClass: "z-1", - pattern: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - inpType: "input", - name: "Blacklist ignore User-Agent URLs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "List of URLs, separated with spaces, containing User-Agent to ignore in the blacklist.", - }, - ], - }, - BLACKLIST_IGNORE_URI_URLS: { - context: "global", - default: "", - help: "List of URLs, separated with spaces, containing URI to ignore in the blacklist.", - id: "blacklist-ignore-uri-urls", - label: "Blacklist ignore URI URLs", - regex: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - type: "text", - containerClass: "z-0", - pattern: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - inpType: "input", - name: "Blacklist ignore URI URLs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "List of URLs, separated with spaces, containing URI to ignore in the blacklist.", - }, - ], - }, - }, - checksum: null, - }, - { - id: "brotli", - stream: "no", - name: "Brotli", - description: - "Compress HTTP requests with the brotli algorithm.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - USE_BROTLI: { - context: "multisite", - default: "no", - help: "Use brotli", - id: "use-brotli", - label: "Use brotli", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-3", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Use brotli", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Use brotli", - }, - ], - }, - BROTLI_TYPES: { - context: "multisite", - default: - "application/atom+xml application/javascript application/json application/rss+xml application/vnd.ms-fontobject application/x-font-opentype application/x-font-truetype application/x-font-ttf application/x-javascript application/xhtml+xml application/xml font/eot font/opentype font/otf font/truetype image/svg+xml image/vnd.microsoft.icon image/x-icon image/x-win-bitmap text/css text/javascript text/plain text/xml", - help: "List of MIME types that will be compressed with brotli.", - id: "brotli-types", - label: "MIME types", - regex: - "^(?! )( ?([\\-\\w.]+/[\\-\\w.+]+)(?!.*\\2(?!.)))+$", - type: "text", - containerClass: "z-2", - pattern: - "^(?! )( ?([\\-\\w.]+/[\\-\\w.+]+)(?!.*\\2(?!.)))+$", - inpType: "input", - name: "MIME types", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: - "application/atom+xml application/javascript application/json application/rss+xml application/vnd.ms-fontobject application/x-font-opentype application/x-font-truetype application/x-font-ttf application/x-javascript application/xhtml+xml application/xml font/eot font/opentype font/otf font/truetype image/svg+xml image/vnd.microsoft.icon image/x-icon image/x-win-bitmap text/css text/javascript text/plain text/xml", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "List of MIME types that will be compressed with brotli.", - }, - ], - }, - BROTLI_MIN_LENGTH: { - context: "multisite", - default: "1000", - help: "Minimum length for brotli compression.", - id: "brotli-min-length", - label: "Minimum length", - regex: "^\\d+", - type: "text", - containerClass: "z-1", - pattern: "^\\d+", - inpType: "input", - name: "Minimum length", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "1000", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Minimum length for brotli compression.", - }, - ], - }, - BROTLI_COMP_LEVEL: { - context: "multisite", - default: "6", - help: "The compression level of the brotli algorithm.", - id: "brotli-comp-level", - label: "Compression level", - regex: "^([02-9]|1[01]?)$", - type: "select", - containerClass: "z-0", - pattern: "^([02-9]|1[01]?)$", - inpType: "select", - name: "Compression level", - values: [ - "0", - "1", - "10", - "11", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - ], - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "6", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "The compression level of the brotli algorithm.", - }, - ], - }, - }, - checksum: null, - }, - { - id: "bunkernet", - stream: "yes", - name: "BunkerNet", - description: - "Share threat data with other BunkerWeb instances via BunkerNet.", - version: "1.0", - type: "core", - method: "manual", - page: true, - settings: { - USE_BUNKERNET: { - context: "multisite", - default: "yes", - help: "Activate BunkerNet feature.", - id: "use-bunkernet", - label: "Activate BunkerNet", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-1", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Activate BunkerNet", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Activate BunkerNet feature.", - }, - ], - }, - BUNKERNET_SERVER: { - context: "global", - default: "https://api.bunkerweb.io", - help: "Address of the BunkerNet API.", - id: "bunkernet-server", - label: "BunkerNet server", - regex: - "^https?:\\/\\/[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*$", - type: "text", - containerClass: "z-0", - pattern: - "^https?:\\/\\/[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*$", - inpType: "input", - name: "BunkerNet server", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "https://api.bunkerweb.io", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Address of the BunkerNet API.", - }, - ], - }, - }, - checksum: null, - }, - { - id: "cors", - stream: "no", - name: "CORS", - description: "Cross-Origin Resource Sharing.", - version: "1.0", - type: "core", - method: "manual", - page: true, - settings: { - USE_CORS: { - context: "multisite", - default: "no", - help: "Use CORS", - id: "use-cors", - label: "Use CORS", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-10", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Use CORS", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: true, - value: "yes", - popovers: [ - { - iconName: "trespass", - text: "inp_popover_method_disabled", - }, - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Use CORS", - }, - ], - }, - CORS_ALLOW_ORIGIN: { - context: "multisite", - default: "*", - help: "Allowed origins to make CORS requests : PCRE regex or *.", - id: "cors-allow-origin", - label: "Allowed origins", - regex: "^.*$", - type: "text", - containerClass: "z-9", - pattern: "^.*$", - inpType: "input", - name: "Allowed origins", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "*", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Allowed origins to make CORS requests : PCRE regex or *.", - }, - ], - }, - CORS_ALLOW_METHODS: { - context: "multisite", - default: "GET, POST, OPTIONS", - help: "Value of the Access-Control-Allow-Methods header.", - id: "cors-allow-methods", - label: "Access-Control-Allow-Methods value", - regex: - "^(\\*|(?![, ])(,? ?(GET|HEAD|POST|PUT|DELETE|CONNECT|OPTIONS|TRACE|PATCH)(?!.*\\3))*)?$", - type: "text", - containerClass: "z-8", - pattern: - "^(\\*|(?![, ])(,? ?(GET|HEAD|POST|PUT|DELETE|CONNECT|OPTIONS|TRACE|PATCH)(?!.*\\3))*)?$", - inpType: "input", - name: "Access-Control-Allow-Methods value", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "GET, POST, OPTIONS", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Value of the Access-Control-Allow-Methods header.", - }, - ], - }, - CORS_ALLOW_HEADERS: { - context: "multisite", - default: - "DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range", - help: "Value of the Access-Control-Allow-Headers header.", - id: "cors-allow-headers", - label: "Access-Control-Allow-Headers value", - regex: - "^(\\*|(?![, ])(,? ?([\\w\\-]+)(?!.*\\3(?!.)))*)?$", - type: "text", - containerClass: "z-7", - pattern: - "^(\\*|(?![, ])(,? ?([\\w\\-]+)(?!.*\\3(?!.)))*)?$", - inpType: "input", - name: "Access-Control-Allow-Headers value", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: - "DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Value of the Access-Control-Allow-Headers header.", - }, - ], - }, - CORS_ALLOW_CREDENTIALS: { - context: "multisite", - default: "no", - help: "Send the Access-Control-Allow-Credentials header.", - id: "cors-allow-credentials", - label: "Send Access-Control-Allow-Credentials", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-6", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Send Access-Control-Allow-Credentials", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Send the Access-Control-Allow-Credentials header.", - }, - ], - }, - CORS_EXPOSE_HEADERS: { - context: "multisite", - default: "Content-Length,Content-Range", - help: "Value of the Access-Control-Expose-Headers header.", - id: "cors-expose-headers", - label: "Access-Control-Expose-Headers value", - regex: - "^(\\*|(?![, ]+)(,? ?([\\w\\-]+)(?!.*\\3(?!.)))*)?$", - type: "text", - containerClass: "z-5", - pattern: - "^(\\*|(?![, ]+)(,? ?([\\w\\-]+)(?!.*\\3(?!.)))*)?$", - inpType: "input", - name: "Access-Control-Expose-Headers value", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "Content-Length,Content-Range", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Value of the Access-Control-Expose-Headers header.", - }, - ], - }, - CROSS_ORIGIN_OPENER_POLICY: { - context: "multisite", - default: "", - help: "Value for the Cross-Origin-Opener-Policy header.", - id: "cross-origin-opener-policy", - label: "Cross-Origin-Opener-Policy", - regex: - "^(unsafe-none|same-origin-allow-popups|same-origin)?$", - type: "select", - containerClass: "z-4", - pattern: - "^(unsafe-none|same-origin-allow-popups|same-origin)?$", - inpType: "select", - name: "Cross-Origin-Opener-Policy", - values: [ - "", - "same-origin", - "same-origin-allow-popups", - "unsafe-none", - ], - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Value for the Cross-Origin-Opener-Policy header.", - }, - ], - }, - CROSS_ORIGIN_EMBEDDER_POLICY: { - context: "multisite", - default: "", - help: "Value for the Cross-Origin-Embedder-Policy header.", - id: "cross-origin-embedder-policy", - label: "Cross-Origin-Embedder-Policy", - regex: "^(unsafe-none|require-corp|credentialless)?$", - type: "select", - containerClass: "z-3", - pattern: "^(unsafe-none|require-corp|credentialless)?$", - inpType: "select", - name: "Cross-Origin-Embedder-Policy", - values: [ - "", - "credentialless", - "require-corp", - "unsafe-none", - ], - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Value for the Cross-Origin-Embedder-Policy header.", - }, - ], - }, - CROSS_ORIGIN_RESOURCE_POLICY: { - context: "multisite", - default: "", - help: "Value for the Cross-Origin-Resource-Policy header.", - id: "cross-origin-resource-policy", - label: "Cross-Origin-Resource-Policy", - regex: "^(same-site|same-origin|cross-origin)?$", - type: "select", - containerClass: "z-2", - pattern: "^(same-site|same-origin|cross-origin)?$", - inpType: "select", - name: "Cross-Origin-Resource-Policy", - values: ["", "cross-origin", "same-origin", "same-site"], - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Value for the Cross-Origin-Resource-Policy header.", - }, - ], - }, - CORS_MAX_AGE: { - context: "multisite", - default: "86400", - help: "Value of the Access-Control-Max-Age header.", - id: "cors-max-age", - label: "Access-Control-Max-Age value", - regex: "^\\d+$", - type: "text", - containerClass: "z-1", - pattern: "^\\d+$", - inpType: "input", - name: "Access-Control-Max-Age value", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "86400", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Value of the Access-Control-Max-Age header.", - }, - ], - }, - CORS_DENY_REQUEST: { - context: "multisite", - default: "yes", - help: "Deny request and don't send it to backend if Origin is not allowed.", - id: "cors-deny-request", - label: "Deny request", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-0", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Deny request", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Deny request and don't send it to backend if Origin is not allowed.", - }, - ], - }, - }, - checksum: null, - }, - { - id: "clientcache", - stream: "no", - name: "Client cache", - description: "Manage caching for clients.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - USE_CLIENT_CACHE: { - context: "multisite", - default: "no", - help: "Tell client to store locally static files.", - id: "use-client-cache", - label: "Use client cache", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-3", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Use client cache", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Tell client to store locally static files.", - }, - ], - }, - CLIENT_CACHE_EXTENSIONS: { - context: "global", - default: - "jpg|jpeg|png|bmp|ico|svg|tif|css|js|otf|ttf|eot|woff|woff2", - help: "List of file extensions, separated with pipes that should be cached.", - id: "client-cache-extensions", - label: "Extensions that should be cached by the client", - regex: "^(?!\\|)(\\|?([a-z0-9]+)(?!.*\\2(?!.)))+$", - type: "text", - containerClass: "z-2", - pattern: "^(?!\\|)(\\|?([a-z0-9]+)(?!.*\\2(?!.)))+$", - inpType: "input", - name: "Extensions that should be cached by the client", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: - "jpg|jpeg|png|bmp|ico|svg|tif|css|js|otf|ttf|eot|woff|woff2", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "List of file extensions, separated with pipes that should be cached.", - }, - ], - }, - CLIENT_CACHE_ETAG: { - context: "multisite", - default: "yes", - help: "Send the HTTP ETag header for static resources.", - id: "client-cache-etag", - label: "ETag", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-1", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "ETag", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Send the HTTP ETag header for static resources.", - }, - ], - }, - CLIENT_CACHE_CONTROL: { - context: "multisite", - default: "public, max-age=15552000", - help: "Value of the Cache-Control HTTP header.", - id: "client-cache-control", - label: "Cache-Control header", - regex: - "^(?!(, ?| ))((, )?(((max-age|s-maxage|stale-while-revalidate|stale-if-error)=\\d+(?!.*\\6))|((?!.*public)private|(?!.*private)public)|(must|proxy)-revalidate|must-understand|immutable|no-(cache|store|transform))(?!.*\\4))+$", - type: "text", - containerClass: "z-0", - pattern: - "^(?!(, ?| ))((, )?(((max-age|s-maxage|stale-while-revalidate|stale-if-error)=\\d+(?!.*\\6))|((?!.*public)private|(?!.*private)public)|(must|proxy)-revalidate|must-understand|immutable|no-(cache|store|transform))(?!.*\\4))+$", - inpType: "input", - name: "Cache-Control header", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "public, max-age=15552000", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Value of the Cache-Control HTTP header.", - }, - ], - }, - }, - checksum: null, - }, - { - id: "country", - stream: "yes", - name: "Country", - description: - "Deny access based on the country of the client IP.", - version: "1.0", - type: "core", - method: "manual", - page: true, - settings: { - BLACKLIST_COUNTRY: { - context: "multisite", - default: "", - help: "Deny access if the country of the client is in the list (ISO 3166-1 alpha-2 format separated with spaces).", - id: "country-blacklist", - label: "Country blacklist", - regex: "^(?! )( *([A-Z]{2})(?!.*\\2) *)*$", - type: "text", - containerClass: "z-1", - pattern: "^(?! )( *([A-Z]{2})(?!.*\\2) *)*$", - inpType: "input", - name: "Country blacklist", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Deny access if the country of the client is in the list (ISO 3166-1 alpha-2 format separated with spaces).", - }, - ], - }, - WHITELIST_COUNTRY: { - context: "multisite", - default: "", - help: "Deny access if the country of the client is not in the list (ISO 3166-1 alpha-2 format separated with spaces).", - id: "country-whitelist", - label: "Country whitelist", - regex: "^(?! )( *([A-Z]{2})(?!.*\\2) *)*$", - type: "text", - containerClass: "z-0", - pattern: "^(?! )( *([A-Z]{2})(?!.*\\2) *)*$", - inpType: "input", - name: "Country whitelist", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Deny access if the country of the client is not in the list (ISO 3166-1 alpha-2 format separated with spaces).", - }, - ], - }, - }, - checksum: null, - }, - { - id: "customcert", - stream: "yes", - name: "Custom HTTPS certificate", - description: "Choose custom certificate for HTTPS.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - USE_CUSTOM_SSL: { - context: "multisite", - default: "no", - help: "Use custom HTTPS certificate.", - id: "use-custom-https", - label: "Use custom certificate", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-4", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Use custom certificate", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Use custom HTTPS certificate.", - }, - ], - }, - CUSTOM_SSL_CERT: { - context: "multisite", - default: "", - help: "Full path of the certificate or bundle file (must be readable by the scheduler).", - id: "custom-https-cert", - label: "Certificate path", - regex: "^(/[\\w. \\-]+)*/?$", - type: "text", - containerClass: "z-3", - pattern: "^(/[\\w. \\-]+)*/?$", - inpType: "input", - name: "Certificate path", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Full path of the certificate or bundle file (must be readable by the scheduler).", - }, - ], - }, - CUSTOM_SSL_KEY: { - context: "multisite", - default: "", - help: "Full path of the key file (must be readable by the scheduler).", - id: "custom-https-key", - label: "Key path", - regex: "^(/[\\w. \\-]+)*/?$", - type: "text", - containerClass: "z-2", - pattern: "^(/[\\w. \\-]+)*/?$", - inpType: "input", - name: "Key path", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Full path of the key file (must be readable by the scheduler).", - }, - ], - }, - CUSTOM_SSL_CERT_DATA: { - context: "multisite", - default: "", - help: "Certificate data encoded in base64.", - id: "custom-https-cert-data", - label: "Certificate data (base64)", - regex: "^.*$", - type: "text", - containerClass: "z-1", - pattern: "^.*$", - inpType: "input", - name: "Certificate data (base64)", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Certificate data encoded in base64.", - }, - ], - }, - CUSTOM_SSL_KEY_DATA: { - context: "multisite", - default: "", - help: "Key data encoded in base64.", - id: "custom-https-key-data", - label: "Key data (base64)", - regex: "^.*$", - type: "text", - containerClass: "z-0", - pattern: "^.*$", - inpType: "input", - name: "Key data (base64)", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Key data encoded in base64.", - }, - ], - }, - }, - checksum: null, - }, - { - id: "db", - stream: "yes", - name: "DB", - description: "Integrate easily the Database.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - DATABASE_URI: { - context: "global", - default: "sqlite:////var/lib/bunkerweb/db.sqlite3", - help: "The database URI, following the sqlalchemy format.", - id: "database-uri", - label: "The database URI", - regex: - "^((postgresql|mysql|mariadb|sqlite)(\\+[\\w\\-]+)?:.+)?$", - type: "text", - containerClass: "z-2", - pattern: - "^((postgresql|mysql|mariadb|sqlite)(\\+[\\w\\-]+)?:.+)?$", - inpType: "input", - name: "The database URI", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "sqlite:////var/lib/bunkerweb/db.sqlite3", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "The database URI, following the sqlalchemy format.", - }, - ], - }, - DATABASE_URI_READONLY: { - context: "global", - default: "", - help: "The database URI for read-only operations, it can also serve as a fallback if the main database is down. Following the sqlalchemy format.", - id: "database-uri-readonly", - label: "The database URI for read-only operations", - regex: - "^((postgresql|mysql|mariadb|sqlite)(\\+[\\w\\-]+)?:.+)?$", - type: "text", - containerClass: "z-1", - pattern: - "^((postgresql|mysql|mariadb|sqlite)(\\+[\\w\\-]+)?:.+)?$", - inpType: "input", - name: "The database URI for read-only operations", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "The database URI for read-only operations, it can also serve as a fallback if the main database is down. Following the sqlalchemy format.", - }, - ], - }, - DATABASE_LOG_LEVEL: { - context: "global", - default: "warning", - help: "The level to use for database logs.", - id: "database-log-level", - label: "Database log level", - regex: "^(debug|info|warn|warning|error)$", - type: "select", - containerClass: "z-0", - pattern: "^(debug|info|warn|warning|error)$", - inpType: "select", - name: "Database log level", - values: ["debug", "error", "info", "warn", "warning"], - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "warning", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "The level to use for database logs.", - }, - ], - }, - }, - checksum: null, - }, - { - id: "dnsbl", - stream: "yes", - name: "DNSBL", - description: "Deny access based on external DNSBL servers.", - version: "1.0", - type: "core", - method: "manual", - page: true, - settings: { - USE_DNSBL: { - context: "multisite", - default: "yes", - help: "Activate DNSBL feature.", - id: "use-dnsbl", - label: "Activate DNSBL", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-1", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Activate DNSBL", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Activate DNSBL feature.", - }, - ], - }, - DNSBL_LIST: { - context: "global", - default: - "bl.blocklist.de problems.dnsbl.sorbs.net sbl.spamhaus.org xbl.spamhaus.org", - help: "List of DNSBL servers.", - id: "dnsbl-list", - label: "DNSBL list", - regex: "^(?! )( ?((?!\\.)[\\w.]+)(?!.*\\2(?!.)))*$", - type: "text", - containerClass: "z-0", - pattern: "^(?! )( ?((?!\\.)[\\w.]+)(?!.*\\2(?!.)))*$", - inpType: "input", - name: "DNSBL list", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: - "bl.blocklist.de problems.dnsbl.sorbs.net sbl.spamhaus.org xbl.spamhaus.org", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "List of DNSBL servers.", - }, - ], - }, - }, - checksum: null, - }, - { - id: "errors", - stream: "no", - name: "Errors", - description: "Manage default error pages", - version: "1.0", - type: "core", - method: "manual", - page: true, - settings: { - ERRORS: { - context: "multisite", - default: "", - help: "List of HTTP error code and corresponding error pages, separated with spaces (404=/my404.html 403=/errors/403.html ...).", - id: "errors", - label: "Errors", - regex: - "^(?! )( ?([1-5]\\d{2})(?!.*\\2(?![^=]))=(\\/[\\w\\].~:\\/?#\\[@!$\\&'\\(\\)*+,;=\\-]*)(?!.*\\3(?!.)))*$", - type: "text", - containerClass: "z-1", - pattern: - "^(?! )( ?([1-5]\\d{2})(?!.*\\2(?![^=]))=(\\/[\\w\\].~:\\/?#\\[@!$\\&'\\(\\)*+,;=\\-]*)(?!.*\\3(?!.)))*$", - inpType: "input", - name: "Errors", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: true, - value: "", - popovers: [ - { - iconName: "trespass", - text: "inp_popover_method_disabled", - }, - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "List of HTTP error code and corresponding error pages, separated with spaces (404=/my404.html 403=/errors/403.html ...).", - }, - ], - }, - INTERCEPTED_ERROR_CODES: { - context: "multisite", - default: - "400 401 403 404 405 413 429 500 501 502 503 504", - help: "List of HTTP error code intercepted by BunkerWeb", - id: "intercepted-error-codes", - label: "Intercepted error codes", - regex: "^( *([1-5]\\d{2})(?!.*\\2) *)+$", - type: "text", - containerClass: "z-0", - pattern: "^( *([1-5]\\d{2})(?!.*\\2) *)+$", - inpType: "input", - name: "Intercepted error codes", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "400 401 403 404 405 413 429 500 501 502 503 504", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "List of HTTP error code intercepted by BunkerWeb", - }, - ], - }, - }, - checksum: null, - }, - { - id: "greylist", - stream: "partial", - name: "Greylist", - description: - "Allow access while keeping security features based on internal and external IP/network/rDNS/ASN greylists.", - version: "1.0", - type: "core", - method: "manual", - page: true, - settings: { - USE_GREYLIST: { - context: "multisite", - default: "no", - help: "Activate greylist feature.", - id: "use-greylist", - label: "Activate greylisting", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-11", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Activate greylisting", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Activate greylist feature.", - }, - ], - }, - GREYLIST_IP: { - context: "multisite", - default: "", - help: "List of IP/network, separated with spaces, to put into the greylist.", - id: "greylist-ip", - label: "Greylist IP/network", - regex: - "^(?! )( *(((\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3})(\\/([1-2][0-9]?|3[0-2]?|[04-9]))?|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d))(\\/(12[0-8]|1[01][0-9]|[0-9][0-9]?))?)(?!.*\\D\\2([^\\d\\/]|$)) *)*$", - type: "text", - containerClass: "z-10", - pattern: - "^(?! )( *(((\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3})(\\/([1-2][0-9]?|3[0-2]?|[04-9]))?|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d))(\\/(12[0-8]|1[01][0-9]|[0-9][0-9]?))?)(?!.*\\D\\2([^\\d\\/]|$)) *)*$", - inpType: "input", - name: "Greylist IP/network", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "List of IP/network, separated with spaces, to put into the greylist.", - }, - ], - }, - GREYLIST_RDNS: { - context: "multisite", - default: "", - help: "List of reverse DNS suffixes, separated with spaces, to put into the greylist.", - id: "greylist-rdns", - label: "Greylist reverse DNS", - regex: "^( *(([^ ]+)(?!.*\\3( |$))) *)*$", - type: "text", - containerClass: "z-9", - pattern: "^( *(([^ ]+)(?!.*\\3( |$))) *)*$", - inpType: "input", - name: "Greylist reverse DNS", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "List of reverse DNS suffixes, separated with spaces, to put into the greylist.", - }, - ], - }, - GREYLIST_RDNS_GLOBAL: { - context: "multisite", - default: "yes", - help: "Only perform RDNS greylist checks on global IP addresses.", - id: "greylist-rdns-global", - label: "Greylist reverse DNS global IPs", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-8", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Greylist reverse DNS global IPs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Only perform RDNS greylist checks on global IP addresses.", - }, - ], - }, - GREYLIST_ASN: { - context: "multisite", - default: "", - help: "List of ASN numbers, separated with spaces, to put into the greylist.", - id: "greylist-asn", - label: "Greylist ASN", - regex: "^^( *((ASN?)?(\\d+)\\b(?!.*[SN ]\\4\\b)) *)*$", - type: "text", - containerClass: "z-7", - pattern: "^^( *((ASN?)?(\\d+)\\b(?!.*[SN ]\\4\\b)) *)*$", - inpType: "input", - name: "Greylist ASN", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "List of ASN numbers, separated with spaces, to put into the greylist.", - }, - ], - }, - GREYLIST_USER_AGENT: { - context: "multisite", - default: "", - help: "List of User-Agent (PCRE regex), separated with spaces, to put into the greylist.", - id: "greylist-user-agent", - label: "Greylist User-Agent", - regex: "^.*$", - type: "text", - containerClass: "z-6", - pattern: "^.*$", - inpType: "input", - name: "Greylist User-Agent", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "List of User-Agent (PCRE regex), separated with spaces, to put into the greylist.", - }, - ], - }, - GREYLIST_URI: { - context: "multisite", - default: "", - help: "List of URI (PCRE regex), separated with spaces, to put into the greylist.", - id: "greylist-uri", - label: "Greylist URI", - regex: "^.*$", - type: "text", - containerClass: "z-5", - pattern: "^.*$", - inpType: "input", - name: "Greylist URI", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "List of URI (PCRE regex), separated with spaces, to put into the greylist.", - }, - ], - }, - GREYLIST_IP_URLS: { - context: "global", - default: "", - help: "List of URLs, separated with spaces, containing good IP/network to put into the greylist.", - id: "greylist-ip-urls", - label: "Greylist IP/network URLs", - regex: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - type: "text", - containerClass: "z-4", - pattern: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - inpType: "input", - name: "Greylist IP/network URLs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "List of URLs, separated with spaces, containing good IP/network to put into the greylist.", - }, - ], - }, - GREYLIST_RDNS_URLS: { - context: "global", - default: "", - help: "List of URLs, separated with spaces, containing reverse DNS suffixes to put into the greylist.", - id: "greylist-rdns-urls", - label: "Greylist reverse DNS URLs", - regex: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - type: "text", - containerClass: "z-3", - pattern: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - inpType: "input", - name: "Greylist reverse DNS URLs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "List of URLs, separated with spaces, containing reverse DNS suffixes to put into the greylist.", - }, - ], - }, - GREYLIST_ASN_URLS: { - context: "global", - default: "", - help: "List of URLs, separated with spaces, containing ASN to put into the greylist.", - id: "greylist-asn-urls", - label: "Greylist ASN URLs", - regex: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - type: "text", - containerClass: "z-2", - pattern: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - inpType: "input", - name: "Greylist ASN URLs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "List of URLs, separated with spaces, containing ASN to put into the greylist.", - }, - ], - }, - GREYLIST_USER_AGENT_URLS: { - context: "global", - default: "", - help: "List of URLs, separated with spaces, containing good User-Agent to put into the greylist.", - id: "greylist-user-agent-urls", - label: "Greylist User-Agent URLs", - regex: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - type: "text", - containerClass: "z-1", - pattern: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - inpType: "input", - name: "Greylist User-Agent URLs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "List of URLs, separated with spaces, containing good User-Agent to put into the greylist.", - }, - ], - }, - GREYLIST_URI_URLS: { - context: "global", - default: "", - help: "List of URLs, separated with spaces, containing bad URI to put into the greylist.", - id: "greylist-uri-urls", - label: "Greylist URI URLs", - regex: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - type: "text", - containerClass: "z-0", - pattern: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - inpType: "input", - name: "Greylist URI URLs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "List of URLs, separated with spaces, containing bad URI to put into the greylist.", - }, - ], - }, - }, - checksum: null, - }, - { - id: "gzip", - stream: "no", - name: "Gzip", - description: - "Compress HTTP requests with the gzip algorithm.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - USE_GZIP: { - context: "multisite", - default: "no", - help: "Use gzip", - id: "use-gzip", - label: "Use gzip", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-4", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Use gzip", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "dsfrgrdgrdgrdhgd", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Use gzip", - }, - ], - }, - GZIP_TYPES: { - context: "multisite", - default: - "application/atom+xml application/javascript application/json application/rss+xml application/vnd.ms-fontobject application/x-font-opentype application/x-font-truetype application/x-font-ttf application/x-javascript application/xhtml+xml application/xml font/eot font/opentype font/otf font/truetype image/svg+xml image/vnd.microsoft.icon image/x-icon image/x-win-bitmap text/css text/javascript text/plain text/xml", - help: "List of MIME types that will be compressed with gzip.", - id: "gzip-types", - label: "MIME types", - regex: - "^(?! )( ?([\\-\\w.]+/[\\-\\w.+]+)(?!.*\\2(?!.)))+$", - type: "text", - containerClass: "z-3", - pattern: - "^(?! )( ?([\\-\\w.]+/[\\-\\w.+]+)(?!.*\\2(?!.)))+$", - inpType: "input", - name: "MIME types", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: - "application/atom+xml application/javascript application/json application/rss+xml application/vnd.ms-fontobject application/x-font-opentype application/x-font-truetype application/x-font-ttf application/x-javascript application/xhtml+xml application/xml font/eot font/opentype font/otf font/truetype image/svg+xml image/vnd.microsoft.icon image/x-icon image/x-win-bitmap text/css text/javascript text/plain text/xml", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "List of MIME types that will be compressed with gzip.", - }, - ], - }, - GZIP_MIN_LENGTH: { - context: "multisite", - default: "1000", - help: "Minimum length for gzip compression.", - id: "gzip-min-length", - label: "Minimum length", - regex: "^\\d+$", - type: "text", - containerClass: "z-2", - pattern: "^\\d+$", - inpType: "input", - name: "Minimum length", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "1000", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Minimum length for gzip compression.", - }, - ], - }, - GZIP_COMP_LEVEL: { - context: "multisite", - default: "5", - help: "The compression level of the gzip algorithm.", - id: "gzip-comp-level", - label: "Compression level", - regex: "^[1-9]$", - type: "select", - containerClass: "z-1", - pattern: "^[1-9]$", - inpType: "select", - name: "Compression level", - values: ["1", "2", "3", "4", "5", "6", "7", "8", "9"], - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "5", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "The compression level of the gzip algorithm.", - }, - ], - }, - GZIP_PROXIED: { - context: "multisite", - default: "no-cache no-store private expired auth", - help: "Which kind of proxied requests we should compress.", - id: "gzip-proxied", - label: "Proxied requests", - regex: "^.*$", - type: "text", - containerClass: "z-0", - pattern: "^.*$", - inpType: "input", - name: "Proxied requests", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no-cache no-store private expired auth", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Which kind of proxied requests we should compress.", - }, - ], - }, - }, - checksum: null, - }, - { - id: "inject", - stream: "no", - name: "HTML injection", - description: - "Inject custom HTML code before the tag.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - INJECT_BODY: { - context: "multisite", - default: "", - help: "The HTML code to inject.", - id: "inject-body", - label: "HTML code", - regex: "^.*$", - type: "text", - containerClass: "z-0", - pattern: "^.*$", - inpType: "input", - name: "HTML code", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "The HTML code to inject.", - }, - ], - }, - }, - checksum: null, - }, - { - id: "headers", - stream: "no", - name: "Headers", - description: "Manage HTTP headers sent to clients.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - CUSTOM_HEADER: { - context: "multisite", - default: "", - help: "Custom header to add (HeaderName: HeaderValue).", - id: "custom-header", - label: "Custom header (HeaderName: HeaderValue)", - regex: "^([\\w\\-]+: .+)?$", - type: "text", - multiple: "custom-headers", - containerClass: "z-13", - pattern: "^([\\w\\-]+: .+)?$", - inpType: "input", - name: "Custom header (HeaderName: HeaderValue)", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Custom header to add (HeaderName: HeaderValue).", - }, - ], - }, - REMOVE_HEADERS: { - context: "multisite", - default: - "Server Expect-CT X-Powered-By X-AspNet-Version X-AspNetMvc-Version", - help: "Headers to remove (Header1 Header2 Header3 ...)", - id: "remove-headers", - label: "Remove headers", - regex: "^(?! )( ?[\\w\\-]+)*$", - type: "text", - containerClass: "z-12", - pattern: "^(?! )( ?[\\w\\-]+)*$", - inpType: "input", - name: "Remove headers", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: - "Server Expect-CT X-Powered-By X-AspNet-Version X-AspNetMvc-Version", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Headers to remove (Header1 Header2 Header3 ...)", - }, - ], - }, - KEEP_UPSTREAM_HEADERS: { - context: "multisite", - default: - "Content-Security-Policy Permissions-Policy Feature-Policy X-Frame-Options", - help: "Headers to keep from upstream (Header1 Header2 Header3 ... or * for all).", - id: "keep-upstream-headers", - label: "Keep upstream headers", - regex: "^((?! )( ?[\\w\\-]+)+|\\*)?$", - type: "text", - containerClass: "z-11", - pattern: "^((?! )( ?[\\w\\-]+)+|\\*)?$", - inpType: "input", - name: "Keep upstream headers", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: - "Content-Security-Policy Permissions-Policy Feature-Policy X-Frame-Options", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Headers to keep from upstream (Header1 Header2 Header3 ... or * for all).", - }, - ], - }, - STRICT_TRANSPORT_SECURITY: { - context: "multisite", - default: "max-age=31536000", - help: "Value for the Strict-Transport-Security header.", - id: "strict-transport-security", - label: "Strict-Transport-Security", - regex: "^max-age=\\d+(; includeSubDomains(; preload)?)?$", - type: "text", - containerClass: "z-10", - pattern: - "^max-age=\\d+(; includeSubDomains(; preload)?)?$", - inpType: "input", - name: "Strict-Transport-Security", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "max-age=31536000", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Value for the Strict-Transport-Security header.", - }, - ], - }, - COOKIE_FLAGS: { - context: "multisite", - default: "* HttpOnly SameSite=Lax", - help: "Cookie flags automatically added to all cookies (value accepted for nginx_cookie_flag_module).", - id: "cookie-flags", - label: "Cookie flags", - regex: - "^(\\*|[^;]+)( (HttpOnly|(SameSite)(?!.*\\4)(=(Lax|Strict))?)(?!.*\\3))*$", - type: "text", - multiple: "cookie-flags", - containerClass: "z-9", - pattern: - "^(\\*|[^;]+)( (HttpOnly|(SameSite)(?!.*\\4)(=(Lax|Strict))?)(?!.*\\3))*$", - inpType: "input", - name: "Cookie flags", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "* HttpOnly SameSite=Lax", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Cookie flags automatically added to all cookies (value accepted for nginx_cookie_flag_module).", - }, - ], - }, - COOKIE_AUTO_SECURE_FLAG: { - context: "multisite", - default: "yes", - help: "Automatically add the Secure flag to all cookies.", - id: "cookie-auto-secure-flag", - label: "Cookie auto Secure flag", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-8", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Cookie auto Secure flag", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Automatically add the Secure flag to all cookies.", - }, - ], - }, - CONTENT_SECURITY_POLICY: { - context: "multisite", - default: - "object-src 'none'; form-action 'self'; frame-ancestors 'self';", - help: "Value for the Content-Security-Policy header.", - id: "content-security-policy", - label: "Content-Security-Policy", - regex: "^.*$", - type: "text", - containerClass: "z-7", - pattern: "^.*$", - inpType: "input", - name: "Content-Security-Policy", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: - "object-src 'none'; form-action 'self'; frame-ancestors 'self';", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Value for the Content-Security-Policy header.", - }, - ], - }, - CONTENT_SECURITY_POLICY_REPORT_ONLY: { - context: "multisite", - default: "no", - help: "Send reports for violations of the Content-Security-Policy header instead of blocking them.", - id: "content-security-policy-report-only", - label: "Content-Security-Policy-Report-Only", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-6", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Content-Security-Policy-Report-Only", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Send reports for violations of the Content-Security-Policy header instead of blocking them.", - }, - ], - }, - REFERRER_POLICY: { - context: "multisite", - default: "strict-origin-when-cross-origin", - help: "Value for the Referrer-Policy header.", - id: "referrer-policy", - label: "Referrer-Policy", - regex: - "^(?!^(,| ))((, )?(no-referrer-when-downgrade|no-referrer|origin-when-cross-origin|same-origin|strict-origin-when-cross-origin|strict-origin|origin|unsafe-url)(?!\\b.*, \\4\\b))*$", - type: "text", - containerClass: "z-5", - pattern: - "^(?!^(,| ))((, )?(no-referrer-when-downgrade|no-referrer|origin-when-cross-origin|same-origin|strict-origin-when-cross-origin|strict-origin|origin|unsafe-url)(?!\\b.*, \\4\\b))*$", - inpType: "input", - name: "Referrer-Policy", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "strict-origin-when-cross-origin", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Value for the Referrer-Policy header.", - }, - ], - }, - PERMISSIONS_POLICY: { - context: "multisite", - default: - "accelerometer=(), ambient-light-sensor=(), autoplay=(), battery=(), camera=(), cross-origin-isolated=(), display-capture=(), document-domain=(), encrypted-media=(), execution-while-not-rendered=(), execution-while-out-of-viewport=(), fullscreen=(), geolocation=(), gyroscope=(), hid=(), idle-detection=(), magnetometer=(), microphone=(), midi=(), navigation-override=(), payment=(), picture-in-picture=(), publickey-credentials-get=(), screen-wake-lock=(), serial=(), usb=(), web-share=(), xr-spatial-tracking=()", - help: "Value for the Permissions-Policy header.", - id: "permissions-policy", - label: "Permissions-Policy", - regex: - "^(?![, ])(,? ?([a-z\\-]+)(?!.*[^\\-]\\2=)=(\\*|\\(( ?(self|\\u0022https?:\\/\\/[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*\\u0022)(?=[ \\)]))*\\)))*$", - type: "text", - containerClass: "z-4", - pattern: - "^(?![, ])(,? ?([a-z\\-]+)(?!.*[^\\-]\\2=)=(\\*|\\(( ?(self|\\u0022https?:\\/\\/[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*\\u0022)(?=[ \\)]))*\\)))*$", - inpType: "input", - name: "Permissions-Policy", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: - "accelerometer=(), ambient-light-sensor=(), autoplay=(), battery=(), camera=(), cross-origin-isolated=(), display-capture=(), document-domain=(), encrypted-media=(), execution-while-not-rendered=(), execution-while-out-of-viewport=(), fullscreen=(), geolocation=(), gyroscope=(), hid=(), idle-detection=(), magnetometer=(), microphone=(), midi=(), navigation-override=(), payment=(), picture-in-picture=(), publickey-credentials-get=(), screen-wake-lock=(), serial=(), usb=(), web-share=(), xr-spatial-tracking=()", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Value for the Permissions-Policy header.", - }, - ], - }, - FEATURE_POLICY: { - context: "multisite", - default: - "accelerometer 'none'; ambient-light-sensor 'none'; autoplay 'none'; battery 'none'; camera 'none'; display-capture 'none'; document-domain 'none'; encrypted-media 'none'; execution-while-not-rendered 'none'; execution-while-out-of-viewport 'none'; fullscreen 'none'; geolocation 'none'; gyroscope 'none'; layout-animation 'none'; legacy-image-formats 'none'; magnetometer 'none'; microphone 'none'; midi 'none'; navigation-override 'none'; payment 'none'; picture-in-picture 'none'; publickey-credentials-get 'none'; speaker-selection 'none'; sync-xhr 'none'; unoptimized-images 'none'; unsized-media 'none'; usb 'none'; screen-wake-lock 'none'; web-share 'none'; xr-spatial-tracking 'none';", - help: "Value for the Feature-Policy header.", - id: "feature-policy", - label: "Feature-Policy", - regex: - "^(?![; ])( ?([\\w\\-]+)(?!.*[^\\-]\\2 )( ('(none|self|strict-dynamic|report-sample|unsafe-inline|unsafe-eval|unsafe-hashes|unsafe-allow-redirects)'|https?:\\/\\/[\\w@:%.+~#=\\-]+[\\w\\(\\)!@:%+.~#?&\\/=$\\-]*))+;)*$", - type: "text", - containerClass: "z-3", - pattern: - "^(?![; ])( ?([\\w\\-]+)(?!.*[^\\-]\\2 )( ('(none|self|strict-dynamic|report-sample|unsafe-inline|unsafe-eval|unsafe-hashes|unsafe-allow-redirects)'|https?:\\/\\/[\\w@:%.+~#=\\-]+[\\w\\(\\)!@:%+.~#?&\\/=$\\-]*))+;)*$", - inpType: "input", - name: "Feature-Policy", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: - "accelerometer 'none'; ambient-light-sensor 'none'; autoplay 'none'; battery 'none'; camera 'none'; display-capture 'none'; document-domain 'none'; encrypted-media 'none'; execution-while-not-rendered 'none'; execution-while-out-of-viewport 'none'; fullscreen 'none'; geolocation 'none'; gyroscope 'none'; layout-animation 'none'; legacy-image-formats 'none'; magnetometer 'none'; microphone 'none'; midi 'none'; navigation-override 'none'; payment 'none'; picture-in-picture 'none'; publickey-credentials-get 'none'; speaker-selection 'none'; sync-xhr 'none'; unoptimized-images 'none'; unsized-media 'none'; usb 'none'; screen-wake-lock 'none'; web-share 'none'; xr-spatial-tracking 'none';", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Value for the Feature-Policy header.", - }, - ], - }, - X_FRAME_OPTIONS: { - context: "multisite", - default: "SAMEORIGIN", - help: "Value for the X-Frame-Options header.", - id: "x-frame-options", - label: "X-Frame-Options", - regex: "^(DENY|SAMEORIGIN)?$", - type: "select", - containerClass: "z-2", - pattern: "^(DENY|SAMEORIGIN)?$", - inpType: "select", - name: "X-Frame-Options", - values: ["", "DENY", "SAMEORIGIN"], - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "SAMEORIGIN", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Value for the X-Frame-Options header.", - }, - ], - }, - X_CONTENT_TYPE_OPTIONS: { - context: "multisite", - default: "nosniff", - help: "Value for the X-Content-Type-Options header.", - id: "x-content-type-options", - label: "X-Content-Type-Options", - regex: "^(nosniff)?$", - type: "select", - containerClass: "z-1", - pattern: "^(nosniff)?$", - inpType: "select", - name: "X-Content-Type-Options", - values: ["", "nosniff"], - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "nosniff", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Value for the X-Content-Type-Options header.", - }, - ], - }, - X_XSS_PROTECTION: { - context: "multisite", - default: "1; mode=block", - help: "Value for the X-XSS-Protection header.", - id: "x-xss-protection", - label: "X-XSS-Protection", - regex: - "^0|1(; (mode=block|report=https?:\\/\\/[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*))?$", - type: "text", - containerClass: "z-0", - pattern: - "^0|1(; (mode=block|report=https?:\\/\\/[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*))?$", - inpType: "input", - name: "X-XSS-Protection", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "1; mode=block", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Value for the X-XSS-Protection header.", - }, - ], - }, - }, - checksum: null, - }, - { - id: "jobs", - stream: "yes", - name: "Jobs", - description: "Fake core plugin for internal jobs.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: {}, - checksum: null, - }, - { - id: "letsencrypt", - stream: "yes", - name: "Let's Encrypt", - description: - "Automatic creation, renewal and configuration of Let's Encrypt certificates.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - AUTO_LETS_ENCRYPT: { - context: "multisite", - default: "no", - help: "Activate automatic Let's Encrypt mode.", - id: "auto-lets-encrypt", - label: "Automatic Let's Encrypt", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-3", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Automatic Let's Encrypt", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Activate automatic Let's Encrypt mode.", - }, - ], - }, - EMAIL_LETS_ENCRYPT: { - context: "multisite", - default: "", - help: "Email used for Let's Encrypt notification and in certificate.", - id: "email-lets-encrypt", - label: "Email Let's Encrypt", - regex: - "^([^@ \\t\\r\\n]+@[^@ \\t\\r\\n]+\\.[^@ \\t\\r\\n]+)?$", - type: "text", - containerClass: "z-2", - pattern: - "^([^@ \\t\\r\\n]+@[^@ \\t\\r\\n]+\\.[^@ \\t\\r\\n]+)?$", - inpType: "input", - name: "Email Let's Encrypt", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Email used for Let's Encrypt notification and in certificate.", - }, - ], - }, - USE_LETS_ENCRYPT_STAGING: { - context: "multisite", - default: "no", - help: "Use the staging environment for Let\u2019s Encrypt certificate generation. Useful when you are testing your deployments to avoid being rate limited in the production environment.", - id: "use-lets-encrypt-staging", - label: "Use Let's Encrypt Staging", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-1", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Use Let's Encrypt Staging", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Use the staging environment for Let\u2019s Encrypt certificate generation. Useful when you are testing your deployments to avoid being rate limited in the production environment.", - }, - ], - }, - LETS_ENCRYPT_CLEAR_OLD_CERTS: { - context: "global", - default: "no", - help: "Clear old certificates when renewing.", - id: "lets-encrypt-clear-old-certs", - label: - "Clear old certificates when they are no longer needed", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-0", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Clear old certificates when they are no longer needed", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Clear old certificates when renewing.", - }, - ], - }, - }, - checksum: null, - }, - { - id: "limit", - stream: "partial", - name: "Limit", - description: - "Limit maximum number of requests and connections.", - version: "1.0", - type: "core", - method: "manual", - page: true, - settings: { - USE_LIMIT_REQ: { - context: "multisite", - default: "yes", - help: "Activate limit requests feature.", - id: "use-limit-req", - label: "Activate limit requests", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-6", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Activate limit requests", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Activate limit requests feature.", - }, - ], - }, - LIMIT_REQ_URL: { - context: "multisite", - default: "/", - help: "URL (PCRE regex) where the limit request will be applied or special value / for all requests.", - id: "limit-req-url", - label: "Limit request URL", - regex: "^.+$", - type: "text", - multiple: "limit-req", - containerClass: "z-5", - pattern: "^.+$", - inpType: "input", - name: "Limit request URL", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "/", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "URL (PCRE regex) where the limit request will be applied or special value / for all requests.", - }, - ], - }, - LIMIT_REQ_RATE: { - context: "multisite", - default: "2r/s", - help: "Rate to apply to the URL (s for second, m for minute, h for hour and d for day).", - id: "limit-req-rate", - label: "Limit request Rate", - regex: "^\\d+r/[smhd]$", - type: "text", - multiple: "limit-req", - containerClass: "z-4", - pattern: "^\\d+r/[smhd]$", - inpType: "input", - name: "Limit request Rate", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "2r/s", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Rate to apply to the URL (s for second, m for minute, h for hour and d for day).", - }, - ], - }, - USE_LIMIT_CONN: { - context: "multisite", - default: "yes", - help: "Activate limit connections feature.", - id: "use-limit-conn", - label: "Activate limit connections", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-3", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Activate limit connections", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Activate limit connections feature.", - }, - ], - }, - LIMIT_CONN_MAX_HTTP1: { - context: "multisite", - default: "10", - help: "Maximum number of connections per IP when using HTTP/1.X protocol.", - id: "limit-conn-max-http1", - label: "Maximum number of HTTP/1.X connections", - regex: "^\\d+$", - type: "text", - containerClass: "z-2", - pattern: "^\\d+$", - inpType: "input", - name: "Maximum number of HTTP/1.X connections", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "10", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Maximum number of connections per IP when using HTTP/1.X protocol.", - }, - ], - }, - LIMIT_CONN_MAX_HTTP2: { - context: "multisite", - default: "100", - help: "Maximum number of streams per IP when using HTTP/2 protocol.", - id: "limit-conn-max-http2", - label: "Maximum number of HTTP/2 streams", - regex: "^\\d+$", - type: "text", - containerClass: "z-1", - pattern: "^\\d+$", - inpType: "input", - name: "Maximum number of HTTP/2 streams", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "100", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Maximum number of streams per IP when using HTTP/2 protocol.", - }, - ], - }, - LIMIT_CONN_MAX_STREAM: { - context: "multisite", - default: "10", - help: "Maximum number of connections per IP when using stream.", - id: "limit-conn-max-stream", - label: "Maximum number of stream connections", - regex: "^\\d+$", - type: "text", - containerClass: "z-0", - pattern: "^\\d+$", - inpType: "input", - name: "Maximum number of stream connections", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "10", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Maximum number of connections per IP when using stream.", - }, - ], - }, - }, - checksum: null, - }, - { - id: "metrics", - stream: "partial", - name: "Metrics", - description: "Metrics collection and retrieve.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - USE_METRICS: { - context: "multisite", - default: "yes", - help: "Enable collection and retrieval of internal metrics.", - id: "use-metrics", - label: "Use metrics", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-2", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Use metrics", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Enable collection and retrieval of internal metrics.", - }, - ], - }, - METRICS_MEMORY_SIZE: { - context: "global", - default: "16m", - help: "Size of the internal storage for metrics.", - id: "metrics-memory-size", - label: "Metrics memory size", - regex: "^\\d+[kKmMgG]?$", - type: "text", - containerClass: "z-1", - pattern: "^\\d+[kKmMgG]?$", - inpType: "input", - name: "Metrics memory size", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "16m", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Size of the internal storage for metrics.", - }, - ], - }, - METRICS_MAX_BLOCKED_REQUESTS: { - context: "global", - default: "100", - help: "Maximum number of blocked requests to store (per worker).", - id: "metrics-max-blocked-requests", - label: "Metrics max blocked requests", - regex: "^\\d+$", - type: "text", - containerClass: "z-0", - pattern: "^\\d+$", - inpType: "input", - name: "Metrics max blocked requests", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "100", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Maximum number of blocked requests to store (per worker).", - }, - ], - }, - }, - checksum: null, - }, - { - id: "misc", - stream: "partial", - name: "Miscellaneous", - description: "Miscellaneous settings.", - version: "1.0", - type: "core", - method: "manual", - page: true, - settings: { - DISABLE_DEFAULT_SERVER: { - context: "global", - default: "no", - help: "Deny HTTP request if the request vhost is unknown.", - id: "disable-default-server", - label: "Disable default server", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-20", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Disable default server", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Deny HTTP request if the request vhost is unknown.", - }, - ], - }, - DISABLE_DEFAULT_SERVER_STRICT_SNI: { - context: "global", - default: "no", - help: "Close SSL/TLS connection if the SNI is unknown.", - id: "disable-default-server-strict-sni", - label: "Disable default server strict SNI", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-19", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Disable default server strict SNI", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Close SSL/TLS connection if the SNI is unknown.", - }, - ], - }, - REDIRECT_HTTP_TO_HTTPS: { - context: "multisite", - default: "no", - help: "Redirect all HTTP request to HTTPS.", - id: "redirect-http-to-https", - label: "Redirect HTTP to HTTPS", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-18", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Redirect HTTP to HTTPS", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Redirect all HTTP request to HTTPS.", - }, - ], - }, - AUTO_REDIRECT_HTTP_TO_HTTPS: { - context: "multisite", - default: "yes", - help: "Try to detect if HTTPS is used and activate HTTP to HTTPS redirection if that's the case.", - id: "auto-redirect-http-to-https", - label: "Auto redirect HTTP to HTTPS", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-17", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Auto redirect HTTP to HTTPS", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Try to detect if HTTPS is used and activate HTTP to HTTPS redirection if that's the case.", - }, - ], - }, - ALLOWED_METHODS: { - context: "multisite", - default: "GET|POST|HEAD", - help: "Allowed HTTP and WebDAV methods, separated with pipes to be sent by clients.", - id: "allowed-methods", - label: "Allowed methods", - regex: "^(?!\\|)(\\|?([A-Z]{3,})(?!.*(^|\\|)\\2))+$", - type: "text", - containerClass: "z-16", - pattern: "^(?!\\|)(\\|?([A-Z]{3,})(?!.*(^|\\|)\\2))+$", - inpType: "input", - name: "Allowed methods", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "GET|POST|HEAD", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Allowed HTTP and WebDAV methods, separated with pipes to be sent by clients.", - }, - ], - }, - MAX_CLIENT_SIZE: { - context: "multisite", - default: "10m", - help: "Maximum body size (0 for infinite).", - id: "max-client-size", - label: "Maximum body size", - regex: "^\\d+[kKmMgG]?$", - type: "text", - containerClass: "z-15", - pattern: "^\\d+[kKmMgG]?$", - inpType: "input", - name: "Maximum body size", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "10m", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Maximum body size (0 for infinite).", - }, - ], - }, - SERVE_FILES: { - context: "multisite", - default: "yes", - help: "Serve files from the local folder.", - id: "serve-files", - label: "Serve files", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-14", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Serve files", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Serve files from the local folder.", - }, - ], - }, - ROOT_FOLDER: { - context: "multisite", - default: "", - help: "Root folder containing files to serve (/var/www/html/{server_name} if unset).", - id: "root-folder", - label: "Root folder", - regex: "^(/[\\w. \\-]+)*/?$", - type: "text", - containerClass: "z-13", - pattern: "^(/[\\w. \\-]+)*/?$", - inpType: "input", - name: "Root folder", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Root folder containing files to serve (/var/www/html/{server_name} if unset).", - }, - ], - }, - SSL_PROTOCOLS: { - context: "multisite", - default: "TLSv1.2 TLSv1.3", - help: "The supported version of TLS. We recommend the default value TLSv1.2 TLSv1.3 for compatibility reasons.", - id: "https-protocols", - label: "HTTPS protocols", - regex: "^(?! )( ?TLSv1\\.[0-3])*$", - type: "text", - containerClass: "z-12", - pattern: "^(?! )( ?TLSv1\\.[0-3])*$", - inpType: "input", - name: "HTTPS protocols", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "TLSv1.2 TLSv1.3", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "The supported version of TLS. We recommend the default value TLSv1.2 TLSv1.3 for compatibility reasons.", - }, - ], - }, - HTTP2: { - context: "multisite", - default: "yes", - help: "Support HTTP2 protocol when HTTPS is enabled.", - id: "http2", - label: "HTTP2", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-11", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "HTTP2", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Support HTTP2 protocol when HTTPS is enabled.", - }, - ], - }, - HTTP3: { - context: "multisite", - default: "no", - help: "Support HTTP3 protocol when HTTPS is enabled.", - id: "http3", - label: "HTTP3", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-10", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "HTTP3", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Support HTTP3 protocol when HTTPS is enabled.", - }, - ], - }, - HTTP3_ALT_SVC_PORT: { - context: "multisite", - default: "443", - help: "HTTP3 alternate service port. This value will be used as part of the Alt-Svc header.", - id: "http3-alt-svc-port", - label: "HTTP3 Alt-Svc port", - regex: "^\\d+$", - type: "text", - containerClass: "z-9", - pattern: "^\\d+$", - inpType: "input", - name: "HTTP3 Alt-Svc port", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "443", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "HTTP3 alternate service port. This value will be used as part of the Alt-Svc header.", - }, - ], - }, - LISTEN_HTTP: { - context: "multisite", - default: "yes", - help: "Respond to (insecure) HTTP requests.", - id: "http-listen", - label: "HTTP listen", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-8", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "HTTP listen", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Respond to (insecure) HTTP requests.", - }, - ], - }, - USE_OPEN_FILE_CACHE: { - context: "multisite", - default: "no", - help: "Enable open file cache feature", - id: "use-open-file-cache", - label: "Use open file cache", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-7", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Use open file cache", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Enable open file cache feature", - }, - ], - }, - OPEN_FILE_CACHE: { - context: "multisite", - default: "max=1000 inactive=20s", - help: "Open file cache directive", - id: "open-file-cache", - label: "Use open file cache", - regex: "^(off|max=\\d+( inactive=\\d+(ms?|[shdwMy]))?)$", - type: "text", - containerClass: "z-6", - pattern: - "^(off|max=\\d+( inactive=\\d+(ms?|[shdwMy]))?)$", - inpType: "input", - name: "Use open file cache", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "max=1000 inactive=20s", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Open file cache directive", - }, - ], - }, - OPEN_FILE_CACHE_ERRORS: { - context: "multisite", - default: "yes", - help: "Enable open file cache for errors", - id: "open-file-cache-errors", - label: "Open file cache errors", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-5", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Open file cache errors", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Enable open file cache for errors", - }, - ], - }, - OPEN_FILE_CACHE_MIN_USES: { - context: "multisite", - default: "2", - help: "Enable open file cache minimum uses", - id: "open-file-cache-min-uses", - label: "Open file cache min uses", - regex: "^[1-9]\\d*$", - type: "text", - containerClass: "z-4", - pattern: "^[1-9]\\d*$", - inpType: "input", - name: "Open file cache min uses", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "2", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Enable open file cache minimum uses", - }, - ], - }, - OPEN_FILE_CACHE_VALID: { - context: "multisite", - default: "30s", - help: "Open file cache valid time", - id: "open-file-cache-valid", - label: "Open file cache valid time", - regex: "^\\d+(ms?|[shdwMy])$", - type: "text", - containerClass: "z-3", - pattern: "^\\d+(ms?|[shdwMy])$", - inpType: "input", - name: "Open file cache valid time", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "30s", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Open file cache valid time", - }, - ], - }, - EXTERNAL_PLUGIN_URLS: { - context: "global", - default: "", - help: "List of external plugins URLs (direct download to .zip or .tar file) to download and install (URLs are separated with space).", - id: "external-plugin-urls", - label: "External plugin URLs", - regex: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - type: "text", - containerClass: "z-2", - pattern: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - inpType: "input", - name: "External plugin URLs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "List of external plugins URLs (direct download to .zip or .tar file) to download and install (URLs are separated with space).", - }, - ], - }, - DENY_HTTP_STATUS: { - context: "global", - default: "403", - help: "HTTP status code to send when the request is denied (403 or 444). When using 444, BunkerWeb will close the connection.", - id: "deny-http-status", - label: "Deny HTTP status", - regex: "^(403|444)$", - type: "select", - containerClass: "z-1", - pattern: "^(403|444)$", - inpType: "select", - name: "Deny HTTP status", - values: ["403", "444"], - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "403", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "HTTP status code to send when the request is denied (403 or 444). When using 444, BunkerWeb will close the connection.", - }, - ], - }, - SEND_ANONYMOUS_REPORT: { - context: "global", - default: "yes", - help: "Send anonymous report to BunkerWeb maintainers.", - id: "send-anonymous-report", - label: "Send anonymous report", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-0", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Send anonymous report", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Send anonymous report to BunkerWeb maintainers.", - }, - ], - }, - }, - checksum: null, - }, - { - id: "modsecurity", - stream: "no", - name: "ModSecurity", - description: "Management of the ModSecurity WAF.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - USE_MODSECURITY: { - context: "multisite", - default: "yes", - help: "Enable ModSecurity WAF.", - id: "use-modsecurity", - label: "Use ModSecurity", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-5", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Use ModSecurity", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Enable ModSecurity WAF.", - }, - ], - }, - USE_MODSECURITY_CRS: { - context: "multisite", - default: "yes", - help: "Enable OWASP Core Rule Set.", - id: "use-modsecurity-crs", - label: "Use Core Rule Set", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-4", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Use Core Rule Set", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Enable OWASP Core Rule Set.", - }, - ], - }, - MODSECURITY_CRS_VERSION: { - context: "multisite", - default: "3", - help: "Version of the OWASP Core Rule Set to use with ModSecurity (3, 4 or nightly).", - id: "modsecurity-crs-version", - label: "Core Rule Set Version", - regex: "^(3|4|nightly)$", - type: "select", - containerClass: "z-3", - pattern: "^(3|4|nightly)$", - inpType: "select", - name: "Core Rule Set Version", - values: ["3", "4", "nightly"], - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "3", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Version of the OWASP Core Rule Set to use with ModSecurity (3, 4 or nightly).", - }, - ], - }, - MODSECURITY_SEC_AUDIT_ENGINE: { - context: "multisite", - default: "RelevantOnly", - help: "SecAuditEngine directive of ModSecurity.", - id: "modsecurity-sec-audit-engine", - label: "SecAuditEngine", - regex: "^(On|RelevantOnly|Off)$", - type: "select", - containerClass: "z-2", - pattern: "^(On|RelevantOnly|Off)$", - inpType: "select", - name: "SecAuditEngine", - values: ["Off", "On", "RelevantOnly"], - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "RelevantOnly", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "SecAuditEngine directive of ModSecurity.", - }, - ], - }, - MODSECURITY_SEC_RULE_ENGINE: { - context: "multisite", - default: "On", - help: "SecRuleEngine directive of ModSecurity.", - id: "modsecurity-sec-rule-engine", - label: "SecRuleEngine", - regex: "^(On|DetectionOnly|Off)$", - type: "select", - containerClass: "z-1", - pattern: "^(On|DetectionOnly|Off)$", - inpType: "select", - name: "SecRuleEngine", - values: ["DetectionOnly", "Off", "On"], - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "On", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "SecRuleEngine directive of ModSecurity.", - }, - ], - }, - MODSECURITY_SEC_AUDIT_LOG_PARTS: { - context: "multisite", - default: "ABCFHZ", - help: "SecAuditLogParts directive of ModSecurity.", - id: "modsecurity-sec-audit-log-parts", - label: "SecAuditLogParts", - regex: "^A(([B-K])(?!.*\\2))+Z$", - type: "text", - containerClass: "z-0", - pattern: "^A(([B-K])(?!.*\\2))+Z$", - inpType: "input", - name: "SecAuditLogParts", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "ABCFHZ", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "SecAuditLogParts directive of ModSecurity.", - }, - ], - }, - }, - checksum: null, - }, - { - id: "php", - stream: "no", - name: "PHP", - description: "Manage local or remote PHP-FPM.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - REMOTE_PHP: { - context: "multisite", - default: "", - help: "Hostname of the remote PHP-FPM instance.", - id: "remote-php", - label: "Remote PHP", - regex: - "^((?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\\.?)?$", - type: "text", - containerClass: "z-3", - pattern: - "^((?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\\.?)?$", - inpType: "input", - name: "Remote PHP", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Hostname of the remote PHP-FPM instance.", - }, - ], - }, - REMOTE_PHP_PATH: { - context: "multisite", - default: "", - help: "Root folder containing files in the remote PHP-FPM instance.", - id: "remote-php-path", - label: "Remote PHP path", - regex: "^(/[\\w. \\-]+)*/?$", - type: "text", - containerClass: "z-2", - pattern: "^(/[\\w. \\-]+)*/?$", - inpType: "input", - name: "Remote PHP path", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Root folder containing files in the remote PHP-FPM instance.", - }, - ], - }, - LOCAL_PHP: { - context: "multisite", - default: "", - help: "Path to the PHP-FPM socket file.", - id: "local", - label: "Local PHP", - regex: "^(/[\\w. \\-]+)*/?$", - type: "text", - containerClass: "z-1", - pattern: "^(/[\\w. \\-]+)*/?$", - inpType: "input", - name: "Local PHP", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Path to the PHP-FPM socket file.", - }, - ], - }, - LOCAL_PHP_PATH: { - context: "multisite", - default: "", - help: "Root folder containing files in the local PHP-FPM instance.", - id: "local-php-path", - label: "Local PHP path", - regex: "^(/[\\w. \\-]+)*/?$", - type: "text", - containerClass: "z-0", - pattern: "^(/[\\w. \\-]+)*/?$", - inpType: "input", - name: "Local PHP path", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Root folder containing files in the local PHP-FPM instance.", - }, - ], - }, - }, - checksum: null, - }, - { - id: "pro", - stream: "no", - name: "Pro", - description: "Pro settings for the Pro version of BunkerWeb.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - PRO_LICENSE_KEY: { - context: "global", - default: "", - help: "The License Key for the Pro version of BunkerWeb.", - id: "pro-license-key", - label: "Pro License Key", - regex: "^.*$", - type: "password", - containerClass: "z-0", - pattern: "^.*$", - inpType: "input", - name: "Pro License Key", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "The License Key for the Pro version of BunkerWeb.", - }, - ], - }, - }, - checksum: null, - }, - { - id: "realip", - stream: "partial", - name: "Real IP", - description: - "Get real IP of clients when BunkerWeb is behind a reverse proxy / load balancer.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - USE_REAL_IP: { - context: "multisite", - default: "no", - help: "Retrieve the real IP of client.", - id: "use-real-ip", - label: "Use real ip", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-5", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Use real ip", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Retrieve the real IP of client.", - }, - ], - }, - USE_PROXY_PROTOCOL: { - context: "multisite", - default: "no", - help: "Enable PROXY protocol communication.", - id: "use-proxy-protocol", - label: "Use PROXY protocol", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-4", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Use PROXY protocol", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Enable PROXY protocol communication.", - }, - ], - }, - REAL_IP_FROM: { - context: "multisite", - default: "192.168.0.0/16 172.16.0.0/12 10.0.0.0/8", - help: "List of trusted IPs / networks, separated with spaces, where proxied requests come from.", - id: "real-ip-from", - label: "Real IP from", - regex: - "^(?! )( *(((\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3})(\\/([1-2][0-9]?|3[0-2]?|[04-9]))?|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d))(\\/(12[0-8]|1[01][0-9]|[0-9][0-9]?))?)(?!.*\\D\\2([^\\d\\/]|$)) *)*$", - type: "text", - containerClass: "z-3", - pattern: - "^(?! )( *(((\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3})(\\/([1-2][0-9]?|3[0-2]?|[04-9]))?|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d))(\\/(12[0-8]|1[01][0-9]|[0-9][0-9]?))?)(?!.*\\D\\2([^\\d\\/]|$)) *)*$", - inpType: "input", - name: "Real IP from", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "192.168.0.0/16 172.16.0.0/12 10.0.0.0/8", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "List of trusted IPs / networks, separated with spaces, where proxied requests come from.", - }, - ], - }, - REAL_IP_HEADER: { - context: "multisite", - default: "X-Forwarded-For", - help: "HTTP header containing the real IP or special value proxy_protocol for PROXY protocol.", - id: "real-ip-header", - label: "Real IP header", - regex: - "^(?! )(( ?(?!proxy_protocol)[\\w\\-]+)*|proxy_protocol)$", - type: "text", - containerClass: "z-2", - pattern: - "^(?! )(( ?(?!proxy_protocol)[\\w\\-]+)*|proxy_protocol)$", - inpType: "input", - name: "Real IP header", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "X-Forwarded-For", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "HTTP header containing the real IP or special value proxy_protocol for PROXY protocol.", - }, - ], - }, - REAL_IP_RECURSIVE: { - context: "multisite", - default: "yes", - help: "Perform a recursive search in the header container IP address.", - id: "real-ip-recursive", - label: "Real IP recursive", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-1", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Real IP recursive", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Perform a recursive search in the header container IP address.", - }, - ], - }, - REAL_IP_FROM_URLS: { - context: "global", - default: "", - help: "List of URLs containing trusted IPs / networks, separated with spaces, where proxied requests come from.", - id: "real-ip-from-urls", - label: "Real IP from URLs", - regex: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - type: "text", - containerClass: "z-0", - pattern: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - inpType: "input", - name: "Real IP from URLs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "List of URLs containing trusted IPs / networks, separated with spaces, where proxied requests come from.", - }, - ], - }, - }, - checksum: null, - }, - { - id: "redirect", - stream: "no", - name: "Redirect", - description: "Manage HTTP redirects.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - REDIRECT_TO: { - context: "multisite", - default: "", - help: "Redirect a whole site to another one.", - id: "redirect-to", - label: "Redirect to", - regex: - "^(https?:\\/\\/[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)?$", - type: "text", - containerClass: "z-2", - pattern: - "^(https?:\\/\\/[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)?$", - inpType: "input", - name: "Redirect to", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Redirect a whole site to another one.", - }, - ], - }, - REDIRECT_TO_REQUEST_URI: { - context: "multisite", - default: "no", - help: "Append the requested URI to the redirect address.", - id: "redirect-to-request-uri", - label: "Append request URI", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-1", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Append request URI", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Append the requested URI to the redirect address.", - }, - ], - }, - REDIRECT_TO_STATUS_CODE: { - context: "multisite", - default: "301", - help: "Status code to send to client when redirecting.", - id: "redirect-to-status-code", - label: "Append request URI", - regex: "^(301|302)$", - type: "select", - containerClass: "z-0", - pattern: "^(301|302)$", - inpType: "select", - name: "Append request URI", - values: ["301", "302"], - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "301", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Status code to send to client when redirecting.", - }, - ], - }, - }, - checksum: null, - }, - { - id: "redis", - stream: "yes", - name: "Redis", - description: - "Redis server configuration when using BunkerWeb in cluster mode.", - version: "1.0", - type: "core", - method: "manual", - page: true, - settings: { - USE_REDIS: { - context: "global", - default: "no", - help: "Activate Redis.", - id: "use-redis", - label: "Activate Redis", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-14", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Activate Redis", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Activate Redis.", - }, - ], - }, - REDIS_HOST: { - context: "global", - default: "", - help: "Redis server IP or hostname.", - id: "redis-host", - label: "Redis server", - regex: - "^((?!-)[a-zA-Z0-9\\-]{1,63}(.[a-zA-Z]{2,})+|(\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3}|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)))?$", - type: "text", - containerClass: "z-13", - pattern: - "^((?!-)[a-zA-Z0-9\\-]{1,63}(.[a-zA-Z]{2,})+|(\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3}|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)))?$", - inpType: "input", - name: "Redis server", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Redis server IP or hostname.", - }, - ], - }, - REDIS_PORT: { - context: "global", - default: "6379", - help: "Redis server port.", - id: "redis-port", - label: "Redis port", - regex: "^[0-9]+$", - type: "text", - containerClass: "z-12", - pattern: "^[0-9]+$", - inpType: "input", - name: "Redis port", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "6379", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Redis server port.", - }, - ], - }, - REDIS_DATABASE: { - context: "global", - default: "0", - help: "Redis database number.", - id: "redis-database", - label: "Redis database", - regex: "^[0-9]+$", - type: "text", - containerClass: "z-11", - pattern: "^[0-9]+$", - inpType: "input", - name: "Redis database", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "0", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Redis database number.", - }, - ], - }, - REDIS_SSL: { - context: "global", - default: "no", - help: "Use SSL/TLS connection with Redis server.", - id: "redis-ssl", - label: "Redis SSL/TLS", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-10", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Redis SSL/TLS", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Use SSL/TLS connection with Redis server.", - }, - ], - }, - REDIS_SSL_VERIFY: { - context: "global", - default: "no", - help: "Verify the certificate of Redis server.", - id: "redis-ssl-verify", - label: "Redis SSL/TLS verify", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-9", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Redis SSL/TLS verify", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Verify the certificate of Redis server.", - }, - ], - }, - REDIS_TIMEOUT: { - context: "global", - default: "1000", - help: "Redis server timeout (in ms) for connect, read and write.", - id: "redis-timeout", - label: "Redis timeout (ms)", - regex: "^[0-9]+$", - type: "text", - containerClass: "z-8", - pattern: "^[0-9]+$", - inpType: "input", - name: "Redis timeout (ms)", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "1000", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Redis server timeout (in ms) for connect, read and write.", - }, - ], - }, - REDIS_USERNAME: { - context: "global", - default: "", - help: "Redis username used in AUTH command.", - id: "redis-username", - label: "Redis username", - regex: "^.*$", - type: "text", - containerClass: "z-7", - pattern: "^.*$", - inpType: "input", - name: "Redis username", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Redis username used in AUTH command.", - }, - ], - }, - REDIS_PASSWORD: { - context: "global", - default: "", - help: "Redis password used in AUTH command.", - id: "redis-password", - label: "Redis password", - regex: "^.*$", - type: "password", - containerClass: "z-6", - pattern: "^.*$", - inpType: "input", - name: "Redis password", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Redis password used in AUTH command.", - }, - ], - }, - REDIS_SENTINEL_HOSTS: { - context: "global", - default: "", - help: "Redis sentinel hosts with format host:[port] separated with spaces.", - id: "redis-sentinel-hosts", - label: "Redis sentinel hosts", - regex: "^.*$", - type: "text", - containerClass: "z-5", - pattern: "^.*$", - inpType: "input", - name: "Redis sentinel hosts", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Redis sentinel hosts with format host:[port] separated with spaces.", - }, - ], - }, - REDIS_SENTINEL_USERNAME: { - context: "global", - default: "", - help: "Redis sentinel username.", - id: "redis-sentinel-username", - label: "Redis sentinel username", - regex: "^.*$", - type: "text", - containerClass: "z-4", - pattern: "^.*$", - inpType: "input", - name: "Redis sentinel username", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Redis sentinel username.", - }, - ], - }, - REDIS_SENTINEL_PASSWORD: { - context: "global", - default: "", - help: "Redis sentinel password.", - id: "redis-sentinel-password", - label: "Redis sentinel password", - regex: "^.*$", - type: "password", - containerClass: "z-3", - pattern: "^.*$", - inpType: "input", - name: "Redis sentinel password", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Redis sentinel password.", - }, - ], - }, - REDIS_SENTINEL_MASTER: { - context: "global", - default: "", - help: "Redis sentinel master name.", - id: "redis-sentinel-master", - label: "Redis sentinel master", - regex: "^.*$", - type: "text", - containerClass: "z-2", - pattern: "^.*$", - inpType: "input", - name: "Redis sentinel master", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Redis sentinel master name.", - }, - ], - }, - REDIS_KEEPALIVE_IDLE: { - context: "global", - default: "30000", - help: "Max idle time (in ms) before closing redis connection in the pool.", - id: "redis-keepalive-idle", - label: "Redis keepalive idle (ms)", - regex: "^[0-9]+$", - type: "text", - containerClass: "z-1", - pattern: "^[0-9]+$", - inpType: "input", - name: "Redis keepalive idle (ms)", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "30000", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Max idle time (in ms) before closing redis connection in the pool.", - }, - ], - }, - REDIS_KEEPALIVE_POOL: { - context: "global", - default: "10", - help: "Max number of redis connection(s) kept in the pool.", - id: "redis-keepalive-pool", - label: "Redis keepalive pool", - regex: "^[0-9]+$", - type: "text", - containerClass: "z-0", - pattern: "^[0-9]+$", - inpType: "input", - name: "Redis keepalive pool", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "10", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Max number of redis connection(s) kept in the pool.", - }, - ], - }, - }, - checksum: null, - }, - { - id: "reverseproxy", - stream: "partial", - name: "Reverse proxy", - description: "Manage reverse proxy configurations.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - USE_REVERSE_PROXY: { - context: "multisite", - default: "no", - help: "Activate reverse proxy mode.", - id: "use-reverse-proxy", - label: "Use reverse proxy", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-26", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Use reverse proxy", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Activate reverse proxy mode.", - }, - ], - }, - REVERSE_PROXY_INTERCEPT_ERRORS: { - context: "multisite", - default: "yes", - help: "Intercept and rewrite errors.", - id: "reverse-proxy-intercept-errors", - label: "Intercept errors", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-25", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Intercept errors", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Intercept and rewrite errors.", - }, - ], - }, - REVERSE_PROXY_CUSTOM_HOST: { - context: "multisite", - default: "", - help: "Override Host header sent to upstream server.", - id: "reverse-proxy-custom-host", - label: "Reverse proxy custom host", - regex: "^.*$", - type: "text", - containerClass: "z-24", - pattern: "^.*$", - inpType: "input", - name: "Reverse proxy custom host", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Override Host header sent to upstream server.", - }, - ], - }, - REVERSE_PROXY_HOST: { - context: "multisite", - default: "", - help: "Full URL of the proxied resource (proxy_pass).", - id: "reverse-proxy-host", - label: "Reverse proxy host", - regex: "^.*$", - type: "text", - multiple: "reverse-proxy", - containerClass: "z-23", - pattern: "^.*$", - inpType: "input", - name: "Reverse proxy host", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Full URL of the proxied resource (proxy_pass).", - }, - ], - }, - REVERSE_PROXY_URL: { - context: "multisite", - default: "/", - help: "Location URL that will be proxied.", - id: "reverse-proxy-url", - label: "Reverse proxy url", - regex: "^.*$", - type: "text", - multiple: "reverse-proxy", - containerClass: "z-22", - pattern: "^.*$", - inpType: "input", - name: "Reverse proxy url", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "/", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Location URL that will be proxied.", - }, - ], - }, - REVERSE_PROXY_WS: { - context: "multisite", - default: "no", - help: "Enable websocket on the proxied resource.", - id: "reverse-proxy-ws", - label: "Reverse proxy WS", - regex: "^(yes|no)$", - type: "check", - multiple: "reverse-proxy", - containerClass: "z-21", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Reverse proxy WS", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Enable websocket on the proxied resource.", - }, - ], - }, - REVERSE_PROXY_HEADERS: { - context: "multisite", - default: "", - help: "List of HTTP headers to send to proxied resource separated with semicolons (values for proxy_set_header directive).", - id: "reverse-proxy-headers", - label: "Reverse proxy headers", - regex: "^(?![; ])(;? ?([\\w\\-]+)(?!.*\\2 ) [^;]+)*$", - type: "text", - multiple: "reverse-proxy", - containerClass: "z-20", - pattern: "^(?![; ])(;? ?([\\w\\-]+)(?!.*\\2 ) [^;]+)*$", - inpType: "input", - name: "Reverse proxy headers", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "List of HTTP headers to send to proxied resource separated with semicolons (values for proxy_set_header directive).", - }, - ], - }, - REVERSE_PROXY_HEADERS_CLIENT: { - context: "multisite", - default: "", - help: "List of HTTP headers to send to client separated with semicolons (values for add_header directive).", - id: "reverse-proxy-headers-client", - label: "Reverse proxy headers-client", - regex: "^(?![; ])(;? ?([\\w\\-]+)(?!.*\\2 ) [^;]+)*$", - type: "text", - multiple: "reverse-proxy", - containerClass: "z-19", - pattern: "^(?![; ])(;? ?([\\w\\-]+)(?!.*\\2 ) [^;]+)*$", - inpType: "input", - name: "Reverse proxy headers-client", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "List of HTTP headers to send to client separated with semicolons (values for add_header directive).", - }, - ], - }, - REVERSE_PROXY_BUFFERING: { - context: "multisite", - default: "yes", - help: "Enable or disable buffering of responses from proxied resource.", - id: "reverse-proxy-buffering", - label: "Reverse proxy buffering", - regex: "^(yes|no)$", - type: "check", - multiple: "reverse-proxy", - containerClass: "z-18", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Reverse proxy buffering", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Enable or disable buffering of responses from proxied resource.", - }, - ], - }, - REVERSE_PROXY_KEEPALIVE: { - context: "multisite", - default: "no", - help: "Enable or disable keepalive connections with the proxied resource.", - id: "reverse-proxy-keepalive", - label: "Reverse proxy keepalive", - regex: "^(yes|no)$", - type: "check", - multiple: "reverse-proxy", - containerClass: "z-17", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Reverse proxy keepalive", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Enable or disable keepalive connections with the proxied resource.", - }, - ], - }, - REVERSE_PROXY_AUTH_REQUEST: { - context: "multisite", - default: "", - help: "Enable authentication using an external provider (value of auth_request directive).", - id: "reverse-proxy-auth-request", - label: "Reverse proxy auth request", - regex: - "^(\\/[\\w\\].~:\\/?#\\[@!$\\&'\\(\\)*+,;=\\-]*|off)?$", - type: "text", - multiple: "reverse-proxy", - containerClass: "z-16", - pattern: - "^(\\/[\\w\\].~:\\/?#\\[@!$\\&'\\(\\)*+,;=\\-]*|off)?$", - inpType: "input", - name: "Reverse proxy auth request", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Enable authentication using an external provider (value of auth_request directive).", - }, - ], - }, - REVERSE_PROXY_AUTH_REQUEST_SIGNIN_URL: { - context: "multisite", - default: "", - help: "Redirect clients to sign-in URL when using REVERSE_PROXY_AUTH_REQUEST (used when auth_request call returned 401).", - id: "reverse-proxy-auth-request-signin-url", - label: "Auth request signin URL", - regex: - "^(https?:\\/\\/[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)?$", - type: "text", - multiple: "reverse-proxy", - containerClass: "z-15", - pattern: - "^(https?:\\/\\/[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)?$", - inpType: "input", - name: "Auth request signin URL", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Redirect clients to sign-in URL when using REVERSE_PROXY_AUTH_REQUEST (used when auth_request call returned 401).", - }, - ], - }, - REVERSE_PROXY_AUTH_REQUEST_SET: { - context: "multisite", - default: "", - help: "List of variables to set from the authentication provider, separated with semicolons (values of auth_request_set directives).", - id: "reverse-proxy-auth-request-set", - label: "Reverse proxy auth request set", - regex: "^(?! ;)(;? ?(\\$[a-z_\\-]+)(?!.*\\2 ) [^;]+)*$", - type: "text", - multiple: "reverse-proxy", - containerClass: "z-14", - pattern: "^(?! ;)(;? ?(\\$[a-z_\\-]+)(?!.*\\2 ) [^;]+)*$", - inpType: "input", - name: "Reverse proxy auth request set", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "List of variables to set from the authentication provider, separated with semicolons (values of auth_request_set directives).", - }, - ], - }, - REVERSE_PROXY_CONNECT_TIMEOUT: { - context: "multisite", - default: "60s", - help: "Timeout when connecting to the proxied resource.", - id: "reverse-proxy-connect-timeout", - label: "Reverse proxy connect timeout", - regex: "^\\d+(ms?|[shdwMy])$", - type: "text", - multiple: "reverse-proxy", - containerClass: "z-13", - pattern: "^\\d+(ms?|[shdwMy])$", - inpType: "input", - name: "Reverse proxy connect timeout", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "60s", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Timeout when connecting to the proxied resource.", - }, - ], - }, - REVERSE_PROXY_READ_TIMEOUT: { - context: "multisite", - default: "60s", - help: "Timeout when reading from the proxied resource.", - id: "reverse-proxy-read-timeout", - label: "Reverse proxy read timeout", - regex: "^\\d+(ms?|[shdwMy])$", - type: "text", - multiple: "reverse-proxy", - containerClass: "z-12", - pattern: "^\\d+(ms?|[shdwMy])$", - inpType: "input", - name: "Reverse proxy read timeout", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "60s", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Timeout when reading from the proxied resource.", - }, - ], - }, - REVERSE_PROXY_SEND_TIMEOUT: { - context: "multisite", - default: "60s", - help: "Timeout when sending to the proxied resource.", - id: "reverse-proxy-send-timeout", - label: "Reverse proxy send timeout", - regex: "^\\d+(ms?|[shdwMy])$", - type: "text", - multiple: "reverse-proxy", - containerClass: "z-11", - pattern: "^\\d+(ms?|[shdwMy])$", - inpType: "input", - name: "Reverse proxy send timeout", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "60s", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Timeout when sending to the proxied resource.", - }, - ], - }, - REVERSE_PROXY_INCLUDES: { - context: "multisite", - default: "", - help: "Additional configuration to include in the location block, separated with spaces.", - id: "reverse-proxy-includes", - label: "Reverse proxy includes", - regex: "^(?! )( ?(\\w+)(?!.*\\b\\2\\b))*$", - type: "text", - multiple: "reverse-proxy", - containerClass: "z-10", - pattern: "^(?! )( ?(\\w+)(?!.*\\b\\2\\b))*$", - inpType: "input", - name: "Reverse proxy includes", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Additional configuration to include in the location block, separated with spaces.", - }, - ], - }, - USE_PROXY_CACHE: { - context: "multisite", - default: "no", - help: "Enable or disable caching of the proxied resources.", - id: "use-proxy-cache", - label: "Reverse proxy cache", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-9", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Reverse proxy cache", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Enable or disable caching of the proxied resources.", - }, - ], - }, - PROXY_CACHE_PATH_LEVELS: { - context: "global", - default: "1:2", - help: "Hierarchy levels of the cache.", - id: "proxy-cache-path-levels", - label: "Hierarchy levels", - regex: "^(:?[12]){1,3}$", - type: "text", - containerClass: "z-8", - pattern: "^(:?[12]){1,3}$", - inpType: "input", - name: "Hierarchy levels", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "1:2", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Hierarchy levels of the cache.", - }, - ], - }, - PROXY_CACHE_PATH_ZONE_SIZE: { - context: "global", - default: "10m", - help: "Maximum size of cached metadata when caching proxied resources.", - id: "proxy-cache-path-zone-size", - label: "Reverse proxy cache zone size", - regex: "^\\d+[kKmMgG]?$", - type: "text", - containerClass: "z-7", - pattern: "^\\d+[kKmMgG]?$", - inpType: "input", - name: "Reverse proxy cache zone size", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "10m", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Maximum size of cached metadata when caching proxied resources.", - }, - ], - }, - PROXY_CACHE_PATH_PARAMS: { - context: "global", - default: "max_size=100m", - help: "Additional parameters to add to the proxy_cache directive.", - id: "proxy-cache-path-params", - label: "Reverse proxy cache params", - regex: "^.*$", - type: "text", - containerClass: "z-6", - pattern: "^.*$", - inpType: "input", - name: "Reverse proxy cache params", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "max_size=100m", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Additional parameters to add to the proxy_cache directive.", - }, - ], - }, - PROXY_CACHE_METHODS: { - context: "multisite", - default: "GET HEAD", - help: "HTTP methods that should trigger a cache operation.", - id: "proxy-cache-methods", - label: "Reverse proxy cache methods", - regex: - "^(?! )( ?(GET|HEAD|POST|PUT|DELETE|CONNECT|OPTIONS|TRACE|PATCH)(?!.*\\2))+$", - type: "text", - containerClass: "z-5", - pattern: - "^(?! )( ?(GET|HEAD|POST|PUT|DELETE|CONNECT|OPTIONS|TRACE|PATCH)(?!.*\\2))+$", - inpType: "input", - name: "Reverse proxy cache methods", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "GET HEAD", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "HTTP methods that should trigger a cache operation.", - }, - ], - }, - PROXY_CACHE_MIN_USES: { - context: "multisite", - default: "2", - help: "The minimum number of requests before a response is cached.", - id: "proxy-cache-min-uses", - label: "Reverse proxy cache minimum uses", - regex: "^[1-9]\\d*$", - type: "text", - containerClass: "z-4", - pattern: "^[1-9]\\d*$", - inpType: "input", - name: "Reverse proxy cache minimum uses", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "2", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "The minimum number of requests before a response is cached.", - }, - ], - }, - PROXY_CACHE_KEY: { - context: "multisite", - default: "$scheme$host$request_uri", - help: "The key used to uniquely identify a cached response.", - id: "proxy-cache-key", - label: "Reverse proxy cache key", - regex: "^(?! )( ?(\\$[a-z_]+)(?!.*\\2))+$", - type: "text", - containerClass: "z-3", - pattern: "^(?! )( ?(\\$[a-z_]+)(?!.*\\2))+$", - inpType: "input", - name: "Reverse proxy cache key", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "$scheme$host$request_uri", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "The key used to uniquely identify a cached response.", - }, - ], - }, - PROXY_CACHE_VALID: { - context: "multisite", - default: "200=24h 301=1h 302=24h", - help: "Define the caching time depending on the HTTP status code (list of status=time), separated with spaces.", - id: "proxy-cache-valid", - label: "Reverse proxy cache valid", - regex: - "^(?! )( ?([1-5]\\d{2})(?!.*\\2=)=\\d+(ms?|[shdwMy]))*$", - type: "text", - containerClass: "z-2", - pattern: - "^(?! )( ?([1-5]\\d{2})(?!.*\\2=)=\\d+(ms?|[shdwMy]))*$", - inpType: "input", - name: "Reverse proxy cache valid", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "200=24h 301=1h 302=24h", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Define the caching time depending on the HTTP status code (list of status=time), separated with spaces.", - }, - ], - }, - PROXY_NO_CACHE: { - context: "multisite", - default: "$http_pragma $http_authorization", - help: "Conditions to disable caching of responses.", - id: "proxy-no-cache", - label: "Reverse proxy no cache", - regex: "^.*$", - type: "text", - containerClass: "z-1", - pattern: "^.*$", - inpType: "input", - name: "Reverse proxy no cache", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "$http_pragma $http_authorization", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Conditions to disable caching of responses.", - }, - ], - }, - PROXY_CACHE_BYPASS: { - context: "multisite", - default: "0", - help: "Conditions to bypass caching of responses.", - id: "proxy-cache-bypass", - label: "Reverse proxy bypass", - regex: "^.*$", - type: "text", - containerClass: "z-0", - pattern: "^.*$", - inpType: "input", - name: "Reverse proxy bypass", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "0", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Conditions to bypass caching of responses.", - }, - ], - }, - }, - checksum: null, - }, - { - id: "reversescan", - stream: "yes", - name: "Reverse scan", - description: - "Scan clients ports to detect proxies or servers.", - version: "1.0", - type: "core", - method: "manual", - page: true, - settings: { - USE_REVERSE_SCAN: { - context: "multisite", - default: "no", - help: "Enable scanning of clients ports and deny access if one is opened.", - id: "use-reverse-scan", - label: "Reverse scan", - regex: "^(no|yes)$", - type: "check", - containerClass: "z-2", - pattern: "^(no|yes)$", - inpType: "checkbox", - name: "Reverse scan", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Enable scanning of clients ports and deny access if one is opened.", - }, - ], - }, - REVERSE_SCAN_PORTS: { - context: "multisite", - default: "22 80 443 3128 8000 8080", - help: "List of port to scan when using reverse scan feature.", - id: "reverse-scan-ports", - label: "Reverse scan ports", - regex: "^.*$", - type: "text", - containerClass: "z-1", - pattern: "^.*$", - inpType: "input", - name: "Reverse scan ports", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "22 80 443 3128 8000 8080", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "List of port to scan when using reverse scan feature.", - }, - ], - }, - REVERSE_SCAN_TIMEOUT: { - context: "multisite", - default: "500", - help: "Specify the maximum timeout (in ms) when scanning a port.", - id: "reverse-scan-timeout", - label: "Reverse scan timeout", - regex: "^.*$", - type: "text", - containerClass: "z-0", - pattern: "^.*$", - inpType: "input", - name: "Reverse scan timeout", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "500", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Specify the maximum timeout (in ms) when scanning a port.", - }, - ], - }, - }, - checksum: null, - }, - { - id: "selfsigned", - stream: "yes", - name: "Self-signed certificate", - description: "Generate self-signed certificate.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - GENERATE_SELF_SIGNED_SSL: { - context: "multisite", - default: "no", - help: "Generate and use self-signed certificate.", - id: "generate-self-signed-ssl", - label: "Activate self-signed certificate", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-2", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Activate self-signed certificate", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Generate and use self-signed certificate.", - }, - ], - }, - SELF_SIGNED_SSL_EXPIRY: { - context: "multisite", - default: "365", - help: "Self-signed certificate expiry in days.", - id: "self-signed-ssl-expiry", - label: "Certificate expiry", - regex: "^\\d+$", - type: "text", - containerClass: "z-1", - pattern: "^\\d+$", - inpType: "input", - name: "Certificate expiry", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "365", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Self-signed certificate expiry in days.", - }, - ], - }, - SELF_SIGNED_SSL_SUBJ: { - context: "multisite", - default: "/CN=www.example.com/", - help: "Self-signed certificate subject.", - id: "self-signed-ssl-subj", - label: "Certificate subject", - regex: "^/CN=[^,]+$", - type: "text", - containerClass: "z-0", - pattern: "^/CN=[^,]+$", - inpType: "input", - name: "Certificate subject", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "/CN=www.example.com/", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Self-signed certificate subject.", - }, - ], - }, - }, - checksum: null, - }, - { - id: "sessions", - stream: "yes", - name: "Sessions", - description: "Management of session used by other plugins.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - SESSIONS_SECRET: { - context: "global", - default: "random", - help: "Secret used to encrypt sessions variables for storing data related to challenges.", - id: "session-secret", - label: "Sessions secret", - regex: "^\\w+$", - type: "password", - containerClass: "z-6", - pattern: "^\\w+$", - inpType: "input", - name: "Sessions secret", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "random", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Secret used to encrypt sessions variables for storing data related to challenges.", - }, - ], - }, - SESSIONS_NAME: { - context: "global", - default: "random", - help: "Name of the cookie given to clients.", - id: "sessions-name", - label: "Sessions name", - regex: "^\\w+$", - type: "text", - containerClass: "z-5", - pattern: "^\\w+$", - inpType: "input", - name: "Sessions name", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "random", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Name of the cookie given to clients.", - }, - ], - }, - SESSIONS_IDLING_TIMEOUT: { - context: "global", - default: "1800", - help: "Maximum time (in seconds) of inactivity before the session is invalidated.", - id: "sessions-idling-timeout", - label: "Sessions idling timeout", - regex: "^\\d+$", - type: "text", - containerClass: "z-4", - pattern: "^\\d+$", - inpType: "input", - name: "Sessions idling timeout", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "1800", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Maximum time (in seconds) of inactivity before the session is invalidated.", - }, - ], - }, - SESSIONS_ROLLING_TIMEOUT: { - context: "global", - default: "3600", - help: "Maximum time (in seconds) before a session must be renewed.", - id: "sessions-rolling-timeout", - label: "Sessions rolling timeout", - regex: "^\\d+$", - type: "text", - containerClass: "z-3", - pattern: "^\\d+$", - inpType: "input", - name: "Sessions rolling timeout", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "3600", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Maximum time (in seconds) before a session must be renewed.", - }, - ], - }, - SESSIONS_ABSOLUTE_TIMEOUT: { - context: "global", - default: "86400", - help: "Maximum time (in seconds) before a session is destroyed.", - id: "sessions-absolute-timeout", - label: "Sessions absolute timeout", - regex: "^\\d+$", - type: "text", - containerClass: "z-2", - pattern: "^\\d+$", - inpType: "input", - name: "Sessions absolute timeout", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "86400", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Maximum time (in seconds) before a session is destroyed.", - }, - ], - }, - SESSIONS_CHECK_IP: { - context: "global", - default: "yes", - help: "Destroy session if IP address is different than original one.", - id: "sessions-check-ip", - label: "Sessions check IP", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-1", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Sessions check IP", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Destroy session if IP address is different than original one.", - }, - ], - }, - SESSIONS_CHECK_USER_AGENT: { - context: "global", - default: "yes", - help: "Destroy session if User-Agent is different than original one.", - id: "sessions-user-agent", - label: "Sessions check User-Agent", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-0", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Sessions check User-Agent", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Destroy session if User-Agent is different than original one.", - }, - ], - }, - }, - checksum: null, - }, - { - id: "ui", - stream: "no", - name: "UI", - description: "Integrate easily the BunkerWeb UI.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - USE_UI: { - context: "multisite", - default: "no", - help: "Use UI", - id: "use-ui", - label: "Use UI", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-1", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Use UI", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Use UI", - }, - ], - }, - UI_HOST: { - context: "global", - default: "", - help: "Address of the web UI used for initial setup", - id: "ui-host", - label: "UI host", - regex: "^.*$", - type: "text", - containerClass: "z-0", - pattern: "^.*$", - inpType: "input", - name: "UI host", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "Address of the web UI used for initial setup", - }, - ], - }, - }, - checksum: null, - }, - { - id: "whitelist", - stream: "partial", - name: "Whitelist", - description: - "Allow access based on internal and external IP/network/rDNS/ASN whitelists.", - version: "1.0", - type: "core", - method: "manual", - page: true, - settings: { - USE_WHITELIST: { - context: "multisite", - default: "yes", - help: "Activate whitelist feature.", - id: "use-whitelist", - label: "Activate whitelisting", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-11", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Activate whitelisting", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Activate whitelist feature.", - }, - ], - }, - WHITELIST_IP: { - context: "multisite", - default: - "20.191.45.212 40.88.21.235 40.76.173.151 40.76.163.7 20.185.79.47 52.142.26.175 20.185.79.15 52.142.24.149 40.76.162.208 40.76.163.23 40.76.162.191 40.76.162.247", - help: "List of IP/network, separated with spaces, to put into the whitelist.", - id: "whitelist-ip", - label: "Whitelist IP/network", - regex: - "^(?! )( *(((\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3})(\\/([1-2][0-9]?|3[0-2]?|[04-9]))?|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d))(\\/(12[0-8]|1[01][0-9]|[0-9][0-9]?))?)(?!.*\\D\\2([^\\d\\/]|$)) *)*$", - type: "text", - containerClass: "z-10", - pattern: - "^(?! )( *(((\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3})(\\/([1-2][0-9]?|3[0-2]?|[04-9]))?|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d))(\\/(12[0-8]|1[01][0-9]|[0-9][0-9]?))?)(?!.*\\D\\2([^\\d\\/]|$)) *)*$", - inpType: "input", - name: "Whitelist IP/network", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: - "20.191.45.212 40.88.21.235 40.76.173.151 40.76.163.7 20.185.79.47 52.142.26.175 20.185.79.15 52.142.24.149 40.76.162.208 40.76.163.23 40.76.162.191 40.76.162.247", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "List of IP/network, separated with spaces, to put into the whitelist.", - }, - ], - }, - WHITELIST_RDNS: { - context: "multisite", - default: - ".google.com .googlebot.com .yandex.ru .yandex.net .yandex.com .search.msn.com .baidu.com .baidu.jp .crawl.yahoo.net .fwd.linkedin.com .twitter.com .twttr.com .discord.com", - help: "List of reverse DNS suffixes, separated with spaces, to whitelist.", - id: "whitelist-rdns", - label: "Whitelist reverse DNS", - regex: "^( *(([^ ]+)(?!.*\\3( |$))) *)*$", - type: "text", - containerClass: "z-9", - pattern: "^( *(([^ ]+)(?!.*\\3( |$))) *)*$", - inpType: "input", - name: "Whitelist reverse DNS", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: - ".google.com .googlebot.com .yandex.ru .yandex.net .yandex.com .search.msn.com .baidu.com .baidu.jp .crawl.yahoo.net .fwd.linkedin.com .twitter.com .twttr.com .discord.com", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "List of reverse DNS suffixes, separated with spaces, to whitelist.", - }, - ], - }, - WHITELIST_RDNS_GLOBAL: { - context: "multisite", - default: "yes", - help: "Only perform RDNS whitelist checks on global IP addresses.", - id: "whitelist-rdns-global", - label: "Whitelist reverse DNS global IPs", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-8", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Whitelist reverse DNS global IPs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Only perform RDNS whitelist checks on global IP addresses.", - }, - ], - }, - WHITELIST_ASN: { - context: "multisite", - default: "32934", - help: "List of ASN numbers, separated with spaces, to whitelist.", - id: "whitelist-asn", - label: "Whitelist ASN", - regex: "^^( *((ASN?)?(\\d+)\\b(?!.*[SN ]\\4\\b)) *)*$", - type: "text", - containerClass: "z-7", - pattern: "^^( *((ASN?)?(\\d+)\\b(?!.*[SN ]\\4\\b)) *)*$", - inpType: "input", - name: "Whitelist ASN", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "32934", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "List of ASN numbers, separated with spaces, to whitelist.", - }, - ], - }, - WHITELIST_USER_AGENT: { - context: "multisite", - default: "", - help: "List of User-Agent (PCRE regex), separated with spaces, to whitelist.", - id: "whitelist-user-agent", - label: "Whitelist User-Agent", - regex: "^.*$", - type: "text", - containerClass: "z-6", - pattern: "^.*$", - inpType: "input", - name: "Whitelist User-Agent", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "List of User-Agent (PCRE regex), separated with spaces, to whitelist.", - }, - ], - }, - WHITELIST_URI: { - context: "multisite", - default: "", - help: "List of URI (PCRE regex), separated with spaces, to whitelist.", - id: "whitelist-uri", - label: "Whitelist URI", - regex: "^( *(.*)(?!.*\\2(?!.)) *)*$", - type: "text", - containerClass: "z-5", - pattern: "^( *(.*)(?!.*\\2(?!.)) *)*$", - inpType: "input", - name: "Whitelist URI", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "List of URI (PCRE regex), separated with spaces, to whitelist.", - }, - ], - }, - WHITELIST_IP_URLS: { - context: "global", - default: "", - help: "List of URLs, separated with spaces, containing good IP/network to whitelist.", - id: "whitelist-ip-urls", - label: "Whitelist IP/network URLs", - regex: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - type: "text", - containerClass: "z-4", - pattern: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - inpType: "input", - name: "Whitelist IP/network URLs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "List of URLs, separated with spaces, containing good IP/network to whitelist.", - }, - ], - }, - WHITELIST_RDNS_URLS: { - context: "global", - default: "", - help: "List of URLs, separated with spaces, containing reverse DNS suffixes to whitelist.", - id: "whitelist-rdns-urls", - label: "Whitelist reverse DNS URLs", - regex: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - type: "text", - containerClass: "z-3", - pattern: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - inpType: "input", - name: "Whitelist reverse DNS URLs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "List of URLs, separated with spaces, containing reverse DNS suffixes to whitelist.", - }, - ], - }, - WHITELIST_ASN_URLS: { - context: "global", - default: "", - help: "List of URLs, separated with spaces, containing ASN to whitelist.", - id: "whitelist-asn-urls", - label: "Whitelist ASN URLs", - regex: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - type: "text", - containerClass: "z-2", - pattern: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - inpType: "input", - name: "Whitelist ASN URLs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "List of URLs, separated with spaces, containing ASN to whitelist.", - }, - ], - }, - WHITELIST_USER_AGENT_URLS: { - context: "global", - default: "", - help: "List of URLs, separated with spaces, containing good User-Agent to whitelist.", - id: "whitelist-user-agent-urls", - label: "Whitelist User-Agent URLs", - regex: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - type: "text", - containerClass: "z-1", - pattern: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - inpType: "input", - name: "Whitelist User-Agent URLs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "List of URLs, separated with spaces, containing good User-Agent to whitelist.", - }, - ], - }, - WHITELIST_URI_URLS: { - context: "global", - default: "", - help: "List of URLs, separated with spaces, containing bad URI to whitelist.", - id: "whitelist-uri-urls", - label: "Whitelist URI URLs", - regex: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - type: "text", - containerClass: "z-0", - pattern: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - inpType: "input", - name: "Whitelist URI URLs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconName: "globe", - text: "inp_popover_global", - }, - { - iconName: "info", - text: "List of URLs, separated with spaces, containing bad URI to whitelist.", - }, - ], - }, - }, - checksum: null, - }, - ], - }, - easy: { - default: [ - { - title: "Title 1", - subtitle: "subtitle 1", - settings: { - USE_UI: { - context: "multisite", - default: "no", - help: "Use UI", - id: "use-ui", - label: "Use UI", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-1", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Use UI", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Use UI", - }, - ], - }, - USE_CORS: { - context: "multisite", - default: "no", - help: "Use CORS", - id: "use-cors", - label: "Use CORS", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-0", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Use CORS", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: true, - value: "yes", - popovers: [ - { - iconName: "trespass", - text: "inp_popover_method_disabled", - }, - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Use CORS", - }, - ], - }, - }, - }, - { - title: "Title 2", - subtitle: "subtitle 2", - settings: { - USE_UI: { - context: "multisite", - default: "no", - help: "Use UI", - id: "use-ui", - label: "Use UI", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-1", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Use UI", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Use UI", - }, - ], - }, - USE_CORS: { - context: "multisite", - default: "no", - help: "Use CORS", - id: "use-cors", - label: "Use CORS", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-0", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Use CORS", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: true, - value: "yes", - popovers: [ - { - iconName: "trespass", - text: "inp_popover_method_disabled", - }, - { - iconName: "disk", - text: "inp_popover_multisite", - }, - { - iconName: "info", - text: "Use CORS", - }, - ], - }, - }, - }, - ], - }, - raw: { - default: { - USE_GZIP: "dsfrgrdgrdgrdhgd", - USE_UI: "yes", - }, - }, - }, - }, - }, - ], - }, -]; diff --git a/src/client/vite/src/pages/global-config/index.html b/src/client/vite/src/pages/global-config/index.html index 49e18f83e..3a2e93140 100644 --- a/src/client/vite/src/pages/global-config/index.html +++ b/src/client/vite/src/pages/global-config/index.html @@ -14,7 +14,7 @@ data-server-flash='[{"type" : "success", "title" : "title", "message" : "Success feedback"}, {"type" : "error", "title" : "title", "message" : "Error feedback"}, {"type" : "warning", "title" : "title", "message" : "Warning feedback"}, {"type" : "info", "title" : "title", "message" : "Info feedback"}]'>
diff --git a/src/client/vite/src/pages/home/Home.vue b/src/client/vite/src/pages/home/Home.vue index 3b315bc8b..4c3c52681 100644 --- a/src/client/vite/src/pages/home/Home.vue +++ b/src/client/vite/src/pages/home/Home.vue @@ -20,7 +20,7 @@ onBeforeMount(() => { const dataEl = document.querySelector(`[${dataAtt}]`); const data = dataEl && !dataEl.getAttribute(dataAtt).includes(dataAtt) - ? JSON.parse(dataEl.getAttribute(dataAtt)) + ? JSON.parse(atob(dataEl.getAttribute(dataAtt))) : {}; home.builder = data; }); diff --git a/src/client/vite/src/pages/home/index.html b/src/client/vite/src/pages/home/index.html index e48869894..7fd615b49 100644 --- a/src/client/vite/src/pages/home/index.html +++ b/src/client/vite/src/pages/home/index.html @@ -14,7 +14,7 @@ data-server-flash='[{"type" : "success", "title" : "success", "message" : "Success feedback"}, {"type" : "error", "title" : "error", "message" : "Error feedback"}, {"type" : "warning", "title" : "warning", "message" : "Warning feedback"}, {"type" : "info", "title" : "info", "message" : "Info feedback"}]'>
diff --git a/src/client/vite/src/pages/instances/Instances.vue b/src/client/vite/src/pages/instances/Instances.vue index 7482a00b5..3d7f609a6 100644 --- a/src/client/vite/src/pages/instances/Instances.vue +++ b/src/client/vite/src/pages/instances/Instances.vue @@ -21,7 +21,7 @@ onBeforeMount(() => { const dataEl = document.querySelector(`[${dataAtt}]`); const data = dataEl && !dataEl.getAttribute(dataAtt).includes(dataAtt) - ? JSON.parse(dataEl.getAttribute(dataAtt)) + ? JSON.parse(atob(dataEl.getAttribute(dataAtt))) : {}; instances.builder = data; }); diff --git a/src/client/vite/src/pages/instances/index.html b/src/client/vite/src/pages/instances/index.html index a1447afd5..c7c60b549 100644 --- a/src/client/vite/src/pages/instances/index.html +++ b/src/client/vite/src/pages/instances/index.html @@ -14,7 +14,7 @@ data-server-flash='[{"type" : "success", "title" : "title", "message" : "Success feedback"}, {"type" : "error", "title" : "title", "message" : "Error feedback"}, {"type" : "warning", "title" : "title", "message" : "Warning feedback"}, {"type" : "info", "title" : "title", "message" : "Info feedback"}]'>
diff --git a/src/ui/main.py b/src/ui/main.py index 443486c81..03fc19ef6 100644 --- a/src/ui/main.py +++ b/src/ui/main.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 import json +import base64 from contextlib import suppress from math import floor from os import _exit, getenv, listdir, sep, urandom @@ -790,7 +791,8 @@ def home_builder(data): ], } builder = [version_card, version_num_card, instances_card, services_card, plugins_card] - return builder + + return base64.b64encode(bytes(json.dumps(builder), "utf-8")).decode("ascii") @app.route("/home") @@ -1074,7 +1076,7 @@ def instances_builder(instances: list): builder.append(component) - return builder + return base64.b64encode(bytes(json.dumps(builder), "utf-8")).decode("ascii") @app.route("/instances", methods=["GET", "POST"]) diff --git a/src/ui/static/assets/home-ef55bffd.js b/src/ui/static/assets/home-098d38b3.js similarity index 92% rename from src/ui/static/assets/home-ef55bffd.js rename to src/ui/static/assets/home-098d38b3.js index e6c343f6a..14aa39666 100644 --- a/src/ui/static/assets/home-ef55bffd.js +++ b/src/ui/static/assets/home-098d38b3.js @@ -1 +1 @@ -import{c as v,r as q,a as _,o as x,b as a,d as u,w as n,e as b,t as m,n as S,f as y,g as o,h as d,m as p,i as $,_ as h,F as f,j as N,k as g,l as B,p as E,q as k,s as A,u as V,v as j,x as z,y as I,z as L,A as O,B as P}from"./Title-9ae7a316.js";const w={__name:"Subtitle",props:{subtitle:{type:String,required:!0},type:{type:String,required:!1,default:"card"},tag:{type:String,required:!1,default:""},color:{type:String,required:!1,default:""},bold:{type:Boolean,required:!1,default:!1},uppercase:{type:Boolean,required:!1,default:!1},subtitleClass:{type:String,required:!1,default:""}},setup(i){const e=i,s=v(()=>e.tag?e.tag:"p"),r=q({class:""}),t=_(null);return x(()=>{r.class=e.subtitleClass||t.value.closest("[data-is]")?`subtitle-${t.value.closest("[data-is]").getAttribute("data-is")}`:"subtitle-card"}),(l,c)=>e.subtitle?(a(),u(y(s.value),{key:0,ref_key:"subtitleEl",ref:t,"data-subtitle":"",class:S([r.class,e.color,"text-el",e.bold?"bold":"",e.uppercase?"uppercase":""])},{default:n(()=>[b(m(l.$t(e.subtitle,l.$t("dashboard_placeholder",e.subtitle))),1)]),_:1},8,["class"])):o("",!0)}},D={key:1,class:S(["flex justify-center items-center"])},F={__name:"Text",props:{text:{type:[String,Number],required:!0},textClass:{type:String,required:!1,default:""},color:{type:String,required:!1,default:""},bold:{type:Boolean,required:!1,default:!1},uppercase:{type:Boolean,required:!1,default:!1},tag:{type:String,required:!1,default:"p"},icon:{type:[Boolean,Object],required:!1,default:!1},attrs:{type:Object,required:!1,default:{}}},setup(i){const e=i,s=q({class:""}),r=_(null),t=_(null);return x(()=>{const l=r.value||t.value||null,c=l.closest('[data-is="void"]')?"void":"";s.class=e.textClass||l.closest("[data-is]")?`text-${c||l.closest("[data-is]").getAttribute("data-is")}`:"text-card"}),(l,c)=>(a(),d(f,null,[e.icon?o("",!0):(a(),u(y(e.tag),p({key:0},e.attrs,{ref_key:"textEl",ref:r,class:[s.class,e.color,"text-el",e.bold?"bold":"",e.uppercase?"uppercase":""]}),{default:n(()=>[b(m(l.$t(e.text,l.$t("dashboard_placeholder",e.text))),1)]),_:1},16,["class"])),e.icon?(a(),d("div",D,[e.icon?(a(),u(h,$(p({key:0},e.icon)),null,16)):o("",!0),(a(),u(y(e.tag),p({ref_key:"textIconEl",ref:t},e.attrs,{class:[s.class,e.color,"text-el","ml-2"]}),{default:n(()=>[b(m(l.$t(e.text,l.$t("dashboard_placeholder",e.text))),1)]),_:1},16,["class"]))])):o("",!0)],64))}},H={__name:"Stat",props:{title:{type:String,required:!0},stat:{type:[String,Number],required:!0},subtitle:{type:String,required:!1,default:""},iconName:{type:String,required:!1,default:""},color:{type:String,required:!1,default:""},subtitleColor:{type:String,required:!1,default:"info"},statClass:{type:String,required:!1,default:""}},setup(i){const e=i;return(s,r)=>(a(),u(E,{"data-is":"stat",columns:{pc:12,tablet:12,mobile:12}},{default:n(()=>[N("div",{class:S(["stat-content-container",e.iconName?"is-icon":"no-icon"])},[g(B,{tag:"h3",title:e.title},null,8,["title"]),g(F,{text:e.stat},null,8,["text"]),e.subtitle?(a(),u(w,{key:0,subtitle:e.subtitle,color:e.subtitleColor},null,8,["subtitle","color"])):o("",!0)],2),e.iconName?(a(),u(h,{key:0,iconName:e.iconName,isStick:!0},null,8,["iconName"])):o("",!0)]),_:1}))}},M={__name:"Home",props:{builder:{type:Array,required:!0}},setup(i){const e=i;return(s,r)=>(a(!0),d(f,null,k(e.builder,(t,l)=>(a(),u(V,{key:l,gridLayoutClass:t.containerClass,type:t.type,title:t.title,link:t.link,columns:t.containerColumns,id:t.id},{default:n(()=>[g(A,null,{default:n(()=>[(a(!0),d(f,null,k(t.widgets,(c,C)=>(a(),d(f,{key:C},[c.type==="Stat"?(a(),u(H,$(p({key:0},c.data)),null,16)):o("",!0)],64))),128))]),_:2},1024)]),_:2},1032,["gridLayoutClass","type","title","link","columns","id"]))),128))}},T={__name:"Home",setup(i){const e=q({builder:""});return j(()=>{const s="data-server-builder",r=document.querySelector(`[${s}]`),t=r&&!r.getAttribute(s).includes(s)?JSON.parse(r.getAttribute(s)):{};e.builder=t}),x(()=>{z()}),(s,r)=>(a(),u(I,null,{default:n(()=>[e.builder?(a(),u(M,{key:0,builder:e.builder},null,8,["builder"])):o("",!0)]),_:1}))}},G=L();O(T).use(G).use(P(["dashboard","action","inp","icons","home"])).mount("#app"); +import{c as v,r as q,a as _,o as x,b as a,d as u,w as n,e as b,t as m,n as S,f as y,g as o,h as d,m as p,i as $,_ as h,F as f,j as N,k as g,l as B,p as E,q as k,s as A,u as V,v as j,x as z,y as I,z as L,A as O,B as P}from"./Title-9ae7a316.js";const w={__name:"Subtitle",props:{subtitle:{type:String,required:!0},type:{type:String,required:!1,default:"card"},tag:{type:String,required:!1,default:""},color:{type:String,required:!1,default:""},bold:{type:Boolean,required:!1,default:!1},uppercase:{type:Boolean,required:!1,default:!1},subtitleClass:{type:String,required:!1,default:""}},setup(i){const e=i,s=v(()=>e.tag?e.tag:"p"),r=q({class:""}),t=_(null);return x(()=>{r.class=e.subtitleClass||t.value.closest("[data-is]")?`subtitle-${t.value.closest("[data-is]").getAttribute("data-is")}`:"subtitle-card"}),(l,c)=>e.subtitle?(a(),u(y(s.value),{key:0,ref_key:"subtitleEl",ref:t,"data-subtitle":"",class:S([r.class,e.color,"text-el",e.bold?"bold":"",e.uppercase?"uppercase":""])},{default:n(()=>[b(m(l.$t(e.subtitle,l.$t("dashboard_placeholder",e.subtitle))),1)]),_:1},8,["class"])):o("",!0)}},D={key:1,class:S(["flex justify-center items-center"])},F={__name:"Text",props:{text:{type:[String,Number],required:!0},textClass:{type:String,required:!1,default:""},color:{type:String,required:!1,default:""},bold:{type:Boolean,required:!1,default:!1},uppercase:{type:Boolean,required:!1,default:!1},tag:{type:String,required:!1,default:"p"},icon:{type:[Boolean,Object],required:!1,default:!1},attrs:{type:Object,required:!1,default:{}}},setup(i){const e=i,s=q({class:""}),r=_(null),t=_(null);return x(()=>{const l=r.value||t.value||null,c=l.closest('[data-is="void"]')?"void":"";s.class=e.textClass||l.closest("[data-is]")?`text-${c||l.closest("[data-is]").getAttribute("data-is")}`:"text-card"}),(l,c)=>(a(),d(f,null,[e.icon?o("",!0):(a(),u(y(e.tag),p({key:0},e.attrs,{ref_key:"textEl",ref:r,class:[s.class,e.color,"text-el",e.bold?"bold":"",e.uppercase?"uppercase":""]}),{default:n(()=>[b(m(l.$t(e.text,l.$t("dashboard_placeholder",e.text))),1)]),_:1},16,["class"])),e.icon?(a(),d("div",D,[e.icon?(a(),u(h,$(p({key:0},e.icon)),null,16)):o("",!0),(a(),u(y(e.tag),p({ref_key:"textIconEl",ref:t},e.attrs,{class:[s.class,e.color,"text-el","ml-2"]}),{default:n(()=>[b(m(l.$t(e.text,l.$t("dashboard_placeholder",e.text))),1)]),_:1},16,["class"]))])):o("",!0)],64))}},H={__name:"Stat",props:{title:{type:String,required:!0},stat:{type:[String,Number],required:!0},subtitle:{type:String,required:!1,default:""},iconName:{type:String,required:!1,default:""},color:{type:String,required:!1,default:""},subtitleColor:{type:String,required:!1,default:"info"},statClass:{type:String,required:!1,default:""}},setup(i){const e=i;return(s,r)=>(a(),u(E,{"data-is":"stat",columns:{pc:12,tablet:12,mobile:12}},{default:n(()=>[N("div",{class:S(["stat-content-container",e.iconName?"is-icon":"no-icon"])},[g(B,{tag:"h3",title:e.title},null,8,["title"]),g(F,{text:e.stat},null,8,["text"]),e.subtitle?(a(),u(w,{key:0,subtitle:e.subtitle,color:e.subtitleColor},null,8,["subtitle","color"])):o("",!0)],2),e.iconName?(a(),u(h,{key:0,iconName:e.iconName,isStick:!0},null,8,["iconName"])):o("",!0)]),_:1}))}},M={__name:"Home",props:{builder:{type:Array,required:!0}},setup(i){const e=i;return(s,r)=>(a(!0),d(f,null,k(e.builder,(t,l)=>(a(),u(V,{key:l,gridLayoutClass:t.containerClass,type:t.type,title:t.title,link:t.link,columns:t.containerColumns,id:t.id},{default:n(()=>[g(A,null,{default:n(()=>[(a(!0),d(f,null,k(t.widgets,(c,C)=>(a(),d(f,{key:C},[c.type==="Stat"?(a(),u(H,$(p({key:0},c.data)),null,16)):o("",!0)],64))),128))]),_:2},1024)]),_:2},1032,["gridLayoutClass","type","title","link","columns","id"]))),128))}},T={__name:"Home",setup(i){const e=q({builder:""});return j(()=>{const s="data-server-builder",r=document.querySelector(`[${s}]`),t=r&&!r.getAttribute(s).includes(s)?JSON.parse(atob(r.getAttribute(s))):{};e.builder=t}),x(()=>{z()}),(s,r)=>(a(),u(I,null,{default:n(()=>[e.builder?(a(),u(M,{key:0,builder:e.builder},null,8,["builder"])):o("",!0)]),_:1}))}},G=L();O(T).use(G).use(P(["dashboard","action","inp","icons","home"])).mount("#app"); diff --git a/src/ui/static/assets/instances-67da6d8b.js b/src/ui/static/assets/instances-32f9ed21.js similarity index 93% rename from src/ui/static/assets/instances-67da6d8b.js rename to src/ui/static/assets/instances-32f9ed21.js index eab80e77e..1b5f1287f 100644 --- a/src/ui/static/assets/instances-67da6d8b.js +++ b/src/ui/static/assets/instances-32f9ed21.js @@ -1 +1 @@ -import{r as h,c as $,v as k,C as v,b as r,h as n,j as _,n as p,t as g,F as d,q as m,g as b,a as S,o as q,d as i,m as C,D as A,w as f,k as c,l as B,p as E,s as w,i as I,u as N,x as P,y as D,z as F,A as L,B as O}from"./Title-9ae7a316.js";const x=["aria-labelledby"],z=["id"],V={__name:"Status",props:{id:{type:String,required:!1,default:""},status:{type:String,required:!0,default:"info"},statusClass:{type:String,required:!1,default:""}},setup(a){const t=a,s=h({id:""}),e=$(()=>{if(t.status==="success")return"dashboard_status_success";if(t.status==="error")return"dashboard_status_error";if(t.status==="warning")return"dashboard_status_warning";if(t.status==="info")return"dashboard_status_info"});return k(()=>{s.id=v(t.id)}),(u,l)=>(r(),n("div",{class:p([t.statusClass,"status-svg-container"])},[_("div",{role:"img","aria-labelledby":`status-${s.id}`,class:p([t.status,"status-icon"])},null,10,x),_("p",{id:`status-${s.id}`,class:"sr-only"},g(u.$t(e.value)),9,z)],2))}},j={key:0,"data-is":"list-pairs",class:p(["list-pairs-container"])},G={class:"list-pairs-title"},J={class:"list-pairs-subtitle"},M={__name:"Pairs",props:{pairs:{type:Array,required:!0},columns:{type:Object,required:!1,default:{pc:12,tablet:12,mobile:12}}},setup(a){const t=a,s=$(()=>`col-span-${t.columns.mobile} md:col-span-${t.columns.tablet} lg:col-span-${t.columns.pc}`);return(e,u)=>t.pairs?(r(),n("ul",j,[(r(!0),n(d,null,m(t.pairs,l=>(r(),n("li",{class:p(["list-pairs-item",s.value])},[_("span",G,g(e.$t(l.key,e.$t("dashboard_placeholder",l.key))),1),_("span",J,g(e.$t(l.value,e.$t("dashboard_placeholder",l.value))),1)],2))),256))])):b("",!0)}},T={__name:"ButtonGroup",props:{buttons:{type:Array,required:!0,default:[]},groupClass:{type:String,required:!1,default:""}},setup(a){const t=a,s=h({class:""}),e=S(null);return q(()=>{s.class=t.groupClass||e.value.closest("[data-is]")?`button-group-${e.value.closest("[data-is]").getAttribute("data-is")}`:"button-group-default"}),(u,l)=>t.buttons.length>0?(r(),n("div",{key:0,ref_key:"groupEl",ref:e,class:p([s.class,t.groupClass])},[(r(!0),n(d,null,m(t.buttons,(o,y)=>(r(),i(A,C({key:o},o,{class:[y===t.buttons.length-1?"":"mr-2"]}),null,16,["class"]))),128))],2)):b("",!0)}},U={__name:"Instance",props:{title:{type:String,required:!0},status:{type:String,required:!0,default:""},pairs:{type:Array,required:!0,default:[]},buttons:{type:Array,required:!0,default:[]}},setup(a){const t=a;return(s,e)=>(r(),i(E,{"data-is":"instance",columns:{pc:12,tablet:12,mobile:12}},{default:f(()=>[c(V,{id:t.title,status:t.status},null,8,["id","status"]),c(B,{type:"card",title:t.title},null,8,["title"]),c(M,{pairs:t.pairs},null,8,["pairs"]),c(T,{buttons:t.buttons},null,8,["buttons"])]),_:1}))}},H={__name:"Instances",props:{builder:{type:Array,required:!0}},setup(a){const t=a;return(s,e)=>(r(!0),n(d,null,m(t.builder,(u,l)=>(r(),i(N,{key:l,gridLayoutClass:u.containerClass,type:u.type,title:u.title,link:u.link,columns:u.containerColumns,id:u.id},{default:f(()=>[c(w,null,{default:f(()=>[(r(!0),n(d,null,m(u.widgets,(o,y)=>(r(),n(d,{key:y},[o.type==="Instance"?(r(),i(U,I(C({key:0},o.data)),null,16)):b("",!0)],64))),128))]),_:2},1024)]),_:2},1032,["gridLayoutClass","type","title","link","columns","id"]))),128))}};function K(){window.addEventListener("click",a=>{if(a.target.hasAttribute("data-submit-form"))try{const t=JSON.parse(a.target.getAttribute("data-submit-form"));Q(t)}catch(t){console.log(t)}})}function Q(a){const t=document.createElement("form");t.style.display="none",t.method="POST";try{const s=document.querySelector("[data-csrf-token]");s&&(a.csrf_token=s.getAttribute("data-csrf-token"))}catch{}for(const s in a){const e=document.createElement("input");e.type="hidden",e.name=s,e.value=a[s],t.appendChild(e)}document.querySelector("body").appendChild(t),t.submit()}const R={__name:"Instances",setup(a){const t=h({builder:""});return k(()=>{const s="data-server-builder",e=document.querySelector(`[${s}]`),u=e&&!e.getAttribute(s).includes(s)?JSON.parse(e.getAttribute(s)):{};t.builder=u}),q(()=>{P(),K()}),(s,e)=>(r(),i(D,null,{default:f(()=>[t.builder?(r(),i(H,{key:0,builder:t.builder},null,8,["builder"])):b("",!0)]),_:1}))}},W=F();L(R).use(W).use(O(["dashboard","action","inp","icons","instances"])).mount("#app"); +import{r as h,c as $,v as k,C as v,b as r,h as n,j as _,n as p,t as g,F as d,q as m,g as b,a as S,o as q,d as i,m as C,D as A,w as f,k as c,l as B,p as E,s as w,i as I,u as N,x as P,y as D,z as F,A as L,B as O}from"./Title-9ae7a316.js";const x=["aria-labelledby"],z=["id"],V={__name:"Status",props:{id:{type:String,required:!1,default:""},status:{type:String,required:!0,default:"info"},statusClass:{type:String,required:!1,default:""}},setup(a){const t=a,s=h({id:""}),e=$(()=>{if(t.status==="success")return"dashboard_status_success";if(t.status==="error")return"dashboard_status_error";if(t.status==="warning")return"dashboard_status_warning";if(t.status==="info")return"dashboard_status_info"});return k(()=>{s.id=v(t.id)}),(u,l)=>(r(),n("div",{class:p([t.statusClass,"status-svg-container"])},[_("div",{role:"img","aria-labelledby":`status-${s.id}`,class:p([t.status,"status-icon"])},null,10,x),_("p",{id:`status-${s.id}`,class:"sr-only"},g(u.$t(e.value)),9,z)],2))}},j={key:0,"data-is":"list-pairs",class:p(["list-pairs-container"])},G={class:"list-pairs-title"},J={class:"list-pairs-subtitle"},M={__name:"Pairs",props:{pairs:{type:Array,required:!0},columns:{type:Object,required:!1,default:{pc:12,tablet:12,mobile:12}}},setup(a){const t=a,s=$(()=>`col-span-${t.columns.mobile} md:col-span-${t.columns.tablet} lg:col-span-${t.columns.pc}`);return(e,u)=>t.pairs?(r(),n("ul",j,[(r(!0),n(d,null,m(t.pairs,l=>(r(),n("li",{class:p(["list-pairs-item",s.value])},[_("span",G,g(e.$t(l.key,e.$t("dashboard_placeholder",l.key))),1),_("span",J,g(e.$t(l.value,e.$t("dashboard_placeholder",l.value))),1)],2))),256))])):b("",!0)}},T={__name:"ButtonGroup",props:{buttons:{type:Array,required:!0,default:[]},groupClass:{type:String,required:!1,default:""}},setup(a){const t=a,s=h({class:""}),e=S(null);return q(()=>{s.class=t.groupClass||e.value.closest("[data-is]")?`button-group-${e.value.closest("[data-is]").getAttribute("data-is")}`:"button-group-default"}),(u,l)=>t.buttons.length>0?(r(),n("div",{key:0,ref_key:"groupEl",ref:e,class:p([s.class,t.groupClass])},[(r(!0),n(d,null,m(t.buttons,(o,y)=>(r(),i(A,C({key:o},o,{class:[y===t.buttons.length-1?"":"mr-2"]}),null,16,["class"]))),128))],2)):b("",!0)}},U={__name:"Instance",props:{title:{type:String,required:!0},status:{type:String,required:!0,default:""},pairs:{type:Array,required:!0,default:[]},buttons:{type:Array,required:!0,default:[]}},setup(a){const t=a;return(s,e)=>(r(),i(E,{"data-is":"instance",columns:{pc:12,tablet:12,mobile:12}},{default:f(()=>[c(V,{id:t.title,status:t.status},null,8,["id","status"]),c(B,{type:"card",title:t.title},null,8,["title"]),c(M,{pairs:t.pairs},null,8,["pairs"]),c(T,{buttons:t.buttons},null,8,["buttons"])]),_:1}))}},H={__name:"Instances",props:{builder:{type:Array,required:!0}},setup(a){const t=a;return(s,e)=>(r(!0),n(d,null,m(t.builder,(u,l)=>(r(),i(N,{key:l,gridLayoutClass:u.containerClass,type:u.type,title:u.title,link:u.link,columns:u.containerColumns,id:u.id},{default:f(()=>[c(w,null,{default:f(()=>[(r(!0),n(d,null,m(u.widgets,(o,y)=>(r(),n(d,{key:y},[o.type==="Instance"?(r(),i(U,I(C({key:0},o.data)),null,16)):b("",!0)],64))),128))]),_:2},1024)]),_:2},1032,["gridLayoutClass","type","title","link","columns","id"]))),128))}};function K(){window.addEventListener("click",a=>{if(a.target.hasAttribute("data-submit-form"))try{const t=JSON.parse(a.target.getAttribute("data-submit-form"));Q(t)}catch(t){console.log(t)}})}function Q(a){const t=document.createElement("form");t.style.display="none",t.method="POST";try{const s=document.querySelector("[data-csrf-token]");s&&(a.csrf_token=s.getAttribute("data-csrf-token"))}catch{}for(const s in a){const e=document.createElement("input");e.type="hidden",e.name=s,e.value=a[s],t.appendChild(e)}document.querySelector("body").appendChild(t),t.submit()}const R={__name:"Instances",setup(a){const t=h({builder:""});return k(()=>{const s="data-server-builder",e=document.querySelector(`[${s}]`),u=e&&!e.getAttribute(s).includes(s)?JSON.parse(atob(e.getAttribute(s))):{};t.builder=u}),q(()=>{P(),K()}),(s,e)=>(r(),i(D,null,{default:f(()=>[t.builder?(r(),i(H,{key:0,builder:t.builder},null,8,["builder"])):b("",!0)]),_:1}))}},W=F();L(R).use(W).use(O(["dashboard","action","inp","icons","instances"])).mount("#app"); diff --git a/src/ui/templates/home.html b/src/ui/templates/home.html index 03a1ab29e..053d92f94 100644 --- a/src/ui/templates/home.html +++ b/src/ui/templates/home.html @@ -7,7 +7,7 @@ BunkerWeb | DASHBOARD - + @@ -19,9 +19,9 @@ {% endfor %} {% endwith %} - + - +
\ No newline at end of file diff --git a/src/ui/templates/instances.html b/src/ui/templates/instances.html index a2609950c..e49438049 100644 --- a/src/ui/templates/instances.html +++ b/src/ui/templates/instances.html @@ -7,7 +7,7 @@ BunkerWeb | DASHBOARD - + @@ -19,9 +19,9 @@ {% endfor %} {% endwith %} - + - +
\ No newline at end of file