diff --git a/bin/render-build.sh b/bin/render-build.sh
index 5f260f64..1f95dc7f 100755
--- a/bin/render-build.sh
+++ b/bin/render-build.sh
@@ -10,16 +10,3 @@ echo "Precompiling assets..."
./bin/rails assets:clean
echo "Build complete"
-
-# Self Hosters:
-#
-# By default, one-click deploys are free-tier instances (to avoid unexpected charges)
-# Render does NOT allow free-tier instances to use the `preDeployCommand` feature, so
-# database migrations must be run in the build step.
-#
-# If you're on a paid Render plan, you can remove the `RUN_DB_MIGRATIONS_IN_BUILD_STEP` (or set to `false`)
-if [ "$RUN_DB_MIGRATIONS_IN_BUILD_STEP" = "true" ]; then
- echo "Initiating database migrations for the free tier..."
- bundle exec rails db:migrate
- echo "Database migrations completed. Reminder: If you've moved to a Render paid plan, you can remove the RUN_DB_MIGRATIONS_IN_BUILD_STEP environment variable to utilize the `preDeployCommand` feature for migrations."
-fi
diff --git a/compose.example.yml b/compose.example.yml
new file mode 100644
index 00000000..ea6b5b63
--- /dev/null
+++ b/compose.example.yml
@@ -0,0 +1,100 @@
+# ===========================================================================
+# Example Docker Compose file
+# ===========================================================================
+#
+# Purpose:
+# --------
+#
+# This file is an example Docker Compose configuration for self hosting
+# Maybe on your local machine or on a cloud VPS.
+#
+# The configuration below is a "standard" setup that works out of the box,
+# but if you're running this outside of a local network, it is recommended
+# to set the environment variables for extra security.
+#
+# Setup:
+# ------
+#
+# To run this, you should read the setup guide:
+#
+# https://github.com/maybe-finance/maybe/blob/main/docs/hosting/docker.md
+#
+# Troubleshooting:
+# ----------------
+#
+# If you run into problems, you should open a Discussion here:
+#
+# https://github.com/maybe-finance/maybe/discussions/categories/general
+#
+
+x-db-env: &db_env
+ POSTGRES_USER: ${POSTGRES_USER:-maybe_user}
+ POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-maybe_password}
+ POSTGRES_DB: ${POSTGRES_DB:-maybe_production}
+
+x-rails-env: &rails_env
+ <<: *db_env
+ SECRET_KEY_BASE: ${SECRET_KEY_BASE:-a7523c3d0ae56415046ad8abae168d71074a79534a7062258f8d1d51ac2f76d3c3bc86d86b6b0b307df30d9a6a90a2066a3fa9e67c5e6f374dbd7dd4e0778e13}
+ SELF_HOSTED: "true"
+ RAILS_FORCE_SSL: "false"
+ RAILS_ASSUME_SSL: "false"
+ DB_HOST: db
+ DB_PORT: 5432
+ REDIS_URL: redis://redis:6379/1
+
+services:
+ web:
+ image: ghcr.io/maybe-finance/maybe:latest
+ volumes:
+ - app-storage:/rails/storage
+ ports:
+ - 3000:3000
+ restart: unless-stopped
+ environment:
+ <<: *rails_env
+ depends_on:
+ db:
+ condition: service_healthy
+ redis:
+ condition: service_healthy
+
+ worker:
+ image: ghcr.io/maybe-finance/maybe:latest
+ command: bundle exec sidekiq
+ restart: unless-stopped
+ depends_on:
+ redis:
+ condition: service_healthy
+ environment:
+ <<: *rails_env
+
+ db:
+ image: postgres:16
+ restart: unless-stopped
+ volumes:
+ - postgres-data:/var/lib/postgresql/data
+ environment:
+ <<: *db_env
+ healthcheck:
+ test: [ "CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB" ]
+ interval: 5s
+ timeout: 5s
+ retries: 5
+
+ redis:
+ image: redis:latest
+ ports:
+ - 6379:6379
+ restart: unless-stopped
+ volumes:
+ - redis-data:/data
+ healthcheck:
+ test: [ "CMD", "redis-cli", "ping" ]
+ interval: 5s
+ timeout: 5s
+ retries: 5
+
+volumes:
+ app-storage:
+ postgres-data:
+ redis-data:
\ No newline at end of file
diff --git a/config/application.rb b/config/application.rb
index df4c0f36..a5d2e280 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -24,8 +24,6 @@ module Maybe
# config.time_zone = "Central Time (US & Canada)"
# config.eager_load_paths << Rails.root.join("extras")
- config.active_job.queue_adapter = :good_job
-
# TODO: This is here for incremental adoption of localization. This can be removed when all translations are implemented.
config.i18n.fallbacks = true
diff --git a/config/cable.yml b/config/cable.yml
index cc73650e..3474a21a 100644
--- a/config/cable.yml
+++ b/config/cable.yml
@@ -1,8 +1,10 @@
development:
- adapter: postgresql
+ adapter: async
test:
adapter: test
production:
- adapter: postgresql
+ adapter: redis
+ url: <%= ENV.fetch("REDIS_URL") { "redis://localhost:6379/1" } %>
+ channel_prefix: maybe_production
diff --git a/config/credentials.yml.enc b/config/credentials.yml.enc
index 142afb99..06708655 100644
--- a/config/credentials.yml.enc
+++ b/config/credentials.yml.enc
@@ -1 +1 @@
-HMC62biPQuF61XA8tnd/kvwdV2xr/zpfJxG+IHNgGtpuvPXi9oS+YemBGMLte+1Q7elzAAbmKg73699hVLkRcBCk/FaMQjGRF2lnJ9MpxSR/br8Uma2bSH40lIEjxAfzjr4JPSfsHxlArF30hfd+B9obPDOptLQbpENPBsmiuEHX7S0Y8SmKuzDUVrvdfeLoVuMiAZqOP5izpBAbXfvMjI3YH70iJAaPlfAxQqR89O2nSt+N27siyyfkypE3NHQKZFz+Rmo8uJDlaD3eo/uvQN4xsgRCMUar4X2iY4UOd+MIGAPqLzIUhhJ56G5MRDJ4XpJA6RDuGFc/LNyxdXt0WinUX8Yz7zKiKah1NkEhTkH+b2ylFbsN6cjlqcX0yw8Gw8B4osyHQGnj7Tuf1c8k1z3gBoaQALm8zxKCaJ9k6CopVM2GmbpCLcJqjN1L71wCe6MiWsv9LDF/pwuZNG6hWn0oykdkWeBEQyK8g4Wo1AHqgEi8XtRwbaX6yugO5WQFhjQG/LzXcG02E5Co5/r/G7ZSFpRC9ngoOx3LY6MihPRkTIOumCg3HHtAsWBeHe4L/rDIe4A=--hlLxVbnyuYXf7Rku--A6Cwdr3CAW6bRkl1rcRmRw==
\ No newline at end of file
+Be5nAlhacgJFHZJBgO8noswyX/VOrmkMem7wS3YQhoogzG0MCSVxCAVMbFyYFYUwqZrSPkAqUTpgH5OJJ1FB1gZfL9IYYWnEdTzMxM7IvhdDwYllYcM6smbvZEbOiqxLs9VdfC/qFS+1iFtsezBaqxfGdANJsJt3TxoRWl/ZbQ4Od1s0BNkMis1CDZt5RMEQlTz813cE5sXBlxhqEr9/2CaktwPIe5S/Oxrwo8vPFBvrNdox8BysiK9WDik8jJFSVwPSCvg43/MaIJUT0cOILdSxqrATXV143/h6ghNYtrJgoUNFT7wuu0FTU/ovTgtTqQEKG+7PDO1WLFn606bVknjPwfNMGBa9hX3LbRErDDIXNq69um9fPZ8Yq5f9jP++dPbAqbWBEg+JYsZmDgzr7LmtXVzQgAcuMkHaBbL8uxod8S1B6qhXhLNc8Dd1oeHVu0kcLFO2zaqdYRFNEY30JSjjXlG3GExXQE6aEluXvdF2gj9Hjhp7tEXZEJbIx+ZFy+6Xbrd1E2BE8AZUbalExAfudkPSYlAZ+z3fWc2RlNIuBzTYDOWH9Ai8mqsdyGNVEyizXQ==--j/6QtlLtP4mYXIFw--c+AKfDPo9stantWni+u+4Q==
\ No newline at end of file
diff --git a/config/database.yml b/config/database.yml
index c3142c2a..d3a412be 100644
--- a/config/database.yml
+++ b/config/database.yml
@@ -1,22 +1,7 @@
default: &default
adapter: postgresql
encoding: unicode
- # Note on DB_POOL_SIZE:
- # -------------------------------------------------------------------------------------------------------------
- # To optimize for the simplest self-hosting setup, we run ActionCable, GoodJob, and Rails in the same process.
- #
- # This requires DB connections for each:
- #
- # Puma: Requires 3 connections (Rails default)
- # ActionCable: 5 connections (Rails defaults to 4 workers + 1 listener for Postgres adapter)
- # GoodJob: 15 connections to run in "async" mode. See `good_job.rb` for the breakdown.
- # --------------------------------------------------------------------------------------------
- # Total: 23 connections
- #
- # We default to this value so that self-hosters don't need to configure anything. Hosted mode will require
- # a different pool size, as we run ActionCable, GoodJob, and Rails in separate processes.
- #
- pool: <%= ENV.fetch("DB_POOL_SIZE") { 23 } %>
+ pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 3 } %>
host: <%= ENV.fetch("DB_HOST") { "127.0.0.1" } %>
port: <%= ENV.fetch("DB_PORT") { "5432" } %>
user: <%= ENV.fetch("POSTGRES_USER") { nil } %>
diff --git a/config/environments/production.rb b/config/environments/production.rb
index 4670492d..e8327dc6 100644
--- a/config/environments/production.rb
+++ b/config/environments/production.rb
@@ -69,11 +69,12 @@ Rails.application.configure do
# want to log everything, set the level to "debug".
config.log_level = ENV.fetch("RAILS_LOG_LEVEL", "info")
- # Use a different cache store in production.
- # config.cache_store = :mem_cache_store
+ if ENV["CACHE_REDIS_URL"].present?
+ config.cache_store = :redis_cache_store, { url: ENV["CACHE_REDIS_URL"] }
+ end
config.action_mailer.perform_caching = false
-
+ config.action_mailer.deliver_later_queue_name = :high_priority
config.action_mailer.default_url_options = { host: ENV["APP_DOMAIN"] }
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
@@ -105,4 +106,7 @@ Rails.application.configure do
# ]
# Skip DNS rebinding protection for the default health check endpoint.
# config.host_authorization = { exclude: ->(request) { request.path == "/up" } }
+
+ # set REDIS_URL for Sidekiq to use Redis
+ config.active_job.queue_adapter = :sidekiq
end
diff --git a/config/initializers/good_job.rb b/config/initializers/good_job.rb
deleted file mode 100644
index fcfacc19..00000000
--- a/config/initializers/good_job.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-Rails.application.configure do
- config.good_job.enable_cron = true
-
- if ENV["UPGRADES_ENABLED"] == "true"
- config.good_job.cron = {
- auto_upgrade: {
- cron: "every 2 minutes",
- class: "AutoUpgradeJob",
- description: "Check for new versions of the app and upgrade if necessary"
- }
- }
- end
-
- config.good_job.on_thread_error = ->(exception) { Rails.error.report(exception) }
-
- # 7 dedicated queue threads + 5 catch-all threads + 3 for job listener, cron, executor = 15 threads allocated
- # `latency_low` queue for jobs ~30s
- # `latency_medium` queue for jobs ~1-2 min
- # `latency_high` queue for jobs ~5+ min
- config.good_job.queues = "latency_low:2;latency_low,latency_medium:3;latency_low,latency_medium,latency_high:2;*"
-
- # Auth for jobs admin dashboard
- ActiveSupport.on_load(:good_job_application_controller) do
- before_action do
- raise ActionController::RoutingError.new("Not Found") unless current_user&.super_admin? || Rails.env.development?
- end
-
- def current_user
- session = Session.find_by(id: cookies.signed[:session_token])
- session&.user
- end
- end
-end
diff --git a/config/initializers/sidekiq.rb b/config/initializers/sidekiq.rb
new file mode 100644
index 00000000..1209a4fa
--- /dev/null
+++ b/config/initializers/sidekiq.rb
@@ -0,0 +1,9 @@
+require "sidekiq/web"
+
+Sidekiq::Web.use(Rack::Auth::Basic) do |username, password|
+ configured_username = ::Digest::SHA256.hexdigest(ENV.fetch("SIDEKIQ_WEB_USERNAME", "maybe"))
+ configured_password = ::Digest::SHA256.hexdigest(ENV.fetch("SIDEKIQ_WEB_PASSWORD", "maybe"))
+
+ ActiveSupport::SecurityUtils.secure_compare(::Digest::SHA256.hexdigest(username), configured_username) &&
+ ActiveSupport::SecurityUtils.secure_compare(::Digest::SHA256.hexdigest(password), configured_password)
+end
diff --git a/config/locales/models/upgrader/en.yml b/config/locales/models/upgrader/en.yml
deleted file mode 100644
index 6a655717..00000000
--- a/config/locales/models/upgrader/en.yml
+++ /dev/null
@@ -1,13 +0,0 @@
----
-en:
- upgrader:
- deployer:
- null_deployer:
- success_message: 'No-op: null deployer initiated deploy successfully'
- render:
- deploy_log_error: 'Failed to deploy %{type} %{commit_sha} to Render: %{error_message}'
- deploy_log_info: Deploying %{type} %{commit_sha} to Render...
- error_message_failed_deploy: Failed to deploy to Render
- error_message_not_set: Render deploy hook URL is not set
- success_message: 'Triggered deployment to Render for commit: %{commit_sha}'
- troubleshooting_url: https://render.com/docs/deploy-hooks
diff --git a/config/locales/views/settings/hostings/en.yml b/config/locales/views/settings/hostings/en.yml
index bbcb8ee9..7377c492 100644
--- a/config/locales/views/settings/hostings/en.yml
+++ b/config/locales/views/settings/hostings/en.yml
@@ -11,11 +11,6 @@ en:
generate_tokens: Generate new code
generated_tokens: Generated codes
title: Require invite code for signup
- provider_settings:
- description: Configure settings for your hosting provider
- render_deploy_hook_label: Render Deploy Hook URL
- render_deploy_hook_placeholder: https://api.render.com/deploy/srv-xyz...
- title: Provider Settings
show:
general: General Settings
invites: Invite Codes
@@ -38,14 +33,4 @@ en:
success: Settings updated
clear_cache:
cache_cleared: Data cache has been cleared. This may take a few moments to complete.
- upgrade_settings:
- description: Configure how your application receives updates
- latest_commit_description: Automatically update to the latest commit (unstable)
- latest_commit_title: Latest Commit
- latest_release_description: Automatically update to the most recent release
- (stable)
- latest_release_title: Latest Release
- manual_description: You control when to download and install updates
- manual_title: Manual
- title: Auto Upgrade
not_authorized: You are not authorized to perform this action
diff --git a/config/locales/views/shared/en.yml b/config/locales/views/shared/en.yml
index 509cbd41..cb632738 100644
--- a/config/locales/views/shared/en.yml
+++ b/config/locales/views/shared/en.yml
@@ -10,8 +10,3 @@ en:
label: Amount
syncing_notice:
syncing: Syncing accounts data...
- upgrade_notification:
- app_upgraded: The app has been upgraded to %{version}.
- dismiss: Dismiss
- new_version_available: A new version of Maybe is available for upgrade.
- upgrade_now: Upgrade Now
diff --git a/config/locales/views/upgrades/en.yml b/config/locales/views/upgrades/en.yml
deleted file mode 100644
index b6dd9708..00000000
--- a/config/locales/views/upgrades/en.yml
+++ /dev/null
@@ -1,10 +0,0 @@
----
-en:
- upgrades:
- acknowledge:
- upgrade_complete_dismiss: We hope you enjoy the new features!
- upgrade_dismissed: Upgrade dismissed
- upgrade_not_available: Upgrade not available
- upgrade_not_found: Upgrade not found
- deploy:
- upgrade_not_found: Upgrade not found
diff --git a/config/routes.rb b/config/routes.rb
index da875dce..92845bc1 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -1,3 +1,5 @@
+require "sidekiq/web"
+
Rails.application.routes.draw do
# MFA routes
resource :mfa, controller: "mfa", only: [ :new, :create ] do
@@ -6,7 +8,8 @@ Rails.application.routes.draw do
delete :disable
end
- mount GoodJob::Engine => "good_job"
+ # Uses basic auth - see config/initializers/sidekiq.rb
+ mount Sidekiq::Web => "/sidekiq"
get "changelog", to: "pages#changelog"
get "feedback", to: "pages#feedback"
@@ -158,14 +161,6 @@ Rails.application.routes.draw do
get :accept, on: :member
end
- # For managing self-hosted upgrades and release notifications
- resources :upgrades, only: [] do
- member do
- post :acknowledge
- post :deploy
- end
- end
-
resources :currencies, only: %i[show]
resources :impersonation_sessions, only: [ :create ] do
diff --git a/config/sidekiq.yml b/config/sidekiq.yml
new file mode 100644
index 00000000..8d519d57
--- /dev/null
+++ b/config/sidekiq.yml
@@ -0,0 +1,5 @@
+concurrency: <%= ENV.fetch("RAILS_MAX_THREADS") { 3 } %>
+queues:
+ - [high_priority, 7]
+ - [medium_priority, 2]
+ - [low_priority, 1]
diff --git a/config/storage.yml b/config/storage.yml
index 6c92b2ba..c6acb48e 100644
--- a/config/storage.yml
+++ b/config/storage.yml
@@ -22,16 +22,4 @@ cloudflare:
bucket: <%= ENV['CLOUDFLARE_BUCKET'] %>
request_checksum_calculation: "when_required"
response_checksum_validation: "when_required"
-
-# Removed in #702. Uncomment, add gems, update .env.example to enable.
-#google:
-# service: GCS
-# project: <%#= ENV["GCS_PROJECT"] %>
-# credentials: <%#= Rails.root.join("gcp-storage-keyfile.json") %>
-# bucket: <%#= ENV["GCS_BUCKET"] %>
-
-#azure:
-# service: AzureStorage
-# storage_account_name: <%#= ENV["AZURE_STORAGE_ACCOUNT_NAME"] %>
-# storage_access_key: <%#= ENV["AZURE_STORAGE_ACCESS_KEY"] %>
-# container: <%#= ENV["AZURE_STORAGE_CONTAINER"] %>
+
diff --git a/db/migrate/20241022170439_create_stock_exchanges.rb b/db/migrate/20241022170439_create_stock_exchanges.rb
index f2e6ff5b..5eee20e4 100644
--- a/db/migrate/20241022170439_create_stock_exchanges.rb
+++ b/db/migrate/20241022170439_create_stock_exchanges.rb
@@ -20,11 +20,5 @@ class CreateStockExchanges < ActiveRecord::Migration[7.2]
add_index :stock_exchanges, :country
add_index :stock_exchanges, :country_code
add_index :stock_exchanges, :currency_code
-
- reversible do |dir|
- dir.up do
- load Rails.root.join('db/seeds/exchanges.rb')
- end
- end
end
end
diff --git a/db/migrate/20250318212559_remove_good_job.rb b/db/migrate/20250318212559_remove_good_job.rb
new file mode 100644
index 00000000..e3b79eb6
--- /dev/null
+++ b/db/migrate/20250318212559_remove_good_job.rb
@@ -0,0 +1,14 @@
+class RemoveGoodJob < ActiveRecord::Migration[7.2]
+ def up
+ drop_table :good_job_batches
+ drop_table :good_job_executions
+ drop_table :good_job_processes
+ drop_table :good_job_settings
+ drop_table :good_jobs
+ end
+
+ def down
+ # Add the tables back if needed - see schema.rb for the full table definitions
+ raise ActiveRecord::IrreversibleMigration
+ end
+end
diff --git a/db/migrate/20250319145426_remove_self_host_upgrades.rb b/db/migrate/20250319145426_remove_self_host_upgrades.rb
new file mode 100644
index 00000000..a69cd79a
--- /dev/null
+++ b/db/migrate/20250319145426_remove_self_host_upgrades.rb
@@ -0,0 +1,6 @@
+class RemoveSelfHostUpgrades < ActiveRecord::Migration[7.2]
+ def change
+ remove_column :users, :last_prompted_upgrade_commit_sha
+ remove_column :users, :last_alerted_upgrade_commit_sha
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index abbaacf5..7f30fe84 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema[7.2].define(version: 2025_03_16_122019) do
+ActiveRecord::Schema[7.2].define(version: 2025_03_19_145426) do
# These are extensions that must be enabled in order to support this database
enable_extension "pgcrypto"
enable_extension "plpgsql"
@@ -244,94 +244,6 @@ ActiveRecord::Schema[7.2].define(version: 2025_03_16_122019) do
t.boolean "data_enrichment_enabled", default: false
end
- create_table "good_job_batches", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t|
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
- t.text "description"
- t.jsonb "serialized_properties"
- t.text "on_finish"
- t.text "on_success"
- t.text "on_discard"
- t.text "callback_queue_name"
- t.integer "callback_priority"
- t.datetime "enqueued_at"
- t.datetime "discarded_at"
- t.datetime "finished_at"
- end
-
- create_table "good_job_executions", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t|
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
- t.uuid "active_job_id", null: false
- t.text "job_class"
- t.text "queue_name"
- t.jsonb "serialized_params"
- t.datetime "scheduled_at"
- t.datetime "finished_at"
- t.text "error"
- t.integer "error_event", limit: 2
- t.text "error_backtrace", array: true
- t.uuid "process_id"
- t.interval "duration"
- t.index ["active_job_id", "created_at"], name: "index_good_job_executions_on_active_job_id_and_created_at"
- t.index ["process_id", "created_at"], name: "index_good_job_executions_on_process_id_and_created_at"
- end
-
- create_table "good_job_processes", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t|
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
- t.jsonb "state"
- t.integer "lock_type", limit: 2
- end
-
- create_table "good_job_settings", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t|
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
- t.text "key"
- t.jsonb "value"
- t.index ["key"], name: "index_good_job_settings_on_key", unique: true
- end
-
- create_table "good_jobs", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t|
- t.text "queue_name"
- t.integer "priority"
- t.jsonb "serialized_params"
- t.datetime "scheduled_at"
- t.datetime "performed_at"
- t.datetime "finished_at"
- t.text "error"
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
- t.uuid "active_job_id"
- t.text "concurrency_key"
- t.text "cron_key"
- t.uuid "retried_good_job_id"
- t.datetime "cron_at"
- t.uuid "batch_id"
- t.uuid "batch_callback_id"
- t.boolean "is_discrete"
- t.integer "executions_count"
- t.text "job_class"
- t.integer "error_event", limit: 2
- t.text "labels", array: true
- t.uuid "locked_by_id"
- t.datetime "locked_at"
- t.index ["active_job_id", "created_at"], name: "index_good_jobs_on_active_job_id_and_created_at"
- t.index ["batch_callback_id"], name: "index_good_jobs_on_batch_callback_id", where: "(batch_callback_id IS NOT NULL)"
- t.index ["batch_id"], name: "index_good_jobs_on_batch_id", where: "(batch_id IS NOT NULL)"
- t.index ["concurrency_key"], name: "index_good_jobs_on_concurrency_key_when_unfinished", where: "(finished_at IS NULL)"
- t.index ["cron_key", "created_at"], name: "index_good_jobs_on_cron_key_and_created_at_cond", where: "(cron_key IS NOT NULL)"
- t.index ["cron_key", "cron_at"], name: "index_good_jobs_on_cron_key_and_cron_at_cond", unique: true, where: "(cron_key IS NOT NULL)"
- t.index ["finished_at"], name: "index_good_jobs_jobs_on_finished_at", where: "((retried_good_job_id IS NULL) AND (finished_at IS NOT NULL))"
- t.index ["labels"], name: "index_good_jobs_on_labels", where: "(labels IS NOT NULL)", using: :gin
- t.index ["locked_by_id"], name: "index_good_jobs_on_locked_by_id", where: "(locked_by_id IS NOT NULL)"
- t.index ["priority", "created_at"], name: "index_good_job_jobs_for_candidate_lookup", where: "(finished_at IS NULL)"
- t.index ["priority", "created_at"], name: "index_good_jobs_jobs_on_priority_created_at_when_unfinished", order: { priority: "DESC NULLS LAST" }, where: "(finished_at IS NULL)"
- t.index ["priority", "scheduled_at"], name: "index_good_jobs_on_priority_scheduled_at_unfinished_unlocked", where: "((finished_at IS NULL) AND (locked_by_id IS NULL))"
- t.index ["queue_name", "scheduled_at"], name: "index_good_jobs_on_queue_name_and_scheduled_at", where: "(finished_at IS NULL)"
- t.index ["scheduled_at"], name: "index_good_jobs_on_scheduled_at", where: "(finished_at IS NULL)"
- end
-
create_table "impersonation_session_logs", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t|
t.uuid "impersonation_session_id", null: false
t.string "controller"
@@ -652,8 +564,6 @@ ActiveRecord::Schema[7.2].define(version: 2025_03_16_122019) do
t.string "password_digest"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
- t.string "last_prompted_upgrade_commit_sha"
- t.string "last_alerted_upgrade_commit_sha"
t.string "role", default: "member", null: false
t.boolean "active", default: true, null: false
t.datetime "onboarded_at"
diff --git a/db/seeds/.keep b/db/seeds/.keep
new file mode 100644
index 00000000..e69de29b
diff --git a/db/seeds/exchanges.rb b/db/seeds/exchanges.rb
deleted file mode 100644
index 3f5cc39f..00000000
--- a/db/seeds/exchanges.rb
+++ /dev/null
@@ -1,36 +0,0 @@
-# Load exchanges from YAML configuration
-exchanges_config = YAML.safe_load(
- File.read(Rails.root.join('config', 'exchanges.yml')),
- permitted_classes: [],
- permitted_symbols: [],
- aliases: true
-)
-
-exchanges_config.each do |exchange|
- next unless exchange['mic'].present? # Skip any invalid entries
-
- StockExchange.find_or_create_by!(mic: exchange['mic']) do |ex|
- ex.name = exchange['name']
- ex.acronym = exchange['acronym']
- ex.country = exchange['country']
- ex.country_code = exchange['country_code']
- ex.city = exchange['city']
- ex.website = exchange['website']
-
- # Timezone details
- if exchange['timezone']
- ex.timezone_name = exchange['timezone']['timezone']
- ex.timezone_abbr = exchange['timezone']['abbr']
- ex.timezone_abbr_dst = exchange['timezone']['abbr_dst']
- end
-
- # Currency details
- if exchange['currency']
- ex.currency_code = exchange['currency']['code']
- ex.currency_symbol = exchange['currency']['symbol']
- ex.currency_name = exchange['currency']['name']
- end
- end
-end
-
-puts "Created #{StockExchange.count} stock exchanges"
diff --git a/docker-compose.example.yml b/docker-compose.example.yml
deleted file mode 100644
index 683d35de..00000000
--- a/docker-compose.example.yml
+++ /dev/null
@@ -1,74 +0,0 @@
-# ===========================================================================
-# Example Docker Compose file
-# ===========================================================================
-#
-# Purpose:
-# --------
-#
-# This file is an example Docker Compose configuration for self hosting
-# Maybe on your local machine or on a cloud VPS.
-#
-# The configuration below is a "standard" setup, but may require modification
-# for your specific environment.
-#
-# Setup:
-# ------
-#
-# To run this, you should read the setup guide:
-#
-# https://github.com/maybe-finance/maybe/blob/main/docs/hosting/docker.md
-#
-# Troubleshooting:
-# ----------------
-#
-# If you run into problems, you should open a Discussion here:
-#
-# https://github.com/maybe-finance/maybe/discussions/categories/general
-#
-
-services:
-
- app:
- image: ghcr.io/maybe-finance/maybe:latest
-
- volumes:
- - app-storage:/rails/storage
-
- ports:
- - 3000:3000
-
- restart: unless-stopped
-
- environment:
- SELF_HOSTED: "true"
- RAILS_FORCE_SSL: "false"
- RAILS_ASSUME_SSL: "false"
- GOOD_JOB_EXECUTION_MODE: async
- SECRET_KEY_BASE: ${SECRET_KEY_BASE:?}
- DB_HOST: postgres
- POSTGRES_DB: ${POSTGRES_DB:-maybe_production}
- POSTGRES_USER: ${POSTGRES_USER:-maybe_user}
- POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?}
-
- depends_on:
- postgres:
- condition: service_healthy
-
- postgres:
- image: postgres:16
- restart: unless-stopped
- volumes:
- - postgres-data:/var/lib/postgresql/data
- environment:
- POSTGRES_USER: ${POSTGRES_USER:-maybe_user}
- POSTGRES_DB: ${POSTGRES_DB:-maybe_production}
- POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?}
- healthcheck:
- test: [ "CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB" ]
- interval: 5s
- timeout: 5s
- retries: 5
-
-volumes:
- app-storage:
- postgres-data:
\ No newline at end of file
diff --git a/docs/hosting/docker.md b/docs/hosting/docker.md
index c112f42d..940a685f 100644
--- a/docs/hosting/docker.md
+++ b/docs/hosting/docker.md
@@ -2,10 +2,6 @@
This guide will help you setup, update, and maintain your self-hosted Maybe application with Docker Compose. Docker Compose is the most popular and recommended way to self-host the Maybe app.
-If you want a _less
-technical_ way to host the Maybe app, you can [host on Render](/docs/hosting/one-click-deploy.md) as an
-_**alternative** to Docker Compose_.
-
## Setup Guide
Follow the guide below to get your app running.
@@ -30,7 +26,7 @@ docker run hello-world
Open your terminal and create a directory where your app will run. Below is an example command with a recommended directory:
```bash
-# Create a directory on your computer for Docker files
+# Create a directory on your computer for Docker files (name whatever you'd like)
mkdir -p ~/docker-apps/maybe
# Once created, navigate your current working directory to the new folder
@@ -42,8 +38,8 @@ cd ~/docker-apps/maybe
Make sure you are in the directory you just created and run the following command:
```bash
-# Download the sample docker-compose.yml file from the Maybe Github repository
-curl -o compose.yml https://raw.githubusercontent.com/maybe-finance/maybe/main/docker-compose.example.yml
+# Download the sample compose.yml file from the Maybe Github repository
+curl -o compose.yml https://raw.githubusercontent.com/maybe-finance/maybe/main/compose.example.yml
```
This command will do the following:
@@ -53,6 +49,12 @@ This command will do the following:
At this point, the only file in your current working directory should be `compose.yml`.
+### Step 3 (optional): Configure your environment
+
+By default, our `compose.example.yml` file runs without any configuration. That said, if you would like extra security (important if you're running outside of a local network), you can follow the steps below to set things up.
+
+If you're running the app locally and don't care much about security, you can skip this step.
+
#### Create your environment file
In order to configure the app, you will need to create a file called `.env`, which is where Docker will read environment variables from.
@@ -92,7 +94,7 @@ SECRET_KEY_BASE="replacemewiththegeneratedstringfromthepriorstep"
POSTGRES_PASSWORD="replacemewithyourdesireddatabasepassword"
```
-### Step 3: Test your app
+### Step 4: Run the app
You are now ready to run the app. Start with the following command to make sure everything is working:
@@ -106,14 +108,14 @@ Open your browser, and navigate to `http://localhost:3000`.
If everything is working, you will see the Maybe login screen.
-### Step 4: Create your account
+### Step 5: Create your account
The first time you run the app, you will need to register a new account by hitting "create your account" on the login page.
1. Enter your email
2. Enter a password
-### Step 5: Run the app in the background
+### Step 6: Run the app in the background
Most self-hosting users will want the Maybe app to run in the background on their computer so they can access it at all times. To do this, hit `Ctrl+C` to stop the running process, and then run the following command:
@@ -127,7 +129,7 @@ The `-d` flag will run Docker Compose in "detached" mode. To verify it is runnin
docker compose ls
```
-### Step 6: Enjoy!
+### Step 7: Enjoy!
Your app is now set up. You can visit it at `http://localhost:3000` in your browser.
@@ -135,7 +137,7 @@ If you find bugs or have a feature request, be sure to read through our [contrib
## How to update your app
-The mechanism that updates your self-hosted Maybe app is the GHCR (Github Container Registry) Docker image that you see in the `docker-compose.yml` file:
+The mechanism that updates your self-hosted Maybe app is the GHCR (Github Container Registry) Docker image that you see in the `compose.yml` file:
```yml
image: ghcr.io/maybe-finance/maybe:latest
@@ -152,13 +154,13 @@ NOT_ automatically update. To update your self-hosted app, run the following com
```bash
cd ~/docker-apps/maybe # Navigate to whatever directory you configured the app in
docker compose pull # This pulls the "latest" published image from GHCR
-docker compose build app # This rebuilds the app with updates
+docker compose build # This rebuilds the app with updates
docker compose up --no-deps -d app # This restarts the app using the newest version
```
## How to change which updates your app receives
-If you'd like to pin the app to a specific version or tag, all you need to do is edit the `docker-compose.yml` file:
+If you'd like to pin the app to a specific version or tag, all you need to do is edit the `compose.yml` file:
```yml
image: ghcr.io/maybe-finance/maybe:stable
@@ -168,7 +170,7 @@ After doing this, make sure and restart the app:
```bash
docker compose pull # This pulls the "latest" published image from GHCR
-docker compose build app # This rebuilds the app with updates
+docker compose build # This rebuilds the app with updates
docker compose up --no-deps -d app # This restarts the app using the newest version
```
diff --git a/docs/hosting/one-click-deploy.md b/docs/hosting/one-click-deploy.md
deleted file mode 100644
index 629f87fb..00000000
--- a/docs/hosting/one-click-deploy.md
+++ /dev/null
@@ -1,90 +0,0 @@
-# Deploy Maybe in One Click
-
-Below are our "one-click deploy" options for running Maybe in the cloud:
-
-## Render
-
-Welcome to the one-click deploy guide for Maybe on [Render](https://render.com/)!
-
-Render is a hosting platform with a generous free tier and makes it easy to get
-started with Maybe:
-
-- Getting started is FREE
-- Up and running in <5 minutes
-- Your Maybe app is automatically deployed to a live URL
-
-### Estimated Costs
-
-- FREE to _get up and running_
-- $7 per month for a basic app (Render requires you to upgrade your database to
- keep using it)
-- $14+ per month for optimal performance
-
-_**IMPORTANT:** if you plan to host Maybe on Render long-term, you MUST upgrade
-your database to a paid Render service._
-
-### Instructions
-
-#### Step 1: Create Render Blueprint
-
-
-
-
-
-1. Click the button above.
-2. Sign in or create your account with Render (FREE)
-3. Give your blueprint a name (we suggest `Maybe`)
-4. Select the `main` branch
-5. You should see a section at the bottom with a "Key:Value" field
- for `SECRET_KEY_BASE`. Do NOT click "generate".
-6. On your computer, open a terminal and make sure you have
- the [openssl](https://github.com/openssl/openssl) utility installed on your
- computer. You can run `openssl --version` to verify it is installed.
-7. Generate your `SECRET_KEY_BASE` by running the following command in your
- terminal: `openssl rand -hex 64` ([docs](https://www.openssl.org/docs/man1.1.1/man1/rand.html)).
-8. Do NOT share this value with anyone.
-9. Go back to your browser and paste this value in the "Value" field
- for `SECRET_KEY_BASE`
-10. Click "Apply". This will take a few minutes.
-11. Once complete, click on the `maybe` "Web Service". You should see a custom
- URL in the format `https://maybe-abcd.onrender.com`. Click on it, and you'll
- see your running Maybe app!
-
-#### Step 2: Add your deploy hook for auto-updates
-
-To get new releases, you will need to add your deploy hook to the app.
-
-1. Click on the `maybe` "Web Service"
-2. Click "Settings"
-3. Scroll down to the end of the "Build and Deploy" section until you find the "
- Deploy Hook"
-4. Copy this value
-5. Open your new Maybe app, click your profile, click "Self Host Settings"
-6. Paste your deploy hook in the settings and save
-7. You're all set!
-
-#### Step 3 (IMPORTANT!!!): Upgrade your Render services
-
-By default, we set you up with a FREE Render web service and a FREE postgres
-database. We do this for a few reasons:
-
-- It allows you to take self-hosted Maybe for a FREE test-drive
-- It prevents newcomers from incurring unexpected hosting charges
-
-##### Upgrade your Database (REQUIRED)
-
-All FREE Render databases **will be deleted after a few months**. This means
-that **you will lose all of your Maybe data**.
-
-**To avoid losing data, you MUST upgrade your Render database** (a "starter"
-instance is $7/month)
-
-You can upgrade your instance directly in the Render dashboard.
-
-##### Upgrade your Web Service (RECOMMENDED)
-
-All FREE Render web services use a small amount of memory and "sleep" after
-periods of inactivity.
-
-For the _fastest_ Maybe experience, you should upgrade your web service (a "
-starter" instance is $7/month)
diff --git a/render.yaml b/render.yaml
deleted file mode 100644
index e527a335..00000000
--- a/render.yaml
+++ /dev/null
@@ -1,60 +0,0 @@
-databases:
- - name: maybe
- user: maybe
- plan: free
-
-services:
- - type: web
- plan: free
- autoDeploy: false
- runtime: ruby
- name: maybe
- repo: https://github.com/maybe-finance/maybe.git
- branch: main
- healthCheckPath: /up
- buildCommand: "./bin/render-build.sh"
-
- # Uncomment if you are on a paid plan, and remove RUN_DB_MIGRATIONS_IN_BUILD_STEP from below
- # preDeployCommand: "bundle exec rails db:migrate"
-
- startCommand: "bundle exec rails server"
- envVars:
- - key: DATABASE_URL
- fromDatabase:
- name: maybe
- property: connectionString
-
- - key: SELF_HOSTED
- value: true
- - key: HOSTING_PLATFORM
- value: render
-
- # Since the app is self-hosted, we cannot use master.key to encrypt credentials. App depends entirely on ENV variables
- # https://api.rubyonrails.org/v7.1.3.2/classes/Rails/Application.html#method-i-secret_key_base
- #
- # To generate this, run: `openssl rand -hex 64` or `rails secret`
- - key: SECRET_KEY_BASE
- sync: false
-
- - key: WEB_CONCURRENCY
- value: 2
- - key: GOOD_JOB_EXECUTION_MODE
- value: async # Typically, `external` is used in prod, but this avoids another cron service and is generally fine for a self-hoster given low traffic
-
- # The app uses this info to know which repo to fetch latest commit data from for upgrades
- # This should MATCH the `repo` and `branch` keys in the config above ALWAYS
- - key: GITHUB_REPO_OWNER
- value: maybe-finance
- - key: GITHUB_REPO_NAME
- value: maybe
- - key: GITHUB_REPO_BRANCH
- value: main
-
- # Required to allow your self-hosted instance to be able to upgrade itself
- - key: UPGRADES_ENABLED
- value: true
-
- # If you upgrade your instance to a paid plan, you can set this to false (or remove it)
- # See note in `render-build.sh` script.
- - key: RUN_DB_MIGRATIONS_IN_BUILD_STEP
- value: true
diff --git a/test/controllers/sessions_controller_test.rb b/test/controllers/sessions_controller_test.rb
index 1ea37ca7..b0e91f62 100644
--- a/test/controllers/sessions_controller_test.rb
+++ b/test/controllers/sessions_controller_test.rb
@@ -37,17 +37,6 @@ class SessionsControllerTest < ActionDispatch::IntegrationTest
assert_nil Session.find_by(id: session_record.id)
end
- test "super admins can access the jobs page" do
- sign_in users(:maybe_support_staff)
- get good_job_url
- assert_redirected_to "http://www.example.com/good_job/jobs?locale=en"
- end
-
- test "non-super admins cannot access the jobs page" do
- get good_job_url
- assert_response :not_found
- end
-
test "redirects to MFA verification when MFA enabled" do
@user.setup_mfa!
@user.enable_mfa!
diff --git a/test/controllers/settings/hostings_controller_test.rb b/test/controllers/settings/hostings_controller_test.rb
index 2e092952..48213260 100644
--- a/test/controllers/settings/hostings_controller_test.rb
+++ b/test/controllers/settings/hostings_controller_test.rb
@@ -25,7 +25,7 @@ class Settings::HostingsControllerTest < ActionDispatch::IntegrationTest
end
assert_raises(RuntimeError, "Settings not available on non-self-hosted instance") do
- patch settings_hosting_url, params: { setting: { render_deploy_hook: "https://example.com" } }
+ patch settings_hosting_url, params: { setting: { require_invite_for_signup: true } }
end
end
@@ -40,25 +40,11 @@ class Settings::HostingsControllerTest < ActionDispatch::IntegrationTest
test "can update settings when self hosting is enabled" do
with_self_hosting do
- NEW_RENDER_DEPLOY_HOOK = "https://api.render.com/deploy/srv-abc123"
- assert_nil Setting.render_deploy_hook
+ assert_nil Setting.synth_api_key
- patch settings_hosting_url, params: { setting: { render_deploy_hook: NEW_RENDER_DEPLOY_HOOK } }
+ patch settings_hosting_url, params: { setting: { synth_api_key: "1234567890" } }
- assert_equal NEW_RENDER_DEPLOY_HOOK, Setting.render_deploy_hook
- end
- end
-
- test "can choose auto upgrades mode with a deploy hook" do
- with_self_hosting do
- NEW_RENDER_DEPLOY_HOOK = "https://api.render.com/deploy/srv-abc123"
- assert_nil Setting.render_deploy_hook
-
- patch settings_hosting_url, params: { setting: { render_deploy_hook: NEW_RENDER_DEPLOY_HOOK, upgrades_setting: "release" } }
-
- assert_equal "auto", Setting.upgrades_mode
- assert_equal "release", Setting.upgrades_target
- assert_equal NEW_RENDER_DEPLOY_HOOK, Setting.render_deploy_hook
+ assert_equal "1234567890", Setting.synth_api_key
end
end
diff --git a/test/controllers/upgrades_controller_test.rb b/test/controllers/upgrades_controller_test.rb
deleted file mode 100644
index c5978488..00000000
--- a/test/controllers/upgrades_controller_test.rb
+++ /dev/null
@@ -1,89 +0,0 @@
-require "test_helper"
-
-class UpgradesControllerTest < ActionDispatch::IntegrationTest
- setup do
- sign_in @user = users(:family_admin)
-
- @completed_upgrade = Upgrader::Upgrade.new(
- "commit",
- commit_sha: "47bb430954292d2fdcc81082af731a16b9587da3",
- version: Semver.new("0.0.0"),
- url: ""
- )
-
- @completed_upgrade.stubs(:complete?).returns(true)
- @completed_upgrade.stubs(:available?).returns(false)
-
- @available_upgrade = Upgrader::Upgrade.new(
- "commit",
- commit_sha: "47bb430954292d2fdcc81082af731a16b9587da4",
- version: Semver.new("0.1.0"),
- url: ""
- )
-
- @available_upgrade.stubs(:available?).returns(true)
- @available_upgrade.stubs(:complete?).returns(false)
- end
-
- test "controller not available when upgrades are disabled" do
- MOCK_COMMIT = "47bb430954292d2fdcc81082af731a16b9587da3"
-
- post acknowledge_upgrade_url(MOCK_COMMIT)
- assert_response :not_found
-
- post deploy_upgrade_url(MOCK_COMMIT)
- assert_response :not_found
- end
-
- test "should acknowledge an upgrade prompt" do
- with_env_overrides UPGRADES_ENABLED: "true" do
- Upgrader.stubs(:find_upgrade).returns(@available_upgrade)
-
- post acknowledge_upgrade_url(@available_upgrade.commit_sha)
-
- @user.reload
- assert_equal @user.last_prompted_upgrade_commit_sha, @available_upgrade.commit_sha
- assert :redirect
- end
- end
-
- test "should acknowledge an upgrade alert" do
- with_env_overrides UPGRADES_ENABLED: "true" do
- Upgrader.stubs(:find_upgrade).returns(@completed_upgrade)
-
- post acknowledge_upgrade_url(@completed_upgrade.commit_sha)
-
- @user.reload
- assert_equal @user.last_alerted_upgrade_commit_sha, @completed_upgrade.commit_sha
- assert :redirect
- end
- end
-
- test "should deploy an upgrade" do
- with_env_overrides UPGRADES_ENABLED: "true" do
- Upgrader.stubs(:find_upgrade).returns(@available_upgrade)
-
- post deploy_upgrade_path(@available_upgrade.commit_sha)
-
- @user.reload
- assert_equal @user.last_prompted_upgrade_commit_sha, @available_upgrade.commit_sha
- assert :redirect
- end
- end
-
- test "should rollback user state if upgrade fails" do
- with_env_overrides UPGRADES_ENABLED: "true" do
- PRIOR_COMMIT = "47bb430954292d2fdcc81082af731a16b9587da2"
- @user.update!(last_prompted_upgrade_commit_sha: PRIOR_COMMIT)
-
- Upgrader.stubs(:find_upgrade).returns(@available_upgrade)
- Upgrader.stubs(:upgrade_to).returns({ success: false })
-
- post deploy_upgrade_path(@available_upgrade.commit_sha)
-
- @user.reload
- assert_equal @user.last_prompted_upgrade_commit_sha, PRIOR_COMMIT
- assert :redirect
- end
- end
-end
diff --git a/test/interfaces/git_repository_provider_interface_test.rb b/test/interfaces/git_repository_provider_interface_test.rb
deleted file mode 100644
index 2b0dff8e..00000000
--- a/test/interfaces/git_repository_provider_interface_test.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-require "test_helper"
-
-module GitRepositoryProviderInterfaceTest
- extend ActiveSupport::Testing::Declarative
-
- test "git repository provider interface" do
- assert_respond_to @subject, :fetch_latest_upgrade_candidates
- end
-
- test "git repository provider response contract" do
- VCR.use_cassette "git_repository_provider/fetch_latest_upgrade_candidates" do
- response = @subject.fetch_latest_upgrade_candidates
-
- assert_valid_upgrade_candidate(response[:release])
- assert_valid_upgrade_candidate(response[:commit])
- end
- end
-
- private
- def assert_valid_upgrade_candidate(candidate)
- assert_equal Semver, candidate[:version].class
- assert_match URI::DEFAULT_PARSER.make_regexp, candidate[:url]
- assert_match(/\A[0-9a-f]{40}\z/, candidate[:commit_sha])
- end
-end
diff --git a/test/jobs/auto_upgrade_job_test.rb b/test/jobs/auto_upgrade_job_test.rb
deleted file mode 100644
index d68aa2a1..00000000
--- a/test/jobs/auto_upgrade_job_test.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-require "test_helper"
-
-class AutoUpgradeJobTest < ActiveJob::TestCase
- # test "the truth" do
- # assert true
- # end
-end
diff --git a/test/models/provider/github_test.rb b/test/models/provider/github_test.rb
deleted file mode 100644
index 6e425bf2..00000000
--- a/test/models/provider/github_test.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-require "test_helper"
-
-class Provider::GithubTest < ActiveSupport::TestCase
- include GitRepositoryProviderInterfaceTest
-
- setup do
- @subject = Provider::Github.new(owner: "rails", name: "rails", branch: "main")
- end
-end
diff --git a/test/models/upgrader/upgrade_test.rb b/test/models/upgrader/upgrade_test.rb
deleted file mode 100644
index cf99ed7c..00000000
--- a/test/models/upgrader/upgrade_test.rb
+++ /dev/null
@@ -1,36 +0,0 @@
-require "test_helper"
-
-class UpgradeTest < ActiveSupport::TestCase
- setup do
- data = {
- commit_sha: "latestcommit",
- version: Semver.new("0.1.0-alpha.2")
- }
-
- @commit_upgrade = Upgrader::Upgrade.new "commit", data
- @release_upgrade = Upgrader::Upgrade.new "release", data
- end
-
- test "available if latest commit and app not upgraded" do
- Maybe.stubs(:version).returns(@commit_upgrade.version)
- Maybe.stubs(:commit_sha).returns("outdatedcommitsha")
-
- assert @commit_upgrade.available?
- assert_not @release_upgrade.available?
- end
-
- test "available if latest release and app not upgraded" do
- Maybe.stubs(:version).returns(Semver.new("0.1.0-alpha.1"))
- Maybe.stubs(:commit_sha).returns("outdatedcommitsha")
-
- assert @commit_upgrade.available?
- assert @release_upgrade.available?
- end
-
- test "not available if app commit greater or equal to" do
- Maybe.stubs(:version).returns(@commit_upgrade.version)
- Maybe.stubs(:commit_sha).returns(@commit_upgrade.commit_sha)
-
- assert_not @commit_upgrade.available?
- end
-end
diff --git a/test/models/upgrader_test.rb b/test/models/upgrader_test.rb
deleted file mode 100644
index 6bad83ff..00000000
--- a/test/models/upgrader_test.rb
+++ /dev/null
@@ -1,88 +0,0 @@
-require "test_helper"
-
-class UpgraderTest < ActiveSupport::TestCase
- PRIOR_COMMIT = "47bb430954292d2fdcc81082af731a16b9587da2"
- CURRENT_COMMIT = "47bb430954292d2fdcc81082af731a16b9587da3"
- NEXT_COMMIT = "47bb430954292d2fdcc81082af731a16b9587da4"
-
- PRIOR_VERSION = Semver.new("0.1.0-alpha.3")
- CURRENT_VERSION = Semver.new("0.1.0-alpha.4")
- NEXT_VERSION = Semver.new("0.1.0-alpha.5")
-
- # Default setup assumes app is up to date
- setup do
- Upgrader.config = Upgrader::Config.new({ mode: :enabled })
-
- Maybe.stubs(:version).returns(CURRENT_VERSION)
- Maybe.stubs(:commit_sha).returns(CURRENT_COMMIT)
-
- stub_github_data(
- commit: create_upgrade_stub(CURRENT_VERSION, CURRENT_COMMIT),
- release: create_upgrade_stub(CURRENT_VERSION, CURRENT_COMMIT)
- )
- end
-
- test "finds 1 completed upgrade, 0 available upgrades when app is up to date" do
- assert_instance_of Upgrader::Upgrade, Upgrader.completed_upgrade
- assert_nil Upgrader.available_upgrade
- end
-
- test "finds 1 available and 1 completed upgrade when app is on latest release but behind latest commit" do
- stub_github_data(
- commit: create_upgrade_stub(CURRENT_VERSION, NEXT_COMMIT),
- release: create_upgrade_stub(CURRENT_VERSION, CURRENT_COMMIT)
- )
-
- assert_instance_of Upgrader::Upgrade, Upgrader.available_upgrade # commit is ahead of release
- assert_instance_of Upgrader::Upgrade, Upgrader.completed_upgrade # release is completed
- end
-
- test "when app is behind latest version and latest commit is ahead of release finds release upgrade and no completed upgrades" do
- Maybe.stubs(:version).returns(PRIOR_VERSION)
- Maybe.stubs(:commit_sha).returns(PRIOR_COMMIT)
-
- stub_github_data(
- commit: create_upgrade_stub(CURRENT_VERSION, NEXT_COMMIT),
- release: create_upgrade_stub(CURRENT_VERSION, CURRENT_COMMIT)
- )
-
- assert_equal "release", Upgrader.available_upgrade.type
- assert_nil Upgrader.completed_upgrade
- end
-
- test "defaults to app version when no release is found" do
- stub_github_data(
- commit: create_upgrade_stub(CURRENT_VERSION, NEXT_COMMIT),
- release: nil
- )
-
- # Upstream is 1 commit ahead, and we assume we're on the same release
- assert_equal "commit", Upgrader.available_upgrade.type
- end
-
- test "gracefully handles empty github info" do
- Provider::Github.any_instance.stubs(:fetch_latest_upgrade_candidates).returns(nil)
-
- assert_nil Upgrader.available_upgrade
- assert_nil Upgrader.completed_upgrade
- end
-
- test "deployer is null by default" do
- Upgrader.config = Upgrader::Config.new({ mode: :enabled })
- Upgrader::Deployer::Null.any_instance.expects(:deploy).with(nil).once
- Upgrader.upgrade_to(nil)
- end
-
- private
- def create_upgrade_stub(version, commit_sha)
- {
- version: version,
- commit_sha: commit_sha,
- url: ""
- }
- end
-
- def stub_github_data(commit: create_upgrade_stub(LATEST_VERSION, LATEST_COMMIT), release: create_upgrade_stub(LATEST_VERSION, LATEST_COMMIT))
- Provider::Github.any_instance.stubs(:fetch_latest_upgrade_candidates).returns({ commit:, release: })
- end
-end
diff --git a/test/vcr_cassettes/git_repository_provider/fetch_latest_release_notes.yml b/test/vcr_cassettes/git_repository_provider/fetch_latest_release_notes.yml
index aef67d92..a14b1755 100644
--- a/test/vcr_cassettes/git_repository_provider/fetch_latest_release_notes.yml
+++ b/test/vcr_cassettes/git_repository_provider/fetch_latest_release_notes.yml
@@ -10,7 +10,7 @@ http_interactions:
Accept:
- application/vnd.github.v3+json
User-Agent:
- - Octokit Ruby Gem 9.1.0
+ - Octokit Ruby Gem 9.2.0
Content-Type:
- application/json
Accept-Encoding:
@@ -21,7 +21,7 @@ http_interactions:
message: OK
headers:
Date:
- - Mon, 09 Sep 2024 20:03:24 GMT
+ - Wed, 19 Mar 2025 12:40:58 GMT
Content-Type:
- application/json; charset=utf-8
Cache-Control:
@@ -29,7 +29,7 @@ http_interactions:
Vary:
- Accept,Accept-Encoding, Accept, X-Requested-With
Etag:
- - W/"17af70a435e3513d63e7fe569e0863ad17c500158f39055d1b1cab704ab54b96"
+ - W/"cc42fb8190e3219e91e46d75f709c8b5762a1e8bf472008a702a4adf1e7dfb95"
X-Github-Media-Type:
- github.v3; format=json
X-Github-Api-Version-Selected:
@@ -55,62 +55,68 @@ http_interactions:
- default-src 'none'
Server:
- github.com
+ Accept-Ranges:
+ - bytes
X-Ratelimit-Limit:
- '60'
X-Ratelimit-Remaining:
- - '57'
+ - '59'
X-Ratelimit-Reset:
- - '1725915804'
+ - '1742391658'
X-Ratelimit-Resource:
- core
X-Ratelimit-Used:
- - '3'
- Accept-Ranges:
- - bytes
- Content-Length:
- - '52546'
+ - '1'
+ Transfer-Encoding:
+ - chunked
X-Github-Request-Id:
- - E979:365B86:C03B37:171BC72:66DF5497
+ - DDED:38A4A1:15FB4B:2C2CC0:67DABB5A
body:
encoding: ASCII-8BIT
string: !binary |-
- W3sidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE3MTY4NDg3MCIsImFzc2V0c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTcxNjg0ODcwL2Fzc2V0cyIsInVwbG9hZF91cmwiOiJodHRwczovL3VwbG9hZHMuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE3MTY4NDg3MC9hc3NldHN7P25hbWUsbGFiZWx9IiwiaHRtbF91cmwiOiJodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy90YWcvdjAuMS4wLWFscGhhLjE2IiwiaWQiOjE3MTY4NDg3MCwiYXV0aG9yIjp7ImxvZ2luIjoiemFjaGdvbGwiLCJpZCI6MTY2NzYxNTcsIm5vZGVfaWQiOiJNRFE2VlhObGNqRTJOamMyTVRVMyIsImF2YXRhcl91cmwiOiJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTY2NzYxNTc/dj00IiwiZ3JhdmF0YXJfaWQiOiIiLCJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsIiwiaHRtbF91cmwiOiJodHRwczovL2dpdGh1Yi5jb20vemFjaGdvbGwiLCJmb2xsb3dlcnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9mb2xsb3dlcnMiLCJmb2xsb3dpbmdfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9mb2xsb3dpbmd7L290aGVyX3VzZXJ9IiwiZ2lzdHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9naXN0c3svZ2lzdF9pZH0iLCJzdGFycmVkX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvc3RhcnJlZHsvb3duZXJ9ey9yZXBvfSIsInN1YnNjcmlwdGlvbnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9zdWJzY3JpcHRpb25zIiwib3JnYW5pemF0aW9uc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL29yZ3MiLCJyZXBvc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3JlcG9zIiwiZXZlbnRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZXZlbnRzey9wcml2YWN5fSIsInJlY2VpdmVkX2V2ZW50c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3JlY2VpdmVkX2V2ZW50cyIsInR5cGUiOiJVc2VyIiwic2l0ZV9hZG1pbiI6ZmFsc2V9LCJub2RlX2lkIjoiUkVfa3dET0tfdHhITTRLTzdRRyIsInRhZ19uYW1lIjoidjAuMS4wLWFscGhhLjE2IiwidGFyZ2V0X2NvbW1pdGlzaCI6Im1haW4iLCJuYW1lIjoidjAuMS4wLWFscGhhLjE2IiwiZHJhZnQiOmZhbHNlLCJwcmVyZWxlYXNlIjp0cnVlLCJjcmVhdGVkX2F0IjoiMjAyNC0wOC0yM1QxNDozOToxNFoiLCJwdWJsaXNoZWRfYXQiOiIyMDI0LTA4LTIzVDE0OjQ0OjE1WiIsImFzc2V0cyI6W10sInRhcmJhbGxfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3RhcmJhbGwvdjAuMS4wLWFscGhhLjE2IiwiemlwYmFsbF91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvemlwYmFsbC92MC4xLjAtYWxwaGEuMTYiLCJib2R5IjoiVGhpcyB3ZWVrJ3MgcmVsZWFzZSBjb21lcyB3aXRoIGEgdmFyaWV0eSBvZiBidWcgZml4ZXMgYW5kIGltcHJvdmVtZW50cyB0byB0aGUgVUkuXHJcblxyXG5BZGRpdGlvbmFsbHksIHVzZXJzIGNhbiBub3cgaW5wdXQgZGV0YWlscyBmb3IgdGhlaXIgcHJvcGVydHkgYW5kIHZlaGljbGUgYWNjb3VudHMgYXMgc2hvd24gaW4gdGhlIHZpZGVvIGJlbG93LiAgSW4gdGhlIG5lYXIgZnV0dXJlLCBNYXliZSB3aWxsIHN1cHBvcnQgZGF0YSBwcm92aWRlcnMgcmVsYXRlZCB0byB0aGUgXCJ2YWx1YXRpb25cIiBvZiBwcm9wZXJ0aWVzIGFuZCB2ZWhpY2xlcyAoaS5lLiBaaWxsb3csIEtCQikuICBXZSB3aWxsIHVzZSB0aGUgaW5mb3JtYXRpb24gZnJvbSB1c2VyIGFjY291bnRzIHRvIGF1dG9tYXRpY2FsbHkgZmV0Y2ggZXN0aW1hdGVkIG1hcmtldCB2YWx1ZXMgZm9yIHRoZXNlIGFzc2V0cyB3aGljaCB3aWxsIHRoZW4gYmUgYWRkZWQgcGVyaW9kaWNhbGx5IGFzIFwiVmFsdWF0aW9uc1wiIGluIHRoZSB2YWx1ZSB0YWIgb2YgZWFjaCBhY2NvdW50LiAgVGhpcyB3aWxsIHRoZW4gc2hvdyB1cCBpbiB0aGUgaGlzdG9yeSBncmFwaCBmb3IgdGhlIGFjY291bnQgYmFsYW5jZS5cclxuXHJcbmh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy9mZDc1OWM4Mi1hMjVjLTRjOGQtOGYxNi1mNTc3ZTA0MTBmYjVcclxuXHJcbiMjIFdoYXQncyBDaGFuZ2VkXHJcblxyXG4qIFJlZmFjdG9yOiBBbGxvdyBvdGhlciBpbXBvcnQgZmlsZXMgYnkgQHBlZHJvY2FybW9uYSBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEwOTlcclxuKiBCdW1wIHNlbnRyeS1ydWJ5IGZyb20gNS4xOC4yIHRvIDUuMTkuMCBieSBAZGVwZW5kYWJvdCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzExMDhcclxuKiBCdW1wIHN0aW11bHVzLXJhaWxzIGZyb20gMS4zLjMgdG8gMS4zLjQgYnkgQGRlcGVuZGFib3QgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMTA2XHJcbiogQnVtcCBhd3Mtc2RrLXMzIGZyb20gMS4xNTcuMCB0byAxLjE1OC4wIGJ5IEBkZXBlbmRhYm90IGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTEwNVxyXG4qIEJ1bXAgcnVieS1sc3AtcmFpbHMgZnJvbSAwLjMuMTIgdG8gMC4zLjEzIGJ5IEBkZXBlbmRhYm90IGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTEwN1xyXG4qIEJ1bXAgcHJvcHNoYWZ0IGZyb20gMC45LjAgdG8gMC45LjEgYnkgQGRlcGVuZGFib3QgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMTA0XHJcbiogQnVtcCBnb29kX2pvYiBmcm9tIDQuMS4xIHRvIDQuMi4wIGJ5IEBkZXBlbmRhYm90IGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTEwMlxyXG4qIEJ1bXAgdGFpbHdpbmRjc3MtcmFpbHMgZnJvbSAyLjcuMiB0byAyLjcuMyBieSBAZGVwZW5kYWJvdCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzExMDNcclxuKiBGaXggcXVlcnkgd2hlbiBhY2NvdW50IGhhcyB6ZXJvIGluY29tZSBhbmQgZXhwZW5zZSBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMTEyXHJcbiogRml4IGhvbGRpbmcgbmFtZSBlcnJvciBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMTEzXHJcbiogQWRkIFByb3BlcnR5IERldGFpbHMgVmlldyBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMTE2XHJcbiogQmFzaWMgVmVoaWNsZSBWaWV3IGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzExMTdcclxuKiBSdWJvY29wIHVwZGF0ZXMgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTExOFxyXG4qIEZpeCBmaWxlIHVwbG9hZCBVSSBvcGVuaW5nIHR3aWNlIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzExMTlcclxuXHJcblxyXG4qKkZ1bGwgQ2hhbmdlbG9nKio6IGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL2NvbXBhcmUvdjAuMS4wLWFscGhhLjE1Li4udjAuMS4wLWFscGhhLjE2IiwicmVhY3Rpb25zIjp7InVybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy8xNzE2ODQ4NzAvcmVhY3Rpb25zIiwidG90YWxfY291bnQiOjE5LCIrMSI6OCwiLTEiOjAsImxhdWdoIjowLCJob29yYXkiOjAsImNvbmZ1c2VkIjowLCJoZWFydCI6MCwicm9ja2V0Ijo5LCJleWVzIjoyfSwibWVudGlvbnNfY291bnQiOjN9LHsidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE3MDY1NTkyNCIsImFzc2V0c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTcwNjU1OTI0L2Fzc2V0cyIsInVwbG9hZF91cmwiOiJodHRwczovL3VwbG9hZHMuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE3MDY1NTkyNC9hc3NldHN7P25hbWUsbGFiZWx9IiwiaHRtbF91cmwiOiJodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy90YWcvdjAuMS4wLWFscGhhLjE1IiwiaWQiOjE3MDY1NTkyNCwiYXV0aG9yIjp7ImxvZ2luIjoiemFjaGdvbGwiLCJpZCI6MTY2NzYxNTcsIm5vZGVfaWQiOiJNRFE2VlhObGNqRTJOamMyTVRVMyIsImF2YXRhcl91cmwiOiJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTY2NzYxNTc/dj00IiwiZ3JhdmF0YXJfaWQiOiIiLCJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsIiwiaHRtbF91cmwiOiJodHRwczovL2dpdGh1Yi5jb20vemFjaGdvbGwiLCJmb2xsb3dlcnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9mb2xsb3dlcnMiLCJmb2xsb3dpbmdfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9mb2xsb3dpbmd7L290aGVyX3VzZXJ9IiwiZ2lzdHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9naXN0c3svZ2lzdF9pZH0iLCJzdGFycmVkX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvc3RhcnJlZHsvb3duZXJ9ey9yZXBvfSIsInN1YnNjcmlwdGlvbnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9zdWJzY3JpcHRpb25zIiwib3JnYW5pemF0aW9uc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL29yZ3MiLCJyZXBvc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3JlcG9zIiwiZXZlbnRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZXZlbnRzey9wcml2YWN5fSIsInJlY2VpdmVkX2V2ZW50c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3JlY2VpdmVkX2V2ZW50cyIsInR5cGUiOiJVc2VyIiwic2l0ZV9hZG1pbiI6ZmFsc2V9LCJub2RlX2lkIjoiUkVfa3dET0tfdHhITTRLTEFDMCIsInRhZ19uYW1lIjoidjAuMS4wLWFscGhhLjE1IiwidGFyZ2V0X2NvbW1pdGlzaCI6Im1haW4iLCJuYW1lIjoidjAuMS4wLWFscGhhLjE1IiwiZHJhZnQiOmZhbHNlLCJwcmVyZWxlYXNlIjp0cnVlLCJjcmVhdGVkX2F0IjoiMjAyNC0wOC0xNlQyMDowOTozN1oiLCJwdWJsaXNoZWRfYXQiOiIyMDI0LTA4LTE2VDIwOjE4OjIyWiIsImFzc2V0cyI6W10sInRhcmJhbGxfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3RhcmJhbGwvdjAuMS4wLWFscGhhLjE1IiwiemlwYmFsbF91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvemlwYmFsbC92MC4xLjAtYWxwaGEuMTUiLCJib2R5IjoiVGhpcyB3ZWVrLCB3ZSByZWxlYXNlZCB0aGUgZmlyc3QgdmVyc2lvbiBvZiBhbiBpc3N1ZSB0cmFja2luZyBzeXN0ZW0gZGlyZWN0bHkgd2l0aGluIHRoZSBNYXliZSBhcHAhXHJcblxyXG5XaHk/XHJcblxyXG5BcyBhbiBvcGVuLXNvdXJjZSBwZXJzb25hbCBmaW5hbmNlIGFwcCwgTWF5YmUgaGFzIGEgbXVjaCBsYXJnZXIgXCJzZWxmIHNlcnZpY2VcIiBjb21wb25lbnQgdGhhbiBtb3N0IGFwcGxpY2F0aW9ucy4gIFdoaWxlIHdlJ3JlIGluIHRoZSBlYXJseSBkYXlzLCB0aGUgZ29hbCBpcyB0byBzdXBwb3J0IGEgZ2xvYmFsIHVzZXIgYmFzZSwgd2hpY2ggbWVhbnMgd2UgaGF2ZSB0byBzdXBwb3J0IF9hIGxvdF8gb2YgZGF0YSBwcm92aWRlcnMuXHJcblxyXG5FYWNoIGRhdGEgcHJvdmlkZXIgY29tZXMgd2l0aCBpdHMgb3duIHNldCBvZiBudWFuY2VzIGFuZCBlcnJvcnMgdGhhdCBjYW4gYmUgY2hhbGxlbmdpbmcgdG8gZGVidWc7IGVzcGVjaWFsbHkgZm9yIG91ciBzbWFsbCB0ZWFtIHRoYXQgZG9lc24ndCBoYXZlIGFjY2VzcyB0byB5b3VyIHNlbGYgaG9zdGVkIGNvbmZpZ3VyYXRpb24uICBXaGVuIHRoaW5ncyBnbyB3cm9uZywgdGhlcmUgYXJlIGEgaGFuZGZ1bCBvZiBwb3NzaWJsZSBjYXVzZXMuXHJcblxyXG5JbiBvcmRlciB0byBjb21iYXQgdGhpcywgdGhlIGB2MC4xLjAtYWxwaGEuMTVgIHJlbGVhc2UgaW50cm9kdWNlcyBhIFwic2VsZiByZXNvbHV0aW9uXCIgaXNzdWUgdHJhY2tpbmcgc3lzdGVtLiAgVGhlIHZpZGVvIGJlbG93IGRlbW9uc3RyYXRlcyBob3cgYSB1c2VyIHdobyBoYXMgaW5jb3JyZWN0bHkgY29uZmlndXJlZCB0aGVpciBleGNoYW5nZSByYXRlcyBwcm92aWRlciBjYW4gKippZGVudGlmeSwgZGlhZ25vc2UsIGFuZCBmaXggdGhlIGlzc3VlIGFsbCB3aXRoaW4gdGhlIE1heWJlIGFwcCoqOlxyXG5cclxuaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzLzdjYzk4Yzc5LTliNzItNDI2MC1iYzE3LTkwN2JjMzNiMTM5MFxyXG5cclxuIyMgV2hhdCdzIENoYW5nZWRcclxuKiBEZXBvc2l0LCBXaXRoZHJhd2FsLCBhbmQgSW50ZXJlc3QgVHJhbnNhY3Rpb25zIGZvciBJbnZlc3RtZW50IFZpZXcgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTA3NVxyXG4qIEJ1bXAgdGFpbHdpbmRjc3MtcmFpbHMgZnJvbSAyLjYuNSB0byAyLjcuMiBieSBAZGVwZW5kYWJvdCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEwNzhcclxuKiBCdW1wIGJvb3RzbmFwIGZyb20gMS4xOC4zIHRvIDEuMTguNCBieSBAZGVwZW5kYWJvdCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEwNzlcclxuKiBCdW1wIHJ1YnktbHNwLXJhaWxzIGZyb20gMC4zLjExIHRvIDAuMy4xMiBieSBAZGVwZW5kYWJvdCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEwODFcclxuKiBSZWZhY3RvcjogVXNlIG5hdGl2ZSBlcnJvciBpMThuIGxvb2t1cCBieSBAcGVkcm9jYXJtb25hIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTA3NlxyXG4qIEJ1bXAgcmFpbHMgZnJvbSBgNDM1MzBiNGAgdG8gYGY2ZDYyYjVgIGJ5IEBkZXBlbmRhYm90IGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTA4M1xyXG4qIEZpeDogaTE4biBzeW1ib2wgdHlwbyBieSBAcGVkcm9jYXJtb25hIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTA4NVxyXG4qIEJ1bXAgcnVieSBmcm9tIDMuMy4xIHRvIDMuMy40IGJ5IEBDbHVzdGVyNDQ0IGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTA4NFxyXG4qIEZpeCBmb3IgaW52YWxpZCBhY2NvdW50YWJsZSBkYXRhIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEwODZcclxuKiBhZGQgcGFnaW5hdGlvbiB0byBhY2NvdW50IHRyYW5zYWN0aW9ucyBsaXN0IGJ5IEBjb2RlLWNvbnN0cnVjdG9yIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTA5NVxyXG4qIEFjY291bnQgSXNzdWUgTW9kZWwgYW5kIFJlc29sdXRpb24gRmxvdyArIFRyb3VibGVzaG9vdGluZyBndWlkZXMgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTA5MFxyXG4qIEFkZCBzdXBwb3J0IGZvciBkaWZmZXJlbnQgY29sdW1uIHNlcGFyYXRvciBpbiBjc3YgaW1wb3J0IGxvZ2ljIGJ5IEBjb2RlLWNvbnN0cnVjdG9yIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTA5NlxyXG4qIEltcHJvdmVkIFVJIHdhcm5pbmcgc3RhdGVzIGZvciBob2xkaW5ncyB3aXRoIG1pc3NpbmcgZGF0YSBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMDk4XHJcblxyXG4jIyBOZXcgQ29udHJpYnV0b3JzXHJcbiogQHBlZHJvY2FybW9uYSBtYWRlIHRoZWlyIGZpcnN0IGNvbnRyaWJ1dGlvbiBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEwNzZcclxuKiBAQ2x1c3RlcjQ0NCBtYWRlIHRoZWlyIGZpcnN0IGNvbnRyaWJ1dGlvbiBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEwODRcclxuKiBAY29kZS1jb25zdHJ1Y3RvciBtYWRlIHRoZWlyIGZpcnN0IGNvbnRyaWJ1dGlvbiBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEwOTVcclxuXHJcbioqRnVsbCBDaGFuZ2Vsb2cqKjogaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvY29tcGFyZS92MC4xLjAtYWxwaGEuMTQuLi52MC4xLjAtYWxwaGEuMTUiLCJyZWFjdGlvbnMiOnsidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE3MDY1NTkyNC9yZWFjdGlvbnMiLCJ0b3RhbF9jb3VudCI6MTEsIisxIjoxMSwiLTEiOjAsImxhdWdoIjowLCJob29yYXkiOjAsImNvbmZ1c2VkIjowLCJoZWFydCI6MCwicm9ja2V0IjowLCJleWVzIjowfSwibWVudGlvbnNfY291bnQiOjV9LHsidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE2OTU5MTAyOSIsImFzc2V0c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTY5NTkxMDI5L2Fzc2V0cyIsInVwbG9hZF91cmwiOiJodHRwczovL3VwbG9hZHMuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE2OTU5MTAyOS9hc3NldHN7P25hbWUsbGFiZWx9IiwiaHRtbF91cmwiOiJodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy90YWcvdjAuMS4wLWFscGhhLjE0IiwiaWQiOjE2OTU5MTAyOSwiYXV0aG9yIjp7ImxvZ2luIjoiemFjaGdvbGwiLCJpZCI6MTY2NzYxNTcsIm5vZGVfaWQiOiJNRFE2VlhObGNqRTJOamMyTVRVMyIsImF2YXRhcl91cmwiOiJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTY2NzYxNTc/dj00IiwiZ3JhdmF0YXJfaWQiOiIiLCJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsIiwiaHRtbF91cmwiOiJodHRwczovL2dpdGh1Yi5jb20vemFjaGdvbGwiLCJmb2xsb3dlcnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9mb2xsb3dlcnMiLCJmb2xsb3dpbmdfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9mb2xsb3dpbmd7L290aGVyX3VzZXJ9IiwiZ2lzdHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9naXN0c3svZ2lzdF9pZH0iLCJzdGFycmVkX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvc3RhcnJlZHsvb3duZXJ9ey9yZXBvfSIsInN1YnNjcmlwdGlvbnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9zdWJzY3JpcHRpb25zIiwib3JnYW5pemF0aW9uc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL29yZ3MiLCJyZXBvc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3JlcG9zIiwiZXZlbnRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZXZlbnRzey9wcml2YWN5fSIsInJlY2VpdmVkX2V2ZW50c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3JlY2VpdmVkX2V2ZW50cyIsInR5cGUiOiJVc2VyIiwic2l0ZV9hZG1pbiI6ZmFsc2V9LCJub2RlX2lkIjoiUkVfa3dET0tfdHhITTRLRzhEMSIsInRhZ19uYW1lIjoidjAuMS4wLWFscGhhLjE0IiwidGFyZ2V0X2NvbW1pdGlzaCI6Im1haW4iLCJuYW1lIjoidjAuMS4wLWFscGhhLjE0IiwiZHJhZnQiOmZhbHNlLCJwcmVyZWxlYXNlIjp0cnVlLCJjcmVhdGVkX2F0IjoiMjAyNC0wOC0wOVQyMTo0Mjo0OFoiLCJwdWJsaXNoZWRfYXQiOiIyMDI0LTA4LTA5VDIxOjQ5OjIwWiIsImFzc2V0cyI6W10sInRhcmJhbGxfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3RhcmJhbGwvdjAuMS4wLWFscGhhLjE0IiwiemlwYmFsbF91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvemlwYmFsbC92MC4xLjAtYWxwaGEuMTQiLCJib2R5IjoiQmFzaWMgaW52ZXN0bWVudCBwb3J0Zm9saW9zIGFyZSBoZXJlISDwn6WzIFxyXG5cclxuV2hpbGUgd2UncmUgc3RpbGwgaW4gdGhlIHZlcnkgZWFybHkgZGF5cyBmb3IgaW52ZXN0bWVudCBhY2NvdW50cywgdGhpcyB3ZWVrIGNhcHBlZCBvZmYgc29tZSByZWFsbHkgaW1wb3J0YW50IGFkZGl0aW9ucyB0byB0aGUgaW52ZXN0bWVudCBhY2NvdW50IHBhZ2Ugdmlldy5cclxuXHJcblVzZXJzIGNhbiBub3c6XHJcblxyXG4tIFNlZSBhIGJyZWFrZG93biBvZiB0aGVpciBjYXNoICsgaG9sZGluZ3MgYmFsYW5jZSBpbiBhIHRvb2x0aXBcclxuLSBBZGQgYnV5L3NlbGwgaW52ZXN0bWVudCB0cmFkZXMgdGhhdCB3aWxsIGF1dG9tYXRpY2FsbHkgc3luYyBhbmQgcmVidWlsZCB0aGVpciBwb3J0Zm9saW8gYW5kIGhpc3RvcmljYWwgZ3JhcGhcclxuXHJcbk1vdmluZyBmb3J3YXJkLCB3ZSdsbCBiZSByZWZpbmluZyBhbmQgYWRkaW5nIHRvIHRoZSBpbnZlc3RtZW50IHBvcnRmb2xpbyBmZWF0dXJlIGFuZCBjb21wbGVtZW50aW5nIGl0IHdpdGggdHJvdWJsZXNob290aW5nIGd1aWRlcyBzbyB5b3Uga25vdyBleGFjdGx5IHdoYXQncyBjYXVzaW5nIGFueSBkaXNjcmVwYW5jaWVzIGJldHdlZW4gTWF5YmUncyBjYWxjdWxhdGlvbnMgYW5kIHlvdXIgYnJva2VyYWdlJ3MgY2FsY3VsYXRpb25zLlxyXG5cclxuaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzL2Y0YzhiYzY1LTMxZjYtNDYyNy1iNGU3LTQ3N2QwNjg3YzU3MFxyXG5cclxuIyMgV2hhdCdzIENoYW5nZWRcclxuXHJcbiogQnVtcCB0YWlsd2luZGNzcy1yYWlscyBmcm9tIDIuNi40IHRvIDIuNi41IGJ5IEBkZXBlbmRhYm90IGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTA1OFxyXG4qIEJ1bXAgZmFyYWRheSBmcm9tIDIuMTAuMCB0byAyLjEwLjEgYnkgQGRlcGVuZGFib3QgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMDU1XHJcbiogQnVtcCBlcmJfbGludCBmcm9tIDAuNS4wIHRvIDAuNi4wIGJ5IEBkZXBlbmRhYm90IGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTA1N1xyXG4qIEJ1bXAgYXdzLXNkay1zMyBmcm9tIDEuMTU2LjAgdG8gMS4xNTcuMCBieSBAZGVwZW5kYWJvdCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEwNTRcclxuKiBCdW1wIGdvb2Rfam9iIGZyb20gNC4xLjAgdG8gNC4xLjEgYnkgQGRlcGVuZGFib3QgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMDUzXHJcbiogQnVtcCBwYWd5IGZyb20gOS4wLjMgdG8gOS4wLjUgYnkgQGRlcGVuZGFib3QgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMDU2XHJcbiogQnVtcCByYWlscyBmcm9tIGA1Y2I1Y2FkYCB0byBgNDM1MzBiNGAgYnkgQGRlcGVuZGFib3QgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMDU5XHJcbiogQWRkIHNvdXJjZSBoZWFkZXJzIHRvIFN5bnRoIGNhbGxzIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEwNjJcclxuKiBBZGQgc3RpbXVsdXMgdG9vbHRpcCBjb250cm9sbGVyIGJ5IEB0b255dmluY2UgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMDY1XHJcbiogRmV0Y2ggZXhjaGFuZ2UgcmF0ZXMgaW4gYnVsayBmcm9tIHN5bnRoIGJ5IEB0b255dmluY2UgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMDY5XHJcbiogRml4IG1pbml0ZXN0IGFzc2VydF9uaWwgd2FybmluZyBieSBAdG9ueXZpbmNlIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTA3MFxyXG4qIEFsbG93IHVzZXIgdG8gYWRkIGJ1eSBhbmQgc2VsbCB0cmFkZSB0cmFuc2FjdGlvbnMgZm9yIGludmVzdG1lbnQgYWNjb3VudHMgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTA2NlxyXG4qIFRlbXAgZml4IGZvciBtaXNzaW5nIGFjY291bnRhYmxlcyBvbiBzZWxmIGhvc3RlZCBpbnN0YW5jZXMgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTA3MVxyXG5cclxuXHJcbioqRnVsbCBDaGFuZ2Vsb2cqKjogaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvY29tcGFyZS92MC4xLjAtYWxwaGEuMTMuLi52MC4xLjAtYWxwaGEuMTQiLCJyZWFjdGlvbnMiOnsidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE2OTU5MTAyOS9yZWFjdGlvbnMiLCJ0b3RhbF9jb3VudCI6MTYsIisxIjowLCItMSI6MCwibGF1Z2giOjAsImhvb3JheSI6MTYsImNvbmZ1c2VkIjowLCJoZWFydCI6MCwicm9ja2V0IjowLCJleWVzIjowfSwibWVudGlvbnNfY291bnQiOjN9LHsidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE2ODUxMDU1OSIsImFzc2V0c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTY4NTEwNTU5L2Fzc2V0cyIsInVwbG9hZF91cmwiOiJodHRwczovL3VwbG9hZHMuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE2ODUxMDU1OS9hc3NldHN7P25hbWUsbGFiZWx9IiwiaHRtbF91cmwiOiJodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy90YWcvdjAuMS4wLWFscGhhLjEzIiwiaWQiOjE2ODUxMDU1OSwiYXV0aG9yIjp7ImxvZ2luIjoiemFjaGdvbGwiLCJpZCI6MTY2NzYxNTcsIm5vZGVfaWQiOiJNRFE2VlhObGNqRTJOamMyTVRVMyIsImF2YXRhcl91cmwiOiJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTY2NzYxNTc/dj00IiwiZ3JhdmF0YXJfaWQiOiIiLCJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsIiwiaHRtbF91cmwiOiJodHRwczovL2dpdGh1Yi5jb20vemFjaGdvbGwiLCJmb2xsb3dlcnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9mb2xsb3dlcnMiLCJmb2xsb3dpbmdfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9mb2xsb3dpbmd7L290aGVyX3VzZXJ9IiwiZ2lzdHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9naXN0c3svZ2lzdF9pZH0iLCJzdGFycmVkX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvc3RhcnJlZHsvb3duZXJ9ey9yZXBvfSIsInN1YnNjcmlwdGlvbnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9zdWJzY3JpcHRpb25zIiwib3JnYW5pemF0aW9uc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL29yZ3MiLCJyZXBvc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3JlcG9zIiwiZXZlbnRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZXZlbnRzey9wcml2YWN5fSIsInJlY2VpdmVkX2V2ZW50c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3JlY2VpdmVkX2V2ZW50cyIsInR5cGUiOiJVc2VyIiwic2l0ZV9hZG1pbiI6ZmFsc2V9LCJub2RlX2lkIjoiUkVfa3dET0tfdHhITTRLQzBSZiIsInRhZ19uYW1lIjoidjAuMS4wLWFscGhhLjEzIiwidGFyZ2V0X2NvbW1pdGlzaCI6Im1haW4iLCJuYW1lIjoidjAuMS4wLWFscGhhLjEzIiwiZHJhZnQiOmZhbHNlLCJwcmVyZWxlYXNlIjp0cnVlLCJjcmVhdGVkX2F0IjoiMjAyNC0wOC0wMlQyMToxMDoxNloiLCJwdWJsaXNoZWRfYXQiOiIyMDI0LTA4LTAyVDIxOjEwOjU5WiIsImFzc2V0cyI6W10sInRhcmJhbGxfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3RhcmJhbGwvdjAuMS4wLWFscGhhLjEzIiwiemlwYmFsbF91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvemlwYmFsbC92MC4xLjAtYWxwaGEuMTMiLCJib2R5IjoiQ29taW5nIG9mZiB0aGUgYmFjayBvZiBsYXN0IHdlZWsncyByZWxlYXNlIHdoaWNoIGludHJvZHVjZWQgYmFzaWMgaW52ZXN0bWVudCBwb3J0Zm9saW8gdmlld3MgYW5kIHRoZSBhYmlsaXR5IHRvIHN5bmMgaW52ZXN0bWVudCBob2xkaW5ncywgdGhpcyB3ZWVrJ3MgcmVsZWFzZSBpbnRyb2R1Y2VzIGZ1bGwgc3VwcG9ydCBmb3Igc3RvY2sgcHJpY2VzIHdpdGggdGhlIFtTeW50aCBBUEldKGh0dHBzOi8vc3ludGhmaW5hbmNlLmNvbS8pISAod2hpY2ggaGFzIGEgZ2VuZXJvdXMgZnJlZSB0aWVyIHRvIGdldCBzdGFydGVkKVxyXG5cclxuVGhpcyBtZWFucyB0aGF0IGludmVzdG1lbnQgYWNjb3VudCB2aWV3cyBjYW4gbm93IHByb3Blcmx5IGNhbGN1bGF0ZSBhbmQgc2hvdyBhbiBhZ2dyZWdhdGVkIG1hcmtldCB2YWx1ZSBvZiBhbGwgdGhlIGludmVzdG1lbnRzIGluIGl0IGFuZCBncmFjZWZ1bGx5IGhhbmRsZSBtaXNzaW5nIHN0b2NrIHByaWNlcy5cclxuXHJcbkluIGEgZnV0dXJlIHJlbGVhc2UsIHVzZXJzIHdpbGwgaGF2ZSBmdWxsIGNvbnRyb2wgdG8gY3JlYXRlIGJ1eSAmIHNlbGwgdHJhZGVzLCBtYW5hZ2UgdGhlaXIgaW52ZXN0bWVudCBwb3J0Zm9saW8sIGFuZCBzZWUgdG90YWwgcmV0dXJucyBvdmVyIHZhcmlvdXMgdGltZSBwZXJpb2RzIGFsb25nc2lkZSB0aGVpciBoaXN0b3JpY2FsIHZhbHVlIGdyYXBoLlxyXG5cclxuaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzL2MzOWIxNzA2LTk3YTctNGUzZS1iNTY4LTlkOWIwOWUzOGUwNVxyXG5cclxuIyMgV2hhdCdzIENoYW5nZWRcclxuKiBGaXg6IE9taXQgbGF5b3V0IGZvciB0dXJibyBmcmFtZXMgd2l0aCBjdXN0b20gc2lkZWJhciBsYXlvdXQgYnkgQHByYW5hdmJhYnUgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMDI0XHJcbiogZml4OiBsb25nIGVtYWlscyBvdmVyZmxvdyBpbiBhY2NvdW50IG1lbnUgZHJvcGRvd24gYnkgQE1pa2hhaWxXYWhpYiBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEwMzRcclxuKiBGaXggZGVtbyBkYXRhIHJlc2V0IGJ5IEB0b255dmluY2UgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMDQxXHJcbiogRW5zdXJlIHRyYW5zZmVyIG5hbWUgaXMgcG9wdWxhdGVkIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEwNDJcclxuKiBBZGQgc2VjdXJpdHkgcHJpY2VzIHByb3ZpZGVyIChTeW50aCBpbnRlZ3JhdGlvbikgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTAzOVxyXG4qIFNob3cgY2FzaCArIGhvbGRpbmdzIHZhbHVlIGZvciBpbnZlc3RtZW50IGFjY291bnQgdmlldyBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMDQ2XHJcblxyXG4jIyBOZXcgQ29udHJpYnV0b3JzXHJcbiogQHByYW5hdmJhYnUgbWFkZSB0aGVpciBmaXJzdCBjb250cmlidXRpb24gaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMDI0XHJcbiogQE1pa2hhaWxXYWhpYiBtYWRlIHRoZWlyIGZpcnN0IGNvbnRyaWJ1dGlvbiBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEwMzRcclxuXHJcbioqRnVsbCBDaGFuZ2Vsb2cqKjogaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvY29tcGFyZS92MC4xLjAtYWxwaGEuMTIuLi52MC4xLjAtYWxwaGEuMTMiLCJyZWFjdGlvbnMiOnsidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE2ODUxMDU1OS9yZWFjdGlvbnMiLCJ0b3RhbF9jb3VudCI6MzAsIisxIjo0LCItMSI6MCwibGF1Z2giOjAsImhvb3JheSI6MTMsImNvbmZ1c2VkIjowLCJoZWFydCI6Niwicm9ja2V0Ijo3LCJleWVzIjowfSwibWVudGlvbnNfY291bnQiOjR9LHsidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE2NzM4MjI3NyIsImFzc2V0c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTY3MzgyMjc3L2Fzc2V0cyIsInVwbG9hZF91cmwiOiJodHRwczovL3VwbG9hZHMuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE2NzM4MjI3Ny9hc3NldHN7P25hbWUsbGFiZWx9IiwiaHRtbF91cmwiOiJodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy90YWcvdjAuMS4wLWFscGhhLjEyIiwiaWQiOjE2NzM4MjI3NywiYXV0aG9yIjp7ImxvZ2luIjoiemFjaGdvbGwiLCJpZCI6MTY2NzYxNTcsIm5vZGVfaWQiOiJNRFE2VlhObGNqRTJOamMyTVRVMyIsImF2YXRhcl91cmwiOiJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTY2NzYxNTc/dj00IiwiZ3JhdmF0YXJfaWQiOiIiLCJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsIiwiaHRtbF91cmwiOiJodHRwczovL2dpdGh1Yi5jb20vemFjaGdvbGwiLCJmb2xsb3dlcnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9mb2xsb3dlcnMiLCJmb2xsb3dpbmdfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9mb2xsb3dpbmd7L290aGVyX3VzZXJ9IiwiZ2lzdHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9naXN0c3svZ2lzdF9pZH0iLCJzdGFycmVkX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvc3RhcnJlZHsvb3duZXJ9ey9yZXBvfSIsInN1YnNjcmlwdGlvbnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9zdWJzY3JpcHRpb25zIiwib3JnYW5pemF0aW9uc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL29yZ3MiLCJyZXBvc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3JlcG9zIiwiZXZlbnRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZXZlbnRzey9wcml2YWN5fSIsInJlY2VpdmVkX2V2ZW50c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3JlY2VpdmVkX2V2ZW50cyIsInR5cGUiOiJVc2VyIiwic2l0ZV9hZG1pbiI6ZmFsc2V9LCJub2RlX2lkIjoiUkVfa3dET0tfdHhITTRKLWcwRiIsInRhZ19uYW1lIjoidjAuMS4wLWFscGhhLjEyIiwidGFyZ2V0X2NvbW1pdGlzaCI6Im1haW4iLCJuYW1lIjoidjAuMS4wLWFscGhhLjEyIiwiZHJhZnQiOmZhbHNlLCJwcmVyZWxlYXNlIjp0cnVlLCJjcmVhdGVkX2F0IjoiMjAyNC0wNy0yNlQxNDo0ODoyMVoiLCJwdWJsaXNoZWRfYXQiOiIyMDI0LTA3LTI2VDE0OjUwOjM2WiIsImFzc2V0cyI6W10sInRhcmJhbGxfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3RhcmJhbGwvdjAuMS4wLWFscGhhLjEyIiwiemlwYmFsbF91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvemlwYmFsbC92MC4xLjAtYWxwaGEuMTIiLCJib2R5IjoiIyMgV2hhdCdzIENoYW5nZWRcclxuKiBTZXQgbGFzdF9sb2dpbl9hdCBvbmx5IG9uIGxvZ2luIGluc3RlYWQgb2YgZXZlcnkgc2luZ2xlIGFjdGlvbiBieSBAdG9ueXZpbmNlIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTAxN1xyXG4qIEJ1bXAgcGFneSB3aXRoIGZpeCBmb3IgYnJlYWtpbmcgY2hhbmdlcyAgYnkgQHRvbnl2aW5jZSBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEwMTZcclxuKiBGaXggZm9ybSBsYWJlbHMgYnkgQHRvbnl2aW5jZSBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEwMDRcclxuKiBGaXggY3VyZW5jeSBmb3JtYXQgYnkgQEp1bGl1c01pZWxpYXVza2FzIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTAyMFxyXG4qIEltcGxlbWVudCBhdXRvIGZhbWlseSBzeW5jcyBvbiBsb2dpbiBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMDIxXHJcbiogQmFzaWMgUG9ydGZvbGlvIFZpZXdzIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEwMDBcclxuKiBGaXggY3VycmVuY3kgZm9ybWF0dGluZyBpbiBwaWUgY2hhcnQgdmlzdWFsaXphdGlvbiBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMDIyXHJcbiogU2V0IG1pbmltdW0gc3VwcG9ydGVkIGRhdGUgZm9yIGFjY291bnQgZW50cmllcyBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMDIzXHJcblxyXG4jIyBOZXcgQ29udHJpYnV0b3JzXHJcbiogQEp1bGl1c01pZWxpYXVza2FzIG1hZGUgdGhlaXIgZmlyc3QgY29udHJpYnV0aW9uIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTAyMFxyXG5cclxuKipGdWxsIENoYW5nZWxvZyoqOiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9jb21wYXJlL3YwLjEuMC1hbHBoYS4xMS4uLnYwLjEuMC1hbHBoYS4xMiIsIm1lbnRpb25zX2NvdW50IjozfSx7InVybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy8xNjYyOTY5NTMiLCJhc3NldHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE2NjI5Njk1My9hc3NldHMiLCJ1cGxvYWRfdXJsIjoiaHR0cHM6Ly91cGxvYWRzLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy8xNjYyOTY5NTMvYXNzZXRzez9uYW1lLGxhYmVsfSIsImh0bWxfdXJsIjoiaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvdGFnL3YwLjEuMC1hbHBoYS4xMSIsImlkIjoxNjYyOTY5NTMsImF1dGhvciI6eyJsb2dpbiI6InphY2hnb2xsIiwiaWQiOjE2Njc2MTU3LCJub2RlX2lkIjoiTURRNlZYTmxjakUyTmpjMk1UVTMiLCJhdmF0YXJfdXJsIjoiaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE2Njc2MTU3P3Y9NCIsImdyYXZhdGFyX2lkIjoiIiwidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbCIsImh0bWxfdXJsIjoiaHR0cHM6Ly9naXRodWIuY29tL3phY2hnb2xsIiwiZm9sbG93ZXJzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZm9sbG93ZXJzIiwiZm9sbG93aW5nX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZm9sbG93aW5ney9vdGhlcl91c2VyfSIsImdpc3RzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZ2lzdHN7L2dpc3RfaWR9Iiwic3RhcnJlZF91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3N0YXJyZWR7L293bmVyfXsvcmVwb30iLCJzdWJzY3JpcHRpb25zX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvc3Vic2NyaXB0aW9ucyIsIm9yZ2FuaXphdGlvbnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9vcmdzIiwicmVwb3NfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9yZXBvcyIsImV2ZW50c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL2V2ZW50c3svcHJpdmFjeX0iLCJyZWNlaXZlZF9ldmVudHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9yZWNlaXZlZF9ldmVudHMiLCJ0eXBlIjoiVXNlciIsInNpdGVfYWRtaW4iOmZhbHNlfSwibm9kZV9pZCI6IlJFX2t3RE9LX3R4SE00SjZYMTUiLCJ0YWdfbmFtZSI6InYwLjEuMC1hbHBoYS4xMSIsInRhcmdldF9jb21taXRpc2giOiJtYWluIiwibmFtZSI6InYwLjEuMC1hbHBoYS4xMSIsImRyYWZ0IjpmYWxzZSwicHJlcmVsZWFzZSI6dHJ1ZSwiY3JlYXRlZF9hdCI6IjIwMjQtMDctMTlUMjA6MDk6MDVaIiwicHVibGlzaGVkX2F0IjoiMjAyNC0wNy0xOVQyMDowOTozOFoiLCJhc3NldHMiOltdLCJ0YXJiYWxsX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS90YXJiYWxsL3YwLjEuMC1hbHBoYS4xMSIsInppcGJhbGxfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3ppcGJhbGwvdjAuMS4wLWFscGhhLjExIiwiYm9keSI6IiMjIFdoYXQncyBDaGFuZ2VkXHJcbiogV3JhcCBhY2NvdW50IHVwZGF0ZSBpbiBhIHRyYW5zYWN0aW9uIGJ5IEBhY2Nlc3NkIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvOTg1XHJcbiogQWxsb3cgQ1NWIGZpbGUgdXBsb2FkIGluIGltcG9ydCBmbG93IGJ5IEB0b255dmluY2UgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC85ODZcclxuKiBTYW5pdGl6ZSBpbnB1dCBmb3IgaWxpa2UgaW4gQWNjb3VudDo6RW50cnkuc2VhcmNoIGJ5IEB0b255dmluY2UgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC85ODhcclxuKiBJbnZlc3RtZW50IFBvcnRmb2xpbyBTeW5jIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzk3NFxyXG4qIE1vcmUgY29tcG9zYWJsZSBmb3JtcyBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC85ODlcclxuKiBBZGQgZGVmYXVsdCBjdXJyZW5jaWVzIHRvIGZvcm1zIGJhc2VkIG9uIHByZWZlcmVuY2UgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvOTk0XHJcbiogQnVpbGQgc2FtcGxlIHBvcnRmb2xpbyBkZXRlcm1pbmlzdGljYWxseSBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC85OTNcclxuKiBBZGQgY3VycmVuY3kgdmFsaWRhdGlvbiB0byBhY2NvdW50LCB1cGRhdGUgZGVtbyBkYXRhIGdlbmVyYXRvciBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC85OTZcclxuKiBTeW5jIG5vdGlmaWNhdGlvbnMgYW5kIHRyb3VibGVzaG9vdGluZyBndWlkZXMgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvOTk4XHJcblxyXG4jIyBOZXcgQ29udHJpYnV0b3JzXHJcbiogQGFjY2Vzc2QgbWFkZSB0aGVpciBmaXJzdCBjb250cmlidXRpb24gaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC85ODVcclxuXHJcbioqRnVsbCBDaGFuZ2Vsb2cqKjogaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvY29tcGFyZS92MC4xLjAtYWxwaGEuMTAuLi52MC4xLjAtYWxwaGEuMTEiLCJyZWFjdGlvbnMiOnsidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE2NjI5Njk1My9yZWFjdGlvbnMiLCJ0b3RhbF9jb3VudCI6MTQsIisxIjowLCItMSI6MCwibGF1Z2giOjAsImhvb3JheSI6MCwiY29uZnVzZWQiOjAsImhlYXJ0IjowLCJyb2NrZXQiOjE0LCJleWVzIjowfSwibWVudGlvbnNfY291bnQiOjN9LHsidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE2NTI2MzMyNCIsImFzc2V0c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTY1MjYzMzI0L2Fzc2V0cyIsInVwbG9hZF91cmwiOiJodHRwczovL3VwbG9hZHMuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE2NTI2MzMyNC9hc3NldHN7P25hbWUsbGFiZWx9IiwiaHRtbF91cmwiOiJodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy90YWcvdjAuMS4wLWFscGhhLjEwIiwiaWQiOjE2NTI2MzMyNCwiYXV0aG9yIjp7ImxvZ2luIjoiemFjaGdvbGwiLCJpZCI6MTY2NzYxNTcsIm5vZGVfaWQiOiJNRFE2VlhObGNqRTJOamMyTVRVMyIsImF2YXRhcl91cmwiOiJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTY2NzYxNTc/dj00IiwiZ3JhdmF0YXJfaWQiOiIiLCJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsIiwiaHRtbF91cmwiOiJodHRwczovL2dpdGh1Yi5jb20vemFjaGdvbGwiLCJmb2xsb3dlcnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9mb2xsb3dlcnMiLCJmb2xsb3dpbmdfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9mb2xsb3dpbmd7L290aGVyX3VzZXJ9IiwiZ2lzdHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9naXN0c3svZ2lzdF9pZH0iLCJzdGFycmVkX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvc3RhcnJlZHsvb3duZXJ9ey9yZXBvfSIsInN1YnNjcmlwdGlvbnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9zdWJzY3JpcHRpb25zIiwib3JnYW5pemF0aW9uc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL29yZ3MiLCJyZXBvc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3JlcG9zIiwiZXZlbnRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZXZlbnRzey9wcml2YWN5fSIsInJlY2VpdmVkX2V2ZW50c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3JlY2VpdmVkX2V2ZW50cyIsInR5cGUiOiJVc2VyIiwic2l0ZV9hZG1pbiI6ZmFsc2V9LCJub2RlX2lkIjoiUkVfa3dET0tfdHhITTRKMmJmYyIsInRhZ19uYW1lIjoidjAuMS4wLWFscGhhLjEwIiwidGFyZ2V0X2NvbW1pdGlzaCI6Im1haW4iLCJuYW1lIjoidjAuMS4wLWFscGhhLjEwIiwiZHJhZnQiOmZhbHNlLCJwcmVyZWxlYXNlIjp0cnVlLCJjcmVhdGVkX2F0IjoiMjAyNC0wNy0xMlQyMjozODoxN1oiLCJwdWJsaXNoZWRfYXQiOiIyMDI0LTA3LTEyVDIyOjM5OjExWiIsImFzc2V0cyI6W10sInRhcmJhbGxfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3RhcmJhbGwvdjAuMS4wLWFscGhhLjEwIiwiemlwYmFsbF91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvemlwYmFsbC92MC4xLjAtYWxwaGEuMTAiLCJib2R5IjoiIyMgV2hhdCdzIENoYW5nZWRcclxuKiBBZGQgZXJyb3IgaGFuZGxpbmcgZm9yIEFjY291bnRzQ29udHJvbGxlciNjcmVhdGUgYnkgQHRvbnl2aW5jZSBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzk1N1xyXG4qIGZpeDogIzk1MSBwb2ludGVyIGN1cnNvciBhbmQgYmcgaG92ZXIgZm9yIGltcG9ydCBmbG93IGJ1dHRvbnMgYnkgQE1hZ251c0hKZW5zZW4gaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC85NTRcclxuKiBIYW5kbGUgbWlzc2luZyBleGNoYW5nZSByYXRlIHByb3ZpZGVyLCBhbGxvdyBmYWxsYmFjayBmb3IgbWlzc2luZyByYXRlcyBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC85NTVcclxuKiBBZGQgbWlzc2luZyBtaWdyYXRpb25zIGZvciBnb29kX2pvYiA0eCBieSBAdG9ueXZpbmNlIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvOTY3XHJcbiogQWNjb3VudDo6U3luYyBtb2RlbCBhbmQgdGVzdCBmaXh0dXJlIHNpbXBsaWZpY2F0aW9ucyBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC85NjhcclxuKiBEZW1vIEZhbWlseSBkYXRhIHVwZGF0ZXMgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvOTcyXHJcbiogTWFrZSBiYWxhbmNlIGVkaXRpbmcgZWFzaWVyIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzk3NlxyXG5cclxuIyMgTmV3IENvbnRyaWJ1dG9yc1xyXG4qIEBNYWdudXNISmVuc2VuIG1hZGUgdGhlaXIgZmlyc3QgY29udHJpYnV0aW9uIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvOTU0XHJcblxyXG4qKkZ1bGwgQ2hhbmdlbG9nKio6IGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL2NvbXBhcmUvdjAuMS4wLWFscGhhLjkuLi52MC4xLjAtYWxwaGEuMTAiLCJyZWFjdGlvbnMiOnsidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE2NTI2MzMyNC9yZWFjdGlvbnMiLCJ0b3RhbF9jb3VudCI6NywiKzEiOjcsIi0xIjowLCJsYXVnaCI6MCwiaG9vcmF5IjowLCJjb25mdXNlZCI6MCwiaGVhcnQiOjAsInJvY2tldCI6MCwiZXllcyI6MH0sIm1lbnRpb25zX2NvdW50IjozfSx7InVybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy8xNjQxOTg4NDgiLCJhc3NldHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE2NDE5ODg0OC9hc3NldHMiLCJ1cGxvYWRfdXJsIjoiaHR0cHM6Ly91cGxvYWRzLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy8xNjQxOTg4NDgvYXNzZXRzez9uYW1lLGxhYmVsfSIsImh0bWxfdXJsIjoiaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvdGFnL3YwLjEuMC1hbHBoYS45IiwiaWQiOjE2NDE5ODg0OCwiYXV0aG9yIjp7ImxvZ2luIjoiemFjaGdvbGwiLCJpZCI6MTY2NzYxNTcsIm5vZGVfaWQiOiJNRFE2VlhObGNqRTJOamMyTVRVMyIsImF2YXRhcl91cmwiOiJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTY2NzYxNTc/dj00IiwiZ3JhdmF0YXJfaWQiOiIiLCJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsIiwiaHRtbF91cmwiOiJodHRwczovL2dpdGh1Yi5jb20vemFjaGdvbGwiLCJmb2xsb3dlcnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9mb2xsb3dlcnMiLCJmb2xsb3dpbmdfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9mb2xsb3dpbmd7L290aGVyX3VzZXJ9IiwiZ2lzdHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9naXN0c3svZ2lzdF9pZH0iLCJzdGFycmVkX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvc3RhcnJlZHsvb3duZXJ9ey9yZXBvfSIsInN1YnNjcmlwdGlvbnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9zdWJzY3JpcHRpb25zIiwib3JnYW5pemF0aW9uc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL29yZ3MiLCJyZXBvc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3JlcG9zIiwiZXZlbnRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZXZlbnRzey9wcml2YWN5fSIsInJlY2VpdmVkX2V2ZW50c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3JlY2VpdmVkX2V2ZW50cyIsInR5cGUiOiJVc2VyIiwic2l0ZV9hZG1pbiI6ZmFsc2V9LCJub2RlX2lkIjoiUkVfa3dET0tfdHhITTRKeVhuQSIsInRhZ19uYW1lIjoidjAuMS4wLWFscGhhLjkiLCJ0YXJnZXRfY29tbWl0aXNoIjoibWFpbiIsIm5hbWUiOiJ2MC4xLjAtYWxwaGEuOSIsImRyYWZ0IjpmYWxzZSwicHJlcmVsZWFzZSI6dHJ1ZSwiY3JlYXRlZF9hdCI6IjIwMjQtMDctMDVUMTg6MTY6NDFaIiwicHVibGlzaGVkX2F0IjoiMjAyNC0wNy0wNVQxODoxNzoyMloiLCJhc3NldHMiOltdLCJ0YXJiYWxsX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS90YXJiYWxsL3YwLjEuMC1hbHBoYS45IiwiemlwYmFsbF91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvemlwYmFsbC92MC4xLjAtYWxwaGEuOSIsImJvZHkiOiIjIyBXaGF0J3MgQ2hhbmdlZFxyXG4qIEFjY291bnQ6OkVudHJ5IERlbGVnYXRlZCBUeXBlIChuYW1lc3BhY2UgdXBkYXRlcyBwYXJ0IDcpIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzkyM1xyXG4qIEZpeCBkZWNpbWFsIGRpc3BsYXkgZm9yIGV1cm8gY3VycmVuY3kgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvOTM3XHJcbiogRW5hYmxlIHVwZGF0aW5nIEFjY291bnQ6OkVudHJ5I2Ftb3VudCBieSBAdG9ueXZpbmNlIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvOTQyXHJcbiogRml4IGJ1ZyB3aGVyZSB0cmFuc2FjdGlvbnMgd2VyZSBkdXBsaWNhdGVkIGluIGltcG9ydCBjb25maXJtIGJ5IEBsamh1cnN0IGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvOTQxXHJcbiogRW5xdWUgYWNjb3VudCBzeW5jIGpvYiBhZnRlciBjcmVhdGluZyB0cmFuc2ZlciBieSBAdG9ueXZpbmNlIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvOTQ2XHJcbiogRW5hYmxlIHN5bmNpbmcgYWxsIGFjY291bnRzIGluIG9uZSBjbGljayBieSBAdG9ueXZpbmNlIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvOTQ4XHJcbiogVXBkYXRlIGRvY2tlciBjb21wb3NlIGV4YW1wbGUgd2l0aCBmaXhlZCBzdG9yYWdlIHZvbHVtZSBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC85NTBcclxuXHJcbiMjIE5ldyBDb250cmlidXRvcnNcclxuKiBAbGpodXJzdCBtYWRlIHRoZWlyIGZpcnN0IGNvbnRyaWJ1dGlvbiBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzk0MVxyXG5cclxuKipGdWxsIENoYW5nZWxvZyoqOiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9jb21wYXJlL3YwLjEuMC1hbHBoYS44Li4udjAuMS4wLWFscGhhLjkiLCJyZWFjdGlvbnMiOnsidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE2NDE5ODg0OC9yZWFjdGlvbnMiLCJ0b3RhbF9jb3VudCI6OSwiKzEiOjksIi0xIjowLCJsYXVnaCI6MCwiaG9vcmF5IjowLCJjb25mdXNlZCI6MCwiaGVhcnQiOjAsInJvY2tldCI6MCwiZXllcyI6MH0sIm1lbnRpb25zX2NvdW50IjozfSx7InVybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy8xNjMwNjU4NDQiLCJhc3NldHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE2MzA2NTg0NC9hc3NldHMiLCJ1cGxvYWRfdXJsIjoiaHR0cHM6Ly91cGxvYWRzLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy8xNjMwNjU4NDQvYXNzZXRzez9uYW1lLGxhYmVsfSIsImh0bWxfdXJsIjoiaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvdGFnL3YwLjEuMC1hbHBoYS44IiwiaWQiOjE2MzA2NTg0NCwiYXV0aG9yIjp7ImxvZ2luIjoiemFjaGdvbGwiLCJpZCI6MTY2NzYxNTcsIm5vZGVfaWQiOiJNRFE2VlhObGNqRTJOamMyTVRVMyIsImF2YXRhcl91cmwiOiJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTY2NzYxNTc/dj00IiwiZ3JhdmF0YXJfaWQiOiIiLCJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsIiwiaHRtbF91cmwiOiJodHRwczovL2dpdGh1Yi5jb20vemFjaGdvbGwiLCJmb2xsb3dlcnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9mb2xsb3dlcnMiLCJmb2xsb3dpbmdfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9mb2xsb3dpbmd7L290aGVyX3VzZXJ9IiwiZ2lzdHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9naXN0c3svZ2lzdF9pZH0iLCJzdGFycmVkX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvc3RhcnJlZHsvb3duZXJ9ey9yZXBvfSIsInN1YnNjcmlwdGlvbnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9zdWJzY3JpcHRpb25zIiwib3JnYW5pemF0aW9uc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL29yZ3MiLCJyZXBvc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3JlcG9zIiwiZXZlbnRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZXZlbnRzey9wcml2YWN5fSIsInJlY2VpdmVkX2V2ZW50c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3JlY2VpdmVkX2V2ZW50cyIsInR5cGUiOiJVc2VyIiwic2l0ZV9hZG1pbiI6ZmFsc2V9LCJub2RlX2lkIjoiUkVfa3dET0tfdHhITTRKdUNfMCIsInRhZ19uYW1lIjoidjAuMS4wLWFscGhhLjgiLCJ0YXJnZXRfY29tbWl0aXNoIjoibWFpbiIsIm5hbWUiOiJ2MC4xLjAtYWxwaGEuOCIsImRyYWZ0IjpmYWxzZSwicHJlcmVsZWFzZSI6dHJ1ZSwiY3JlYXRlZF9hdCI6IjIwMjQtMDYtMjhUMjE6MjI6MjZaIiwicHVibGlzaGVkX2F0IjoiMjAyNC0wNi0yOFQyMToyMzozM1oiLCJhc3NldHMiOltdLCJ0YXJiYWxsX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS90YXJiYWxsL3YwLjEuMC1hbHBoYS44IiwiemlwYmFsbF91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvemlwYmFsbC92MC4xLjAtYWxwaGEuOCIsImJvZHkiOiIjIyBXaGF0J3MgQ2hhbmdlZFxyXG4qIFVuaWZ5IHByaW1hcnkgYnV0dG9uIHN0eWxlcyBhbmQgY2hhbmdlIGN1cnNvciBvbiBhY2NvdW50IGdyb3VwIGJ5IEBqYWt1YmtvdHRuYXVlciBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzkwNVxyXG4qIEZpeCBpc3N1ZSAjODYxOiBDb3JyZWN0IGhlYWRlciBzZWxlY3Rpb24gbG9naWMgaW4gZ2V0X3NlbGVjdGVkX2hlYWRlcl9mb3JfZmllbGQgbWV0aG9kIGJ5IEBpZ29yY2FydmFsaGggaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC85MThcclxuKiBGaXggIzkxMCBieSBAdG9ueXZpbmNlIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvOTE3XHJcbiogQWNjb3VudCBuYW1lc3BhY2UgdXBkYXRlczogcGFydCA2ICh0cmFuc2FjdGlvbnMpIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzkwNFxyXG4qIGltcHJvdmVtZW50LyM4OTAvY2xlYW5fdXBfdG9hc3Rfbm90aWZpY2F0aW9uX3N0eWxlc19hbmRfYWxsb3dfdXNlcl90b19jbG9zZV9vbi1kZW1hbmQgYnkgQGV2YW5nZWxvcy1jb20gaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC85MTlcclxuKiBGaXggIzkyMSBieSBAdG9ueXZpbmNlIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvOTIyXHJcblxyXG4jIyBOZXcgQ29udHJpYnV0b3JzXHJcbiogQGlnb3JjYXJ2YWxoaCBtYWRlIHRoZWlyIGZpcnN0IGNvbnRyaWJ1dGlvbiBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzkxOFxyXG4qIEBldmFuZ2Vsb3MtY29tIG1hZGUgdGhlaXIgZmlyc3QgY29udHJpYnV0aW9uIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvOTE5XHJcblxyXG4qKkZ1bGwgQ2hhbmdlbG9nKio6IGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL2NvbXBhcmUvdjAuMS4wLWFscGhhLjcuLi52MC4xLjAtYWxwaGEuOCIsInJlYWN0aW9ucyI6eyJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTYzMDY1ODQ0L3JlYWN0aW9ucyIsInRvdGFsX2NvdW50IjoxMSwiKzEiOjgsIi0xIjowLCJsYXVnaCI6MCwiaG9vcmF5IjowLCJjb25mdXNlZCI6MCwiaGVhcnQiOjEsInJvY2tldCI6MiwiZXllcyI6MH0sIm1lbnRpb25zX2NvdW50Ijo1fSx7InVybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy8xNjE3NDIxMzAiLCJhc3NldHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE2MTc0MjEzMC9hc3NldHMiLCJ1cGxvYWRfdXJsIjoiaHR0cHM6Ly91cGxvYWRzLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy8xNjE3NDIxMzAvYXNzZXRzez9uYW1lLGxhYmVsfSIsImh0bWxfdXJsIjoiaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvdGFnL3YwLjEuMC1hbHBoYS43IiwiaWQiOjE2MTc0MjEzMCwiYXV0aG9yIjp7ImxvZ2luIjoiemFjaGdvbGwiLCJpZCI6MTY2NzYxNTcsIm5vZGVfaWQiOiJNRFE2VlhObGNqRTJOamMyTVRVMyIsImF2YXRhcl91cmwiOiJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTY2NzYxNTc/dj00IiwiZ3JhdmF0YXJfaWQiOiIiLCJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsIiwiaHRtbF91cmwiOiJodHRwczovL2dpdGh1Yi5jb20vemFjaGdvbGwiLCJmb2xsb3dlcnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9mb2xsb3dlcnMiLCJmb2xsb3dpbmdfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9mb2xsb3dpbmd7L290aGVyX3VzZXJ9IiwiZ2lzdHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9naXN0c3svZ2lzdF9pZH0iLCJzdGFycmVkX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvc3RhcnJlZHsvb3duZXJ9ey9yZXBvfSIsInN1YnNjcmlwdGlvbnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9zdWJzY3JpcHRpb25zIiwib3JnYW5pemF0aW9uc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL29yZ3MiLCJyZXBvc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3JlcG9zIiwiZXZlbnRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZXZlbnRzey9wcml2YWN5fSIsInJlY2VpdmVkX2V2ZW50c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3JlY2VpdmVkX2V2ZW50cyIsInR5cGUiOiJVc2VyIiwic2l0ZV9hZG1pbiI6ZmFsc2V9LCJub2RlX2lkIjoiUkVfa3dET0tfdHhITTRKb18weSIsInRhZ19uYW1lIjoidjAuMS4wLWFscGhhLjciLCJ0YXJnZXRfY29tbWl0aXNoIjoibWFpbiIsIm5hbWUiOiJ2MC4xLjAtYWxwaGEuNyIsImRyYWZ0IjpmYWxzZSwicHJlcmVsZWFzZSI6dHJ1ZSwiY3JlYXRlZF9hdCI6IjIwMjQtMDYtMjFUMjE6MDQ6NTlaIiwicHVibGlzaGVkX2F0IjoiMjAyNC0wNi0yMVQyMTowODowNFoiLCJhc3NldHMiOltdLCJ0YXJiYWxsX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS90YXJiYWxsL3YwLjEuMC1hbHBoYS43IiwiemlwYmFsbF91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvemlwYmFsbC92MC4xLjAtYWxwaGEuNyIsImJvZHkiOiIjIyBXaGF0J3MgQ2hhbmdlZFxyXG5cclxuTWF5YmUgbm93IHN1cHBvcnRzIHRyYW5zZmVyIG1hdGNoaW5nIPCfpbMg8J+MriBcclxuXHJcblRoaXMgc2lnbmlmaWNhbnRseSBpbXByb3ZlcyBpbmNvbWUgYW5kIGV4cGVuc2UgY2FsY3VsYXRpb25zIGJ5IGV4Y2x1ZGluZyB0cmFuc2ZlcnMgZnJvbSB0aGUgY2FsY3VsYXRpb246XHJcblxyXG5odHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9hc3NldHMvMTY2NzYxNTcvYTFjZGU0OTQtYjg5Zi00NjZhLThjNzQtZGExOTQ5MzQyODhhXHJcblxyXG4qIEFkZCBtZXJjaGFudCBzZWxlY3Qgd2hlbiBlZGl0aW5nIHRyYW5zYWN0aW9uIGJ5IEBqYWt1YmtvdHRuYXVlciBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzg4NVxyXG4qIFRyYW5zYWN0aW9uIHRyYW5zZmVycywgcGF5bWVudHMsIGFuZCBtYXRjaGluZyBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC84ODNcclxuKiBFbnN1cmUgY29ycmVjdCBmb3JtJ3MgaGlkZGVuIGlucHV0IGZvciBzZWxlY3RlZElkcyBieSBAemlyYXF5b3VuZyBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzg5MVxyXG4qIEFjY291bnQgbmFtZXNwYWNlIHVwZGF0ZXM6IHBhcnQgMSAoYWNjb3VudGFibGUgdHlwZXMpIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzg5M1xyXG4qIEFjY291bnQgbmFtZXNwYWNlIHVwZGF0ZXM6IHBhcnQgMiAoY2F0ZWdvcmllcykgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvODk0XHJcbiogQWNjb3VudCBuYW1lc3BhY2UgdXBkYXRlczogcGFydCAzIChtZXJjaGFudHMpIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzg5NVxyXG4qIEFjY291bnQgbmFtZXNwYWNlIHVwZGF0ZXM6IHBhcnQgNCAodHJhbnNmZXJzLCBzaW5ndWxhciBuYW1lc3BhY2luZykgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvODk2XHJcbiogRml4IEJ1ZzogYWZ0ZXIgZWRpdGluZyBhbiBhY2NvdW50IGhpc3RvcnkgdmFsdWUsIGl0IHJlcXVpcmVzIDIgY2xpY2tzIHRvIGNsb3NlIHRoZSBtZW51IGJ5IEB0b255dmluY2UgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC85MDBcclxuKiBmZWF0OiBUcmFuc2FjdGlvbiBwYWdpbmF0aW9uIEltcHJvdmVtZW50cyBieSBAa2FyYW5raXJpIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvODczXHJcbiogRml4IHRyYW5zZmVyIG5vdGUgb3ZlcmZsb3cgc3R5bGUgYnkgQGpha3Via290dG5hdWVyIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvOTAyXHJcbiogQWNjb3VudCBuYW1lc3BhY2UgdXBkYXRlczogcGFydCA1ICh2YWx1YXRpb25zKSBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC85MDFcclxuKiBBbGxvdyB0cmFuc2ZlcnMgYmFzZWQgb24gdHJhbnNhY3Rpb25zIGluIGRpZmZlcmVudCBjdXJyZW5jaWVzIGJ5IEBqYWt1YmtvdHRuYXVlciBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzkwM1xyXG5cclxuIyMgTmV3IENvbnRyaWJ1dG9yc1xyXG4qIEB6aXJhcXlvdW5nIG1hZGUgdGhlaXIgZmlyc3QgY29udHJpYnV0aW9uIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvODkxXHJcbiogQHRvbnl2aW5jZSBtYWRlIHRoZWlyIGZpcnN0IGNvbnRyaWJ1dGlvbiBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzkwMFxyXG4qIEBrYXJhbmtpcmkgbWFkZSB0aGVpciBmaXJzdCBjb250cmlidXRpb24gaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC84NzNcclxuXHJcbioqRnVsbCBDaGFuZ2Vsb2cqKjogaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvY29tcGFyZS92MC4xLjAtYWxwaGEuNi4uLnYwLjEuMC1hbHBoYS43IiwicmVhY3Rpb25zIjp7InVybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy8xNjE3NDIxMzAvcmVhY3Rpb25zIiwidG90YWxfY291bnQiOjI2LCIrMSI6MCwiLTEiOjAsImxhdWdoIjowLCJob29yYXkiOjksImNvbmZ1c2VkIjowLCJoZWFydCI6Nywicm9ja2V0Ijo5LCJleWVzIjoxfSwibWVudGlvbnNfY291bnQiOjV9LHsidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE2MDU2NjQ3MSIsImFzc2V0c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTYwNTY2NDcxL2Fzc2V0cyIsInVwbG9hZF91cmwiOiJodHRwczovL3VwbG9hZHMuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE2MDU2NjQ3MS9hc3NldHN7P25hbWUsbGFiZWx9IiwiaHRtbF91cmwiOiJodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy90YWcvdjAuMS4wLWFscGhhLjYiLCJpZCI6MTYwNTY2NDcxLCJhdXRob3IiOnsibG9naW4iOiJ6YWNoZ29sbCIsImlkIjoxNjY3NjE1Nywibm9kZV9pZCI6Ik1EUTZWWE5sY2pFMk5qYzJNVFUzIiwiYXZhdGFyX3VybCI6Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNjY3NjE1Nz92PTQiLCJncmF2YXRhcl9pZCI6IiIsInVybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwiLCJodG1sX3VybCI6Imh0dHBzOi8vZ2l0aHViLmNvbS96YWNoZ29sbCIsImZvbGxvd2Vyc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL2ZvbGxvd2VycyIsImZvbGxvd2luZ191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL2ZvbGxvd2luZ3svb3RoZXJfdXNlcn0iLCJnaXN0c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL2dpc3Rzey9naXN0X2lkfSIsInN0YXJyZWRfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9zdGFycmVkey9vd25lcn17L3JlcG99Iiwic3Vic2NyaXB0aW9uc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3N1YnNjcmlwdGlvbnMiLCJvcmdhbml6YXRpb25zX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvb3JncyIsInJlcG9zX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvcmVwb3MiLCJldmVudHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9ldmVudHN7L3ByaXZhY3l9IiwicmVjZWl2ZWRfZXZlbnRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvcmVjZWl2ZWRfZXZlbnRzIiwidHlwZSI6IlVzZXIiLCJzaXRlX2FkbWluIjpmYWxzZX0sIm5vZGVfaWQiOiJSRV9rd0RPS190eEhNNEprZ3pIIiwidGFnX25hbWUiOiJ2MC4xLjAtYWxwaGEuNiIsInRhcmdldF9jb21taXRpc2giOiJtYWluIiwibmFtZSI6InYwLjEuMC1hbHBoYS42IiwiZHJhZnQiOmZhbHNlLCJwcmVyZWxlYXNlIjp0cnVlLCJjcmVhdGVkX2F0IjoiMjAyNC0wNi0xNFQyMDo1MDowOFoiLCJwdWJsaXNoZWRfYXQiOiIyMDI0LTA2LTE0VDIxOjAxOjA0WiIsImFzc2V0cyI6W10sInRhcmJhbGxfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3RhcmJhbGwvdjAuMS4wLWFscGhhLjYiLCJ6aXBiYWxsX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS96aXBiYWxsL3YwLjEuMC1hbHBoYS42IiwiYm9keSI6IiMjIFdoYXQncyBDaGFuZ2VkXHJcblxyXG5UaGlzIHJlbGVhc2UgY29tZXMgd2l0aCBhIGNvbXBsZXRlIG92ZXJoYXVsIG9mIG91ciBEb2NrZXIgc2V0dXAgZ3VpZGUsIGJldHRlciBpbnRlcm5hbCBuYXZpZ2F0aW9uLCBhbmQgdGhlIGFiaWxpdHkgdG8gZ3JvdXAgeW91ciBhY2NvdW50cyBieSBmaW5hbmNpYWwgaW5zdGl0dXRpb24hXHJcblxyXG5odHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9hc3NldHMvMTY2NzYxNTcvYmU0ZDFjZTgtNzA1NS00ZjcxLTljM2YtYzliYmM5Y2I0NTFjXHJcblxyXG4qIEltcHJvdmUgYWNjb3VudCBpbnRlcm5hbCBsaW5raW5nIGFuZCByZWRpcmVjdCBiZWhhdmlvciBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC84NjRcclxuKiBBbGxvdyBmb3Igb3B0aW9uYWwgc3RhcnQgZGF0ZSBvbiBhY2NvdW50IGNyZWF0aW9uIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzg2NlxyXG4qIEFkZCBpbnN0aXR1dGlvbiBtYW5hZ2VtZW50IGFuZCBhY2NvdW50IGVkaXRpbmcgY29udHJvbHMgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvODY4XHJcbiogTmV3IERvY2tlciBDb21wb3NlIFNlbGYgSG9zdGluZyBHdWlkZSArIFVJIEZpeGVzIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzg3MFxyXG4qIFNpbXBsaWZ5IGFjY291bnQgc3luYyBsb2dpYyBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC84NzFcclxuKiBDaGFuZ2Vsb2cgcGFnZSB0aGF0IHB1bGxzIGZyb20gR2l0aHViIFJlbGVhc2Ugbm90ZXMgYnkgQG1hdHRpYS1tYWxuaXMgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC84NjdcclxuXHJcblxyXG4qKkZ1bGwgQ2hhbmdlbG9nKio6IGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL2NvbXBhcmUvdjAuMS4wLWFscGhhLjUuLi52MC4xLjAtYWxwaGEuNiIsInJlYWN0aW9ucyI6eyJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTYwNTY2NDcxL3JlYWN0aW9ucyIsInRvdGFsX2NvdW50IjozNiwiKzEiOjI3LCItMSI6MCwibGF1Z2giOjAsImhvb3JheSI6MCwiY29uZnVzZWQiOjAsImhlYXJ0Ijo5LCJyb2NrZXQiOjAsImV5ZXMiOjB9LCJtZW50aW9uc19jb3VudCI6Mn0seyJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTU5NDUyMjQ0IiwiYXNzZXRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy8xNTk0NTIyNDQvYXNzZXRzIiwidXBsb2FkX3VybCI6Imh0dHBzOi8vdXBsb2Fkcy5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTU5NDUyMjQ0L2Fzc2V0c3s/bmFtZSxsYWJlbH0iLCJodG1sX3VybCI6Imh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzL3RhZy92MC4xLjAtYWxwaGEuNSIsImlkIjoxNTk0NTIyNDQsImF1dGhvciI6eyJsb2dpbiI6InphY2hnb2xsIiwiaWQiOjE2Njc2MTU3LCJub2RlX2lkIjoiTURRNlZYTmxjakUyTmpjMk1UVTMiLCJhdmF0YXJfdXJsIjoiaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE2Njc2MTU3P3Y9NCIsImdyYXZhdGFyX2lkIjoiIiwidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbCIsImh0bWxfdXJsIjoiaHR0cHM6Ly9naXRodWIuY29tL3phY2hnb2xsIiwiZm9sbG93ZXJzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZm9sbG93ZXJzIiwiZm9sbG93aW5nX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZm9sbG93aW5ney9vdGhlcl91c2VyfSIsImdpc3RzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZ2lzdHN7L2dpc3RfaWR9Iiwic3RhcnJlZF91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3N0YXJyZWR7L293bmVyfXsvcmVwb30iLCJzdWJzY3JpcHRpb25zX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvc3Vic2NyaXB0aW9ucyIsIm9yZ2FuaXphdGlvbnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9vcmdzIiwicmVwb3NfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9yZXBvcyIsImV2ZW50c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL2V2ZW50c3svcHJpdmFjeX0iLCJyZWNlaXZlZF9ldmVudHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9yZWNlaXZlZF9ldmVudHMiLCJ0eXBlIjoiVXNlciIsInNpdGVfYWRtaW4iOmZhbHNlfSwibm9kZV9pZCI6IlJFX2t3RE9LX3R4SE00SmdReFUiLCJ0YWdfbmFtZSI6InYwLjEuMC1hbHBoYS41IiwidGFyZ2V0X2NvbW1pdGlzaCI6Im1haW4iLCJuYW1lIjoidjAuMS4wLWFscGhhLjUiLCJkcmFmdCI6ZmFsc2UsInByZXJlbGVhc2UiOnRydWUsImNyZWF0ZWRfYXQiOiIyMDI0LTA2LTA3VDIzOjI5OjAxWiIsInB1Ymxpc2hlZF9hdCI6IjIwMjQtMDYtMDdUMjM6MzQ6MTFaIiwiYXNzZXRzIjpbXSwidGFyYmFsbF91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvdGFyYmFsbC92MC4xLjAtYWxwaGEuNSIsInppcGJhbGxfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3ppcGJhbGwvdjAuMS4wLWFscGhhLjUiLCJib2R5IjoiIyMgV2hhdCdzIENoYW5nZWRcclxuXHJcbkJ1bGsgdHJhbnNhY3Rpb24gZWRpdGluZyBhbmQgZGVsZXRpb24gaXMgaGVyZSEgIENoZWNrIG91dCB0aGUgZGVtbyBiZWxvdzpcclxuXHJcbmh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL2Fzc2V0cy8xNjY3NjE1Ny9kOGEzYWUzOS00OTMxLTQ3NzUtOGM3Ni0yMTFkNmRjOTZiZjZcclxuXHJcbiogQWRkIGJ1bGsgc2VsZWN0aW9uIFVJIGNvbnRyb2xzIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzg0MFxyXG4qIEJ1bGsgdHJhbnNhY3Rpb24gZGVsZXRpb24gYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvODQ1XHJcbiogQnVsayBlZGl0aW5nIG9mIHRyYW5zYWN0aW9ucyBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC84NDZcclxuXHJcbioqRnVsbCBDaGFuZ2Vsb2cqKjogaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvY29tcGFyZS92MC4xLjAtYWxwaGEuNC4uLnYwLjEuMC1hbHBoYS41IiwicmVhY3Rpb25zIjp7InVybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy8xNTk0NTIyNDQvcmVhY3Rpb25zIiwidG90YWxfY291bnQiOjQ4LCIrMSI6MzUsIi0xIjowLCJsYXVnaCI6MCwiaG9vcmF5Ijo2LCJjb25mdXNlZCI6MCwiaGVhcnQiOjcsInJvY2tldCI6MCwiZXllcyI6MH0sIm1lbnRpb25zX2NvdW50IjoxfSx7InVybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy8xNTgzOTA2NzEiLCJhc3NldHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE1ODM5MDY3MS9hc3NldHMiLCJ1cGxvYWRfdXJsIjoiaHR0cHM6Ly91cGxvYWRzLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy8xNTgzOTA2NzEvYXNzZXRzez9uYW1lLGxhYmVsfSIsImh0bWxfdXJsIjoiaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvdGFnL3YwLjEuMC1hbHBoYS40IiwiaWQiOjE1ODM5MDY3MSwiYXV0aG9yIjp7ImxvZ2luIjoiemFjaGdvbGwiLCJpZCI6MTY2NzYxNTcsIm5vZGVfaWQiOiJNRFE2VlhObGNqRTJOamMyTVRVMyIsImF2YXRhcl91cmwiOiJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTY2NzYxNTc/dj00IiwiZ3JhdmF0YXJfaWQiOiIiLCJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsIiwiaHRtbF91cmwiOiJodHRwczovL2dpdGh1Yi5jb20vemFjaGdvbGwiLCJmb2xsb3dlcnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9mb2xsb3dlcnMiLCJmb2xsb3dpbmdfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9mb2xsb3dpbmd7L290aGVyX3VzZXJ9IiwiZ2lzdHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9naXN0c3svZ2lzdF9pZH0iLCJzdGFycmVkX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvc3RhcnJlZHsvb3duZXJ9ey9yZXBvfSIsInN1YnNjcmlwdGlvbnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9zdWJzY3JpcHRpb25zIiwib3JnYW5pemF0aW9uc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL29yZ3MiLCJyZXBvc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3JlcG9zIiwiZXZlbnRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZXZlbnRzey9wcml2YWN5fSIsInJlY2VpdmVkX2V2ZW50c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3JlY2VpdmVkX2V2ZW50cyIsInR5cGUiOiJVc2VyIiwic2l0ZV9hZG1pbiI6ZmFsc2V9LCJub2RlX2lkIjoiUkVfa3dET0tfdHhITTRKY05tUCIsInRhZ19uYW1lIjoidjAuMS4wLWFscGhhLjQiLCJ0YXJnZXRfY29tbWl0aXNoIjoibWFpbiIsIm5hbWUiOiJ2MC4xLjAtYWxwaGEuNCIsImRyYWZ0IjpmYWxzZSwicHJlcmVsZWFzZSI6dHJ1ZSwiY3JlYXRlZF9hdCI6IjIwMjQtMDUtMzFUMTg6MDk6MTJaIiwicHVibGlzaGVkX2F0IjoiMjAyNC0wNS0zMVQxODoxMDozMVoiLCJhc3NldHMiOltdLCJ0YXJiYWxsX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS90YXJiYWxsL3YwLjEuMC1hbHBoYS40IiwiemlwYmFsbF91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvemlwYmFsbC92MC4xLjAtYWxwaGEuNCIsImJvZHkiOiIjIyBXaGF0J3MgQ2hhbmdlZFxyXG4qIGZpeDogcG5nIGZpbGUgY2FuIGJlIHNlbGVjdGVkIGFzIHByb2ZpbGUgaW1hZ2VzIGJ5IEBwZWEtc3lzIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvODA5XHJcbiogVmFsaWRhdGUgdHJhbnNhY3Rpb24gZmlsdGVyaW5nIHBhcmFtcyBieSBAamFrdWJrb3R0bmF1ZXIgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC84MTBcclxuKiBGaXggZm9yZWlnbiBhY2NvdW50IHN5bmMgY3Jhc2ggYnkgQGpha3Via290dG5hdWVyIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvNzk0XHJcbiogU29ydCBhY2NvdW50cyBpbiB0aGUgc2lkZWJhciBieSBAamFrdWJrb3R0bmF1ZXIgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC84MTVcclxuKiBSZXVzYWJsZSBDSSB3b3JrZmxvdyBmb3IgR0ggYWN0aW9ucyBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC84MTlcclxuKiBUcmFuc2FjdGlvbnMgY2xlYW51cCBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC84MTdcclxuKiBTeW5jIGFjY291bnQgYWZ0ZXIgdHJhbnNhY3Rpb24gaW1wb3J0IGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzgyMFxyXG4qIEZpeCBvdmVyZmxvdyBlcnJvciBvbiBhY2NvdW50IHZhbHVlIGlucHV0cyBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC84MjFcclxuXHJcbiMjIE5ldyBDb250cmlidXRvcnNcclxuKiBAcGVhLXN5cyBtYWRlIHRoZWlyIGZpcnN0IGNvbnRyaWJ1dGlvbiBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzgwOVxyXG5cclxuKipGdWxsIENoYW5nZWxvZyoqOiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9jb21wYXJlL3YwLjEuMC1hbHBoYS4zLi4udjAuMS4wLWFscGhhLjQiLCJyZWFjdGlvbnMiOnsidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE1ODM5MDY3MS9yZWFjdGlvbnMiLCJ0b3RhbF9jb3VudCI6MjEsIisxIjowLCItMSI6MCwibGF1Z2giOjAsImhvb3JheSI6MjEsImNvbmZ1c2VkIjowLCJoZWFydCI6MCwicm9ja2V0IjowLCJleWVzIjowfSwibWVudGlvbnNfY291bnQiOjN9LHsidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE1NzM5NzA5MSIsImFzc2V0c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTU3Mzk3MDkxL2Fzc2V0cyIsInVwbG9hZF91cmwiOiJodHRwczovL3VwbG9hZHMuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE1NzM5NzA5MS9hc3NldHN7P25hbWUsbGFiZWx9IiwiaHRtbF91cmwiOiJodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy90YWcvdjAuMS4wLWFscGhhLjMiLCJpZCI6MTU3Mzk3MDkxLCJhdXRob3IiOnsibG9naW4iOiJ6YWNoZ29sbCIsImlkIjoxNjY3NjE1Nywibm9kZV9pZCI6Ik1EUTZWWE5sY2pFMk5qYzJNVFUzIiwiYXZhdGFyX3VybCI6Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNjY3NjE1Nz92PTQiLCJncmF2YXRhcl9pZCI6IiIsInVybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwiLCJodG1sX3VybCI6Imh0dHBzOi8vZ2l0aHViLmNvbS96YWNoZ29sbCIsImZvbGxvd2Vyc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL2ZvbGxvd2VycyIsImZvbGxvd2luZ191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL2ZvbGxvd2luZ3svb3RoZXJfdXNlcn0iLCJnaXN0c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL2dpc3Rzey9naXN0X2lkfSIsInN0YXJyZWRfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9zdGFycmVkey9vd25lcn17L3JlcG99Iiwic3Vic2NyaXB0aW9uc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3N1YnNjcmlwdGlvbnMiLCJvcmdhbml6YXRpb25zX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvb3JncyIsInJlcG9zX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvcmVwb3MiLCJldmVudHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9ldmVudHN7L3ByaXZhY3l9IiwicmVjZWl2ZWRfZXZlbnRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvcmVjZWl2ZWRfZXZlbnRzIiwidHlwZSI6IlVzZXIiLCJzaXRlX2FkbWluIjpmYWxzZX0sIm5vZGVfaWQiOiJSRV9rd0RPS190eEhNNEpZYkJqIiwidGFnX25hbWUiOiJ2MC4xLjAtYWxwaGEuMyIsInRhcmdldF9jb21taXRpc2giOiJtYWluIiwibmFtZSI6InYwLjEuMC1hbHBoYS4zIiwiZHJhZnQiOmZhbHNlLCJwcmVyZWxlYXNlIjp0cnVlLCJjcmVhdGVkX2F0IjoiMjAyNC0wNS0yNFQxODoyNDowM1oiLCJwdWJsaXNoZWRfYXQiOiIyMDI0LTA1LTI0VDE4OjI1OjM3WiIsImFzc2V0cyI6W10sInRhcmJhbGxfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3RhcmJhbGwvdjAuMS4wLWFscGhhLjMiLCJ6aXBiYWxsX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS96aXBiYWxsL3YwLjEuMC1hbHBoYS4zIiwiYm9keSI6IiMjIFdoYXQncyBDaGFuZ2VkXHJcbiogRml4IGN1cnJlbmN5IHdoZW4gaW1wb3J0aW5nIHRvIGZvcmVpZ24gYWNjb3VudHMgYnkgQGpha3Via290dG5hdWVyIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvNzYyXHJcbiogU2hvdyBhbiBlcnJvciBub3RpZmljYXRpb24gaWYgYWNjb3VudCBjYW5ub3QgYmUgbWFudWFsbHkgc3luY2VkIGJ5IEBqYWt1YmtvdHRuYXVlciBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzc2MVxyXG4qIEFkZCBtaWdyYXRpb24gdG8gbWFrZSBhbGwgZXhpc3RpbmcgdXNlcnMgYWRtaW5zIGJ5IEBqYWt1YmtvdHRuYXVlciBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzc3MFxyXG4qIEZpeCBpc3N1ZSB3aXRoIHN0YXJ0X2RhdGUgbm90IGJlaW5nIHNldCBpbiBhY2NvdW50IGNyZWF0aW9uIGJ5IEBzY3ViYW1hZ2dvIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvNzgxXHJcbiogRml4IGltcG9ydCBjcmFzaCB3aXRoIGVtcHR5IHRyYW5zYWN0aW9uIG5hbWUgYnkgQGpha3Via290dG5hdWVyIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvNzgzXHJcbiogTW92ZSBjYXRlZ29yeSBkcm9wZG93biBtZW51IGNvbnRlbnQgaW50byBhIHR1cmJvIGZyYW1lIGJ5IEBqYWt1YmtvdHRuYXVlciBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzc4MlxyXG4qIElnbm9yZSBlbXB0eSBjYXRlZ29yaWVzIHdoaWxlIGltcG9ydGluZyBieSBAamFrdWJrb3R0bmF1ZXIgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC83ODlcclxuKiBGaXggZHVwbGljYXRlIGNhdGVnb3J5IGNyZWF0aW9uIG9uIGltcG9ydCBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC83OTFcclxuKiBDcmVhdGUgdGFnZ2luZyBzeXN0ZW0gYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvNzkyXHJcbiogQWRkIHRhZyBwcmV2aWV3IHdoZW4gaW1wb3J0aW5nIGFuZCBmaXggZW1wdHkgY2F0ZWdvcnkgYnVnIGJ5IEBqYWt1YmtvdHRuYXVlciBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzgwMFxyXG5cclxuIyMgTmV3IENvbnRyaWJ1dG9yc1xyXG4qIEBzY3ViYW1hZ2dvIG1hZGUgdGhlaXIgZmlyc3QgY29udHJpYnV0aW9uIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvNzgxXHJcblxyXG4qKkZ1bGwgQ2hhbmdlbG9nKio6IGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL2NvbXBhcmUvdjAuMS4wLWFscGhhLjIuLi52MC4xLjAtYWxwaGEuMyIsInJlYWN0aW9ucyI6eyJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTU3Mzk3MDkxL3JlYWN0aW9ucyIsInRvdGFsX2NvdW50IjozMSwiKzEiOjAsIi0xIjowLCJsYXVnaCI6MCwiaG9vcmF5IjowLCJjb25mdXNlZCI6MCwiaGVhcnQiOjUsInJvY2tldCI6MjYsImV5ZXMiOjB9LCJtZW50aW9uc19jb3VudCI6M30seyJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTU2MzQyMTUyIiwiYXNzZXRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy8xNTYzNDIxNTIvYXNzZXRzIiwidXBsb2FkX3VybCI6Imh0dHBzOi8vdXBsb2Fkcy5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTU2MzQyMTUyL2Fzc2V0c3s/bmFtZSxsYWJlbH0iLCJodG1sX3VybCI6Imh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzL3RhZy92MC4xLjAtYWxwaGEuMiIsImlkIjoxNTYzNDIxNTIsImF1dGhvciI6eyJsb2dpbiI6InphY2hnb2xsIiwiaWQiOjE2Njc2MTU3LCJub2RlX2lkIjoiTURRNlZYTmxjakUyTmpjMk1UVTMiLCJhdmF0YXJfdXJsIjoiaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE2Njc2MTU3P3Y9NCIsImdyYXZhdGFyX2lkIjoiIiwidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbCIsImh0bWxfdXJsIjoiaHR0cHM6Ly9naXRodWIuY29tL3phY2hnb2xsIiwiZm9sbG93ZXJzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZm9sbG93ZXJzIiwiZm9sbG93aW5nX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZm9sbG93aW5ney9vdGhlcl91c2VyfSIsImdpc3RzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZ2lzdHN7L2dpc3RfaWR9Iiwic3RhcnJlZF91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3N0YXJyZWR7L293bmVyfXsvcmVwb30iLCJzdWJzY3JpcHRpb25zX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvc3Vic2NyaXB0aW9ucyIsIm9yZ2FuaXphdGlvbnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9vcmdzIiwicmVwb3NfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9yZXBvcyIsImV2ZW50c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL2V2ZW50c3svcHJpdmFjeX0iLCJyZWNlaXZlZF9ldmVudHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9yZWNlaXZlZF9ldmVudHMiLCJ0eXBlIjoiVXNlciIsInNpdGVfYWRtaW4iOmZhbHNlfSwibm9kZV9pZCI6IlJFX2t3RE9LX3R4SE00SlVaZUkiLCJ0YWdfbmFtZSI6InYwLjEuMC1hbHBoYS4yIiwidGFyZ2V0X2NvbW1pdGlzaCI6Im1haW4iLCJuYW1lIjoidjAuMS4wLWFscGhhLjIiLCJkcmFmdCI6ZmFsc2UsInByZXJlbGVhc2UiOnRydWUsImNyZWF0ZWRfYXQiOiIyMDI0LTA1LTE3VDIyOjIwOjE5WiIsInB1Ymxpc2hlZF9hdCI6IjIwMjQtMDUtMTdUMjI6MzM6MjRaIiwiYXNzZXRzIjpbXSwidGFyYmFsbF91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvdGFyYmFsbC92MC4xLjAtYWxwaGEuMiIsInppcGJhbGxfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3ppcGJhbGwvdjAuMS4wLWFscGhhLjIiLCJib2R5IjoiU2Vjb25kIGFscGhhIHJlbGVhc2Ugb2YgTWF5YmUg8J+OiSDwn4yuXHJcblxyXG4jIyBOZXcgZmVhdHVyZXNcclxuXHJcbi0gU2VsZiBob3N0aW5nIHdpdGggRG9ja2VyIPCfkLMgKFtzZXR1cCBndWlkZV0oaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvYmxvYi9tYWluL2RvY3MvaG9zdGluZy9kb2NrZXIubWQpKVxyXG4tIENTViB0cmFuc2FjdGlvbiBpbXBvcnRzXHJcbi0gVHJhbnNhY3Rpb24gbWFuYWdlbWVudCB3aXRoIG1lcmNoYW50cyBhbmQgY2F0ZWdvcmllc1xyXG4tIEZyZXNoIGRlc2lnbiBvZiB1c2VyIHNldHRpbmdzXHJcbi0gUmUtZGVzaWduZWQgZGFzaGJvYXJkICsgYWNjb3VudHMgc3VtbWFyeVxyXG4tIEFkbWluIGFjY291bnRzLCBhYmlsaXR5IHRvIGRlbGV0ZSBhbmQgcHVyZ2UgZGF0YVxyXG5cclxuKipGdWxsIENoYW5nZWxvZyoqOiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9jb21wYXJlL3YwLjEuMC1hbHBoYS4xLi4udjAuMS4wLWFscGhhLjIiLCJyZWFjdGlvbnMiOnsidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE1NjM0MjE1Mi9yZWFjdGlvbnMiLCJ0b3RhbF9jb3VudCI6NTEsIisxIjowLCItMSI6MCwibGF1Z2giOjAsImhvb3JheSI6NDksImNvbmZ1c2VkIjowLCJoZWFydCI6Miwicm9ja2V0IjowLCJleWVzIjowfX0seyJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTUxMDI4MTIzIiwiYXNzZXRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy8xNTEwMjgxMjMvYXNzZXRzIiwidXBsb2FkX3VybCI6Imh0dHBzOi8vdXBsb2Fkcy5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTUxMDI4MTIzL2Fzc2V0c3s/bmFtZSxsYWJlbH0iLCJodG1sX3VybCI6Imh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzL3RhZy92MC4xLjAtYWxwaGEuMSIsImlkIjoxNTEwMjgxMjMsImF1dGhvciI6eyJsb2dpbiI6InphY2hnb2xsIiwiaWQiOjE2Njc2MTU3LCJub2RlX2lkIjoiTURRNlZYTmxjakUyTmpjMk1UVTMiLCJhdmF0YXJfdXJsIjoiaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE2Njc2MTU3P3Y9NCIsImdyYXZhdGFyX2lkIjoiIiwidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbCIsImh0bWxfdXJsIjoiaHR0cHM6Ly9naXRodWIuY29tL3phY2hnb2xsIiwiZm9sbG93ZXJzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZm9sbG93ZXJzIiwiZm9sbG93aW5nX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZm9sbG93aW5ney9vdGhlcl91c2VyfSIsImdpc3RzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZ2lzdHN7L2dpc3RfaWR9Iiwic3RhcnJlZF91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3N0YXJyZWR7L293bmVyfXsvcmVwb30iLCJzdWJzY3JpcHRpb25zX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvc3Vic2NyaXB0aW9ucyIsIm9yZ2FuaXphdGlvbnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9vcmdzIiwicmVwb3NfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9yZXBvcyIsImV2ZW50c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL2V2ZW50c3svcHJpdmFjeX0iLCJyZWNlaXZlZF9ldmVudHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9yZWNlaXZlZF9ldmVudHMiLCJ0eXBlIjoiVXNlciIsInNpdGVfYWRtaW4iOmZhbHNlfSwibm9kZV9pZCI6IlJFX2t3RE9LX3R4SE00SkFJR2IiLCJ0YWdfbmFtZSI6InYwLjEuMC1hbHBoYS4xIiwidGFyZ2V0X2NvbW1pdGlzaCI6Im1haW4iLCJuYW1lIjoidjAuMS4wLWFscGhhLjEiLCJkcmFmdCI6ZmFsc2UsInByZXJlbGVhc2UiOnRydWUsImNyZWF0ZWRfYXQiOiIyMDI0LTA0LTEzVDEzOjI4OjQ1WiIsInB1Ymxpc2hlZF9hdCI6IjIwMjQtMDQtMTNUMTM6NDk6MDNaIiwiYXNzZXRzIjpbXSwidGFyYmFsbF91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvdGFyYmFsbC92MC4xLjAtYWxwaGEuMSIsInppcGJhbGxfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3ppcGJhbGwvdjAuMS4wLWFscGhhLjEiLCJib2R5IjoiSW5pdGlhbCBhbHBoYSB2ZXJzaW9uIG9mIE1heWJlIPCfjokg8J+MriIsInJlYWN0aW9ucyI6eyJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTUxMDI4MTIzL3JlYWN0aW9ucyIsInRvdGFsX2NvdW50IjoxNjUsIisxIjo1MCwiLTEiOjAsImxhdWdoIjowLCJob29yYXkiOjQ2LCJjb25mdXNlZCI6MCwiaGVhcnQiOjM1LCJyb2NrZXQiOjIzLCJleWVzIjoxMX19XQ==
- recorded_at: Mon, 09 Sep 2024 20:03:35 GMT
+ W3sidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzIwMzEwMjI3OCIsImFzc2V0c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMjAzMTAyMjc4L2Fzc2V0cyIsInVwbG9hZF91cmwiOiJodHRwczovL3VwbG9hZHMuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzIwMzEwMjI3OC9hc3NldHN7P25hbWUsbGFiZWx9IiwiaHRtbF91cmwiOiJodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy90YWcvdjAuNC4zIiwiaWQiOjIwMzEwMjI3OCwiYXV0aG9yIjp7ImxvZ2luIjoiemFjaGdvbGwiLCJpZCI6MTY2NzYxNTcsIm5vZGVfaWQiOiJNRFE2VlhObGNqRTJOamMyTVRVMyIsImF2YXRhcl91cmwiOiJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTY2NzYxNTc/dj00IiwiZ3JhdmF0YXJfaWQiOiIiLCJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsIiwiaHRtbF91cmwiOiJodHRwczovL2dpdGh1Yi5jb20vemFjaGdvbGwiLCJmb2xsb3dlcnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9mb2xsb3dlcnMiLCJmb2xsb3dpbmdfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9mb2xsb3dpbmd7L290aGVyX3VzZXJ9IiwiZ2lzdHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9naXN0c3svZ2lzdF9pZH0iLCJzdGFycmVkX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvc3RhcnJlZHsvb3duZXJ9ey9yZXBvfSIsInN1YnNjcmlwdGlvbnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9zdWJzY3JpcHRpb25zIiwib3JnYW5pemF0aW9uc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL29yZ3MiLCJyZXBvc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3JlcG9zIiwiZXZlbnRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZXZlbnRzey9wcml2YWN5fSIsInJlY2VpdmVkX2V2ZW50c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3JlY2VpdmVkX2V2ZW50cyIsInR5cGUiOiJVc2VyIiwidXNlcl92aWV3X3R5cGUiOiJwdWJsaWMiLCJzaXRlX2FkbWluIjpmYWxzZX0sIm5vZGVfaWQiOiJSRV9rd0RPS190eEhNNE1HeGhHIiwidGFnX25hbWUiOiJ2MC40LjMiLCJ0YXJnZXRfY29tbWl0aXNoIjoibWFpbiIsIm5hbWUiOiJ2MC40LjMiLCJkcmFmdCI6ZmFsc2UsInByZXJlbGVhc2UiOmZhbHNlLCJjcmVhdGVkX2F0IjoiMjAyNS0wMi0yOFQyMDoxMTo0MVoiLCJwdWJsaXNoZWRfYXQiOiIyMDI1LTAyLTI4VDIwOjE3OjE3WiIsImFzc2V0cyI6W10sInRhcmJhbGxfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3RhcmJhbGwvdjAuNC4zIiwiemlwYmFsbF91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvemlwYmFsbC92MC40LjMiLCJib2R5IjoiIyMgRGF0YSByZXNldHMsIG9mZmxpbmUgaW52ZXN0bWVudCB0cmFkZXMsIGFuZCBtaXNjZWxsYW5lb3VzIHN0YWJpbGl0eSBpbXByb3ZlbWVudHNcclxuXHJcblRoaXMgcmVsZWFzZSBjb21lcyB3aXRoIGEgd2lkZSBtaXggb2Ygc3RhYmlsaXR5IGltcHJvdmVtZW50cyBhbmQgcXVhbGl0eSBvZiBsaWZlIHVwZGF0ZXM7IHBhcnRpY3VsYXJseSBmb3Igc2VsZiBob3N0ZWQgYXBwcywgd2hpY2ggY2FuIG5vdyBiZSBcInJlc2V0XCIgaW4gdXNlciBzZXR0aW5ncy4gIElmIHlvdXIgZGF0YSBsb29rcyB3cm9uZyBvciB5b3Ugd2FudCBhIFwiY2xlYW4gc2xhdGVcIiB0byB3b3JrIGZyb20sIHdlJ3ZlIGFkZGVkIHRoZSBhYmlsaXR5IGZvciB5b3UgdG8gZWFzaWx5IHBlcmZvcm0gdGhlc2UgcmVzZXRzIHdpdGhvdXQgd3JpdGluZyBTUUwgb3IgbWFudWFsbHkgZGVsZXRpbmcgcmVjb3Jkcy5cclxuXHJcblRoaXMgcmVsZWFzZSBhbHNvIGNvbWVzIHdpdGggYSBtdWNoIGNsZWFyZXIgVUkgc3Vycm91bmRpbmcgdGhlIFN5bnRoIGRhdGEgcHJvdmlkZXIuICBOZXcgc2VsZiBob3N0ZWQgdXNlcnMgd2lsbCBub3cgc2VlIGEgcHJvbWluZW50IHdhcm5pbmcgbWVzc2FnZSBpZiB0aGV5IGhhdmUgbWlzc2luZyBkYXRhIGFzIGEgcmVzdWx0IG9mIGEgbWlzY29uZmlndXJlZCBvciBhYnNlbnQgZGF0YSBwcm92aWRlci5cclxuXHJcbiMjIFdoYXQncyBDaGFuZ2VkXHJcbiogQWRkIG5ldyBjYXRlZ29yeSBmbG93IGJ5IEBzeWVkYmFyaW1hbmphbiBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE4NTdcclxuKiBGaXggcGFyZW50IGNhdGVnb3J5IHN1bXMgaW4gYnVkZ2V0IGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE4OTRcclxuKiBBZGQgYnJlYWRjcnVtYnMgc3VwcG9ydCBhY3Jvc3MgYXBwbGljYXRpb24gYnkgQFNocGlnZm9yZCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE4OTdcclxuKiBEYXNoYm9hcmQgZGVzaWduIGZpeGVzIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE4OThcclxuKiBBbGxvdyBhY2NvdW50IGJhbGFuY2UgdG8gZHluYW1pY2FsbHkgdXNlIGN1cnJlbmN5IGZvcm1hdCBvbiBwcmVmZXJlbmNlIHBhZ2UgYnkgQEhhcnJ5LWtwIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTkxMFxyXG4qIEZlYXQ6IERhdGEgXCJyZXNldFwiIGJ1dHRvbiBieSBAdG9ueXZpbmNlIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTkxM1xyXG4qIEZpeDogTWFrZSBUYWdzIHNlbGVjdGlvbiBzY3JvbGxhYmxlIGJ5IEB0b255dmluY2UgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xOTIxXHJcbiogRml4IHZhbHVlIHdyYXBwaW5nIG9uIGFjY291bnQgYmFsYW5jZSBpbiBzaWRlYmFyIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE5MjJcclxuKiBGaXggaW1wb3J0IGNvbmZpZ3VyYXRpb24gZm9ybSBzbyBudW1iZXIgZm9ybWF0IGlzIGFwcGxpZWQgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTkyM1xyXG4qIEFkZCB0cmFuc2l0aW9ucyB0byBidXR0b25zIGFuZCBvdGhlciBjb21tb24gZGVzaWduIHN5c3RlbSBlbGVtZW50cyBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xOTI0XHJcbiogQWxsb3cgb2ZmbGluZSB0cmFkZSB0aWNrZXJzIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE5MjVcclxuKiBmaXg6IERvbid0IHNob3cgQmlsbGluZ3Mgb24gc2V0dGluZ3MgbmF2YmFyIHdoZW4gc2VsZi1ob3N0ZWQgYnkgQHRvbnl2aW5jZSBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE5MTJcclxuKiBTaG93IFVJIHdhcm5pbmcgdG8gdXNlciB3aGVuIHRoZXkgbmVlZCBwcm92aWRlciBkYXRhIGJ1dCBoYXZlIG5vdCBzZXR1cCBTeW50aCB5ZXQgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTkyNlxyXG4qIEludmVydCBsaWFiaWxpdHkgZ3JhcGhzIHRvIGhhdmUgY29ycmVjdCBzaWduYWdlIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE5MjhcclxuKiBFc2NhcGUgcXVvdGF0aW9ucyBpbiBDU1YgaW1wb3J0cyBwcm9wZXJseSBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xOTI5XHJcblxyXG4jIyBOZXcgQ29udHJpYnV0b3JzXHJcbiogQHN5ZWRiYXJpbWFuamFuIG1hZGUgdGhlaXIgZmlyc3QgY29udHJpYnV0aW9uIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTg1N1xyXG5cclxuKipGdWxsIENoYW5nZWxvZyoqOiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9jb21wYXJlL3YwLjQuMi4uLnYwLjQuMyIsInJlYWN0aW9ucyI6eyJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMjAzMTAyMjc4L3JlYWN0aW9ucyIsInRvdGFsX2NvdW50IjoyMiwiKzEiOjAsIi0xIjowLCJsYXVnaCI6MCwiaG9vcmF5IjowLCJjb25mdXNlZCI6MCwiaGVhcnQiOjIyLCJyb2NrZXQiOjAsImV5ZXMiOjB9LCJtZW50aW9uc19jb3VudCI6NX0seyJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMjAxNzY2MjkyIiwiYXNzZXRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy8yMDE3NjYyOTIvYXNzZXRzIiwidXBsb2FkX3VybCI6Imh0dHBzOi8vdXBsb2Fkcy5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMjAxNzY2MjkyL2Fzc2V0c3s/bmFtZSxsYWJlbH0iLCJodG1sX3VybCI6Imh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzL3RhZy92MC40LjEiLCJpZCI6MjAxNzY2MjkyLCJhdXRob3IiOnsibG9naW4iOiJ6YWNoZ29sbCIsImlkIjoxNjY3NjE1Nywibm9kZV9pZCI6Ik1EUTZWWE5sY2pFMk5qYzJNVFUzIiwiYXZhdGFyX3VybCI6Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNjY3NjE1Nz92PTQiLCJncmF2YXRhcl9pZCI6IiIsInVybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwiLCJodG1sX3VybCI6Imh0dHBzOi8vZ2l0aHViLmNvbS96YWNoZ29sbCIsImZvbGxvd2Vyc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL2ZvbGxvd2VycyIsImZvbGxvd2luZ191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL2ZvbGxvd2luZ3svb3RoZXJfdXNlcn0iLCJnaXN0c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL2dpc3Rzey9naXN0X2lkfSIsInN0YXJyZWRfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9zdGFycmVkey9vd25lcn17L3JlcG99Iiwic3Vic2NyaXB0aW9uc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3N1YnNjcmlwdGlvbnMiLCJvcmdhbml6YXRpb25zX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvb3JncyIsInJlcG9zX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvcmVwb3MiLCJldmVudHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9ldmVudHN7L3ByaXZhY3l9IiwicmVjZWl2ZWRfZXZlbnRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvcmVjZWl2ZWRfZXZlbnRzIiwidHlwZSI6IlVzZXIiLCJ1c2VyX3ZpZXdfdHlwZSI6InB1YmxpYyIsInNpdGVfYWRtaW4iOmZhbHNlfSwibm9kZV9pZCI6IlJFX2t3RE9LX3R4SE00TUJyV1UiLCJ0YWdfbmFtZSI6InYwLjQuMSIsInRhcmdldF9jb21taXRpc2giOiJtYWluIiwibmFtZSI6InYwLjQuMSIsImRyYWZ0IjpmYWxzZSwicHJlcmVsZWFzZSI6ZmFsc2UsImNyZWF0ZWRfYXQiOiIyMDI1LTAyLTIxVDE5OjE5OjUwWiIsInB1Ymxpc2hlZF9hdCI6IjIwMjUtMDItMjFUMTk6MjA6NDNaIiwiYXNzZXRzIjpbXSwidGFyYmFsbF91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvdGFyYmFsbC92MC40LjEiLCJ6aXBiYWxsX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS96aXBiYWxsL3YwLjQuMSIsImJvZHkiOiJQYXRjaCByZWxlYXNlIGZvciBnaXQgdmVyc2lvbmluZyBpbmZvIGNyYXNoIGVycm9yIiwicmVhY3Rpb25zIjp7InVybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy8yMDE3NjYyOTIvcmVhY3Rpb25zIiwidG90YWxfY291bnQiOjEzLCIrMSI6MTMsIi0xIjowLCJsYXVnaCI6MCwiaG9vcmF5IjowLCJjb25mdXNlZCI6MCwiaGVhcnQiOjAsInJvY2tldCI6MCwiZXllcyI6MH19LHsidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzIwMTc0NTA4NSIsImFzc2V0c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMjAxNzQ1MDg1L2Fzc2V0cyIsInVwbG9hZF91cmwiOiJodHRwczovL3VwbG9hZHMuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzIwMTc0NTA4NS9hc3NldHN7P25hbWUsbGFiZWx9IiwiaHRtbF91cmwiOiJodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy90YWcvdjAuNC4wIiwiaWQiOjIwMTc0NTA4NSwiYXV0aG9yIjp7ImxvZ2luIjoiemFjaGdvbGwiLCJpZCI6MTY2NzYxNTcsIm5vZGVfaWQiOiJNRFE2VlhObGNqRTJOamMyTVRVMyIsImF2YXRhcl91cmwiOiJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTY2NzYxNTc/dj00IiwiZ3JhdmF0YXJfaWQiOiIiLCJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsIiwiaHRtbF91cmwiOiJodHRwczovL2dpdGh1Yi5jb20vemFjaGdvbGwiLCJmb2xsb3dlcnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9mb2xsb3dlcnMiLCJmb2xsb3dpbmdfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9mb2xsb3dpbmd7L290aGVyX3VzZXJ9IiwiZ2lzdHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9naXN0c3svZ2lzdF9pZH0iLCJzdGFycmVkX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvc3RhcnJlZHsvb3duZXJ9ey9yZXBvfSIsInN1YnNjcmlwdGlvbnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9zdWJzY3JpcHRpb25zIiwib3JnYW5pemF0aW9uc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL29yZ3MiLCJyZXBvc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3JlcG9zIiwiZXZlbnRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZXZlbnRzey9wcml2YWN5fSIsInJlY2VpdmVkX2V2ZW50c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3JlY2VpdmVkX2V2ZW50cyIsInR5cGUiOiJVc2VyIiwidXNlcl92aWV3X3R5cGUiOiJwdWJsaWMiLCJzaXRlX2FkbWluIjpmYWxzZX0sIm5vZGVfaWQiOiJSRV9rd0RPS190eEhNNE1CbUs5IiwidGFnX25hbWUiOiJ2MC40LjAiLCJ0YXJnZXRfY29tbWl0aXNoIjoibWFpbiIsIm5hbWUiOiJ2MC40LjAiLCJkcmFmdCI6ZmFsc2UsInByZXJlbGVhc2UiOmZhbHNlLCJjcmVhdGVkX2F0IjoiMjAyNS0wMi0yMVQxNzozOTo0OVoiLCJwdWJsaXNoZWRfYXQiOiIyMDI1LTAyLTIxVDE3OjQ0OjI1WiIsImFzc2V0cyI6W10sInRhcmJhbGxfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3RhcmJhbGwvdjAuNC4wIiwiemlwYmFsbF91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvemlwYmFsbC92MC40LjAiLCJib2R5IjoiIyMgTWF5YmUgUmVmcmVzaCDwn46JIFxyXG5cclxuVGhpcyBsYXRlc3QgdmVyc2lvbiBjb21lcyB3aXRoIGEgKipicmFuZCBuZXcgYW5kIHNpbXBsaWZpZWQgVUkqKiBwbHVzIGEgdG9uIG9mIGh1Z2UgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnRzIG9uIHRoZSB0cmFuc2FjdGlvbnMsIGRhc2hib2FyZCwgYW5kIGFjY291bnRzIHBhZ2VzLlxyXG5cclxuIVtDbGVhblNob3QgMjAyNS0wMi0yMSBhdCAxMiAzOSAxMl0oaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzLzdjOWQyMjBjLTRhMTMtNGVlZi05ODY2LTA1YTYxMzEwZTJjZilcclxuXHJcbiMjIFdoYXQncyBDaGFuZ2VkXHJcblxyXG4qIEZpeCBhY2NvdW50IGRlbGV0aW9uIGNhc2NhZGUgYnVnIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE2NDRcclxuKiBEbyBub3QgcmFpc2Ugb24gUGxhaWQgaXRlbSBub3QgZm91bmQgZXhjZXB0aW9ucyBmb3IgaXRlbSBkZWxldGlvbnMgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTY0NlxyXG4qIEFsaWduIGNhc2NhZGUgZGVsZXRlIGJlaGF2aW9yIGZvciB0cmFuc2ZlcnMgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTY0N1xyXG4qIGZpeDogT25seSBhZG1pbnMgY2FuIGdlbmVyYXRlIGludml0ZSBjb2RlcyBieSBAdG9ueXZpbmNlIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTYxMVxyXG4qIE9ubHkgdXBkYXRlIGFjY291bnQgYmFsYW5jZSBpZiBjaGFuZ2VkIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE2NzZcclxuKiBBZGp1c3QgcXVldWVzIHRvIHByaW9yaXRpemUgYWNjb3VudCBzeW5jcywgaGFuZGxlIG1pc3NpbmcgY3VycmVudCBkYXkgdmFsdWVzIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE2ODJcclxuKiBBZGRlZCBEZWNpbWFsIFN1cHBvcnQgaW4gbWluIHRyYW5zYWN0aW9uIGJ5IEBIYXJyeS1rcCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE2ODFcclxuKiBGaXggbisxIGZvciBjYXRlZ29yaWVzIGluIGZvciB0b19kb251dF9zZWdtZW50c19qc29uIGluIGJ1ZGdldCBieSBAdGFwYWxpbG92IGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTY5M1xyXG4qIEFkZCBNb3JlIFRpbWVsaW5lcyBieSBAbmlraGlsYmFkeWFsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTcxNFxyXG4qIEFkZCBjYWJpbiAvIGNvdHRhZ2UgYXMgYSBwcm9wZXJ0eSB0eXBlIGJ5IEBlaXRoZSBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE2NThcclxuKiBBZGQgUmVqZWN0ZWRUcmFuc2ZlciBtb2RlbCwgc2ltcGxpZnkgYXV0byBtYXRjaGluZyBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xNjkwXHJcbiogRml4OiBFZGl0aW5nIGEgY2F0ZWdvcnkgZG9lcyBub3Qgc2hvdyBub3RpZmljYXRpb24gdW50aWwgbmV4dCBwYWdlIHJlZnJlc2ggYnkgQGplc3Rpbmpvc2hpIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTcyMFxyXG4qIEJ1bXAgdG8gUnVieSAzLjQuMSBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xNzIxXHJcbiogTGF6eSBsb2FkIHN5bnRoIGxvZ29zIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE3MzFcclxuKiBPbmx5IGJ1aWxkIGFybXY3IG9uIG9mZmljaWFsIHJlbGVhc2VzIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE3MzJcclxuKiBEb24ndCBhbGxvdyBhIHN1YmNhdGVnb3J5IHRvIGJlIGFzc2lnbmVkIHRvIGFub3RoZXIgc3ViY2F0ZWdvcnkgdG8gZW5zdXJlIDEgbGV2ZWwgb2YgbmVzdGluZyBtYXggYnkgQGVsdmlzc2VycmFvIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTczMFxyXG4qIFByZXNlcnZlIHRyYW5zYWN0aW9uIGZpbHRlcnMgYW5kIHRyYW5zYWN0aW9uIGZvY3VzIGFjcm9zcyBwYWdlIHZpc2l0cyBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xNzMzXHJcbiogQWRkL3JlbW92ZSBtZW1iZXJzIGFuZCBpbnZpdGF0aW9ucyBieSBAU2hwaWdmb3JkIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTc0NFxyXG4qIEVuc3VyZSBDb25zaXN0ZW50IENhdGVnb3J5IENvbG9ycyBieSBASkxhbWJlcnRhenpvIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTcyMlxyXG4qIEFsbG93IHVzZXJzIHRvIHVwZGF0ZSB0aGVpciBlbWFpbCBhZGRyZXNzIGJ5IEBTaHBpZ2ZvcmQgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xNzQ1XHJcbiogSW5pdGlhbCBwYXNzIGF0IFBsYWlkIEVVIGJ5IEBTaHBpZ2ZvcmQgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xNTU1XHJcbiogRml4IEVVIHBsYWlkIGZsb3cgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTc2MVxyXG4qIEltcHJvdmUgc3BlZWQgb2YgdHJhbnNhY3Rpb25zIHBhZ2UgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTc1MlxyXG4qIEZpeDogdW5hYmxlIHRvIGFkZCBhY2NvdW50cyB3aXRob3V0IHBsYWluIHNldCB1cCBieSBARjIyMTAgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xNzY5XHJcbiogRml4OiBtYWtlIGRhdGUgZm9ybWF0IHllYXIgY29uc2lzdGVudCBvdmVyYWxsICMxNzEyIGJ5IEBzY29kZXM3MyBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE3MjZcclxuKiBDdXJzb3IgcnVsZXMgYW5kIHByb2plY3QgZGVzaWduIG92ZXJ2aWV3IGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE3ODhcclxuKiBGaXggY3J5cHRvLnJhbmRvbVVVSUQgZXJyb3JzIHdoZW4gYWRkaW5nIGhvbGRpbmdzIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE3OTVcclxuKiBTcGxpdCBmYW1pbHkgYW5kIFBsYWlkIGl0ZW0gc3luY3MgaW50byBtdWx0aXBsZSBqb2JzIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE3OTlcclxuKiBGaXg6IEluY29ycmVjdCBDdXJyZW5jeSBBc3NpZ25tZW50IGZvciBTdG9jayBQcmljZXMgKCMxNjIzKSBieSBAc2FwaHAgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xNzk4XHJcbiogRml4IGJ1ZGdldCBhbGxvY2F0aW9uIGZvcm1zIGZyb20gcmVzZXR0aW5nIGFuZCBjbGVhcmluZyBkYXRhIG9uIHNsb3cgbmV0d29ya3MgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTgwNFxyXG4qIFJlZmFjdG9yIHRyYW5zYWN0aW9uIGVucmljaG1lbnQgdG8gc3VwcG9ydCBiYXRjaCBwcm9jZXNzaW5nIGJ5IEBTaHBpZ2ZvcmQgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xODAzXHJcbiogQWRkIHNjb3BlIHRvIGZpbHRlciB0cmFuc2FjdGlvbnMgZnJvbSBhY3RpdmUgYWNjb3VudHMgYnkgQFNocGlnZm9yZCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE4MTBcclxuKiBmaXg6IFNhdmUgY29tcGxldGVseSBhbGxvY2F0ZWQgYnVkZ2V0IGJ5IEBNMTIzLWRldiBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE4MTFcclxuKiBmZWF0OiBBZGQgaW5zdGl0dXRpb24gZGV0YWlscyB0byBQbGFpZCBpdGVtcyBieSBAU2hwaWdmb3JkIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTgxNlxyXG4qIE11bHRpLWZhY3RvciBhdXRoZW50aWNhdGlvbiBieSBAU2hwaWdmb3JkIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTgxN1xyXG4qIGZpeDogUGxhaWQgd2ViaG9vayB2ZXJpZmljYXRpb24gYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTgyNFxyXG4qIFBsYWlkIEVVIHdlYmhvb2tzIG1pZ3JhdGlvbiB0YXNrIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE4MjVcclxuKiBGaXggQWNjb3VudCBIb2xkaW5nIHZhbGlkYXRpb24gYW5kIHN5bmNocm9uaXphdGlvbiBieSBAU2hwaWdmb3JkIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTgxOFxyXG4qIEZlYXR1cmU6IEFkZCB0aGUgYWJpbGl0eSB0byBcInJldmVydFwiIGEgQ1NWIGltcG9ydCBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xODE0XHJcbiogZmVhdChpbXBvcnQpOiBhZGQgY3VycmVuY3kgYW5kIG51bWJlciBmb3JtYXQgc3VwcG9ydCBmb3IgQ1NWIGltcG9ydHMgYnkgQGRhbmVzdHZlcyBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE4MTlcclxuKiBmaXg6IHN1YmNhdGVnb3JpZXMgYXJlIG5vdCBwcm9wZXJseSBoYW5kbGVkIGZvciBidWRnZXQgYWxsb2NhdGlvbnMgYnkgQHBhdWxla2U2NSBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE4NDRcclxuKiBFbmhhbmNlIHNlY3VyaXR5IGluZm9ybWF0aW9uIHJldHJpZXZhbCBhbmQgaGFuZGxpbmcgYnkgQFNocGlnZm9yZCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE4MjZcclxuKiBmaXg6IExpYWJpbGl0aWVzIGZhdm9yYWJsZSBkaXJlY3Rpb24gaXMgXCJkb3duXCIgYnkgQE0xMjMtZGV2IGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTg0OVxyXG4qIFVwZ3JhZGUgdG8gVGFpbHdpbmQgdjQgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTg1M1xyXG4qIEVuaGFuY2UgUGxhaWQgY29ubmVjdGlvbiBtYW5hZ2VtZW50IHdpdGggcmUtYXV0aGVudGljYXRpb24gYW5kIGVycm9yIGhhbmRsaW5nIGJ5IEBTaHBpZ2ZvcmQgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xODU0XHJcbiogTWF5YmUgRGVzaWduIFN5c3RlbSBVcGRhdGVzIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE4NTZcclxuKiBmaXg6IFRyYW5zZmVycyBzaG91bGQgYWx3YXlzIHRvdGFsIHRvIHplcm8gYnkgQHRvbnl2aW5jZSBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE4NTlcclxuKiBmaXg6IEdob3N0IHN1YmNhdGVnb3JpZXMgd2hlbiBwYXJlbnQgY2F0ZWdvcnkgaXMgZGVsZXRlZCBieSBAdG9ueXZpbmNlIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTg3NFxyXG4qIEZpeCBpbXBvcnQgY29uZmlndXJhdGlvbiBmYWlsdXJlcyBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xODc2XHJcbiogTmV3IERlc2lnbiBTeXN0ZW0gKyBDb2RlYmFzZSBSZWZyZXNoIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE4MjNcclxuXHJcbiMjIE5ldyBDb250cmlidXRvcnNcclxuKiBASkxhbWJlcnRhenpvIG1hZGUgdGhlaXIgZmlyc3QgY29udHJpYnV0aW9uIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTY5OVxyXG4qIEB0YXBhbGlsb3YgbWFkZSB0aGVpciBmaXJzdCBjb250cmlidXRpb24gaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xNjkzXHJcbiogQGVpdGhlIG1hZGUgdGhlaXIgZmlyc3QgY29udHJpYnV0aW9uIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTY1OFxyXG4qIEBlbHZpc3NlcnJhbyBtYWRlIHRoZWlyIGZpcnN0IGNvbnRyaWJ1dGlvbiBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE3MzBcclxuKiBARjIyMTAgbWFkZSB0aGVpciBmaXJzdCBjb250cmlidXRpb24gaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xNzY5XHJcbiogQHNjb2RlczczIG1hZGUgdGhlaXIgZmlyc3QgY29udHJpYnV0aW9uIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTcyNlxyXG4qIEBzYXBocCBtYWRlIHRoZWlyIGZpcnN0IGNvbnRyaWJ1dGlvbiBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE3OThcclxuKiBATTEyMy1kZXYgbWFkZSB0aGVpciBmaXJzdCBjb250cmlidXRpb24gaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xODExXHJcbiogQGRhbmVzdHZlcyBtYWRlIHRoZWlyIGZpcnN0IGNvbnRyaWJ1dGlvbiBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE4MTlcclxuKiBAcGF1bGVrZTY1IG1hZGUgdGhlaXIgZmlyc3QgY29udHJpYnV0aW9uIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTg0NFxyXG5cclxuKipGdWxsIENoYW5nZWxvZyoqOiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9jb21wYXJlL3YwLjMuMC4uLnYwLjQuMCIsInJlYWN0aW9ucyI6eyJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMjAxNzQ1MDg1L3JlYWN0aW9ucyIsInRvdGFsX2NvdW50IjoyOCwiKzEiOjUsIi0xIjowLCJsYXVnaCI6MCwiaG9vcmF5Ijo3LCJjb25mdXNlZCI6MCwiaGVhcnQiOjExLCJyb2NrZXQiOjUsImV5ZXMiOjB9LCJtZW50aW9uc19jb3VudCI6MTZ9LHsidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE5NTQxNTE3NyIsImFzc2V0c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTk1NDE1MTc3L2Fzc2V0cyIsInVwbG9hZF91cmwiOiJodHRwczovL3VwbG9hZHMuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE5NTQxNTE3Ny9hc3NldHN7P25hbWUsbGFiZWx9IiwiaHRtbF91cmwiOiJodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy90YWcvdjAuMy4wIiwiaWQiOjE5NTQxNTE3NywiYXV0aG9yIjp7ImxvZ2luIjoiemFjaGdvbGwiLCJpZCI6MTY2NzYxNTcsIm5vZGVfaWQiOiJNRFE2VlhObGNqRTJOamMyTVRVMyIsImF2YXRhcl91cmwiOiJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTY2NzYxNTc/dj00IiwiZ3JhdmF0YXJfaWQiOiIiLCJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsIiwiaHRtbF91cmwiOiJodHRwczovL2dpdGh1Yi5jb20vemFjaGdvbGwiLCJmb2xsb3dlcnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9mb2xsb3dlcnMiLCJmb2xsb3dpbmdfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9mb2xsb3dpbmd7L290aGVyX3VzZXJ9IiwiZ2lzdHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9naXN0c3svZ2lzdF9pZH0iLCJzdGFycmVkX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvc3RhcnJlZHsvb3duZXJ9ey9yZXBvfSIsInN1YnNjcmlwdGlvbnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9zdWJzY3JpcHRpb25zIiwib3JnYW5pemF0aW9uc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL29yZ3MiLCJyZXBvc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3JlcG9zIiwiZXZlbnRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZXZlbnRzey9wcml2YWN5fSIsInJlY2VpdmVkX2V2ZW50c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3JlY2VpdmVkX2V2ZW50cyIsInR5cGUiOiJVc2VyIiwidXNlcl92aWV3X3R5cGUiOiJwdWJsaWMiLCJzaXRlX2FkbWluIjpmYWxzZX0sIm5vZGVfaWQiOiJSRV9rd0RPS190eEhNNExwY3lKIiwidGFnX25hbWUiOiJ2MC4zLjAiLCJ0YXJnZXRfY29tbWl0aXNoIjoibWFpbiIsIm5hbWUiOiJ2MC4zLjAiLCJkcmFmdCI6ZmFsc2UsInByZXJlbGVhc2UiOmZhbHNlLCJjcmVhdGVkX2F0IjoiMjAyNS0wMS0xN1QyMjowMToyNloiLCJwdWJsaXNoZWRfYXQiOiIyMDI1LTAxLTE3VDIyOjA1OjE5WiIsImFzc2V0cyI6W10sInRhcmJhbGxfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3RhcmJhbGwvdjAuMy4wIiwiemlwYmFsbF91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvemlwYmFsbC92MC4zLjAiLCJib2R5IjoiIyMgQnVkZ2V0aW5nIGlzIGhlcmUhXHJcblxyXG5BIGxvbmcgYXdhaXRlZCBmZWF0dXJlLCBNYXliZSBub3cgc3VwcG9ydHMgYnVkZ2V0aW5nISAgV2UgYmVsaWV2ZSBidWRnZXRpbmcgc2hvdWxkIGJlIGVhc3kgYW5kIHNpbXBsZS4gIENhdGVnb3JpemUgeW91ciB0cmFuc2FjdGlvbnMsIG1hcmsgdHJhbnNmZXJzLCBvbmUtdGltZSBleHBlbnNlcywgYW5kIGdldCBhIGNsZWFyIGJyZWFrZG93biBvZiB3aGVyZSB5b3VyIG1vbmV5IGlzIGdvaW5nIGVhY2ggbW9udGguXHJcblxyXG5odHRwczovL2dpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvNGRjZjNmNjYtN2IyNi00MmU3LTljNmItNDhkZjdlMTlhNzk4XHJcblxyXG4jIyBXaGF0J3MgQ2hhbmdlZFxyXG4qIEFkZCBhY2NvdW50IGRhdGEgZW5yaWNobWVudCBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xNTMyXHJcbiogSGFuZGxlIG5pbCBuYW1lIGZvciBlbnRyaWVzIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE1NTBcclxuKiBGaXggZGF0ZSBmb3JtYXQgdmFsaWRhdGlvbiBlcnJvciBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xNTUxXHJcbiogTWFrZSB0cmFuc2FjdGlvbiBlbnJpY2htZW50IG9wdC1pbiBmb3IgYWxsIHVzZXJzIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE1NTJcclxuKiBQcmVzZXJ2ZSBvcmlnaW5hbCB0cmFuc2FjdGlvbiBuYW1lcyB3aGVuIGVucmljaGluZyBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xNTU2XHJcbiogUHJlc2VydmUgcGFnaW5hdGlvbiBvbiBlbnRyeSB1cGRhdGVzIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE1NjNcclxuKiBOZXN0ZWQgQ2F0ZWdvcmllcyBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xNTYxXHJcbiogU2F2ZSBlcnJvciBiYWNrdHJhY2UgZm9yIHN5bmMgZXJyb3JzIGZvciBiZXR0ZXIgZGVidWdnaW5nIGJ5IEB0b255dmluY2UgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xNTc4XHJcbiogZml4OiBCdWcgfCBjcmVhdGluZyBkdXBsaWNhdGUgY2F0ZWdvcnkgbGVhZHMgdG8gY3Jhc2ggc2NyZWVuIGJ5IEB0b255dmluY2UgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xNTc3XHJcbiogRml4IHVua25vd24gYXR0cmlidXRlICdwYXJlbnRfY2F0ZWdvcnknIGZvciBDYXRlZ29yeSBpbiBkZW1vIGdlbmVyYXRvciBieSBAYWthYmlydSBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE1NzVcclxuKiBGaXg6IGJyZWFraW5nIGNoYW5nZSBhZnRlciBidW1waW5nIGhvdHdpcmUtbGl2ZXJlbG9hZCB0byAyLjAuMCBieSBAdG9ueXZpbmNlIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTU4OVxyXG4qIFRyYW5zZmVyIGFuZCBQYXltZW50IGF1dG8tbWF0Y2hpbmcsIG1vZGVsIGFuZCBVSSBpbXByb3ZlbWVudHMgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTU4NVxyXG4qIEJ1ZGdldGluZyBWMSBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xNjA5XHJcbiogRml4IHRyYW5zZmVyIG1hdGNoaW5nIGxvZ2ljIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE2MjVcclxuKiBGaXggYnVkZ2V0IG1vbmV5IGZvcm1hdHRpbmcgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTYyNlxyXG4qIFVwZGF0ZSBzbmFwc2hvdF9hY2NvdW50X3RyYW5zYWN0aW9ucyB0byBvbmx5IGdpdmUgdHJhbnNhY3Rpb25zIGJ5IGZpbHRlcmluZyBvbiBlbnRyeWFibGVfdHlwZSBieSBAUmVwc2F5IGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTYyOVxyXG4qIEZJWDogY29ycmVjdCBkaXNwbGF5IG9mIHBlcmNlbnRhZ2VzIGJ5IEBNclRvYiBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE2MjJcclxuXHJcbiMjIE5ldyBDb250cmlidXRvcnNcclxuKiBAYWthYmlydSBtYWRlIHRoZWlyIGZpcnN0IGNvbnRyaWJ1dGlvbiBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE1NzVcclxuKiBAUmVwc2F5IG1hZGUgdGhlaXIgZmlyc3QgY29udHJpYnV0aW9uIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTYyOVxyXG4qIEBNclRvYiBtYWRlIHRoZWlyIGZpcnN0IGNvbnRyaWJ1dGlvbiBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE2MjJcclxuXHJcbioqRnVsbCBDaGFuZ2Vsb2cqKjogaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvY29tcGFyZS92MC4yLjAuLi52MC4zLjAiLCJyZWFjdGlvbnMiOnsidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE5NTQxNTE3Ny9yZWFjdGlvbnMiLCJ0b3RhbF9jb3VudCI6NzMsIisxIjoyMywiLTEiOjAsImxhdWdoIjowLCJob29yYXkiOjIsImNvbmZ1c2VkIjowLCJoZWFydCI6MzcsInJvY2tldCI6MTEsImV5ZXMiOjB9LCJtZW50aW9uc19jb3VudCI6NX0seyJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTkwNjk1NDQyIiwiYXNzZXRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy8xOTA2OTU0NDIvYXNzZXRzIiwidXBsb2FkX3VybCI6Imh0dHBzOi8vdXBsb2Fkcy5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTkwNjk1NDQyL2Fzc2V0c3s/bmFtZSxsYWJlbH0iLCJodG1sX3VybCI6Imh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzL3RhZy92MC4yLjAiLCJpZCI6MTkwNjk1NDQyLCJhdXRob3IiOnsibG9naW4iOiJ6YWNoZ29sbCIsImlkIjoxNjY3NjE1Nywibm9kZV9pZCI6Ik1EUTZWWE5sY2pFMk5qYzJNVFUzIiwiYXZhdGFyX3VybCI6Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNjY3NjE1Nz92PTQiLCJncmF2YXRhcl9pZCI6IiIsInVybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwiLCJodG1sX3VybCI6Imh0dHBzOi8vZ2l0aHViLmNvbS96YWNoZ29sbCIsImZvbGxvd2Vyc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL2ZvbGxvd2VycyIsImZvbGxvd2luZ191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL2ZvbGxvd2luZ3svb3RoZXJfdXNlcn0iLCJnaXN0c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL2dpc3Rzey9naXN0X2lkfSIsInN0YXJyZWRfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9zdGFycmVkey9vd25lcn17L3JlcG99Iiwic3Vic2NyaXB0aW9uc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3N1YnNjcmlwdGlvbnMiLCJvcmdhbml6YXRpb25zX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvb3JncyIsInJlcG9zX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvcmVwb3MiLCJldmVudHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9ldmVudHN7L3ByaXZhY3l9IiwicmVjZWl2ZWRfZXZlbnRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvcmVjZWl2ZWRfZXZlbnRzIiwidHlwZSI6IlVzZXIiLCJ1c2VyX3ZpZXdfdHlwZSI6InB1YmxpYyIsInNpdGVfYWRtaW4iOmZhbHNlfSwibm9kZV9pZCI6IlJFX2t3RE9LX3R4SE00TFhjZ1MiLCJ0YWdfbmFtZSI6InYwLjIuMCIsInRhcmdldF9jb21taXRpc2giOiJtYWluIiwibmFtZSI6InYwLjIuMCIsImRyYWZ0IjpmYWxzZSwicHJlcmVsZWFzZSI6ZmFsc2UsImNyZWF0ZWRfYXQiOiIyMDI0LTEyLTEzVDE3OjE2OjIxWiIsInB1Ymxpc2hlZF9hdCI6IjIwMjQtMTItMTNUMTg6MTk6MjdaIiwiYXNzZXRzIjpbXSwidGFyYmFsbF91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvdGFyYmFsbC92MC4yLjAiLCJ6aXBiYWxsX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS96aXBiYWxsL3YwLjIuMCIsImJvZHkiOiIjIyBQbGFpZCBJbnRlZ3JhdGlvbiArIE11bHRpLWN1cnJlbmN5IEludmVzdG1lbnQgUG9ydGZvbGlvIFN1cHBvcnRcclxuXHJcbldlIGhhdmUgY29tcGxldGVkIHRoZSBmaXJzdCBwYXNzIGF0IG91ciBmdWxseSBhdXRvbWF0ZWQgYmFuayBzeW5jaW5nIHdpdGggUGxhaWQgb24gb3VyIF9ob3N0ZWQgdmVyc2lvbl8gb2YgdGhlIGFwcCFcclxuXHJcbkF1dG9tYXRlZCBiYW5rIHN5bmNpbmcgaXMgYSBodWdlIG1pbGVzdG9uZSBmb3IgdGhlIGFwcCBhbmQgaW5jbHVkZXMgbWFueSBVSSBpbXByb3ZlbWVudHMsIGFjY3VyYWN5IGltcHJvdmVtZW50cywgYW5kIGJ1ZyBmaXhlczpcclxuXHJcbi0gRWRpdGluZyB0cmFuc2FjdGlvbnMgaXMgbm93IG11Y2ggc21vb3RoZXJcclxuLSBBY2NvdW50IGhpc3RvcnkgY2FuIGJlIGNhbGN1bGF0ZWQgY2hyb25vbG9naWNhbGx5IGFuZCByZXZlcnNlLWNocm9ub2xvZ2ljYWxseSAocmVxdWlyZWQgZm9yIFBsYWlkIGFjY291bnRzKVxyXG4tIE11bHRpLWN1cnJlbmN5IGludmVzdG1lbnQgYWNjb3VudHMgYXJlIG5vdyBhdmFpbGFibGVcclxuLSBJbnZlc3RtZW50IGFjY291bnRzIG5vdyBwcm9wZXJseSBjYWxjdWxhdGUgXCJicm9rZXJhZ2UgY2FzaFwiIHZzLiBcImhvbGRpbmdzIHZhbHVlXCIgYW5kIGJyZWFrIHRoaXMgb3V0IGNsZWFybHkgaW4gdGhlIHZpZXdcclxuLSBJbnZlc3RtZW50IGFjY291bnRzIGNhbGN1bGF0ZSBjb3N0IGJhc2lzIG1vcmUgYWNjdXJhdGVseVxyXG5cclxuIVtDbGVhblNob3QgMjAyNC0xMi0xMyBhdCAxMiAzMSAwM10oaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzLzFmZGJhYjc5LTdiYzUtNDYzMS04MGI0LWE3MDhkZjE3ODNmZClcclxuXHJcbiMjIyBDYW4gSSBzZWxmLWhvc3QgUGxhaWQ/XHJcblxyXG5BcyBhbiBvcGVuLXNvdXJjZSBwcm9qZWN0LCBzZWxmLWhvc3RlcnMgYXJlIG1vcmUgdGhhbiB3ZWxjb21lIHRvIGNvbmZpZ3VyZSAoYW5kIHBheSBmb3IpIHRoZWlyIG93biBQbGFpZCBhY2NvdW50cy4gIFlvdSBjYW4gc2VlIHRoZSBgLmVudi5leGFtcGxlYCBmaWxlIGZvciB0aGUgcmVxdWlyZWQgYXBpIGtleXMgdGhhdCBuZWVkIHRvIGJlIHByb3ZpZGVkIHRvIHRoZSBhcHAuXHJcblxyXG5UaGF0IHNhaWQsIGR1ZSB0byB0aGUgY29tcGxleGl0eSBhcm91bmQgT0F1dGgsIFBsYWlkJ3MgcHJpY2luZyBzdHJ1Y3R1cmUsIGFuZCBjb3N0cyBhc3NvY2lhdGVkIHdpdGggYSBwZXJzb25hbCBQbGFpZCBzdWJzY3JpcHRpb24sIHdlIHdpbGwgbm90IGJlIG9mZmljaWFsbHkgc3VwcG9ydGluZyB0aGlzIHNldHVwLiAgVGhlIGhvc3RlZCB2ZXJzaW9uIG9mIG91ciBhcHAgaGFzIGZ1bGwgUGxhaWQgc3VwcG9ydCBhbmQgaXMgb3VyIHJlY29tbWVuZGVkIHdheSB0byBnZXQgYWNjZXNzIHRvIGF1dG9tYXRlZCBiYW5rIHN5bmNpbmcgKG1vcmUgaW52aXRlcyBjb21pbmcgc29vbiEpLlxyXG5cclxuIyMgV2hhdCdzIENoYW5nZWRcclxuXHJcbiogRml4IHJlZ2lzdHJhdGlvbiBmYWlscyBzaWxlbnRseSB3aGVuIHRoZXJlIGFyZSBlcnJvcnMgYnkgQHRvbnl2aW5jZSBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE0NTVcclxuKiBBZGRzIGEgY29tbW9uIERFIGRhdGUgZm9ybWF0IGJ5IEBzYmVocmVuZHMgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xNDQ1XHJcbiogQmFzaWMgUGxhaWQgSW50ZWdyYXRpb24gYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTQzM1xyXG4qIE1ha2UgZW5jcnlwdGlvbiBjb25maWcgb3B0aW9uYWwgZm9yIHNlbGYgaG9zdGluZyB1c2VycyBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xNDc2XHJcbiogQWxsb3cgY3VzdG9tIGNvbHVtbiBzZXBhcmF0b3IgZm9yIENTViBwYXJzaW5nIGluIHVwbG9hZHMgY29udHJvbGxlciBieSBAYWNmbGludCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE0NzBcclxuKiBGaXggdHJhbnNmZXJzIGFuZCBmb3JtIGN1cnJlbmNpZXMgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTQ3N1xyXG4qIERvbid0IHJlZnJlc2ggcGFnZSB3aGVuIHRyYW5zYWN0aW9uIGRldGFpbHMgYXJlIGVkaXRlZCBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xNDc5XHJcbiogQWRkIHBvc3Qtc3luYyBVSSBzdHJlYW0gdXBkYXRlcyBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xNDgyXHJcbiogQ2FsY3VsYXRlcyB0cmVuZCBiYXNlZCBvbiBwcmV2aW91cyB0cmFuc2FjdGlvbidzIGJhbGFuY2Ugb24gdGhlIHNhbWUgZGF0ZSBieSBAbmljb2dhbGRhbWV6IGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTQ4M1xyXG4qIFJlcGxhY2VkIE5hdGl2ZSBTY3JvbGxiYXJzIHdpdGggVGFpbHdpbmQgU2Nyb2xsYmFycyBvbiBXaW5kb3dzIGJ5IEBqZXN0aW5qb3NoaSBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE0OTNcclxuKiBGaXggYnVnOiBMb2FuICUgZG9lc24ndCBhbGxvdyBleGFjdCByYXRlIGJ5IEBhcnNlbnN0b3JtIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTQ5MlxyXG4qIEZpeCBBY2NvdW50IERpc2FibGluZyBVSSBieSBAYXJzZW5zdG9ybSBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE0OTFcclxuKiBGZWF0dXJlOiBBZGQgc3VwcG9ydCBmb3IgY3VzdG9taXplZCBzeW50aCBVUkwgZnJvbSBlbnYgdmFyaWFibGUgYnkgQEV2bG9zIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTQ5MFxyXG4qIFN5bnRoIGVycm9yIGhhbmRsaW5nIGJ5IEBTaHBpZ2ZvcmQgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xNTAyXHJcbiogVXBkYXRlZCB1c2FnZSBjaGVjayB0aHJlc2hvbGQgdG8gMTAwcGMgaW5zdGVhZCBvZiAxIGJ5IEBuaWtoaWxiYWR5YWwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xNTA0XHJcbiogSW1wcm92ZSBhY2NvdW50IHRyYW5zYWN0aW9uLCB0cmFkZSwgYW5kIHZhbHVhdGlvbiBlZGl0aW5nIGFuZCBzeW5jIGV4cGVyaWVuY2UgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTUwNlxyXG4qIEhhbmRsZSBpbnZhbGlkIEFQSSBrZXkgYnkgQG5pa2hpbGJhZHlhbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE1MTVcclxuKiBQbGFpZCBwb3J0Zm9saW8gc3luYyBhbGdvcml0aG0gYW5kIGNhbGN1bGF0aW9uIGltcHJvdmVtZW50cyBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xNTI2XHJcbiogUGxhaWQgc3luYyB0ZXN0cyBhbmQgbXVsdGktY3VycmVuY3kgaW52ZXN0bWVudCBzdXBwb3J0IGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE1MzFcclxuXHJcbiMjIE5ldyBDb250cmlidXRvcnNcclxuXHJcbiogQHNiZWhyZW5kcyBtYWRlIHRoZWlyIGZpcnN0IGNvbnRyaWJ1dGlvbiBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE0NDVcclxuKiBAYWNmbGludCBtYWRlIHRoZWlyIGZpcnN0IGNvbnRyaWJ1dGlvbiBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE0NzBcclxuKiBARXZsb3MgbWFkZSB0aGVpciBmaXJzdCBjb250cmlidXRpb24gaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xNDkwXHJcbiogQG5pa2hpbGJhZHlhbCBtYWRlIHRoZWlyIGZpcnN0IGNvbnRyaWJ1dGlvbiBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE1MDRcclxuXHJcbioqRnVsbCBDaGFuZ2Vsb2cqKjogaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvY29tcGFyZS92MC4xLjAuLi52MC4yLjAiLCJyZWFjdGlvbnMiOnsidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE5MDY5NTQ0Mi9yZWFjdGlvbnMiLCJ0b3RhbF9jb3VudCI6MzQsIisxIjoxNCwiLTEiOjAsImxhdWdoIjowLCJob29yYXkiOjAsImNvbmZ1c2VkIjowLCJoZWFydCI6NCwicm9ja2V0IjoxNiwiZXllcyI6MH0sIm1lbnRpb25zX2NvdW50IjoxMH0seyJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTg0NDM5NDc4IiwiYXNzZXRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy8xODQ0Mzk0NzgvYXNzZXRzIiwidXBsb2FkX3VybCI6Imh0dHBzOi8vdXBsb2Fkcy5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTg0NDM5NDc4L2Fzc2V0c3s/bmFtZSxsYWJlbH0iLCJodG1sX3VybCI6Imh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzL3RhZy92MC4yLjAtYWxwaGEuMiIsImlkIjoxODQ0Mzk0NzgsImF1dGhvciI6eyJsb2dpbiI6InphY2hnb2xsIiwiaWQiOjE2Njc2MTU3LCJub2RlX2lkIjoiTURRNlZYTmxjakUyTmpjMk1UVTMiLCJhdmF0YXJfdXJsIjoiaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE2Njc2MTU3P3Y9NCIsImdyYXZhdGFyX2lkIjoiIiwidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbCIsImh0bWxfdXJsIjoiaHR0cHM6Ly9naXRodWIuY29tL3phY2hnb2xsIiwiZm9sbG93ZXJzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZm9sbG93ZXJzIiwiZm9sbG93aW5nX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZm9sbG93aW5ney9vdGhlcl91c2VyfSIsImdpc3RzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZ2lzdHN7L2dpc3RfaWR9Iiwic3RhcnJlZF91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3N0YXJyZWR7L293bmVyfXsvcmVwb30iLCJzdWJzY3JpcHRpb25zX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvc3Vic2NyaXB0aW9ucyIsIm9yZ2FuaXphdGlvbnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9vcmdzIiwicmVwb3NfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9yZXBvcyIsImV2ZW50c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL2V2ZW50c3svcHJpdmFjeX0iLCJyZWNlaXZlZF9ldmVudHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9yZWNlaXZlZF9ldmVudHMiLCJ0eXBlIjoiVXNlciIsInVzZXJfdmlld190eXBlIjoicHVibGljIiwic2l0ZV9hZG1pbiI6ZmFsc2V9LCJub2RlX2lkIjoiUkVfa3dET0tfdHhITTRLX2xLMiIsInRhZ19uYW1lIjoidjAuMi4wLWFscGhhLjIiLCJ0YXJnZXRfY29tbWl0aXNoIjoibWFpbiIsIm5hbWUiOiJ2MC4yLjAtYWxwaGEuMiIsImRyYWZ0IjpmYWxzZSwicHJlcmVsZWFzZSI6dHJ1ZSwiY3JlYXRlZF9hdCI6IjIwMjQtMTEtMDhUMTk6NTU6NTZaIiwicHVibGlzaGVkX2F0IjoiMjAyNC0xMS0wOFQyMDowMzowMloiLCJhc3NldHMiOltdLCJ0YXJiYWxsX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS90YXJiYWxsL3YwLjIuMC1hbHBoYS4yIiwiemlwYmFsbF91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvemlwYmFsbC92MC4yLjAtYWxwaGEuMiIsImJvZHkiOiIjIyBBY3Rpdml0eSBWaWV3IFxyXG5cclxuQWxvbmdzaWRlIHNldmVyYWwgYnVnIGZpeGVzLCB0aGlzIHByZS1yZWxlYXNlIGNvbWVzIHdpdGggYSBicmFuZCBuZXcgXCJBY3Rpdml0eSBWaWV3XCIgYmFzZWQgb24gdG9ucyBvZiB1c2VyIGZlZWRiYWNrLiAgVGhpcyBuZXcgYWN0aXZpdHkgdmlldyBhbGxvd3MgeW91IHRvIHNlZSB0aGUgY2hyb25vbG9naWNhbCB1cGRhdGVzIG9mIGVhY2ggYWNjb3VudCBhbGwgaW4gb25lIHBsYWNlLiAgSW4gYWRkaXRpb24sIGl0IHNob3VsZCBob3cgZWFjaCB0cmFuc2FjdGlvbiBhbmQgYmFsYW5jZSB1cGRhdGUgYWZmZWN0cyB0aGUgb3ZlcmFsbCBoaXN0b3JpY2FsIGJhbGFuY2Ugb24gdGhlIGFjY291bnQuICBZb3UgY2FuIHNlZSBpdCBpbiBhY3Rpb24gYmVsb3c6XHJcblxyXG5odHRwczovL2dpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvMmVmN2U2OTEtYTJmZS00ZGM2LWI4YmItMDg5NmI5NjM0MjU4XHJcblxyXG4jIyBXaGF0J3MgQ2hhbmdlZFxyXG5cclxuKiBSZW1vdmUgZGVwZW5kZW5jeSBvbiBzdG9jayBleGNoYW5nZSB0YWJsZSBieSBAU2hwaWdmb3JkIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTM2OFxyXG4qIGZpeCBidWxrIGFjdGlvbiBiYXIgcG9zaXRpb25pbmcgYnkgQGdhcmlhc2YgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMzcwXHJcbiogU3RvY2sgZmlsdGVyIGJ5IEBTaHBpZ2ZvcmQgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMzc2XHJcbiogUmVtb3ZlIG1pc3NpbmcgcHJpY2VzIGlzc3VlIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEzOTBcclxuKiBGaXJzdCBwYXNzIGF0IHNlY3VyaXR5IHByaWNlIHJlZmVyZW5jZSBieSBAU2hwaWdmb3JkIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTM4OFxyXG4qIEluaXRpYWwgcGFzcyBhdCBTeW50aC1iYXNlZCB0aWNrZXIgc2VsZWN0aW9uIGJ5IEBTaHBpZ2ZvcmQgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMzkyXHJcbiogR3JvdW5kd29yayBmb3Igc2VjdXJpdHkgaW5mbyBieSBAU2hwaWdmb3JkIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTM5NlxyXG4qIEFkZHMgY29uZGl0aW9uIHRvIHNraXAgbGluayB0byB0cmFuc2FjdGlvbiBmb3JtIGlmIGl0J3Mgbm90IGVkaXRhYmxlIGJ5IEBuaWNvZ2FsZGFtZXogaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMzk0XHJcbiogRG8gbm90IGluY2x1ZGUgaW5jb21lIHRyYW5zYWN0aW9ucyBpbiBsaWFiaWxpdHkgYWNjb3VudHMgZm9yIHNhdmluZ3MgcmF0ZSBieSBAdG9ueXZpbmNlIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTM4NVxyXG4qIEF1dG8gbmFtaW5nIG9mIFRyYW5zZmVyIFRyYW5zYWN0aW9uIGJ5IEBIYXJyeS1rcCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEzOTNcclxuKiBGYW1pbHkgaW52aXRlcyBieSBAU2hwaWdmb3JkIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTM5N1xyXG4qIEVuIHRyYW5zbGF0aW9uIGZpeCBieSBAYWxla3NleXAgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xNDAxXHJcbiogQWNjb3VudCBBY3Rpdml0eSBWaWV3ICsgQWNjb3VudCBGb3JtcyBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xNDA2XHJcbiogRml4IGFjY291bnQgbmFtZXMgYXJlIG5vdCB0cnVuY2F0ZWQgcHJvcGVybHkgYnkgQHRvbnl2aW5jZSBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE0MzFcclxuKiBFeGNsdWRlIGluYWN0aXZlIGFjY291bnRzIGZyb20gbmV0LXdvcnRoIGNhbGN1bGF0aW9uIGFuZCBmcm9tIHNpZGViYXIgYnkgQHRvbnl2aW5jZSBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE0MzJcclxuKiBGaXggdGltZWZyYW1lIGRyb3Bkb3duIG5leHQgdG8gUG9ydGZvbGlvIGJ5IEB0b255dmluY2UgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xNDM0XHJcbiogU2tpcCBhY2NvdW50IHZhbHVhdGlvbiBvbiBlbnRyeSBiYWxhbmNlX2FmdGVyX2VudHJ5IGJ5IEBicnVuby1jb3N0YW56byBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE0MzVcclxuKiBGaXggZHVwbGljYXRlIGludml0ZXMgYnkgQHRvbnl2aW5jZSBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzE0MzdcclxuXHJcbiMjIE5ldyBDb250cmlidXRvcnNcclxuKiBAYWxla3NleXAgbWFkZSB0aGVpciBmaXJzdCBjb250cmlidXRpb24gaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xNDAxXHJcbiogQDN6Y3VyZGlhIG1hZGUgdGhlaXIgZmlyc3QgY29udHJpYnV0aW9uIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTQwMlxyXG5cclxuKipGdWxsIENoYW5nZWxvZyoqOiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9jb21wYXJlL3YwLjIuMC1hbHBoYS4xLi4udjAuMi4wLWFscGhhLjIiLCJyZWFjdGlvbnMiOnsidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE4NDQzOTQ3OC9yZWFjdGlvbnMiLCJ0b3RhbF9jb3VudCI6MjMsIisxIjo1LCItMSI6MCwibGF1Z2giOjAsImhvb3JheSI6MCwiY29uZnVzZWQiOjAsImhlYXJ0IjowLCJyb2NrZXQiOjE4LCJleWVzIjowfSwibWVudGlvbnNfY291bnQiOjl9LHsidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE4MTk0NTc0NCIsImFzc2V0c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTgxOTQ1NzQ0L2Fzc2V0cyIsInVwbG9hZF91cmwiOiJodHRwczovL3VwbG9hZHMuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE4MTk0NTc0NC9hc3NldHN7P25hbWUsbGFiZWx9IiwiaHRtbF91cmwiOiJodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy90YWcvdjAuMi4wLWFscGhhLjEiLCJpZCI6MTgxOTQ1NzQ0LCJhdXRob3IiOnsibG9naW4iOiJ6YWNoZ29sbCIsImlkIjoxNjY3NjE1Nywibm9kZV9pZCI6Ik1EUTZWWE5sY2pFMk5qYzJNVFUzIiwiYXZhdGFyX3VybCI6Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNjY3NjE1Nz92PTQiLCJncmF2YXRhcl9pZCI6IiIsInVybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwiLCJodG1sX3VybCI6Imh0dHBzOi8vZ2l0aHViLmNvbS96YWNoZ29sbCIsImZvbGxvd2Vyc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL2ZvbGxvd2VycyIsImZvbGxvd2luZ191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL2ZvbGxvd2luZ3svb3RoZXJfdXNlcn0iLCJnaXN0c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL2dpc3Rzey9naXN0X2lkfSIsInN0YXJyZWRfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9zdGFycmVkey9vd25lcn17L3JlcG99Iiwic3Vic2NyaXB0aW9uc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3N1YnNjcmlwdGlvbnMiLCJvcmdhbml6YXRpb25zX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvb3JncyIsInJlcG9zX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvcmVwb3MiLCJldmVudHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9ldmVudHN7L3ByaXZhY3l9IiwicmVjZWl2ZWRfZXZlbnRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvcmVjZWl2ZWRfZXZlbnRzIiwidHlwZSI6IlVzZXIiLCJ1c2VyX3ZpZXdfdHlwZSI6InB1YmxpYyIsInNpdGVfYWRtaW4iOmZhbHNlfSwibm9kZV9pZCI6IlJFX2t3RE9LX3R4SE00SzJFV1EiLCJ0YWdfbmFtZSI6InYwLjIuMC1hbHBoYS4xIiwidGFyZ2V0X2NvbW1pdGlzaCI6Im1haW4iLCJuYW1lIjoidjAuMi4wLWFscGhhLjEiLCJkcmFmdCI6ZmFsc2UsInByZXJlbGVhc2UiOnRydWUsImNyZWF0ZWRfYXQiOiIyMDI0LTEwLTI1VDEzOjM3OjUwWiIsInB1Ymxpc2hlZF9hdCI6IjIwMjQtMTAtMjVUMTM6NTA6NTJaIiwiYXNzZXRzIjpbXSwidGFyYmFsbF91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvdGFyYmFsbC92MC4yLjAtYWxwaGEuMSIsInppcGJhbGxfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3ppcGJhbGwvdjAuMi4wLWFscGhhLjEiLCJib2R5IjoiIyMgSW1wcm92ZWQgQWNjb3VudCBGbG93cyArIE9uYm9hcmRpbmdcclxuXHJcbldpdGggdGhpcyByZWxlYXNlLCB3ZSBraWNrIG9mZiB3b3JrIHRvd2FyZHMgYHYwLjIuMGAsIHdoaWNoIHdpbGwgYWRkIGEgYmFzaWMgYmFuayBwcm92aWRlciBpbnRlZ3JhdGlvbiAoUGxhaWQpIVxyXG5cclxuSW4gdGhpcyByZWxlYXNlLCB3ZSd2ZSBhZGRlZCBvbmJvYXJkaW5nIHRvIHRoZSBhcHAgc28gdGhhdCB1c2VycyBjYW4gc2VsZWN0IGFsbCBvZiB0aGVpciBwcmVmZXJlbmNlcyBhbG9uZyB3aXRoIG11Y2ggc2ltcGxlciBhbmQgaW50dWl0aXZlIGFjY291bnQgYWRkaXRpb24gZmxvd3MuXHJcblxyXG5IZXJlJ3MgYSBxdWljayBkZW1vIG9mIGhvdyBlYXN5IGl0IGlzIHRvIGdldCBzdGFydGVkIHdpdGggTWF5YmUhXHJcblxyXG5odHRwczovL2dpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvZGZkZDg4Y2ItMjNmNC00MGI4LWI0ODctZDk3YWRkOTYxN2ZhXHJcblxyXG4jIyBXaGF0J3MgQ2hhbmdlZFxyXG4qIEFkZCBwZXJpb2QgdG8gdmFsdWUgZGVsZXRlIG1vZGFsIGJ5IEBhaGF0enoxMSBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEyOTdcclxuKiBBZGQgQmlvbWVKUyBmb3IgTGludGluZyBhbmQgRm9ybWF0dGluZyBKYXZhU2NyaXB0IHJlbGF0ZXMgdG8gIzEyOTUgYnkgQG94ZGV2MDMgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMjk5XHJcbiogQWNjb3VudHMgaW4gc2lkZWJhciBzaG91bGQgYmUgb3JkZXJlZCB0aGUgc2FtZSBhcyBpbiB0aGUgYWNjb3VudHMgc3VtbWFyeSBwYWdlIGJ5IEB0b255dmluY2UgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMzE4XHJcbiogYWRkIGRhc2hib2FyZCBhY2NvdW50IHBpbGwgdG9vbHRpcHMgYnkgQGdhcmlhc2YgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMzE1XHJcbiogUmVkaXJlY3QgdXBsb2FkIHN0ZXAgYnkgQGVuZGVyYWhtZXR5dXJ0IGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTMyM1xyXG4qIEltcGVyc29uYXRpb24gYnkgQFNocGlnZm9yZCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEzMjVcclxuKiBSZXdvcmsgYWNjb3VudCB2aWV3cyBhbmQgYWRkaXRpb24gZmxvdyBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMzI0XHJcbiogQmFzaWMgYWNjb3VudCBvbmJvYXJkaW5nIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEzMjhcclxuKiBGaXhlcyBpc3N1ZSB3aXRoIG1hcHBpbmcgdmFsdWVzIGR1cmluZyB0aGUgdHJhbnNhY3Rpb25zIGltcG9ydCBieSBAbmljb2dhbGRhbWV6IGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTMyN1xyXG4qIFN0b2NrIEV4Y2hhbmdlcyB3aXRoIHNlZWQgYnkgQFNocGlnZm9yZCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEzNTFcclxuKiBVc2VyIE9uYm9hcmRpbmcgKyBCdWcgRml4ZXMgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTM1MlxyXG4qIEJldGEgVGVzdGluZyBSb3VuZCAzIEJ1ZyBGaXhlcyBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMzU3XHJcbiogQWRkIGdvb2Qgam9iIGRhc2hib2FyZCB3aXRoIGF1dGggYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTM2NFxyXG4qIFN0b2NrIGltcG9ydHMgYnkgQFNocGlnZm9yZCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEzNjNcclxuKiBGZWF0dXJlIHwgRmlsdGVyIG9uIHVuY2F0ZWdvcml6ZWQgdHJhbnNhY3Rpb25zIGJ5IEBicnVuby1jb3N0YW56byBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEzNTlcclxuXHJcbiMjIE5ldyBDb250cmlidXRvcnNcclxuKiBAb3hkZXYwMyBtYWRlIHRoZWlyIGZpcnN0IGNvbnRyaWJ1dGlvbiBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEyOTlcclxuKiBAZW5kZXJhaG1ldHl1cnQgbWFkZSB0aGVpciBmaXJzdCBjb250cmlidXRpb24gaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMzIzXHJcbiogQG5pY29nYWxkYW1leiBtYWRlIHRoZWlyIGZpcnN0IGNvbnRyaWJ1dGlvbiBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEzMjdcclxuKiBAYnJ1bm8tY29zdGFuem8gbWFkZSB0aGVpciBmaXJzdCBjb250cmlidXRpb24gaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMzU5XHJcblxyXG4qKkZ1bGwgQ2hhbmdlbG9nKio6IGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL2NvbXBhcmUvdjAuMS4wLi4udjAuMi4wLWFscGhhLjEiLCJyZWFjdGlvbnMiOnsidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE4MTk0NTc0NC9yZWFjdGlvbnMiLCJ0b3RhbF9jb3VudCI6MzIsIisxIjo5LCItMSI6MCwibGF1Z2giOjAsImhvb3JheSI6MTcsImNvbmZ1c2VkIjowLCJoZWFydCI6Niwicm9ja2V0IjowLCJleWVzIjowfSwibWVudGlvbnNfY291bnQiOjl9LHsidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE3OTU4MTU5OCIsImFzc2V0c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTc5NTgxNTk4L2Fzc2V0cyIsInVwbG9hZF91cmwiOiJodHRwczovL3VwbG9hZHMuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE3OTU4MTU5OC9hc3NldHN7P25hbWUsbGFiZWx9IiwiaHRtbF91cmwiOiJodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy90YWcvdjAuMS4wIiwiaWQiOjE3OTU4MTU5OCwiYXV0aG9yIjp7ImxvZ2luIjoiemFjaGdvbGwiLCJpZCI6MTY2NzYxNTcsIm5vZGVfaWQiOiJNRFE2VlhObGNqRTJOamMyTVRVMyIsImF2YXRhcl91cmwiOiJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTY2NzYxNTc/dj00IiwiZ3JhdmF0YXJfaWQiOiIiLCJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsIiwiaHRtbF91cmwiOiJodHRwczovL2dpdGh1Yi5jb20vemFjaGdvbGwiLCJmb2xsb3dlcnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9mb2xsb3dlcnMiLCJmb2xsb3dpbmdfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9mb2xsb3dpbmd7L290aGVyX3VzZXJ9IiwiZ2lzdHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9naXN0c3svZ2lzdF9pZH0iLCJzdGFycmVkX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvc3RhcnJlZHsvb3duZXJ9ey9yZXBvfSIsInN1YnNjcmlwdGlvbnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9zdWJzY3JpcHRpb25zIiwib3JnYW5pemF0aW9uc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL29yZ3MiLCJyZXBvc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3JlcG9zIiwiZXZlbnRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZXZlbnRzey9wcml2YWN5fSIsInJlY2VpdmVkX2V2ZW50c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3JlY2VpdmVkX2V2ZW50cyIsInR5cGUiOiJVc2VyIiwidXNlcl92aWV3X3R5cGUiOiJwdWJsaWMiLCJzaXRlX2FkbWluIjpmYWxzZX0sIm5vZGVfaWQiOiJSRV9rd0RPS190eEhNNEt0REtlIiwidGFnX25hbWUiOiJ2MC4xLjAiLCJ0YXJnZXRfY29tbWl0aXNoIjoibWFpbiIsIm5hbWUiOiJ2MC4xLjAiLCJkcmFmdCI6ZmFsc2UsInByZXJlbGVhc2UiOmZhbHNlLCJjcmVhdGVkX2F0IjoiMjAyNC0xMC0xMVQxNzoxNTo0NloiLCJwdWJsaXNoZWRfYXQiOiIyMDI0LTEwLTExVDE3OjUyOjA3WiIsImFzc2V0cyI6W10sInRhcmJhbGxfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3RhcmJhbGwvdjAuMS4wIiwiemlwYmFsbF91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvemlwYmFsbC92MC4xLjAiLCJib2R5IjoiIyMgV2UncmUgbGl2ZSEg8J+MriDwn6WzIFxyXG5cclxuIVt0aGUtb2ZmaWNlLXRoZV0oaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzLzI4YTNlMWUxLTAyN2ItNGY5NC1hYmQzLTg5ZDM0Yzc2ZDA1YilcclxuXHJcbkFmdGVyIGh1bmRyZWRzIG9mIGNvbnRyaWJ1dG9ycyBhbmQgaHVuZHJlZHMgb2YgdGhvdXNhbmRzIG9mIGxpbmVzIG9mIGNvZGUsIGB2MC4xLjBgIGlzIGhlcmUhXHJcblxyXG5UaGlzIHJlbGVhc2UgY29tZXMgd2l0aCBhIFRPTiBvZiBidWcgZml4ZXMgYW5kIG1hcmtzIHRoZSBsYXVuY2ggb2YgXCJob3N0ZWRcIiBNYXliZS4gIFdlJ3ZlIHN0aWxsIGdvdCBhIF90b25fIG9mIHdvcmsgYWhlYWQsIGJ1dCB3ZSdyZSBleGNpdGVkIHRvIHJlbGVhc2Ugb3VyIGZpcnN0IHByb2R1Y3Rpb24tcmVhZHkgdmVyc2lvbiBvZiBNYXliZS5cclxuXHJcbldlJ3JlIGN1cnJlbnRseSBpbiBhIHByaXZhdGUsIGludml0ZS1vbmx5IGFscGhhLiAgQmUgc3VyZSB0byBbam9pbiBvdXIgRGlzY29yZF0oaHR0cHM6Ly9saW5rLm1heWJlLmNvL2Rpc2NvcmQpIGZvciBhbm5vdW5jZW1lbnRzIHdoZW4gbmV3IHNwb3RzIGJlY29tZSBhdmFpbGFibGUhXHJcblxyXG5JbiB0aGlzIGZpcnN0IHZlcnNpb24sIHlvdSBjYW46XHJcblxyXG4tIEFkZCBhbGwgb2YgeW91ciBhY2NvdW50c1xyXG4tIEltcG9ydCBhY2NvdW50cywgdHJhbnNhY3Rpb25zLCBhbmQgdHJhZGVzIGJ5IENTVlxyXG4tIFNlZSB5b3VyIG5ldCB3b3J0aCwgdG90YWwgc3BlbmRpbmcsIGFuZCB0b3RhbCBpbmNvbWVcclxuLSBNYW5hZ2UgdHJhbnNhY3Rpb25zIChjYXRlZ29yaWVzLCB0YWdzLCBub3RlcylcclxuLSBNYW5hZ2UgaW52ZXN0bWVudCBwb3J0Zm9saW9zIChidXlzLCBzZWxscywgZGVwb3NpdHMsIHdpdGhkcmF3YWxzKVxyXG5cclxuQWZ0ZXIgd2UgaW5jb3Jwb3JhdGUgYWxsIHRoZSBmZWVkYmFjayBjb21pbmcgaW4sIG91ciBob3N0ZWQgYXBwIHdpbGwgYmUgaW50cm9kdWNpbmcgYXV0b21hdGVkIGJhbmsgc3luY2luZyFcclxuXHJcbiMjIFdoYXQncyBDaGFuZ2VkXHJcblxyXG4qIEhpZGUgY3VycmVuY3kgZm9yIHRyYW5zZmVycyBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMjYwXHJcbiogSGlkZSBpbmZpbml0eSB0cmVuZCBwZXJjZW50YWdlIGNoYW5nZXMgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTI2MVxyXG4qIEZpbmFsaXplIG90aGVyIGFzc2V0cyBhbmQgbGlhYmlsaXRpZXMgdmlldyBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMjY0XHJcbiogSW50ZXJjb20gaW50ZWdyYXRpb24gYnkgQFNocGlnZm9yZCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEyNjdcclxuKiBBZGQgZW1wdHkgc3RhdGVzIHRvIGFjY291bnQgc3VtbWFyeSBwYWdlIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEyNjVcclxuKiBCaWxsaW5nIGJ5IEBTaHBpZ2ZvcmQgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMjY5XHJcbiogQWRkIGxvYW4gYW5kIGNyZWRpdCBjYXJkIHZpZXdzIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEyNjhcclxuKiBTZXQgMzAwMCBhcyB0aGUgZGVmYXVsdCB3ZWIgcG9ydCBieSBAYWxhZ29zIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTIxNVxyXG4qIEZpeCBhY2NvdW50IHBpbGwgb24gZGFzaGJvYXJkIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEyNzBcclxuKiBFYXJseSBhY2Nlc3MgYnkgQFNocGlnZm9yZCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEyNzJcclxuKiBCYXNpYyB0cmFkZSBhbmQgaG9sZGluZ3MgdmlldyBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMjcxXHJcbiogTGluayB0byBDU1YgaW1wb3J0cyBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMjczXHJcbiogQnVnIGZpeGVzIGZvciBzcGVjaWFsaXplZCBhY2NvdW50IHBhZ2VzIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEyNzVcclxuKiBGaXggY3VycmVuY3kgZm9ybWF0dGluZyBmb3IgMCB2YWx1ZXMgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTI3NlxyXG4qIEZpeCBncm91cCB0cmVuZCBjb2xvciBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMjc3XHJcbiogZml4OiB1c2UgY29ycmVjdCBkZWxpbWl0ZXIgb24gY3JlZGl0IGNhcmQgemVybyB2YWx1ZXMgYnkgQGdhcmlhc2YgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMjgwXHJcbiogZml4OiBhbWVuZCBpbnB1dHMgb24gbG9hbiwgYy5jLiwgdmVoaWNsZSwgYW5kIHByb3BlcnR5IHBhcnRpYWxzIGJ5IEBnYXJpYXNmIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTI4MVxyXG4qIEJldHRlciBpbXBvcnQgaW5zdHJ1Y3Rpb25zLCByZW1vdmUgYW1iaWd1b3VzIGZpZWxkIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEyODRcclxuKiBBbGxvdyBpbmxpbmUgYWNjb3VudCBjcmVhdGlvbiB3aGVuIGltcG9ydGluZyBDU1YgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTI5MVxyXG4qIE1pbm9yIGltcHJvdmVtZW50cyB0byBjYXRlZ29yaWVzICYgY2hhbmdlbG9nIHBhZ2VzIGJ5IEBhcnNlbnN0b3JtIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTI3NFxyXG4qIEhhbmRsZSBtYXJrZXQgaG9saWRheXMgZHVyaW5nIGhvbGRpbmcgc3luYyBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMjkyXHJcbiogZml4OiBkZWZhdWx0IHZhbHVlIGlmIHVzZXIncyBuYW1lIGlzbid0IHNldCBieSBAYWptZWVzZTcgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMjYyXHJcbiogQWRkIGFkZGl0aW9uYWwgc3VidHlwZXMsIGFkZCBOb25lIG9wdGlvbiwgcHJlZmlsbCBlZGl0IHdpdGggcHJldmlvdXNseSBzZWxlY3RlZCBvcHRpb24uIGJ5IEBhaGF0enoxMSBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEyODZcclxuXHJcbiMjIE5ldyBDb250cmlidXRvcnNcclxuKiBAZ2FyaWFzZiBtYWRlIHRoZWlyIGZpcnN0IGNvbnRyaWJ1dGlvbiBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEyODBcclxuKiBAYXJzZW5zdG9ybSBtYWRlIHRoZWlyIGZpcnN0IGNvbnRyaWJ1dGlvbiBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEyNzRcclxuKiBAYWptZWVzZTcgbWFkZSB0aGVpciBmaXJzdCBjb250cmlidXRpb24gaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMjYyXHJcbiogQGFoYXR6ejExIG1hZGUgdGhlaXIgZmlyc3QgY29udHJpYnV0aW9uIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTI4NlxyXG5cclxuKipGdWxsIENoYW5nZWxvZyoqOiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9jb21wYXJlL3YwLjEuMC1hbHBoYS4xOC4uLnYwLjEuMCIsInJlYWN0aW9ucyI6eyJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTc5NTgxNTk4L3JlYWN0aW9ucyIsInRvdGFsX2NvdW50IjoxMzksIisxIjo4LCItMSI6MCwibGF1Z2giOjAsImhvb3JheSI6ODYsImNvbmZ1c2VkIjowLCJoZWFydCI6MjIsInJvY2tldCI6MjMsImV5ZXMiOjB9LCJtZW50aW9uc19jb3VudCI6N30seyJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTc4NDY5NDg5IiwiYXNzZXRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy8xNzg0Njk0ODkvYXNzZXRzIiwidXBsb2FkX3VybCI6Imh0dHBzOi8vdXBsb2Fkcy5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTc4NDY5NDg5L2Fzc2V0c3s/bmFtZSxsYWJlbH0iLCJodG1sX3VybCI6Imh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzL3RhZy92MC4xLjAtYWxwaGEuMTgiLCJpZCI6MTc4NDY5NDg5LCJhdXRob3IiOnsibG9naW4iOiJ6YWNoZ29sbCIsImlkIjoxNjY3NjE1Nywibm9kZV9pZCI6Ik1EUTZWWE5sY2pFMk5qYzJNVFUzIiwiYXZhdGFyX3VybCI6Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNjY3NjE1Nz92PTQiLCJncmF2YXRhcl9pZCI6IiIsInVybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwiLCJodG1sX3VybCI6Imh0dHBzOi8vZ2l0aHViLmNvbS96YWNoZ29sbCIsImZvbGxvd2Vyc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL2ZvbGxvd2VycyIsImZvbGxvd2luZ191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL2ZvbGxvd2luZ3svb3RoZXJfdXNlcn0iLCJnaXN0c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL2dpc3Rzey9naXN0X2lkfSIsInN0YXJyZWRfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9zdGFycmVkey9vd25lcn17L3JlcG99Iiwic3Vic2NyaXB0aW9uc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3N1YnNjcmlwdGlvbnMiLCJvcmdhbml6YXRpb25zX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvb3JncyIsInJlcG9zX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvcmVwb3MiLCJldmVudHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9ldmVudHN7L3ByaXZhY3l9IiwicmVjZWl2ZWRfZXZlbnRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvcmVjZWl2ZWRfZXZlbnRzIiwidHlwZSI6IlVzZXIiLCJ1c2VyX3ZpZXdfdHlwZSI6InB1YmxpYyIsInNpdGVfYWRtaW4iOmZhbHNlfSwibm9kZV9pZCI6IlJFX2t3RE9LX3R4SE00S296cHgiLCJ0YWdfbmFtZSI6InYwLjEuMC1hbHBoYS4xOCIsInRhcmdldF9jb21taXRpc2giOiJtYWluIiwibmFtZSI6InYwLjEuMC1hbHBoYS4xOCIsImRyYWZ0IjpmYWxzZSwicHJlcmVsZWFzZSI6dHJ1ZSwiY3JlYXRlZF9hdCI6IjIwMjQtMTAtMDRUMTk6MDk6NThaIiwicHVibGlzaGVkX2F0IjoiMjAyNC0xMC0wNFQxOToxNDoxOVoiLCJhc3NldHMiOltdLCJ0YXJiYWxsX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS90YXJiYWxsL3YwLjEuMC1hbHBoYS4xOCIsInppcGJhbGxfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3ppcGJhbGwvdjAuMS4wLWFscGhhLjE4IiwiYm9keSI6IiMjIENTViBJbXBvcnRzXHJcblxyXG5XZSd2ZSBtYWRlIHNvbWUgYmlnIHVwZGF0ZXMgZm9yIHRoZSBDU1YgaW1wb3J0cyBmZWF0dXJlIPCfjK4g8J+OiSBcclxuXHJcbioqWW91IGNhbiBub3cgaW1wb3J0IHRyYW5zYWN0aW9ucywgdHJhZGVzLCBhY2NvdW50cywgYW5kIGV2ZW4gYW4gb2xkIE1pbnQgZXhwb3J0ISoqXHJcblxyXG5IZXJlJ3MgYSBxdWljayBkZW1vIHRoYXQgc2hvd3MgaG93IGl0IGFsbCB3b3JrczogXHJcblxyXG5odHRwczovL2dpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvZTJlZmY1NWEtM2MzZC00ZTQyLThlNGEtYTk2NjQ0MWRjOWRjXHJcblxyXG5JbiBhZGRpdGlvbiB0byB0aGUgQ1NWIGltcG9ydHMsIHdlIGhhdmUgc2V2ZXJhbCBhcHAgc3RhYmlsaXR5IGZpeGVzIGFuZCBpbXByb3ZlbWVudHMgc3VjaCBhczpcclxuXHJcbi0gYEVVUmAgY3VycmVuY2llcyBhbmQgZGF0ZXMgYXJlIG5vdyBmb3JtYXR0ZWQgY29ycmVjdGx5IGJhc2VkIG9uIHVzZXIgbG9jYWxlXHJcbi0gVGhlIHRyYW5zYWN0aW9ucyBwYWdlIG5vdyBoYXMgYSBjb21wbGV0ZWQgbGlzdCBvZiBmaWx0ZXJzIHNvIHlvdSBjYW4gZmluZCB5b3VyIHRyYW5zYWN0aW9ucyBlYXNpZXJcclxuXHJcbiMjIFdoYXQncyBDaGFuZ2VkXHJcblxyXG4qIEZpeCBzdHlsZXMgb24gaW1wb3J0IG1vZGFsIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzExODhcclxuKiBBZGQgZXJyb3IgaGFuZGxpbmcgZm9yIHZlaGljbGUgYW5kIHByb3BlcnR5IGFjY291bnQgY3JlYXRpb24gYnkgQHRvbnl2aW5jZSBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzExNzlcclxuKiBGaW5pc2ggcmVtYWluaW5nIHRyYW5zYWN0aW9uIGZpbHRlcnMgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTE4OVxyXG4qIEZpbmFsaXplIHRyYW5zYWN0aW9uIGRyYXdlciwgc2ltcGxpZnkgbW9uZXkgZm9ybSBoZWxwZXJzIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzExOTFcclxuKiBGaW5hbGl6ZSBwcm9maWxlIHNldHRpbmdzIHBhZ2UgZm9yIHYwLjIuMC1hbHBoYSBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMTk0XHJcbiogRml4OiBFc2NhcGUgYnV0dG9uIG5vdCBiZWluZyBoYW5kbGVkIG9uIHNldHRpbmdzIHBhZ2VzIGJ5IEBqZXN0aW5qb3NoaSBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEyMTBcclxuKiBDU1YgSW1wb3J0cyBPdmVyaGF1bCAoVHJhbnNhY3Rpb25zLCBUcmFkZXMsIEFjY291bnRzLCBhbmQgTWludCBpbXBvcnQgc3VwcG9ydCkgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTIwOVxyXG4qIFNvcnQgY3VycmVuY2llcyBieSBuYW1lIGFzIGEgc2Vjb25kIG9yZGVyIGJ5IEBhbGFnb3MgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMjE2XHJcbiogRml4IGluY29ycmVjdCBwYXJ0aWFsIHN5bmMgYmFsYW5jZSBnZW5lcmF0aW9uIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEyMjNcclxuKiBGaXggaW1wb3J0IG1pZ3JhdGlvbiBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMjI3XHJcbiogQWRkIFN5bnRoIHByb3ZpZGVyIHRvIHNlbGYgaG9zdCBzZXR0aW5nIHBhZ2UgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTIzMFxyXG4qIEFsbG93IHVzZXJzIHRvIHNldCBwcmVmZXJyZWQgbG9jYWxlIGluIHNldHRpbmdzIGFuZCBwcm92aWRlIGJhc2ljIGRhdGUgYW5kIHRpbWUgbG9jYWxpemF0aW9uIHN1cHBvcnQgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTIyNlxyXG4qIEFkZCBmb3JtYXR0aW5nIGZvciBFVVIgbG9jYWxlcyBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMjMxXHJcbiogVXNlIERCIGZvciBhdXRoIHNlc3Npb25zIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEyMzNcclxuKiBGaXggc2lnbmFnZSBvbiB0cmFuc2FjdGlvbiBpbXBvcnRzIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEyMzZcclxuKiBBZGQgdGFnIGZpbHRlcmluZyBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMjQwXHJcbiogSGFuZGxlIG1pc3Npbmcgd2Vla2VuZCBzdG9jayBwcmljZXMgaW4gc3luYyBwcm9jZXNzIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEyNDJcclxuXHJcbiMjIE5ldyBDb250cmlidXRvcnNcclxuKiBAYWxhZ29zIG1hZGUgdGhlaXIgZmlyc3QgY29udHJpYnV0aW9uIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTIxNlxyXG5cclxuKipGdWxsIENoYW5nZWxvZyoqOiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9jb21wYXJlL3YwLjEuMC1hbHBoYS4xNy4uLnYwLjEuMC1hbHBoYS4xOCIsInJlYWN0aW9ucyI6eyJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTc4NDY5NDg5L3JlYWN0aW9ucyIsInRvdGFsX2NvdW50IjozMSwiKzEiOjAsIi0xIjowLCJsYXVnaCI6MCwiaG9vcmF5IjoyMCwiY29uZnVzZWQiOjAsImhlYXJ0Ijo0LCJyb2NrZXQiOjcsImV5ZXMiOjB9LCJtZW50aW9uc19jb3VudCI6NH0seyJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTc1MDQxNTU4IiwiYXNzZXRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy8xNzUwNDE1NTgvYXNzZXRzIiwidXBsb2FkX3VybCI6Imh0dHBzOi8vdXBsb2Fkcy5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTc1MDQxNTU4L2Fzc2V0c3s/bmFtZSxsYWJlbH0iLCJodG1sX3VybCI6Imh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzL3RhZy92MC4xLjAtYWxwaGEuMTciLCJpZCI6MTc1MDQxNTU4LCJhdXRob3IiOnsibG9naW4iOiJ6YWNoZ29sbCIsImlkIjoxNjY3NjE1Nywibm9kZV9pZCI6Ik1EUTZWWE5sY2pFMk5qYzJNVFUzIiwiYXZhdGFyX3VybCI6Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNjY3NjE1Nz92PTQiLCJncmF2YXRhcl9pZCI6IiIsInVybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwiLCJodG1sX3VybCI6Imh0dHBzOi8vZ2l0aHViLmNvbS96YWNoZ29sbCIsImZvbGxvd2Vyc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL2ZvbGxvd2VycyIsImZvbGxvd2luZ191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL2ZvbGxvd2luZ3svb3RoZXJfdXNlcn0iLCJnaXN0c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL2dpc3Rzey9naXN0X2lkfSIsInN0YXJyZWRfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9zdGFycmVkey9vd25lcn17L3JlcG99Iiwic3Vic2NyaXB0aW9uc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3N1YnNjcmlwdGlvbnMiLCJvcmdhbml6YXRpb25zX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvb3JncyIsInJlcG9zX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvcmVwb3MiLCJldmVudHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9ldmVudHN7L3ByaXZhY3l9IiwicmVjZWl2ZWRfZXZlbnRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvcmVjZWl2ZWRfZXZlbnRzIiwidHlwZSI6IlVzZXIiLCJ1c2VyX3ZpZXdfdHlwZSI6InB1YmxpYyIsInNpdGVfYWRtaW4iOmZhbHNlfSwibm9kZV9pZCI6IlJFX2t3RE9LX3R4SE00S2J1d1ciLCJ0YWdfbmFtZSI6InYwLjEuMC1hbHBoYS4xNyIsInRhcmdldF9jb21taXRpc2giOiJtYWluIiwibmFtZSI6InYwLjEuMC1hbHBoYS4xNyIsImRyYWZ0IjpmYWxzZSwicHJlcmVsZWFzZSI6dHJ1ZSwiY3JlYXRlZF9hdCI6IjIwMjQtMDktMTNUMjE6MjQ6NDZaIiwicHVibGlzaGVkX2F0IjoiMjAyNC0wOS0xM1QyMToyODo0NloiLCJhc3NldHMiOltdLCJ0YXJiYWxsX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS90YXJiYWxsL3YwLjEuMC1hbHBoYS4xNyIsInppcGJhbGxfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3ppcGJhbGwvdjAuMS4wLWFscGhhLjE3IiwiYm9keSI6IiMjIFNlbGYgSG9zdGVkIE1heWJlIEluc3RhbmNlcyBjYW4gbm93IGJsb2NrIG5ldyByZWdpc3RyYXRpb25zXHJcblxyXG5UaGlzIHJlbGVhc2UgY29tZXMgd2l0aCB0b25zIG9mIGxpdHRsZSBVSSBpbXByb3ZlbWVudHMsIGJ1ZyBmaXhlcywgYW5kIG1vc3QgaW1wb3J0YW50bHksIHRoZSBhYmlsaXR5IHRvIGJsb2NrIHVzZXIgcmVnaXN0cmF0aW9ucyBvbiB5b3VyIHNlbGYgaG9zdGVkIE1heWJlIGluc3RhbmNlISDwn46JIFxyXG5cclxuQmlnIFMvTyB0byBAdG9ueXZpbmNlIGZvciBnZXR0aW5nIHRoaXMgaW1wbGVtZW50ZWQuICBIZXJlJ3MgYSBxdWljayBkZW1vIG9mIGhvdyB5b3UgY2FuIGJsb2NrIHNpZ251cHMgdG8geW91ciBpbnN0YW5jZSB3aXRoIGludml0ZSBjb2RlczpcclxuXHJcbmh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy9lNGRhOWZkZC1hNzZmLTRlZDAtODQzMC1iODZlNzFkYmYzMjBcclxuXHJcbiMjIFdoYXQncyBDaGFuZ2VkXHJcbiogRml4IHVuYWJsZSB0byBjcmVhdGUgRGVwb3NpdCBlbnRyaWVzIGluIGludmVzdG1lbnQgcG9ydGZvbGlvIGJ5IEB0b255dmluY2UgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMTI1XHJcbiogRml4IGFjY291bnQgc3luYyB3aGVuIHByaWNlcyBtaXNzaW5nIGJ5IEB0b255dmluY2UgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMTI3XHJcbiogRml4IGFjY291bnQgdHJhbnNhY3Rpb24gZm9ybSByZXNldHRpbmcgYW1vdW50IHRvIDAgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTEzM1xyXG4qIEZpeCBtZXJjaGFudHMgY29sb3IgcGlja2VyIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzExMzRcclxuKiBDYXRlZ29yaWVzLCB0YWdzLCBtZXJjaGFudHMsIGFuZCBtZW51cyBpbXByb3ZlbWVudHMgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTEzNVxyXG4qIFJlbW92ZSB1bnVzZWQgc2V0dGluZ3MgdGVtcG9yYXJpbHkgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTEzNlxyXG4qIEZlZWRiYWNrIHBhZ2UgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTE2MFxyXG4qIEZpeCB2YWx1YXRpb24gZnJhbWUgaXNzdWUgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTE2MlxyXG4qIENvbnNvbGlkYXRlIHRyYW5zYWN0aW9uIG1lbnUgaXRlbXMgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTE2NFxyXG4qIFVwZGF0ZSBlbXB0eSBhY2NvdW50IHN0YXRlcyBvbiBkYXNoYm9hcmQgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTE2NlxyXG4qIEZpeDogV2hlbiB0cmFuc2FjdGlvbiBkcmF3ZXIgY2xvc2VkLCB0dXJibyBmcmFtZSByZW5kZXJzIGJlbG93IG1haW4gY29udGVudCBieSBAamVzdGluam9zaGkgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMTY3XHJcbiogQWRkIHNldHRpbmcgdG8gZGlzYWJsZSBuZXcgdXNlciByZWdpc3RyYXRpb24gb24gc2VsZi1ob3N0ZWQgaW5zdGFuY2VzIGJ5IEB0b255dmluY2UgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMTYzXHJcbiogRml4IGd1aWRlIHRleHQgZnJvbSBcInJlZ2lzdGVyXCIgdG8gXCJjcmVhdGUgYW4gYWNjb3VudFwiIGJ5IEB2YWxsZXp3IGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTE2OFxyXG4qIEFkZCBzeW5jIHN0YXR1cyBhbmQgZXJyb3JzIHRvIGFjY291bnQgc2V0dGluZ3MgcGFnZSBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMTY5XHJcbiogRml4IG1pc3Npbmcgc3luY19hbGxfYnV0dG9uIHBhcnRpYWwgYnkgQHRvbnl2aW5jZSBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzExNzJcclxuKiBPbWl0IHRyZW5kIGlmIHplcm8gaW4gc2lkZWJhciBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMTczXHJcbiogU3VwcG9ydCBtdWx0aS1jdXJyZW5jeSB0cmFuc2ZlcnMgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTE3NVxyXG4qIEFsbG93IHBhcnRpYWwgaW52ZXN0bWVudCBxdWFudGl0aWVzIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzExNzRcclxuKiBUcmFuc2FjdGlvbiBwYWdlIGRlc2lnbiBmaXhlcyBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMTc2XHJcbiogQWRkIGJhc2ljIHNlbGYgaG9zdGVkIG9uYm9hcmRpbmcgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTE3N1xyXG5cclxuIyMgTmV3IENvbnRyaWJ1dG9yc1xyXG4qIEBqZXN0aW5qb3NoaSBtYWRlIHRoZWlyIGZpcnN0IGNvbnRyaWJ1dGlvbiBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzExNjdcclxuKiBAdmFsbGV6dyBtYWRlIHRoZWlyIGZpcnN0IGNvbnRyaWJ1dGlvbiBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzExNjhcclxuXHJcbioqRnVsbCBDaGFuZ2Vsb2cqKjogaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvY29tcGFyZS92MC4xLjAtYWxwaGEuMTYuLi52MC4xLjAtYWxwaGEuMTciLCJyZWFjdGlvbnMiOnsidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE3NTA0MTU1OC9yZWFjdGlvbnMiLCJ0b3RhbF9jb3VudCI6MjksIisxIjo2LCItMSI6MCwibGF1Z2giOjAsImhvb3JheSI6MCwiY29uZnVzZWQiOjAsImhlYXJ0Ijo3LCJyb2NrZXQiOjEzLCJleWVzIjozfSwibWVudGlvbnNfY291bnQiOjR9LHsidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE3MTY4NDg3MCIsImFzc2V0c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTcxNjg0ODcwL2Fzc2V0cyIsInVwbG9hZF91cmwiOiJodHRwczovL3VwbG9hZHMuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE3MTY4NDg3MC9hc3NldHN7P25hbWUsbGFiZWx9IiwiaHRtbF91cmwiOiJodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy90YWcvdjAuMS4wLWFscGhhLjE2IiwiaWQiOjE3MTY4NDg3MCwiYXV0aG9yIjp7ImxvZ2luIjoiemFjaGdvbGwiLCJpZCI6MTY2NzYxNTcsIm5vZGVfaWQiOiJNRFE2VlhObGNqRTJOamMyTVRVMyIsImF2YXRhcl91cmwiOiJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTY2NzYxNTc/dj00IiwiZ3JhdmF0YXJfaWQiOiIiLCJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsIiwiaHRtbF91cmwiOiJodHRwczovL2dpdGh1Yi5jb20vemFjaGdvbGwiLCJmb2xsb3dlcnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9mb2xsb3dlcnMiLCJmb2xsb3dpbmdfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9mb2xsb3dpbmd7L290aGVyX3VzZXJ9IiwiZ2lzdHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9naXN0c3svZ2lzdF9pZH0iLCJzdGFycmVkX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvc3RhcnJlZHsvb3duZXJ9ey9yZXBvfSIsInN1YnNjcmlwdGlvbnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9zdWJzY3JpcHRpb25zIiwib3JnYW5pemF0aW9uc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL29yZ3MiLCJyZXBvc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3JlcG9zIiwiZXZlbnRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZXZlbnRzey9wcml2YWN5fSIsInJlY2VpdmVkX2V2ZW50c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3JlY2VpdmVkX2V2ZW50cyIsInR5cGUiOiJVc2VyIiwidXNlcl92aWV3X3R5cGUiOiJwdWJsaWMiLCJzaXRlX2FkbWluIjpmYWxzZX0sIm5vZGVfaWQiOiJSRV9rd0RPS190eEhNNEtPN1FHIiwidGFnX25hbWUiOiJ2MC4xLjAtYWxwaGEuMTYiLCJ0YXJnZXRfY29tbWl0aXNoIjoibWFpbiIsIm5hbWUiOiJ2MC4xLjAtYWxwaGEuMTYiLCJkcmFmdCI6ZmFsc2UsInByZXJlbGVhc2UiOnRydWUsImNyZWF0ZWRfYXQiOiIyMDI0LTA4LTIzVDE0OjM5OjE0WiIsInB1Ymxpc2hlZF9hdCI6IjIwMjQtMDgtMjNUMTQ6NDQ6MTVaIiwiYXNzZXRzIjpbXSwidGFyYmFsbF91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvdGFyYmFsbC92MC4xLjAtYWxwaGEuMTYiLCJ6aXBiYWxsX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS96aXBiYWxsL3YwLjEuMC1hbHBoYS4xNiIsImJvZHkiOiJUaGlzIHdlZWsncyByZWxlYXNlIGNvbWVzIHdpdGggYSB2YXJpZXR5IG9mIGJ1ZyBmaXhlcyBhbmQgaW1wcm92ZW1lbnRzIHRvIHRoZSBVSS5cclxuXHJcbkFkZGl0aW9uYWxseSwgdXNlcnMgY2FuIG5vdyBpbnB1dCBkZXRhaWxzIGZvciB0aGVpciBwcm9wZXJ0eSBhbmQgdmVoaWNsZSBhY2NvdW50cyBhcyBzaG93biBpbiB0aGUgdmlkZW8gYmVsb3cuICBJbiB0aGUgbmVhciBmdXR1cmUsIE1heWJlIHdpbGwgc3VwcG9ydCBkYXRhIHByb3ZpZGVycyByZWxhdGVkIHRvIHRoZSBcInZhbHVhdGlvblwiIG9mIHByb3BlcnRpZXMgYW5kIHZlaGljbGVzIChpLmUuIFppbGxvdywgS0JCKS4gIFdlIHdpbGwgdXNlIHRoZSBpbmZvcm1hdGlvbiBmcm9tIHVzZXIgYWNjb3VudHMgdG8gYXV0b21hdGljYWxseSBmZXRjaCBlc3RpbWF0ZWQgbWFya2V0IHZhbHVlcyBmb3IgdGhlc2UgYXNzZXRzIHdoaWNoIHdpbGwgdGhlbiBiZSBhZGRlZCBwZXJpb2RpY2FsbHkgYXMgXCJWYWx1YXRpb25zXCIgaW4gdGhlIHZhbHVlIHRhYiBvZiBlYWNoIGFjY291bnQuICBUaGlzIHdpbGwgdGhlbiBzaG93IHVwIGluIHRoZSBoaXN0b3J5IGdyYXBoIGZvciB0aGUgYWNjb3VudCBiYWxhbmNlLlxyXG5cclxuaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzL2ZkNzU5YzgyLWEyNWMtNGM4ZC04ZjE2LWY1NzdlMDQxMGZiNVxyXG5cclxuIyMgV2hhdCdzIENoYW5nZWRcclxuXHJcbiogUmVmYWN0b3I6IEFsbG93IG90aGVyIGltcG9ydCBmaWxlcyBieSBAcGVkcm9jYXJtb25hIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTA5OVxyXG4qIEJ1bXAgc2VudHJ5LXJ1YnkgZnJvbSA1LjE4LjIgdG8gNS4xOS4wIGJ5IEBkZXBlbmRhYm90IGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTEwOFxyXG4qIEJ1bXAgc3RpbXVsdXMtcmFpbHMgZnJvbSAxLjMuMyB0byAxLjMuNCBieSBAZGVwZW5kYWJvdCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzExMDZcclxuKiBCdW1wIGF3cy1zZGstczMgZnJvbSAxLjE1Ny4wIHRvIDEuMTU4LjAgYnkgQGRlcGVuZGFib3QgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMTA1XHJcbiogQnVtcCBydWJ5LWxzcC1yYWlscyBmcm9tIDAuMy4xMiB0byAwLjMuMTMgYnkgQGRlcGVuZGFib3QgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMTA3XHJcbiogQnVtcCBwcm9wc2hhZnQgZnJvbSAwLjkuMCB0byAwLjkuMSBieSBAZGVwZW5kYWJvdCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzExMDRcclxuKiBCdW1wIGdvb2Rfam9iIGZyb20gNC4xLjEgdG8gNC4yLjAgYnkgQGRlcGVuZGFib3QgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMTAyXHJcbiogQnVtcCB0YWlsd2luZGNzcy1yYWlscyBmcm9tIDIuNy4yIHRvIDIuNy4zIGJ5IEBkZXBlbmRhYm90IGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTEwM1xyXG4qIEZpeCBxdWVyeSB3aGVuIGFjY291bnQgaGFzIHplcm8gaW5jb21lIGFuZCBleHBlbnNlIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzExMTJcclxuKiBGaXggaG9sZGluZyBuYW1lIGVycm9yIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzExMTNcclxuKiBBZGQgUHJvcGVydHkgRGV0YWlscyBWaWV3IGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzExMTZcclxuKiBCYXNpYyBWZWhpY2xlIFZpZXcgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTExN1xyXG4qIFJ1Ym9jb3AgdXBkYXRlcyBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMTE4XHJcbiogRml4IGZpbGUgdXBsb2FkIFVJIG9wZW5pbmcgdHdpY2UgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTExOVxyXG5cclxuXHJcbioqRnVsbCBDaGFuZ2Vsb2cqKjogaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvY29tcGFyZS92MC4xLjAtYWxwaGEuMTUuLi52MC4xLjAtYWxwaGEuMTYiLCJyZWFjdGlvbnMiOnsidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE3MTY4NDg3MC9yZWFjdGlvbnMiLCJ0b3RhbF9jb3VudCI6MjMsIisxIjoxMCwiLTEiOjAsImxhdWdoIjowLCJob29yYXkiOjAsImNvbmZ1c2VkIjowLCJoZWFydCI6MCwicm9ja2V0IjoxMCwiZXllcyI6M30sIm1lbnRpb25zX2NvdW50IjozfSx7InVybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy8xNzA2NTU5MjQiLCJhc3NldHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE3MDY1NTkyNC9hc3NldHMiLCJ1cGxvYWRfdXJsIjoiaHR0cHM6Ly91cGxvYWRzLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy8xNzA2NTU5MjQvYXNzZXRzez9uYW1lLGxhYmVsfSIsImh0bWxfdXJsIjoiaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvdGFnL3YwLjEuMC1hbHBoYS4xNSIsImlkIjoxNzA2NTU5MjQsImF1dGhvciI6eyJsb2dpbiI6InphY2hnb2xsIiwiaWQiOjE2Njc2MTU3LCJub2RlX2lkIjoiTURRNlZYTmxjakUyTmpjMk1UVTMiLCJhdmF0YXJfdXJsIjoiaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE2Njc2MTU3P3Y9NCIsImdyYXZhdGFyX2lkIjoiIiwidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbCIsImh0bWxfdXJsIjoiaHR0cHM6Ly9naXRodWIuY29tL3phY2hnb2xsIiwiZm9sbG93ZXJzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZm9sbG93ZXJzIiwiZm9sbG93aW5nX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZm9sbG93aW5ney9vdGhlcl91c2VyfSIsImdpc3RzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZ2lzdHN7L2dpc3RfaWR9Iiwic3RhcnJlZF91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3N0YXJyZWR7L293bmVyfXsvcmVwb30iLCJzdWJzY3JpcHRpb25zX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvc3Vic2NyaXB0aW9ucyIsIm9yZ2FuaXphdGlvbnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9vcmdzIiwicmVwb3NfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9yZXBvcyIsImV2ZW50c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL2V2ZW50c3svcHJpdmFjeX0iLCJyZWNlaXZlZF9ldmVudHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9yZWNlaXZlZF9ldmVudHMiLCJ0eXBlIjoiVXNlciIsInVzZXJfdmlld190eXBlIjoicHVibGljIiwic2l0ZV9hZG1pbiI6ZmFsc2V9LCJub2RlX2lkIjoiUkVfa3dET0tfdHhITTRLTEFDMCIsInRhZ19uYW1lIjoidjAuMS4wLWFscGhhLjE1IiwidGFyZ2V0X2NvbW1pdGlzaCI6Im1haW4iLCJuYW1lIjoidjAuMS4wLWFscGhhLjE1IiwiZHJhZnQiOmZhbHNlLCJwcmVyZWxlYXNlIjp0cnVlLCJjcmVhdGVkX2F0IjoiMjAyNC0wOC0xNlQyMDowOTozN1oiLCJwdWJsaXNoZWRfYXQiOiIyMDI0LTA4LTE2VDIwOjE4OjIyWiIsImFzc2V0cyI6W10sInRhcmJhbGxfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3RhcmJhbGwvdjAuMS4wLWFscGhhLjE1IiwiemlwYmFsbF91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvemlwYmFsbC92MC4xLjAtYWxwaGEuMTUiLCJib2R5IjoiVGhpcyB3ZWVrLCB3ZSByZWxlYXNlZCB0aGUgZmlyc3QgdmVyc2lvbiBvZiBhbiBpc3N1ZSB0cmFja2luZyBzeXN0ZW0gZGlyZWN0bHkgd2l0aGluIHRoZSBNYXliZSBhcHAhXHJcblxyXG5XaHk/XHJcblxyXG5BcyBhbiBvcGVuLXNvdXJjZSBwZXJzb25hbCBmaW5hbmNlIGFwcCwgTWF5YmUgaGFzIGEgbXVjaCBsYXJnZXIgXCJzZWxmIHNlcnZpY2VcIiBjb21wb25lbnQgdGhhbiBtb3N0IGFwcGxpY2F0aW9ucy4gIFdoaWxlIHdlJ3JlIGluIHRoZSBlYXJseSBkYXlzLCB0aGUgZ29hbCBpcyB0byBzdXBwb3J0IGEgZ2xvYmFsIHVzZXIgYmFzZSwgd2hpY2ggbWVhbnMgd2UgaGF2ZSB0byBzdXBwb3J0IF9hIGxvdF8gb2YgZGF0YSBwcm92aWRlcnMuXHJcblxyXG5FYWNoIGRhdGEgcHJvdmlkZXIgY29tZXMgd2l0aCBpdHMgb3duIHNldCBvZiBudWFuY2VzIGFuZCBlcnJvcnMgdGhhdCBjYW4gYmUgY2hhbGxlbmdpbmcgdG8gZGVidWc7IGVzcGVjaWFsbHkgZm9yIG91ciBzbWFsbCB0ZWFtIHRoYXQgZG9lc24ndCBoYXZlIGFjY2VzcyB0byB5b3VyIHNlbGYgaG9zdGVkIGNvbmZpZ3VyYXRpb24uICBXaGVuIHRoaW5ncyBnbyB3cm9uZywgdGhlcmUgYXJlIGEgaGFuZGZ1bCBvZiBwb3NzaWJsZSBjYXVzZXMuXHJcblxyXG5JbiBvcmRlciB0byBjb21iYXQgdGhpcywgdGhlIGB2MC4xLjAtYWxwaGEuMTVgIHJlbGVhc2UgaW50cm9kdWNlcyBhIFwic2VsZiByZXNvbHV0aW9uXCIgaXNzdWUgdHJhY2tpbmcgc3lzdGVtLiAgVGhlIHZpZGVvIGJlbG93IGRlbW9uc3RyYXRlcyBob3cgYSB1c2VyIHdobyBoYXMgaW5jb3JyZWN0bHkgY29uZmlndXJlZCB0aGVpciBleGNoYW5nZSByYXRlcyBwcm92aWRlciBjYW4gKippZGVudGlmeSwgZGlhZ25vc2UsIGFuZCBmaXggdGhlIGlzc3VlIGFsbCB3aXRoaW4gdGhlIE1heWJlIGFwcCoqOlxyXG5cclxuaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzLzdjYzk4Yzc5LTliNzItNDI2MC1iYzE3LTkwN2JjMzNiMTM5MFxyXG5cclxuIyMgV2hhdCdzIENoYW5nZWRcclxuKiBEZXBvc2l0LCBXaXRoZHJhd2FsLCBhbmQgSW50ZXJlc3QgVHJhbnNhY3Rpb25zIGZvciBJbnZlc3RtZW50IFZpZXcgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTA3NVxyXG4qIEJ1bXAgdGFpbHdpbmRjc3MtcmFpbHMgZnJvbSAyLjYuNSB0byAyLjcuMiBieSBAZGVwZW5kYWJvdCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEwNzhcclxuKiBCdW1wIGJvb3RzbmFwIGZyb20gMS4xOC4zIHRvIDEuMTguNCBieSBAZGVwZW5kYWJvdCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEwNzlcclxuKiBCdW1wIHJ1YnktbHNwLXJhaWxzIGZyb20gMC4zLjExIHRvIDAuMy4xMiBieSBAZGVwZW5kYWJvdCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEwODFcclxuKiBSZWZhY3RvcjogVXNlIG5hdGl2ZSBlcnJvciBpMThuIGxvb2t1cCBieSBAcGVkcm9jYXJtb25hIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTA3NlxyXG4qIEJ1bXAgcmFpbHMgZnJvbSBgNDM1MzBiNGAgdG8gYGY2ZDYyYjVgIGJ5IEBkZXBlbmRhYm90IGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTA4M1xyXG4qIEZpeDogaTE4biBzeW1ib2wgdHlwbyBieSBAcGVkcm9jYXJtb25hIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTA4NVxyXG4qIEJ1bXAgcnVieSBmcm9tIDMuMy4xIHRvIDMuMy40IGJ5IEBDbHVzdGVyNDQ0IGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTA4NFxyXG4qIEZpeCBmb3IgaW52YWxpZCBhY2NvdW50YWJsZSBkYXRhIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEwODZcclxuKiBhZGQgcGFnaW5hdGlvbiB0byBhY2NvdW50IHRyYW5zYWN0aW9ucyBsaXN0IGJ5IEBjb2RlLWNvbnN0cnVjdG9yIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTA5NVxyXG4qIEFjY291bnQgSXNzdWUgTW9kZWwgYW5kIFJlc29sdXRpb24gRmxvdyArIFRyb3VibGVzaG9vdGluZyBndWlkZXMgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTA5MFxyXG4qIEFkZCBzdXBwb3J0IGZvciBkaWZmZXJlbnQgY29sdW1uIHNlcGFyYXRvciBpbiBjc3YgaW1wb3J0IGxvZ2ljIGJ5IEBjb2RlLWNvbnN0cnVjdG9yIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTA5NlxyXG4qIEltcHJvdmVkIFVJIHdhcm5pbmcgc3RhdGVzIGZvciBob2xkaW5ncyB3aXRoIG1pc3NpbmcgZGF0YSBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMDk4XHJcblxyXG4jIyBOZXcgQ29udHJpYnV0b3JzXHJcbiogQHBlZHJvY2FybW9uYSBtYWRlIHRoZWlyIGZpcnN0IGNvbnRyaWJ1dGlvbiBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEwNzZcclxuKiBAQ2x1c3RlcjQ0NCBtYWRlIHRoZWlyIGZpcnN0IGNvbnRyaWJ1dGlvbiBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEwODRcclxuKiBAY29kZS1jb25zdHJ1Y3RvciBtYWRlIHRoZWlyIGZpcnN0IGNvbnRyaWJ1dGlvbiBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEwOTVcclxuXHJcbioqRnVsbCBDaGFuZ2Vsb2cqKjogaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvY29tcGFyZS92MC4xLjAtYWxwaGEuMTQuLi52MC4xLjAtYWxwaGEuMTUiLCJyZWFjdGlvbnMiOnsidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE3MDY1NTkyNC9yZWFjdGlvbnMiLCJ0b3RhbF9jb3VudCI6MTEsIisxIjoxMSwiLTEiOjAsImxhdWdoIjowLCJob29yYXkiOjAsImNvbmZ1c2VkIjowLCJoZWFydCI6MCwicm9ja2V0IjowLCJleWVzIjowfSwibWVudGlvbnNfY291bnQiOjV9LHsidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE2OTU5MTAyOSIsImFzc2V0c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTY5NTkxMDI5L2Fzc2V0cyIsInVwbG9hZF91cmwiOiJodHRwczovL3VwbG9hZHMuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE2OTU5MTAyOS9hc3NldHN7P25hbWUsbGFiZWx9IiwiaHRtbF91cmwiOiJodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy90YWcvdjAuMS4wLWFscGhhLjE0IiwiaWQiOjE2OTU5MTAyOSwiYXV0aG9yIjp7ImxvZ2luIjoiemFjaGdvbGwiLCJpZCI6MTY2NzYxNTcsIm5vZGVfaWQiOiJNRFE2VlhObGNqRTJOamMyTVRVMyIsImF2YXRhcl91cmwiOiJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTY2NzYxNTc/dj00IiwiZ3JhdmF0YXJfaWQiOiIiLCJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsIiwiaHRtbF91cmwiOiJodHRwczovL2dpdGh1Yi5jb20vemFjaGdvbGwiLCJmb2xsb3dlcnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9mb2xsb3dlcnMiLCJmb2xsb3dpbmdfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9mb2xsb3dpbmd7L290aGVyX3VzZXJ9IiwiZ2lzdHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9naXN0c3svZ2lzdF9pZH0iLCJzdGFycmVkX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvc3RhcnJlZHsvb3duZXJ9ey9yZXBvfSIsInN1YnNjcmlwdGlvbnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9zdWJzY3JpcHRpb25zIiwib3JnYW5pemF0aW9uc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL29yZ3MiLCJyZXBvc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3JlcG9zIiwiZXZlbnRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZXZlbnRzey9wcml2YWN5fSIsInJlY2VpdmVkX2V2ZW50c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3JlY2VpdmVkX2V2ZW50cyIsInR5cGUiOiJVc2VyIiwidXNlcl92aWV3X3R5cGUiOiJwdWJsaWMiLCJzaXRlX2FkbWluIjpmYWxzZX0sIm5vZGVfaWQiOiJSRV9rd0RPS190eEhNNEtHOEQxIiwidGFnX25hbWUiOiJ2MC4xLjAtYWxwaGEuMTQiLCJ0YXJnZXRfY29tbWl0aXNoIjoibWFpbiIsIm5hbWUiOiJ2MC4xLjAtYWxwaGEuMTQiLCJkcmFmdCI6ZmFsc2UsInByZXJlbGVhc2UiOnRydWUsImNyZWF0ZWRfYXQiOiIyMDI0LTA4LTA5VDIxOjQyOjQ4WiIsInB1Ymxpc2hlZF9hdCI6IjIwMjQtMDgtMDlUMjE6NDk6MjBaIiwiYXNzZXRzIjpbXSwidGFyYmFsbF91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvdGFyYmFsbC92MC4xLjAtYWxwaGEuMTQiLCJ6aXBiYWxsX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS96aXBiYWxsL3YwLjEuMC1hbHBoYS4xNCIsImJvZHkiOiJCYXNpYyBpbnZlc3RtZW50IHBvcnRmb2xpb3MgYXJlIGhlcmUhIPCfpbMgXHJcblxyXG5XaGlsZSB3ZSdyZSBzdGlsbCBpbiB0aGUgdmVyeSBlYXJseSBkYXlzIGZvciBpbnZlc3RtZW50IGFjY291bnRzLCB0aGlzIHdlZWsgY2FwcGVkIG9mZiBzb21lIHJlYWxseSBpbXBvcnRhbnQgYWRkaXRpb25zIHRvIHRoZSBpbnZlc3RtZW50IGFjY291bnQgcGFnZSB2aWV3LlxyXG5cclxuVXNlcnMgY2FuIG5vdzpcclxuXHJcbi0gU2VlIGEgYnJlYWtkb3duIG9mIHRoZWlyIGNhc2ggKyBob2xkaW5ncyBiYWxhbmNlIGluIGEgdG9vbHRpcFxyXG4tIEFkZCBidXkvc2VsbCBpbnZlc3RtZW50IHRyYWRlcyB0aGF0IHdpbGwgYXV0b21hdGljYWxseSBzeW5jIGFuZCByZWJ1aWxkIHRoZWlyIHBvcnRmb2xpbyBhbmQgaGlzdG9yaWNhbCBncmFwaFxyXG5cclxuTW92aW5nIGZvcndhcmQsIHdlJ2xsIGJlIHJlZmluaW5nIGFuZCBhZGRpbmcgdG8gdGhlIGludmVzdG1lbnQgcG9ydGZvbGlvIGZlYXR1cmUgYW5kIGNvbXBsZW1lbnRpbmcgaXQgd2l0aCB0cm91Ymxlc2hvb3RpbmcgZ3VpZGVzIHNvIHlvdSBrbm93IGV4YWN0bHkgd2hhdCdzIGNhdXNpbmcgYW55IGRpc2NyZXBhbmNpZXMgYmV0d2VlbiBNYXliZSdzIGNhbGN1bGF0aW9ucyBhbmQgeW91ciBicm9rZXJhZ2UncyBjYWxjdWxhdGlvbnMuXHJcblxyXG5odHRwczovL2dpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvZjRjOGJjNjUtMzFmNi00NjI3LWI0ZTctNDc3ZDA2ODdjNTcwXHJcblxyXG4jIyBXaGF0J3MgQ2hhbmdlZFxyXG5cclxuKiBCdW1wIHRhaWx3aW5kY3NzLXJhaWxzIGZyb20gMi42LjQgdG8gMi42LjUgYnkgQGRlcGVuZGFib3QgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMDU4XHJcbiogQnVtcCBmYXJhZGF5IGZyb20gMi4xMC4wIHRvIDIuMTAuMSBieSBAZGVwZW5kYWJvdCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEwNTVcclxuKiBCdW1wIGVyYl9saW50IGZyb20gMC41LjAgdG8gMC42LjAgYnkgQGRlcGVuZGFib3QgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMDU3XHJcbiogQnVtcCBhd3Mtc2RrLXMzIGZyb20gMS4xNTYuMCB0byAxLjE1Ny4wIGJ5IEBkZXBlbmRhYm90IGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTA1NFxyXG4qIEJ1bXAgZ29vZF9qb2IgZnJvbSA0LjEuMCB0byA0LjEuMSBieSBAZGVwZW5kYWJvdCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEwNTNcclxuKiBCdW1wIHBhZ3kgZnJvbSA5LjAuMyB0byA5LjAuNSBieSBAZGVwZW5kYWJvdCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEwNTZcclxuKiBCdW1wIHJhaWxzIGZyb20gYDVjYjVjYWRgIHRvIGA0MzUzMGI0YCBieSBAZGVwZW5kYWJvdCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEwNTlcclxuKiBBZGQgc291cmNlIGhlYWRlcnMgdG8gU3ludGggY2FsbHMgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTA2MlxyXG4qIEFkZCBzdGltdWx1cyB0b29sdGlwIGNvbnRyb2xsZXIgYnkgQHRvbnl2aW5jZSBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEwNjVcclxuKiBGZXRjaCBleGNoYW5nZSByYXRlcyBpbiBidWxrIGZyb20gc3ludGggYnkgQHRvbnl2aW5jZSBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEwNjlcclxuKiBGaXggbWluaXRlc3QgYXNzZXJ0X25pbCB3YXJuaW5nIGJ5IEB0b255dmluY2UgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMDcwXHJcbiogQWxsb3cgdXNlciB0byBhZGQgYnV5IGFuZCBzZWxsIHRyYWRlIHRyYW5zYWN0aW9ucyBmb3IgaW52ZXN0bWVudCBhY2NvdW50cyBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMDY2XHJcbiogVGVtcCBmaXggZm9yIG1pc3NpbmcgYWNjb3VudGFibGVzIG9uIHNlbGYgaG9zdGVkIGluc3RhbmNlcyBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMDcxXHJcblxyXG5cclxuKipGdWxsIENoYW5nZWxvZyoqOiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9jb21wYXJlL3YwLjEuMC1hbHBoYS4xMy4uLnYwLjEuMC1hbHBoYS4xNCIsInJlYWN0aW9ucyI6eyJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTY5NTkxMDI5L3JlYWN0aW9ucyIsInRvdGFsX2NvdW50IjoxNiwiKzEiOjAsIi0xIjowLCJsYXVnaCI6MCwiaG9vcmF5IjoxNiwiY29uZnVzZWQiOjAsImhlYXJ0IjowLCJyb2NrZXQiOjAsImV5ZXMiOjB9LCJtZW50aW9uc19jb3VudCI6M30seyJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTY4NTEwNTU5IiwiYXNzZXRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy8xNjg1MTA1NTkvYXNzZXRzIiwidXBsb2FkX3VybCI6Imh0dHBzOi8vdXBsb2Fkcy5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTY4NTEwNTU5L2Fzc2V0c3s/bmFtZSxsYWJlbH0iLCJodG1sX3VybCI6Imh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzL3RhZy92MC4xLjAtYWxwaGEuMTMiLCJpZCI6MTY4NTEwNTU5LCJhdXRob3IiOnsibG9naW4iOiJ6YWNoZ29sbCIsImlkIjoxNjY3NjE1Nywibm9kZV9pZCI6Ik1EUTZWWE5sY2pFMk5qYzJNVFUzIiwiYXZhdGFyX3VybCI6Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNjY3NjE1Nz92PTQiLCJncmF2YXRhcl9pZCI6IiIsInVybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwiLCJodG1sX3VybCI6Imh0dHBzOi8vZ2l0aHViLmNvbS96YWNoZ29sbCIsImZvbGxvd2Vyc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL2ZvbGxvd2VycyIsImZvbGxvd2luZ191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL2ZvbGxvd2luZ3svb3RoZXJfdXNlcn0iLCJnaXN0c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL2dpc3Rzey9naXN0X2lkfSIsInN0YXJyZWRfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9zdGFycmVkey9vd25lcn17L3JlcG99Iiwic3Vic2NyaXB0aW9uc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3N1YnNjcmlwdGlvbnMiLCJvcmdhbml6YXRpb25zX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvb3JncyIsInJlcG9zX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvcmVwb3MiLCJldmVudHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9ldmVudHN7L3ByaXZhY3l9IiwicmVjZWl2ZWRfZXZlbnRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvcmVjZWl2ZWRfZXZlbnRzIiwidHlwZSI6IlVzZXIiLCJ1c2VyX3ZpZXdfdHlwZSI6InB1YmxpYyIsInNpdGVfYWRtaW4iOmZhbHNlfSwibm9kZV9pZCI6IlJFX2t3RE9LX3R4SE00S0MwUmYiLCJ0YWdfbmFtZSI6InYwLjEuMC1hbHBoYS4xMyIsInRhcmdldF9jb21taXRpc2giOiJtYWluIiwibmFtZSI6InYwLjEuMC1hbHBoYS4xMyIsImRyYWZ0IjpmYWxzZSwicHJlcmVsZWFzZSI6dHJ1ZSwiY3JlYXRlZF9hdCI6IjIwMjQtMDgtMDJUMjE6MTA6MTZaIiwicHVibGlzaGVkX2F0IjoiMjAyNC0wOC0wMlQyMToxMDo1OVoiLCJhc3NldHMiOltdLCJ0YXJiYWxsX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS90YXJiYWxsL3YwLjEuMC1hbHBoYS4xMyIsInppcGJhbGxfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3ppcGJhbGwvdjAuMS4wLWFscGhhLjEzIiwiYm9keSI6IkNvbWluZyBvZmYgdGhlIGJhY2sgb2YgbGFzdCB3ZWVrJ3MgcmVsZWFzZSB3aGljaCBpbnRyb2R1Y2VkIGJhc2ljIGludmVzdG1lbnQgcG9ydGZvbGlvIHZpZXdzIGFuZCB0aGUgYWJpbGl0eSB0byBzeW5jIGludmVzdG1lbnQgaG9sZGluZ3MsIHRoaXMgd2VlaydzIHJlbGVhc2UgaW50cm9kdWNlcyBmdWxsIHN1cHBvcnQgZm9yIHN0b2NrIHByaWNlcyB3aXRoIHRoZSBbU3ludGggQVBJXShodHRwczovL3N5bnRoZmluYW5jZS5jb20vKSEgKHdoaWNoIGhhcyBhIGdlbmVyb3VzIGZyZWUgdGllciB0byBnZXQgc3RhcnRlZClcclxuXHJcblRoaXMgbWVhbnMgdGhhdCBpbnZlc3RtZW50IGFjY291bnQgdmlld3MgY2FuIG5vdyBwcm9wZXJseSBjYWxjdWxhdGUgYW5kIHNob3cgYW4gYWdncmVnYXRlZCBtYXJrZXQgdmFsdWUgb2YgYWxsIHRoZSBpbnZlc3RtZW50cyBpbiBpdCBhbmQgZ3JhY2VmdWxseSBoYW5kbGUgbWlzc2luZyBzdG9jayBwcmljZXMuXHJcblxyXG5JbiBhIGZ1dHVyZSByZWxlYXNlLCB1c2VycyB3aWxsIGhhdmUgZnVsbCBjb250cm9sIHRvIGNyZWF0ZSBidXkgJiBzZWxsIHRyYWRlcywgbWFuYWdlIHRoZWlyIGludmVzdG1lbnQgcG9ydGZvbGlvLCBhbmQgc2VlIHRvdGFsIHJldHVybnMgb3ZlciB2YXJpb3VzIHRpbWUgcGVyaW9kcyBhbG9uZ3NpZGUgdGhlaXIgaGlzdG9yaWNhbCB2YWx1ZSBncmFwaC5cclxuXHJcbmh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy9jMzliMTcwNi05N2E3LTRlM2UtYjU2OC05ZDliMDllMzhlMDVcclxuXHJcbiMjIFdoYXQncyBDaGFuZ2VkXHJcbiogRml4OiBPbWl0IGxheW91dCBmb3IgdHVyYm8gZnJhbWVzIHdpdGggY3VzdG9tIHNpZGViYXIgbGF5b3V0IGJ5IEBwcmFuYXZiYWJ1IGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTAyNFxyXG4qIGZpeDogbG9uZyBlbWFpbHMgb3ZlcmZsb3cgaW4gYWNjb3VudCBtZW51IGRyb3Bkb3duIGJ5IEBNaWtoYWlsV2FoaWIgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMDM0XHJcbiogRml4IGRlbW8gZGF0YSByZXNldCBieSBAdG9ueXZpbmNlIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTA0MVxyXG4qIEVuc3VyZSB0cmFuc2ZlciBuYW1lIGlzIHBvcHVsYXRlZCBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMDQyXHJcbiogQWRkIHNlY3VyaXR5IHByaWNlcyBwcm92aWRlciAoU3ludGggaW50ZWdyYXRpb24pIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEwMzlcclxuKiBTaG93IGNhc2ggKyBob2xkaW5ncyB2YWx1ZSBmb3IgaW52ZXN0bWVudCBhY2NvdW50IHZpZXcgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTA0NlxyXG5cclxuIyMgTmV3IENvbnRyaWJ1dG9yc1xyXG4qIEBwcmFuYXZiYWJ1IG1hZGUgdGhlaXIgZmlyc3QgY29udHJpYnV0aW9uIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTAyNFxyXG4qIEBNaWtoYWlsV2FoaWIgbWFkZSB0aGVpciBmaXJzdCBjb250cmlidXRpb24gaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMDM0XHJcblxyXG4qKkZ1bGwgQ2hhbmdlbG9nKio6IGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL2NvbXBhcmUvdjAuMS4wLWFscGhhLjEyLi4udjAuMS4wLWFscGhhLjEzIiwicmVhY3Rpb25zIjp7InVybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy8xNjg1MTA1NTkvcmVhY3Rpb25zIiwidG90YWxfY291bnQiOjMwLCIrMSI6NCwiLTEiOjAsImxhdWdoIjowLCJob29yYXkiOjEzLCJjb25mdXNlZCI6MCwiaGVhcnQiOjYsInJvY2tldCI6NywiZXllcyI6MH0sIm1lbnRpb25zX2NvdW50Ijo0fSx7InVybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy8xNjczODIyNzciLCJhc3NldHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE2NzM4MjI3Ny9hc3NldHMiLCJ1cGxvYWRfdXJsIjoiaHR0cHM6Ly91cGxvYWRzLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy8xNjczODIyNzcvYXNzZXRzez9uYW1lLGxhYmVsfSIsImh0bWxfdXJsIjoiaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvdGFnL3YwLjEuMC1hbHBoYS4xMiIsImlkIjoxNjczODIyNzcsImF1dGhvciI6eyJsb2dpbiI6InphY2hnb2xsIiwiaWQiOjE2Njc2MTU3LCJub2RlX2lkIjoiTURRNlZYTmxjakUyTmpjMk1UVTMiLCJhdmF0YXJfdXJsIjoiaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE2Njc2MTU3P3Y9NCIsImdyYXZhdGFyX2lkIjoiIiwidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbCIsImh0bWxfdXJsIjoiaHR0cHM6Ly9naXRodWIuY29tL3phY2hnb2xsIiwiZm9sbG93ZXJzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZm9sbG93ZXJzIiwiZm9sbG93aW5nX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZm9sbG93aW5ney9vdGhlcl91c2VyfSIsImdpc3RzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZ2lzdHN7L2dpc3RfaWR9Iiwic3RhcnJlZF91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3N0YXJyZWR7L293bmVyfXsvcmVwb30iLCJzdWJzY3JpcHRpb25zX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvc3Vic2NyaXB0aW9ucyIsIm9yZ2FuaXphdGlvbnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9vcmdzIiwicmVwb3NfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9yZXBvcyIsImV2ZW50c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL2V2ZW50c3svcHJpdmFjeX0iLCJyZWNlaXZlZF9ldmVudHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9yZWNlaXZlZF9ldmVudHMiLCJ0eXBlIjoiVXNlciIsInVzZXJfdmlld190eXBlIjoicHVibGljIiwic2l0ZV9hZG1pbiI6ZmFsc2V9LCJub2RlX2lkIjoiUkVfa3dET0tfdHhITTRKLWcwRiIsInRhZ19uYW1lIjoidjAuMS4wLWFscGhhLjEyIiwidGFyZ2V0X2NvbW1pdGlzaCI6Im1haW4iLCJuYW1lIjoidjAuMS4wLWFscGhhLjEyIiwiZHJhZnQiOmZhbHNlLCJwcmVyZWxlYXNlIjp0cnVlLCJjcmVhdGVkX2F0IjoiMjAyNC0wNy0yNlQxNDo0ODoyMVoiLCJwdWJsaXNoZWRfYXQiOiIyMDI0LTA3LTI2VDE0OjUwOjM2WiIsImFzc2V0cyI6W10sInRhcmJhbGxfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3RhcmJhbGwvdjAuMS4wLWFscGhhLjEyIiwiemlwYmFsbF91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvemlwYmFsbC92MC4xLjAtYWxwaGEuMTIiLCJib2R5IjoiIyMgV2hhdCdzIENoYW5nZWRcclxuKiBTZXQgbGFzdF9sb2dpbl9hdCBvbmx5IG9uIGxvZ2luIGluc3RlYWQgb2YgZXZlcnkgc2luZ2xlIGFjdGlvbiBieSBAdG9ueXZpbmNlIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTAxN1xyXG4qIEJ1bXAgcGFneSB3aXRoIGZpeCBmb3IgYnJlYWtpbmcgY2hhbmdlcyAgYnkgQHRvbnl2aW5jZSBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEwMTZcclxuKiBGaXggZm9ybSBsYWJlbHMgYnkgQHRvbnl2aW5jZSBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEwMDRcclxuKiBGaXggY3VyZW5jeSBmb3JtYXQgYnkgQEp1bGl1c01pZWxpYXVza2FzIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTAyMFxyXG4qIEltcGxlbWVudCBhdXRvIGZhbWlseSBzeW5jcyBvbiBsb2dpbiBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMDIxXHJcbiogQmFzaWMgUG9ydGZvbGlvIFZpZXdzIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzEwMDBcclxuKiBGaXggY3VycmVuY3kgZm9ybWF0dGluZyBpbiBwaWUgY2hhcnQgdmlzdWFsaXphdGlvbiBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMDIyXHJcbiogU2V0IG1pbmltdW0gc3VwcG9ydGVkIGRhdGUgZm9yIGFjY291bnQgZW50cmllcyBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC8xMDIzXHJcblxyXG4jIyBOZXcgQ29udHJpYnV0b3JzXHJcbiogQEp1bGl1c01pZWxpYXVza2FzIG1hZGUgdGhlaXIgZmlyc3QgY29udHJpYnV0aW9uIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvMTAyMFxyXG5cclxuKipGdWxsIENoYW5nZWxvZyoqOiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9jb21wYXJlL3YwLjEuMC1hbHBoYS4xMS4uLnYwLjEuMC1hbHBoYS4xMiIsIm1lbnRpb25zX2NvdW50IjozfSx7InVybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy8xNjYyOTY5NTMiLCJhc3NldHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE2NjI5Njk1My9hc3NldHMiLCJ1cGxvYWRfdXJsIjoiaHR0cHM6Ly91cGxvYWRzLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy8xNjYyOTY5NTMvYXNzZXRzez9uYW1lLGxhYmVsfSIsImh0bWxfdXJsIjoiaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvdGFnL3YwLjEuMC1hbHBoYS4xMSIsImlkIjoxNjYyOTY5NTMsImF1dGhvciI6eyJsb2dpbiI6InphY2hnb2xsIiwiaWQiOjE2Njc2MTU3LCJub2RlX2lkIjoiTURRNlZYTmxjakUyTmpjMk1UVTMiLCJhdmF0YXJfdXJsIjoiaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE2Njc2MTU3P3Y9NCIsImdyYXZhdGFyX2lkIjoiIiwidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbCIsImh0bWxfdXJsIjoiaHR0cHM6Ly9naXRodWIuY29tL3phY2hnb2xsIiwiZm9sbG93ZXJzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZm9sbG93ZXJzIiwiZm9sbG93aW5nX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZm9sbG93aW5ney9vdGhlcl91c2VyfSIsImdpc3RzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZ2lzdHN7L2dpc3RfaWR9Iiwic3RhcnJlZF91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3N0YXJyZWR7L293bmVyfXsvcmVwb30iLCJzdWJzY3JpcHRpb25zX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvc3Vic2NyaXB0aW9ucyIsIm9yZ2FuaXphdGlvbnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9vcmdzIiwicmVwb3NfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9yZXBvcyIsImV2ZW50c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL2V2ZW50c3svcHJpdmFjeX0iLCJyZWNlaXZlZF9ldmVudHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9yZWNlaXZlZF9ldmVudHMiLCJ0eXBlIjoiVXNlciIsInVzZXJfdmlld190eXBlIjoicHVibGljIiwic2l0ZV9hZG1pbiI6ZmFsc2V9LCJub2RlX2lkIjoiUkVfa3dET0tfdHhITTRKNlgxNSIsInRhZ19uYW1lIjoidjAuMS4wLWFscGhhLjExIiwidGFyZ2V0X2NvbW1pdGlzaCI6Im1haW4iLCJuYW1lIjoidjAuMS4wLWFscGhhLjExIiwiZHJhZnQiOmZhbHNlLCJwcmVyZWxlYXNlIjp0cnVlLCJjcmVhdGVkX2F0IjoiMjAyNC0wNy0xOVQyMDowOTowNVoiLCJwdWJsaXNoZWRfYXQiOiIyMDI0LTA3LTE5VDIwOjA5OjM4WiIsImFzc2V0cyI6W10sInRhcmJhbGxfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3RhcmJhbGwvdjAuMS4wLWFscGhhLjExIiwiemlwYmFsbF91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvemlwYmFsbC92MC4xLjAtYWxwaGEuMTEiLCJib2R5IjoiIyMgV2hhdCdzIENoYW5nZWRcclxuKiBXcmFwIGFjY291bnQgdXBkYXRlIGluIGEgdHJhbnNhY3Rpb24gYnkgQGFjY2Vzc2QgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC85ODVcclxuKiBBbGxvdyBDU1YgZmlsZSB1cGxvYWQgaW4gaW1wb3J0IGZsb3cgYnkgQHRvbnl2aW5jZSBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzk4NlxyXG4qIFNhbml0aXplIGlucHV0IGZvciBpbGlrZSBpbiBBY2NvdW50OjpFbnRyeS5zZWFyY2ggYnkgQHRvbnl2aW5jZSBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzk4OFxyXG4qIEludmVzdG1lbnQgUG9ydGZvbGlvIFN5bmMgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvOTc0XHJcbiogTW9yZSBjb21wb3NhYmxlIGZvcm1zIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzk4OVxyXG4qIEFkZCBkZWZhdWx0IGN1cnJlbmNpZXMgdG8gZm9ybXMgYmFzZWQgb24gcHJlZmVyZW5jZSBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC85OTRcclxuKiBCdWlsZCBzYW1wbGUgcG9ydGZvbGlvIGRldGVybWluaXN0aWNhbGx5IGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzk5M1xyXG4qIEFkZCBjdXJyZW5jeSB2YWxpZGF0aW9uIHRvIGFjY291bnQsIHVwZGF0ZSBkZW1vIGRhdGEgZ2VuZXJhdG9yIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzk5NlxyXG4qIFN5bmMgbm90aWZpY2F0aW9ucyBhbmQgdHJvdWJsZXNob290aW5nIGd1aWRlcyBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC85OThcclxuXHJcbiMjIE5ldyBDb250cmlidXRvcnNcclxuKiBAYWNjZXNzZCBtYWRlIHRoZWlyIGZpcnN0IGNvbnRyaWJ1dGlvbiBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzk4NVxyXG5cclxuKipGdWxsIENoYW5nZWxvZyoqOiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9jb21wYXJlL3YwLjEuMC1hbHBoYS4xMC4uLnYwLjEuMC1hbHBoYS4xMSIsInJlYWN0aW9ucyI6eyJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTY2Mjk2OTUzL3JlYWN0aW9ucyIsInRvdGFsX2NvdW50IjoxNCwiKzEiOjAsIi0xIjowLCJsYXVnaCI6MCwiaG9vcmF5IjowLCJjb25mdXNlZCI6MCwiaGVhcnQiOjAsInJvY2tldCI6MTQsImV5ZXMiOjB9LCJtZW50aW9uc19jb3VudCI6M30seyJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTY1MjYzMzI0IiwiYXNzZXRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy8xNjUyNjMzMjQvYXNzZXRzIiwidXBsb2FkX3VybCI6Imh0dHBzOi8vdXBsb2Fkcy5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTY1MjYzMzI0L2Fzc2V0c3s/bmFtZSxsYWJlbH0iLCJodG1sX3VybCI6Imh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzL3RhZy92MC4xLjAtYWxwaGEuMTAiLCJpZCI6MTY1MjYzMzI0LCJhdXRob3IiOnsibG9naW4iOiJ6YWNoZ29sbCIsImlkIjoxNjY3NjE1Nywibm9kZV9pZCI6Ik1EUTZWWE5sY2pFMk5qYzJNVFUzIiwiYXZhdGFyX3VybCI6Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNjY3NjE1Nz92PTQiLCJncmF2YXRhcl9pZCI6IiIsInVybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwiLCJodG1sX3VybCI6Imh0dHBzOi8vZ2l0aHViLmNvbS96YWNoZ29sbCIsImZvbGxvd2Vyc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL2ZvbGxvd2VycyIsImZvbGxvd2luZ191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL2ZvbGxvd2luZ3svb3RoZXJfdXNlcn0iLCJnaXN0c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL2dpc3Rzey9naXN0X2lkfSIsInN0YXJyZWRfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9zdGFycmVkey9vd25lcn17L3JlcG99Iiwic3Vic2NyaXB0aW9uc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3N1YnNjcmlwdGlvbnMiLCJvcmdhbml6YXRpb25zX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvb3JncyIsInJlcG9zX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvcmVwb3MiLCJldmVudHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9ldmVudHN7L3ByaXZhY3l9IiwicmVjZWl2ZWRfZXZlbnRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvcmVjZWl2ZWRfZXZlbnRzIiwidHlwZSI6IlVzZXIiLCJ1c2VyX3ZpZXdfdHlwZSI6InB1YmxpYyIsInNpdGVfYWRtaW4iOmZhbHNlfSwibm9kZV9pZCI6IlJFX2t3RE9LX3R4SE00SjJiZmMiLCJ0YWdfbmFtZSI6InYwLjEuMC1hbHBoYS4xMCIsInRhcmdldF9jb21taXRpc2giOiJtYWluIiwibmFtZSI6InYwLjEuMC1hbHBoYS4xMCIsImRyYWZ0IjpmYWxzZSwicHJlcmVsZWFzZSI6dHJ1ZSwiY3JlYXRlZF9hdCI6IjIwMjQtMDctMTJUMjI6Mzg6MTdaIiwicHVibGlzaGVkX2F0IjoiMjAyNC0wNy0xMlQyMjozOToxMVoiLCJhc3NldHMiOltdLCJ0YXJiYWxsX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS90YXJiYWxsL3YwLjEuMC1hbHBoYS4xMCIsInppcGJhbGxfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3ppcGJhbGwvdjAuMS4wLWFscGhhLjEwIiwiYm9keSI6IiMjIFdoYXQncyBDaGFuZ2VkXHJcbiogQWRkIGVycm9yIGhhbmRsaW5nIGZvciBBY2NvdW50c0NvbnRyb2xsZXIjY3JlYXRlIGJ5IEB0b255dmluY2UgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC85NTdcclxuKiBmaXg6ICM5NTEgcG9pbnRlciBjdXJzb3IgYW5kIGJnIGhvdmVyIGZvciBpbXBvcnQgZmxvdyBidXR0b25zIGJ5IEBNYWdudXNISmVuc2VuIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvOTU0XHJcbiogSGFuZGxlIG1pc3NpbmcgZXhjaGFuZ2UgcmF0ZSBwcm92aWRlciwgYWxsb3cgZmFsbGJhY2sgZm9yIG1pc3NpbmcgcmF0ZXMgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvOTU1XHJcbiogQWRkIG1pc3NpbmcgbWlncmF0aW9ucyBmb3IgZ29vZF9qb2IgNHggYnkgQHRvbnl2aW5jZSBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzk2N1xyXG4qIEFjY291bnQ6OlN5bmMgbW9kZWwgYW5kIHRlc3QgZml4dHVyZSBzaW1wbGlmaWNhdGlvbnMgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvOTY4XHJcbiogRGVtbyBGYW1pbHkgZGF0YSB1cGRhdGVzIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzk3MlxyXG4qIE1ha2UgYmFsYW5jZSBlZGl0aW5nIGVhc2llciBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC85NzZcclxuXHJcbiMjIE5ldyBDb250cmlidXRvcnNcclxuKiBATWFnbnVzSEplbnNlbiBtYWRlIHRoZWlyIGZpcnN0IGNvbnRyaWJ1dGlvbiBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzk1NFxyXG5cclxuKipGdWxsIENoYW5nZWxvZyoqOiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9jb21wYXJlL3YwLjEuMC1hbHBoYS45Li4udjAuMS4wLWFscGhhLjEwIiwicmVhY3Rpb25zIjp7InVybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy8xNjUyNjMzMjQvcmVhY3Rpb25zIiwidG90YWxfY291bnQiOjcsIisxIjo3LCItMSI6MCwibGF1Z2giOjAsImhvb3JheSI6MCwiY29uZnVzZWQiOjAsImhlYXJ0IjowLCJyb2NrZXQiOjAsImV5ZXMiOjB9LCJtZW50aW9uc19jb3VudCI6M30seyJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTY0MTk4ODQ4IiwiYXNzZXRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy8xNjQxOTg4NDgvYXNzZXRzIiwidXBsb2FkX3VybCI6Imh0dHBzOi8vdXBsb2Fkcy5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTY0MTk4ODQ4L2Fzc2V0c3s/bmFtZSxsYWJlbH0iLCJodG1sX3VybCI6Imh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzL3RhZy92MC4xLjAtYWxwaGEuOSIsImlkIjoxNjQxOTg4NDgsImF1dGhvciI6eyJsb2dpbiI6InphY2hnb2xsIiwiaWQiOjE2Njc2MTU3LCJub2RlX2lkIjoiTURRNlZYTmxjakUyTmpjMk1UVTMiLCJhdmF0YXJfdXJsIjoiaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE2Njc2MTU3P3Y9NCIsImdyYXZhdGFyX2lkIjoiIiwidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbCIsImh0bWxfdXJsIjoiaHR0cHM6Ly9naXRodWIuY29tL3phY2hnb2xsIiwiZm9sbG93ZXJzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZm9sbG93ZXJzIiwiZm9sbG93aW5nX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZm9sbG93aW5ney9vdGhlcl91c2VyfSIsImdpc3RzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZ2lzdHN7L2dpc3RfaWR9Iiwic3RhcnJlZF91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3N0YXJyZWR7L293bmVyfXsvcmVwb30iLCJzdWJzY3JpcHRpb25zX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvc3Vic2NyaXB0aW9ucyIsIm9yZ2FuaXphdGlvbnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9vcmdzIiwicmVwb3NfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9yZXBvcyIsImV2ZW50c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL2V2ZW50c3svcHJpdmFjeX0iLCJyZWNlaXZlZF9ldmVudHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9yZWNlaXZlZF9ldmVudHMiLCJ0eXBlIjoiVXNlciIsInVzZXJfdmlld190eXBlIjoicHVibGljIiwic2l0ZV9hZG1pbiI6ZmFsc2V9LCJub2RlX2lkIjoiUkVfa3dET0tfdHhITTRKeVhuQSIsInRhZ19uYW1lIjoidjAuMS4wLWFscGhhLjkiLCJ0YXJnZXRfY29tbWl0aXNoIjoibWFpbiIsIm5hbWUiOiJ2MC4xLjAtYWxwaGEuOSIsImRyYWZ0IjpmYWxzZSwicHJlcmVsZWFzZSI6dHJ1ZSwiY3JlYXRlZF9hdCI6IjIwMjQtMDctMDVUMTg6MTY6NDFaIiwicHVibGlzaGVkX2F0IjoiMjAyNC0wNy0wNVQxODoxNzoyMloiLCJhc3NldHMiOltdLCJ0YXJiYWxsX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS90YXJiYWxsL3YwLjEuMC1hbHBoYS45IiwiemlwYmFsbF91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvemlwYmFsbC92MC4xLjAtYWxwaGEuOSIsImJvZHkiOiIjIyBXaGF0J3MgQ2hhbmdlZFxyXG4qIEFjY291bnQ6OkVudHJ5IERlbGVnYXRlZCBUeXBlIChuYW1lc3BhY2UgdXBkYXRlcyBwYXJ0IDcpIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzkyM1xyXG4qIEZpeCBkZWNpbWFsIGRpc3BsYXkgZm9yIGV1cm8gY3VycmVuY3kgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvOTM3XHJcbiogRW5hYmxlIHVwZGF0aW5nIEFjY291bnQ6OkVudHJ5I2Ftb3VudCBieSBAdG9ueXZpbmNlIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvOTQyXHJcbiogRml4IGJ1ZyB3aGVyZSB0cmFuc2FjdGlvbnMgd2VyZSBkdXBsaWNhdGVkIGluIGltcG9ydCBjb25maXJtIGJ5IEBsamh1cnN0IGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvOTQxXHJcbiogRW5xdWUgYWNjb3VudCBzeW5jIGpvYiBhZnRlciBjcmVhdGluZyB0cmFuc2ZlciBieSBAdG9ueXZpbmNlIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvOTQ2XHJcbiogRW5hYmxlIHN5bmNpbmcgYWxsIGFjY291bnRzIGluIG9uZSBjbGljayBieSBAdG9ueXZpbmNlIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvOTQ4XHJcbiogVXBkYXRlIGRvY2tlciBjb21wb3NlIGV4YW1wbGUgd2l0aCBmaXhlZCBzdG9yYWdlIHZvbHVtZSBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC85NTBcclxuXHJcbiMjIE5ldyBDb250cmlidXRvcnNcclxuKiBAbGpodXJzdCBtYWRlIHRoZWlyIGZpcnN0IGNvbnRyaWJ1dGlvbiBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzk0MVxyXG5cclxuKipGdWxsIENoYW5nZWxvZyoqOiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9jb21wYXJlL3YwLjEuMC1hbHBoYS44Li4udjAuMS4wLWFscGhhLjkiLCJyZWFjdGlvbnMiOnsidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE2NDE5ODg0OC9yZWFjdGlvbnMiLCJ0b3RhbF9jb3VudCI6OSwiKzEiOjksIi0xIjowLCJsYXVnaCI6MCwiaG9vcmF5IjowLCJjb25mdXNlZCI6MCwiaGVhcnQiOjAsInJvY2tldCI6MCwiZXllcyI6MH0sIm1lbnRpb25zX2NvdW50IjozfSx7InVybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy8xNjMwNjU4NDQiLCJhc3NldHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE2MzA2NTg0NC9hc3NldHMiLCJ1cGxvYWRfdXJsIjoiaHR0cHM6Ly91cGxvYWRzLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy8xNjMwNjU4NDQvYXNzZXRzez9uYW1lLGxhYmVsfSIsImh0bWxfdXJsIjoiaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvdGFnL3YwLjEuMC1hbHBoYS44IiwiaWQiOjE2MzA2NTg0NCwiYXV0aG9yIjp7ImxvZ2luIjoiemFjaGdvbGwiLCJpZCI6MTY2NzYxNTcsIm5vZGVfaWQiOiJNRFE2VlhObGNqRTJOamMyTVRVMyIsImF2YXRhcl91cmwiOiJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTY2NzYxNTc/dj00IiwiZ3JhdmF0YXJfaWQiOiIiLCJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsIiwiaHRtbF91cmwiOiJodHRwczovL2dpdGh1Yi5jb20vemFjaGdvbGwiLCJmb2xsb3dlcnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9mb2xsb3dlcnMiLCJmb2xsb3dpbmdfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9mb2xsb3dpbmd7L290aGVyX3VzZXJ9IiwiZ2lzdHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9naXN0c3svZ2lzdF9pZH0iLCJzdGFycmVkX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvc3RhcnJlZHsvb3duZXJ9ey9yZXBvfSIsInN1YnNjcmlwdGlvbnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9zdWJzY3JpcHRpb25zIiwib3JnYW5pemF0aW9uc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL29yZ3MiLCJyZXBvc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3JlcG9zIiwiZXZlbnRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZXZlbnRzey9wcml2YWN5fSIsInJlY2VpdmVkX2V2ZW50c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3JlY2VpdmVkX2V2ZW50cyIsInR5cGUiOiJVc2VyIiwidXNlcl92aWV3X3R5cGUiOiJwdWJsaWMiLCJzaXRlX2FkbWluIjpmYWxzZX0sIm5vZGVfaWQiOiJSRV9rd0RPS190eEhNNEp1Q18wIiwidGFnX25hbWUiOiJ2MC4xLjAtYWxwaGEuOCIsInRhcmdldF9jb21taXRpc2giOiJtYWluIiwibmFtZSI6InYwLjEuMC1hbHBoYS44IiwiZHJhZnQiOmZhbHNlLCJwcmVyZWxlYXNlIjp0cnVlLCJjcmVhdGVkX2F0IjoiMjAyNC0wNi0yOFQyMToyMjoyNloiLCJwdWJsaXNoZWRfYXQiOiIyMDI0LTA2LTI4VDIxOjIzOjMzWiIsImFzc2V0cyI6W10sInRhcmJhbGxfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3RhcmJhbGwvdjAuMS4wLWFscGhhLjgiLCJ6aXBiYWxsX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS96aXBiYWxsL3YwLjEuMC1hbHBoYS44IiwiYm9keSI6IiMjIFdoYXQncyBDaGFuZ2VkXHJcbiogVW5pZnkgcHJpbWFyeSBidXR0b24gc3R5bGVzIGFuZCBjaGFuZ2UgY3Vyc29yIG9uIGFjY291bnQgZ3JvdXAgYnkgQGpha3Via290dG5hdWVyIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvOTA1XHJcbiogRml4IGlzc3VlICM4NjE6IENvcnJlY3QgaGVhZGVyIHNlbGVjdGlvbiBsb2dpYyBpbiBnZXRfc2VsZWN0ZWRfaGVhZGVyX2Zvcl9maWVsZCBtZXRob2QgYnkgQGlnb3JjYXJ2YWxoaCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzkxOFxyXG4qIEZpeCAjOTEwIGJ5IEB0b255dmluY2UgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC85MTdcclxuKiBBY2NvdW50IG5hbWVzcGFjZSB1cGRhdGVzOiBwYXJ0IDYgKHRyYW5zYWN0aW9ucykgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvOTA0XHJcbiogaW1wcm92ZW1lbnQvIzg5MC9jbGVhbl91cF90b2FzdF9ub3RpZmljYXRpb25fc3R5bGVzX2FuZF9hbGxvd191c2VyX3RvX2Nsb3NlX29uLWRlbWFuZCBieSBAZXZhbmdlbG9zLWNvbSBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzkxOVxyXG4qIEZpeCAjOTIxIGJ5IEB0b255dmluY2UgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC85MjJcclxuXHJcbiMjIE5ldyBDb250cmlidXRvcnNcclxuKiBAaWdvcmNhcnZhbGhoIG1hZGUgdGhlaXIgZmlyc3QgY29udHJpYnV0aW9uIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvOTE4XHJcbiogQGV2YW5nZWxvcy1jb20gbWFkZSB0aGVpciBmaXJzdCBjb250cmlidXRpb24gaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC85MTlcclxuXHJcbioqRnVsbCBDaGFuZ2Vsb2cqKjogaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvY29tcGFyZS92MC4xLjAtYWxwaGEuNy4uLnYwLjEuMC1hbHBoYS44IiwicmVhY3Rpb25zIjp7InVybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy8xNjMwNjU4NDQvcmVhY3Rpb25zIiwidG90YWxfY291bnQiOjEyLCIrMSI6OSwiLTEiOjAsImxhdWdoIjowLCJob29yYXkiOjAsImNvbmZ1c2VkIjowLCJoZWFydCI6MSwicm9ja2V0IjoyLCJleWVzIjowfSwibWVudGlvbnNfY291bnQiOjV9LHsidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE2MTc0MjEzMCIsImFzc2V0c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTYxNzQyMTMwL2Fzc2V0cyIsInVwbG9hZF91cmwiOiJodHRwczovL3VwbG9hZHMuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE2MTc0MjEzMC9hc3NldHN7P25hbWUsbGFiZWx9IiwiaHRtbF91cmwiOiJodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy90YWcvdjAuMS4wLWFscGhhLjciLCJpZCI6MTYxNzQyMTMwLCJhdXRob3IiOnsibG9naW4iOiJ6YWNoZ29sbCIsImlkIjoxNjY3NjE1Nywibm9kZV9pZCI6Ik1EUTZWWE5sY2pFMk5qYzJNVFUzIiwiYXZhdGFyX3VybCI6Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNjY3NjE1Nz92PTQiLCJncmF2YXRhcl9pZCI6IiIsInVybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwiLCJodG1sX3VybCI6Imh0dHBzOi8vZ2l0aHViLmNvbS96YWNoZ29sbCIsImZvbGxvd2Vyc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL2ZvbGxvd2VycyIsImZvbGxvd2luZ191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL2ZvbGxvd2luZ3svb3RoZXJfdXNlcn0iLCJnaXN0c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL2dpc3Rzey9naXN0X2lkfSIsInN0YXJyZWRfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9zdGFycmVkey9vd25lcn17L3JlcG99Iiwic3Vic2NyaXB0aW9uc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3N1YnNjcmlwdGlvbnMiLCJvcmdhbml6YXRpb25zX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvb3JncyIsInJlcG9zX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvcmVwb3MiLCJldmVudHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9ldmVudHN7L3ByaXZhY3l9IiwicmVjZWl2ZWRfZXZlbnRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvcmVjZWl2ZWRfZXZlbnRzIiwidHlwZSI6IlVzZXIiLCJ1c2VyX3ZpZXdfdHlwZSI6InB1YmxpYyIsInNpdGVfYWRtaW4iOmZhbHNlfSwibm9kZV9pZCI6IlJFX2t3RE9LX3R4SE00Sm9fMHkiLCJ0YWdfbmFtZSI6InYwLjEuMC1hbHBoYS43IiwidGFyZ2V0X2NvbW1pdGlzaCI6Im1haW4iLCJuYW1lIjoidjAuMS4wLWFscGhhLjciLCJkcmFmdCI6ZmFsc2UsInByZXJlbGVhc2UiOnRydWUsImNyZWF0ZWRfYXQiOiIyMDI0LTA2LTIxVDIxOjA0OjU5WiIsInB1Ymxpc2hlZF9hdCI6IjIwMjQtMDYtMjFUMjE6MDg6MDRaIiwiYXNzZXRzIjpbXSwidGFyYmFsbF91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvdGFyYmFsbC92MC4xLjAtYWxwaGEuNyIsInppcGJhbGxfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3ppcGJhbGwvdjAuMS4wLWFscGhhLjciLCJib2R5IjoiIyMgV2hhdCdzIENoYW5nZWRcclxuXHJcbk1heWJlIG5vdyBzdXBwb3J0cyB0cmFuc2ZlciBtYXRjaGluZyDwn6WzIPCfjK4gXHJcblxyXG5UaGlzIHNpZ25pZmljYW50bHkgaW1wcm92ZXMgaW5jb21lIGFuZCBleHBlbnNlIGNhbGN1bGF0aW9ucyBieSBleGNsdWRpbmcgdHJhbnNmZXJzIGZyb20gdGhlIGNhbGN1bGF0aW9uOlxyXG5cclxuaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvYXNzZXRzLzE2Njc2MTU3L2ExY2RlNDk0LWI4OWYtNDY2YS04Yzc0LWRhMTk0OTM0Mjg4YVxyXG5cclxuKiBBZGQgbWVyY2hhbnQgc2VsZWN0IHdoZW4gZWRpdGluZyB0cmFuc2FjdGlvbiBieSBAamFrdWJrb3R0bmF1ZXIgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC84ODVcclxuKiBUcmFuc2FjdGlvbiB0cmFuc2ZlcnMsIHBheW1lbnRzLCBhbmQgbWF0Y2hpbmcgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvODgzXHJcbiogRW5zdXJlIGNvcnJlY3QgZm9ybSdzIGhpZGRlbiBpbnB1dCBmb3Igc2VsZWN0ZWRJZHMgYnkgQHppcmFxeW91bmcgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC84OTFcclxuKiBBY2NvdW50IG5hbWVzcGFjZSB1cGRhdGVzOiBwYXJ0IDEgKGFjY291bnRhYmxlIHR5cGVzKSBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC84OTNcclxuKiBBY2NvdW50IG5hbWVzcGFjZSB1cGRhdGVzOiBwYXJ0IDIgKGNhdGVnb3JpZXMpIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzg5NFxyXG4qIEFjY291bnQgbmFtZXNwYWNlIHVwZGF0ZXM6IHBhcnQgMyAobWVyY2hhbnRzKSBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC84OTVcclxuKiBBY2NvdW50IG5hbWVzcGFjZSB1cGRhdGVzOiBwYXJ0IDQgKHRyYW5zZmVycywgc2luZ3VsYXIgbmFtZXNwYWNpbmcpIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzg5NlxyXG4qIEZpeCBCdWc6IGFmdGVyIGVkaXRpbmcgYW4gYWNjb3VudCBoaXN0b3J5IHZhbHVlLCBpdCByZXF1aXJlcyAyIGNsaWNrcyB0byBjbG9zZSB0aGUgbWVudSBieSBAdG9ueXZpbmNlIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvOTAwXHJcbiogZmVhdDogVHJhbnNhY3Rpb24gcGFnaW5hdGlvbiBJbXByb3ZlbWVudHMgYnkgQGthcmFua2lyaSBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzg3M1xyXG4qIEZpeCB0cmFuc2ZlciBub3RlIG92ZXJmbG93IHN0eWxlIGJ5IEBqYWt1YmtvdHRuYXVlciBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzkwMlxyXG4qIEFjY291bnQgbmFtZXNwYWNlIHVwZGF0ZXM6IHBhcnQgNSAodmFsdWF0aW9ucykgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvOTAxXHJcbiogQWxsb3cgdHJhbnNmZXJzIGJhc2VkIG9uIHRyYW5zYWN0aW9ucyBpbiBkaWZmZXJlbnQgY3VycmVuY2llcyBieSBAamFrdWJrb3R0bmF1ZXIgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC85MDNcclxuXHJcbiMjIE5ldyBDb250cmlidXRvcnNcclxuKiBAemlyYXF5b3VuZyBtYWRlIHRoZWlyIGZpcnN0IGNvbnRyaWJ1dGlvbiBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzg5MVxyXG4qIEB0b255dmluY2UgbWFkZSB0aGVpciBmaXJzdCBjb250cmlidXRpb24gaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC85MDBcclxuKiBAa2FyYW5raXJpIG1hZGUgdGhlaXIgZmlyc3QgY29udHJpYnV0aW9uIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvODczXHJcblxyXG4qKkZ1bGwgQ2hhbmdlbG9nKio6IGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL2NvbXBhcmUvdjAuMS4wLWFscGhhLjYuLi52MC4xLjAtYWxwaGEuNyIsInJlYWN0aW9ucyI6eyJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTYxNzQyMTMwL3JlYWN0aW9ucyIsInRvdGFsX2NvdW50IjoyNiwiKzEiOjAsIi0xIjowLCJsYXVnaCI6MCwiaG9vcmF5Ijo5LCJjb25mdXNlZCI6MCwiaGVhcnQiOjcsInJvY2tldCI6OSwiZXllcyI6MX0sIm1lbnRpb25zX2NvdW50Ijo1fSx7InVybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy8xNjA1NjY0NzEiLCJhc3NldHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE2MDU2NjQ3MS9hc3NldHMiLCJ1cGxvYWRfdXJsIjoiaHR0cHM6Ly91cGxvYWRzLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy8xNjA1NjY0NzEvYXNzZXRzez9uYW1lLGxhYmVsfSIsImh0bWxfdXJsIjoiaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvdGFnL3YwLjEuMC1hbHBoYS42IiwiaWQiOjE2MDU2NjQ3MSwiYXV0aG9yIjp7ImxvZ2luIjoiemFjaGdvbGwiLCJpZCI6MTY2NzYxNTcsIm5vZGVfaWQiOiJNRFE2VlhObGNqRTJOamMyTVRVMyIsImF2YXRhcl91cmwiOiJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTY2NzYxNTc/dj00IiwiZ3JhdmF0YXJfaWQiOiIiLCJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsIiwiaHRtbF91cmwiOiJodHRwczovL2dpdGh1Yi5jb20vemFjaGdvbGwiLCJmb2xsb3dlcnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9mb2xsb3dlcnMiLCJmb2xsb3dpbmdfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9mb2xsb3dpbmd7L290aGVyX3VzZXJ9IiwiZ2lzdHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9naXN0c3svZ2lzdF9pZH0iLCJzdGFycmVkX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvc3RhcnJlZHsvb3duZXJ9ey9yZXBvfSIsInN1YnNjcmlwdGlvbnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9zdWJzY3JpcHRpb25zIiwib3JnYW5pemF0aW9uc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL29yZ3MiLCJyZXBvc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3JlcG9zIiwiZXZlbnRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZXZlbnRzey9wcml2YWN5fSIsInJlY2VpdmVkX2V2ZW50c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3JlY2VpdmVkX2V2ZW50cyIsInR5cGUiOiJVc2VyIiwidXNlcl92aWV3X3R5cGUiOiJwdWJsaWMiLCJzaXRlX2FkbWluIjpmYWxzZX0sIm5vZGVfaWQiOiJSRV9rd0RPS190eEhNNEprZ3pIIiwidGFnX25hbWUiOiJ2MC4xLjAtYWxwaGEuNiIsInRhcmdldF9jb21taXRpc2giOiJtYWluIiwibmFtZSI6InYwLjEuMC1hbHBoYS42IiwiZHJhZnQiOmZhbHNlLCJwcmVyZWxlYXNlIjp0cnVlLCJjcmVhdGVkX2F0IjoiMjAyNC0wNi0xNFQyMDo1MDowOFoiLCJwdWJsaXNoZWRfYXQiOiIyMDI0LTA2LTE0VDIxOjAxOjA0WiIsImFzc2V0cyI6W10sInRhcmJhbGxfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3RhcmJhbGwvdjAuMS4wLWFscGhhLjYiLCJ6aXBiYWxsX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS96aXBiYWxsL3YwLjEuMC1hbHBoYS42IiwiYm9keSI6IiMjIFdoYXQncyBDaGFuZ2VkXHJcblxyXG5UaGlzIHJlbGVhc2UgY29tZXMgd2l0aCBhIGNvbXBsZXRlIG92ZXJoYXVsIG9mIG91ciBEb2NrZXIgc2V0dXAgZ3VpZGUsIGJldHRlciBpbnRlcm5hbCBuYXZpZ2F0aW9uLCBhbmQgdGhlIGFiaWxpdHkgdG8gZ3JvdXAgeW91ciBhY2NvdW50cyBieSBmaW5hbmNpYWwgaW5zdGl0dXRpb24hXHJcblxyXG5odHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9hc3NldHMvMTY2NzYxNTcvYmU0ZDFjZTgtNzA1NS00ZjcxLTljM2YtYzliYmM5Y2I0NTFjXHJcblxyXG4qIEltcHJvdmUgYWNjb3VudCBpbnRlcm5hbCBsaW5raW5nIGFuZCByZWRpcmVjdCBiZWhhdmlvciBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC84NjRcclxuKiBBbGxvdyBmb3Igb3B0aW9uYWwgc3RhcnQgZGF0ZSBvbiBhY2NvdW50IGNyZWF0aW9uIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzg2NlxyXG4qIEFkZCBpbnN0aXR1dGlvbiBtYW5hZ2VtZW50IGFuZCBhY2NvdW50IGVkaXRpbmcgY29udHJvbHMgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvODY4XHJcbiogTmV3IERvY2tlciBDb21wb3NlIFNlbGYgSG9zdGluZyBHdWlkZSArIFVJIEZpeGVzIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzg3MFxyXG4qIFNpbXBsaWZ5IGFjY291bnQgc3luYyBsb2dpYyBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC84NzFcclxuKiBDaGFuZ2Vsb2cgcGFnZSB0aGF0IHB1bGxzIGZyb20gR2l0aHViIFJlbGVhc2Ugbm90ZXMgYnkgQG1hdHRpYS1tYWxuaXMgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC84NjdcclxuXHJcblxyXG4qKkZ1bGwgQ2hhbmdlbG9nKio6IGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL2NvbXBhcmUvdjAuMS4wLWFscGhhLjUuLi52MC4xLjAtYWxwaGEuNiIsInJlYWN0aW9ucyI6eyJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTYwNTY2NDcxL3JlYWN0aW9ucyIsInRvdGFsX2NvdW50IjozNiwiKzEiOjI3LCItMSI6MCwibGF1Z2giOjAsImhvb3JheSI6MCwiY29uZnVzZWQiOjAsImhlYXJ0Ijo5LCJyb2NrZXQiOjAsImV5ZXMiOjB9LCJtZW50aW9uc19jb3VudCI6Mn0seyJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTU5NDUyMjQ0IiwiYXNzZXRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy8xNTk0NTIyNDQvYXNzZXRzIiwidXBsb2FkX3VybCI6Imh0dHBzOi8vdXBsb2Fkcy5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTU5NDUyMjQ0L2Fzc2V0c3s/bmFtZSxsYWJlbH0iLCJodG1sX3VybCI6Imh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzL3RhZy92MC4xLjAtYWxwaGEuNSIsImlkIjoxNTk0NTIyNDQsImF1dGhvciI6eyJsb2dpbiI6InphY2hnb2xsIiwiaWQiOjE2Njc2MTU3LCJub2RlX2lkIjoiTURRNlZYTmxjakUyTmpjMk1UVTMiLCJhdmF0YXJfdXJsIjoiaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE2Njc2MTU3P3Y9NCIsImdyYXZhdGFyX2lkIjoiIiwidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbCIsImh0bWxfdXJsIjoiaHR0cHM6Ly9naXRodWIuY29tL3phY2hnb2xsIiwiZm9sbG93ZXJzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZm9sbG93ZXJzIiwiZm9sbG93aW5nX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZm9sbG93aW5ney9vdGhlcl91c2VyfSIsImdpc3RzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZ2lzdHN7L2dpc3RfaWR9Iiwic3RhcnJlZF91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3N0YXJyZWR7L293bmVyfXsvcmVwb30iLCJzdWJzY3JpcHRpb25zX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvc3Vic2NyaXB0aW9ucyIsIm9yZ2FuaXphdGlvbnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9vcmdzIiwicmVwb3NfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9yZXBvcyIsImV2ZW50c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL2V2ZW50c3svcHJpdmFjeX0iLCJyZWNlaXZlZF9ldmVudHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9yZWNlaXZlZF9ldmVudHMiLCJ0eXBlIjoiVXNlciIsInVzZXJfdmlld190eXBlIjoicHVibGljIiwic2l0ZV9hZG1pbiI6ZmFsc2V9LCJub2RlX2lkIjoiUkVfa3dET0tfdHhITTRKZ1F4VSIsInRhZ19uYW1lIjoidjAuMS4wLWFscGhhLjUiLCJ0YXJnZXRfY29tbWl0aXNoIjoibWFpbiIsIm5hbWUiOiJ2MC4xLjAtYWxwaGEuNSIsImRyYWZ0IjpmYWxzZSwicHJlcmVsZWFzZSI6dHJ1ZSwiY3JlYXRlZF9hdCI6IjIwMjQtMDYtMDdUMjM6Mjk6MDFaIiwicHVibGlzaGVkX2F0IjoiMjAyNC0wNi0wN1QyMzozNDoxMVoiLCJhc3NldHMiOltdLCJ0YXJiYWxsX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS90YXJiYWxsL3YwLjEuMC1hbHBoYS41IiwiemlwYmFsbF91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvemlwYmFsbC92MC4xLjAtYWxwaGEuNSIsImJvZHkiOiIjIyBXaGF0J3MgQ2hhbmdlZFxyXG5cclxuQnVsayB0cmFuc2FjdGlvbiBlZGl0aW5nIGFuZCBkZWxldGlvbiBpcyBoZXJlISAgQ2hlY2sgb3V0IHRoZSBkZW1vIGJlbG93OlxyXG5cclxuaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvYXNzZXRzLzE2Njc2MTU3L2Q4YTNhZTM5LTQ5MzEtNDc3NS04Yzc2LTIxMWQ2ZGM5NmJmNlxyXG5cclxuKiBBZGQgYnVsayBzZWxlY3Rpb24gVUkgY29udHJvbHMgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvODQwXHJcbiogQnVsayB0cmFuc2FjdGlvbiBkZWxldGlvbiBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC84NDVcclxuKiBCdWxrIGVkaXRpbmcgb2YgdHJhbnNhY3Rpb25zIGJ5IEB6YWNoZ29sbCBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzg0NlxyXG5cclxuKipGdWxsIENoYW5nZWxvZyoqOiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9jb21wYXJlL3YwLjEuMC1hbHBoYS40Li4udjAuMS4wLWFscGhhLjUiLCJyZWFjdGlvbnMiOnsidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE1OTQ1MjI0NC9yZWFjdGlvbnMiLCJ0b3RhbF9jb3VudCI6NDgsIisxIjozNSwiLTEiOjAsImxhdWdoIjowLCJob29yYXkiOjYsImNvbmZ1c2VkIjowLCJoZWFydCI6Nywicm9ja2V0IjowLCJleWVzIjowfSwibWVudGlvbnNfY291bnQiOjF9LHsidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE1ODM5MDY3MSIsImFzc2V0c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTU4MzkwNjcxL2Fzc2V0cyIsInVwbG9hZF91cmwiOiJodHRwczovL3VwbG9hZHMuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE1ODM5MDY3MS9hc3NldHN7P25hbWUsbGFiZWx9IiwiaHRtbF91cmwiOiJodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy90YWcvdjAuMS4wLWFscGhhLjQiLCJpZCI6MTU4MzkwNjcxLCJhdXRob3IiOnsibG9naW4iOiJ6YWNoZ29sbCIsImlkIjoxNjY3NjE1Nywibm9kZV9pZCI6Ik1EUTZWWE5sY2pFMk5qYzJNVFUzIiwiYXZhdGFyX3VybCI6Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNjY3NjE1Nz92PTQiLCJncmF2YXRhcl9pZCI6IiIsInVybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwiLCJodG1sX3VybCI6Imh0dHBzOi8vZ2l0aHViLmNvbS96YWNoZ29sbCIsImZvbGxvd2Vyc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL2ZvbGxvd2VycyIsImZvbGxvd2luZ191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL2ZvbGxvd2luZ3svb3RoZXJfdXNlcn0iLCJnaXN0c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL2dpc3Rzey9naXN0X2lkfSIsInN0YXJyZWRfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9zdGFycmVkey9vd25lcn17L3JlcG99Iiwic3Vic2NyaXB0aW9uc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3N1YnNjcmlwdGlvbnMiLCJvcmdhbml6YXRpb25zX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvb3JncyIsInJlcG9zX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvcmVwb3MiLCJldmVudHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9ldmVudHN7L3ByaXZhY3l9IiwicmVjZWl2ZWRfZXZlbnRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvcmVjZWl2ZWRfZXZlbnRzIiwidHlwZSI6IlVzZXIiLCJ1c2VyX3ZpZXdfdHlwZSI6InB1YmxpYyIsInNpdGVfYWRtaW4iOmZhbHNlfSwibm9kZV9pZCI6IlJFX2t3RE9LX3R4SE00SmNObVAiLCJ0YWdfbmFtZSI6InYwLjEuMC1hbHBoYS40IiwidGFyZ2V0X2NvbW1pdGlzaCI6Im1haW4iLCJuYW1lIjoidjAuMS4wLWFscGhhLjQiLCJkcmFmdCI6ZmFsc2UsInByZXJlbGVhc2UiOnRydWUsImNyZWF0ZWRfYXQiOiIyMDI0LTA1LTMxVDE4OjA5OjEyWiIsInB1Ymxpc2hlZF9hdCI6IjIwMjQtMDUtMzFUMTg6MTA6MzFaIiwiYXNzZXRzIjpbXSwidGFyYmFsbF91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvdGFyYmFsbC92MC4xLjAtYWxwaGEuNCIsInppcGJhbGxfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3ppcGJhbGwvdjAuMS4wLWFscGhhLjQiLCJib2R5IjoiIyMgV2hhdCdzIENoYW5nZWRcclxuKiBmaXg6IHBuZyBmaWxlIGNhbiBiZSBzZWxlY3RlZCBhcyBwcm9maWxlIGltYWdlcyBieSBAcGVhLXN5cyBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzgwOVxyXG4qIFZhbGlkYXRlIHRyYW5zYWN0aW9uIGZpbHRlcmluZyBwYXJhbXMgYnkgQGpha3Via290dG5hdWVyIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvODEwXHJcbiogRml4IGZvcmVpZ24gYWNjb3VudCBzeW5jIGNyYXNoIGJ5IEBqYWt1YmtvdHRuYXVlciBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzc5NFxyXG4qIFNvcnQgYWNjb3VudHMgaW4gdGhlIHNpZGViYXIgYnkgQGpha3Via290dG5hdWVyIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvODE1XHJcbiogUmV1c2FibGUgQ0kgd29ya2Zsb3cgZm9yIEdIIGFjdGlvbnMgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvODE5XHJcbiogVHJhbnNhY3Rpb25zIGNsZWFudXAgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvODE3XHJcbiogU3luYyBhY2NvdW50IGFmdGVyIHRyYW5zYWN0aW9uIGltcG9ydCBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC84MjBcclxuKiBGaXggb3ZlcmZsb3cgZXJyb3Igb24gYWNjb3VudCB2YWx1ZSBpbnB1dHMgYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvODIxXHJcblxyXG4jIyBOZXcgQ29udHJpYnV0b3JzXHJcbiogQHBlYS1zeXMgbWFkZSB0aGVpciBmaXJzdCBjb250cmlidXRpb24gaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC84MDlcclxuXHJcbioqRnVsbCBDaGFuZ2Vsb2cqKjogaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvY29tcGFyZS92MC4xLjAtYWxwaGEuMy4uLnYwLjEuMC1hbHBoYS40IiwicmVhY3Rpb25zIjp7InVybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy8xNTgzOTA2NzEvcmVhY3Rpb25zIiwidG90YWxfY291bnQiOjIxLCIrMSI6MCwiLTEiOjAsImxhdWdoIjowLCJob29yYXkiOjIxLCJjb25mdXNlZCI6MCwiaGVhcnQiOjAsInJvY2tldCI6MCwiZXllcyI6MH0sIm1lbnRpb25zX2NvdW50IjozfSx7InVybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy8xNTczOTcwOTEiLCJhc3NldHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE1NzM5NzA5MS9hc3NldHMiLCJ1cGxvYWRfdXJsIjoiaHR0cHM6Ly91cGxvYWRzLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy8xNTczOTcwOTEvYXNzZXRzez9uYW1lLGxhYmVsfSIsImh0bWxfdXJsIjoiaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvdGFnL3YwLjEuMC1hbHBoYS4zIiwiaWQiOjE1NzM5NzA5MSwiYXV0aG9yIjp7ImxvZ2luIjoiemFjaGdvbGwiLCJpZCI6MTY2NzYxNTcsIm5vZGVfaWQiOiJNRFE2VlhObGNqRTJOamMyTVRVMyIsImF2YXRhcl91cmwiOiJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTY2NzYxNTc/dj00IiwiZ3JhdmF0YXJfaWQiOiIiLCJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsIiwiaHRtbF91cmwiOiJodHRwczovL2dpdGh1Yi5jb20vemFjaGdvbGwiLCJmb2xsb3dlcnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9mb2xsb3dlcnMiLCJmb2xsb3dpbmdfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9mb2xsb3dpbmd7L290aGVyX3VzZXJ9IiwiZ2lzdHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9naXN0c3svZ2lzdF9pZH0iLCJzdGFycmVkX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvc3RhcnJlZHsvb3duZXJ9ey9yZXBvfSIsInN1YnNjcmlwdGlvbnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9zdWJzY3JpcHRpb25zIiwib3JnYW5pemF0aW9uc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL29yZ3MiLCJyZXBvc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3JlcG9zIiwiZXZlbnRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZXZlbnRzey9wcml2YWN5fSIsInJlY2VpdmVkX2V2ZW50c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3JlY2VpdmVkX2V2ZW50cyIsInR5cGUiOiJVc2VyIiwidXNlcl92aWV3X3R5cGUiOiJwdWJsaWMiLCJzaXRlX2FkbWluIjpmYWxzZX0sIm5vZGVfaWQiOiJSRV9rd0RPS190eEhNNEpZYkJqIiwidGFnX25hbWUiOiJ2MC4xLjAtYWxwaGEuMyIsInRhcmdldF9jb21taXRpc2giOiJtYWluIiwibmFtZSI6InYwLjEuMC1hbHBoYS4zIiwiZHJhZnQiOmZhbHNlLCJwcmVyZWxlYXNlIjp0cnVlLCJjcmVhdGVkX2F0IjoiMjAyNC0wNS0yNFQxODoyNDowM1oiLCJwdWJsaXNoZWRfYXQiOiIyMDI0LTA1LTI0VDE4OjI1OjM3WiIsImFzc2V0cyI6W10sInRhcmJhbGxfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3RhcmJhbGwvdjAuMS4wLWFscGhhLjMiLCJ6aXBiYWxsX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS96aXBiYWxsL3YwLjEuMC1hbHBoYS4zIiwiYm9keSI6IiMjIFdoYXQncyBDaGFuZ2VkXHJcbiogRml4IGN1cnJlbmN5IHdoZW4gaW1wb3J0aW5nIHRvIGZvcmVpZ24gYWNjb3VudHMgYnkgQGpha3Via290dG5hdWVyIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvNzYyXHJcbiogU2hvdyBhbiBlcnJvciBub3RpZmljYXRpb24gaWYgYWNjb3VudCBjYW5ub3QgYmUgbWFudWFsbHkgc3luY2VkIGJ5IEBqYWt1YmtvdHRuYXVlciBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzc2MVxyXG4qIEFkZCBtaWdyYXRpb24gdG8gbWFrZSBhbGwgZXhpc3RpbmcgdXNlcnMgYWRtaW5zIGJ5IEBqYWt1YmtvdHRuYXVlciBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzc3MFxyXG4qIEZpeCBpc3N1ZSB3aXRoIHN0YXJ0X2RhdGUgbm90IGJlaW5nIHNldCBpbiBhY2NvdW50IGNyZWF0aW9uIGJ5IEBzY3ViYW1hZ2dvIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvNzgxXHJcbiogRml4IGltcG9ydCBjcmFzaCB3aXRoIGVtcHR5IHRyYW5zYWN0aW9uIG5hbWUgYnkgQGpha3Via290dG5hdWVyIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvNzgzXHJcbiogTW92ZSBjYXRlZ29yeSBkcm9wZG93biBtZW51IGNvbnRlbnQgaW50byBhIHR1cmJvIGZyYW1lIGJ5IEBqYWt1YmtvdHRuYXVlciBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzc4MlxyXG4qIElnbm9yZSBlbXB0eSBjYXRlZ29yaWVzIHdoaWxlIGltcG9ydGluZyBieSBAamFrdWJrb3R0bmF1ZXIgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC83ODlcclxuKiBGaXggZHVwbGljYXRlIGNhdGVnb3J5IGNyZWF0aW9uIG9uIGltcG9ydCBieSBAemFjaGdvbGwgaW4gaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcHVsbC83OTFcclxuKiBDcmVhdGUgdGFnZ2luZyBzeXN0ZW0gYnkgQHphY2hnb2xsIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvNzkyXHJcbiogQWRkIHRhZyBwcmV2aWV3IHdoZW4gaW1wb3J0aW5nIGFuZCBmaXggZW1wdHkgY2F0ZWdvcnkgYnVnIGJ5IEBqYWt1YmtvdHRuYXVlciBpbiBodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9wdWxsLzgwMFxyXG5cclxuIyMgTmV3IENvbnRyaWJ1dG9yc1xyXG4qIEBzY3ViYW1hZ2dvIG1hZGUgdGhlaXIgZmlyc3QgY29udHJpYnV0aW9uIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3B1bGwvNzgxXHJcblxyXG4qKkZ1bGwgQ2hhbmdlbG9nKio6IGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL2NvbXBhcmUvdjAuMS4wLWFscGhhLjIuLi52MC4xLjAtYWxwaGEuMyIsInJlYWN0aW9ucyI6eyJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTU3Mzk3MDkxL3JlYWN0aW9ucyIsInRvdGFsX2NvdW50IjozMSwiKzEiOjAsIi0xIjowLCJsYXVnaCI6MCwiaG9vcmF5IjowLCJjb25mdXNlZCI6MCwiaGVhcnQiOjUsInJvY2tldCI6MjYsImV5ZXMiOjB9LCJtZW50aW9uc19jb3VudCI6M30seyJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTU2MzQyMTUyIiwiYXNzZXRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy8xNTYzNDIxNTIvYXNzZXRzIiwidXBsb2FkX3VybCI6Imh0dHBzOi8vdXBsb2Fkcy5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTU2MzQyMTUyL2Fzc2V0c3s/bmFtZSxsYWJlbH0iLCJodG1sX3VybCI6Imh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzL3RhZy92MC4xLjAtYWxwaGEuMiIsImlkIjoxNTYzNDIxNTIsImF1dGhvciI6eyJsb2dpbiI6InphY2hnb2xsIiwiaWQiOjE2Njc2MTU3LCJub2RlX2lkIjoiTURRNlZYTmxjakUyTmpjMk1UVTMiLCJhdmF0YXJfdXJsIjoiaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE2Njc2MTU3P3Y9NCIsImdyYXZhdGFyX2lkIjoiIiwidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbCIsImh0bWxfdXJsIjoiaHR0cHM6Ly9naXRodWIuY29tL3phY2hnb2xsIiwiZm9sbG93ZXJzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZm9sbG93ZXJzIiwiZm9sbG93aW5nX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZm9sbG93aW5ney9vdGhlcl91c2VyfSIsImdpc3RzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZ2lzdHN7L2dpc3RfaWR9Iiwic3RhcnJlZF91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3N0YXJyZWR7L293bmVyfXsvcmVwb30iLCJzdWJzY3JpcHRpb25zX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvc3Vic2NyaXB0aW9ucyIsIm9yZ2FuaXphdGlvbnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9vcmdzIiwicmVwb3NfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9yZXBvcyIsImV2ZW50c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL2V2ZW50c3svcHJpdmFjeX0iLCJyZWNlaXZlZF9ldmVudHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9yZWNlaXZlZF9ldmVudHMiLCJ0eXBlIjoiVXNlciIsInVzZXJfdmlld190eXBlIjoicHVibGljIiwic2l0ZV9hZG1pbiI6ZmFsc2V9LCJub2RlX2lkIjoiUkVfa3dET0tfdHhITTRKVVplSSIsInRhZ19uYW1lIjoidjAuMS4wLWFscGhhLjIiLCJ0YXJnZXRfY29tbWl0aXNoIjoibWFpbiIsIm5hbWUiOiJ2MC4xLjAtYWxwaGEuMiIsImRyYWZ0IjpmYWxzZSwicHJlcmVsZWFzZSI6dHJ1ZSwiY3JlYXRlZF9hdCI6IjIwMjQtMDUtMTdUMjI6MjA6MTlaIiwicHVibGlzaGVkX2F0IjoiMjAyNC0wNS0xN1QyMjozMzoyNFoiLCJhc3NldHMiOltdLCJ0YXJiYWxsX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS90YXJiYWxsL3YwLjEuMC1hbHBoYS4yIiwiemlwYmFsbF91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvemlwYmFsbC92MC4xLjAtYWxwaGEuMiIsImJvZHkiOiJTZWNvbmQgYWxwaGEgcmVsZWFzZSBvZiBNYXliZSDwn46JIPCfjK5cclxuXHJcbiMjIE5ldyBmZWF0dXJlc1xyXG5cclxuLSBTZWxmIGhvc3Rpbmcgd2l0aCBEb2NrZXIg8J+QsyAoW3NldHVwIGd1aWRlXShodHRwczovL2dpdGh1Yi5jb20vbWF5YmUtZmluYW5jZS9tYXliZS9ibG9iL21haW4vZG9jcy9ob3N0aW5nL2RvY2tlci5tZCkpXHJcbi0gQ1NWIHRyYW5zYWN0aW9uIGltcG9ydHNcclxuLSBUcmFuc2FjdGlvbiBtYW5hZ2VtZW50IHdpdGggbWVyY2hhbnRzIGFuZCBjYXRlZ29yaWVzXHJcbi0gRnJlc2ggZGVzaWduIG9mIHVzZXIgc2V0dGluZ3NcclxuLSBSZS1kZXNpZ25lZCBkYXNoYm9hcmQgKyBhY2NvdW50cyBzdW1tYXJ5XHJcbi0gQWRtaW4gYWNjb3VudHMsIGFiaWxpdHkgdG8gZGVsZXRlIGFuZCBwdXJnZSBkYXRhXHJcblxyXG4qKkZ1bGwgQ2hhbmdlbG9nKio6IGh0dHBzOi8vZ2l0aHViLmNvbS9tYXliZS1maW5hbmNlL21heWJlL2NvbXBhcmUvdjAuMS4wLWFscGhhLjEuLi52MC4xLjAtYWxwaGEuMiIsInJlYWN0aW9ucyI6eyJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvMTU2MzQyMTUyL3JlYWN0aW9ucyIsInRvdGFsX2NvdW50Ijo1MCwiKzEiOjAsIi0xIjowLCJsYXVnaCI6MCwiaG9vcmF5Ijo0OCwiY29uZnVzZWQiOjAsImhlYXJ0IjoyLCJyb2NrZXQiOjAsImV5ZXMiOjB9fSx7InVybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy8xNTEwMjgxMjMiLCJhc3NldHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE1MTAyODEyMy9hc3NldHMiLCJ1cGxvYWRfdXJsIjoiaHR0cHM6Ly91cGxvYWRzLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS9yZWxlYXNlcy8xNTEwMjgxMjMvYXNzZXRzez9uYW1lLGxhYmVsfSIsImh0bWxfdXJsIjoiaHR0cHM6Ly9naXRodWIuY29tL21heWJlLWZpbmFuY2UvbWF5YmUvcmVsZWFzZXMvdGFnL3YwLjEuMC1hbHBoYS4xIiwiaWQiOjE1MTAyODEyMywiYXV0aG9yIjp7ImxvZ2luIjoiemFjaGdvbGwiLCJpZCI6MTY2NzYxNTcsIm5vZGVfaWQiOiJNRFE2VlhObGNqRTJOamMyTVRVMyIsImF2YXRhcl91cmwiOiJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTY2NzYxNTc/dj00IiwiZ3JhdmF0YXJfaWQiOiIiLCJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsIiwiaHRtbF91cmwiOiJodHRwczovL2dpdGh1Yi5jb20vemFjaGdvbGwiLCJmb2xsb3dlcnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9mb2xsb3dlcnMiLCJmb2xsb3dpbmdfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9mb2xsb3dpbmd7L290aGVyX3VzZXJ9IiwiZ2lzdHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9naXN0c3svZ2lzdF9pZH0iLCJzdGFycmVkX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvc3RhcnJlZHsvb3duZXJ9ey9yZXBvfSIsInN1YnNjcmlwdGlvbnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96YWNoZ29sbC9zdWJzY3JpcHRpb25zIiwib3JnYW5pemF0aW9uc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL29yZ3MiLCJyZXBvc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3JlcG9zIiwiZXZlbnRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvemFjaGdvbGwvZXZlbnRzey9wcml2YWN5fSIsInJlY2VpdmVkX2V2ZW50c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3phY2hnb2xsL3JlY2VpdmVkX2V2ZW50cyIsInR5cGUiOiJVc2VyIiwidXNlcl92aWV3X3R5cGUiOiJwdWJsaWMiLCJzaXRlX2FkbWluIjpmYWxzZX0sIm5vZGVfaWQiOiJSRV9rd0RPS190eEhNNEpBSUdiIiwidGFnX25hbWUiOiJ2MC4xLjAtYWxwaGEuMSIsInRhcmdldF9jb21taXRpc2giOiJtYWluIiwibmFtZSI6InYwLjEuMC1hbHBoYS4xIiwiZHJhZnQiOmZhbHNlLCJwcmVyZWxlYXNlIjp0cnVlLCJjcmVhdGVkX2F0IjoiMjAyNC0wNC0xM1QxMzoyODo0NVoiLCJwdWJsaXNoZWRfYXQiOiIyMDI0LTA0LTEzVDEzOjQ5OjAzWiIsImFzc2V0cyI6W10sInRhcmJhbGxfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3RhcmJhbGwvdjAuMS4wLWFscGhhLjEiLCJ6aXBiYWxsX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWF5YmUtZmluYW5jZS9tYXliZS96aXBiYWxsL3YwLjEuMC1hbHBoYS4xIiwiYm9keSI6IkluaXRpYWwgYWxwaGEgdmVyc2lvbiBvZiBNYXliZSDwn46JIPCfjK4iLCJyZWFjdGlvbnMiOnsidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9tYXliZS1maW5hbmNlL21heWJlL3JlbGVhc2VzLzE1MTAyODEyMy9yZWFjdGlvbnMiLCJ0b3RhbF9jb3VudCI6MTY1LCIrMSI6NTAsIi0xIjowLCJsYXVnaCI6MCwiaG9vcmF5Ijo0NiwiY29uZnVzZWQiOjAsImhlYXJ0IjozNSwicm9ja2V0IjoyMywiZXllcyI6MTF9fV0=
+ recorded_at: Wed, 19 Mar 2025 12:40:58 GMT
- request:
method: post
uri: https://api.github.com/markdown
body:
encoding: UTF-8
- string: '{"mode":"gfm","context":"maybe-finance/maybe","text":"This week''s
- release comes with a variety of bug fixes and improvements to the UI.\r\n\r\nAdditionally,
- users can now input details for their property and vehicle accounts as shown
- in the video below. In the near future, Maybe will support data providers
- related to the \"valuation\" of properties and vehicles (i.e. Zillow, KBB). We
- will use the information from user accounts to automatically fetch estimated
- market values for these assets which will then be added periodically as \"Valuations\"
- in the value tab of each account. This will then show up in the history graph
- for the account balance.\r\n\r\nhttps://github.com/user-attachments/assets/fd759c82-a25c-4c8d-8f16-f577e0410fb5\r\n\r\n##
- What''s Changed\r\n\r\n* Refactor: Allow other import files by @pedrocarmona
- in https://github.com/maybe-finance/maybe/pull/1099\r\n* Bump sentry-ruby
- from 5.18.2 to 5.19.0 by @dependabot in https://github.com/maybe-finance/maybe/pull/1108\r\n*
- Bump stimulus-rails from 1.3.3 to 1.3.4 by @dependabot in https://github.com/maybe-finance/maybe/pull/1106\r\n*
- Bump aws-sdk-s3 from 1.157.0 to 1.158.0 by @dependabot in https://github.com/maybe-finance/maybe/pull/1105\r\n*
- Bump ruby-lsp-rails from 0.3.12 to 0.3.13 by @dependabot in https://github.com/maybe-finance/maybe/pull/1107\r\n*
- Bump propshaft from 0.9.0 to 0.9.1 by @dependabot in https://github.com/maybe-finance/maybe/pull/1104\r\n*
- Bump good_job from 4.1.1 to 4.2.0 by @dependabot in https://github.com/maybe-finance/maybe/pull/1102\r\n*
- Bump tailwindcss-rails from 2.7.2 to 2.7.3 by @dependabot in https://github.com/maybe-finance/maybe/pull/1103\r\n*
- Fix query when account has zero income and expense by @zachgoll in https://github.com/maybe-finance/maybe/pull/1112\r\n*
- Fix holding name error by @zachgoll in https://github.com/maybe-finance/maybe/pull/1113\r\n*
- Add Property Details View by @zachgoll in https://github.com/maybe-finance/maybe/pull/1116\r\n*
- Basic Vehicle View by @zachgoll in https://github.com/maybe-finance/maybe/pull/1117\r\n*
- Rubocop updates by @zachgoll in https://github.com/maybe-finance/maybe/pull/1118\r\n*
- Fix file upload UI opening twice by @zachgoll in https://github.com/maybe-finance/maybe/pull/1119\r\n\r\n\r\n**Full
- Changelog**: https://github.com/maybe-finance/maybe/compare/v0.1.0-alpha.15...v0.1.0-alpha.16"}'
+ string: '{"mode":"gfm","context":"maybe-finance/maybe","text":"## Data resets,
+ offline investment trades, and miscellaneous stability improvements\r\n\r\nThis
+ release comes with a wide mix of stability improvements and quality of life
+ updates; particularly for self hosted apps, which can now be \"reset\" in
+ user settings. If your data looks wrong or you want a \"clean slate\" to
+ work from, we''ve added the ability for you to easily perform these resets
+ without writing SQL or manually deleting records.\r\n\r\nThis release also
+ comes with a much clearer UI surrounding the Synth data provider. New self
+ hosted users will now see a prominent warning message if they have missing
+ data as a result of a misconfigured or absent data provider.\r\n\r\n## What''s
+ Changed\r\n* Add new category flow by @syedbarimanjan in https://github.com/maybe-finance/maybe/pull/1857\r\n*
+ Fix parent category sums in budget by @zachgoll in https://github.com/maybe-finance/maybe/pull/1894\r\n*
+ Add breadcrumbs support across application by @Shpigford in https://github.com/maybe-finance/maybe/pull/1897\r\n*
+ Dashboard design fixes by @zachgoll in https://github.com/maybe-finance/maybe/pull/1898\r\n*
+ Allow account balance to dynamically use currency format on preference page
+ by @Harry-kp in https://github.com/maybe-finance/maybe/pull/1910\r\n* Feat:
+ Data \"reset\" button by @tonyvince in https://github.com/maybe-finance/maybe/pull/1913\r\n*
+ Fix: Make Tags selection scrollable by @tonyvince in https://github.com/maybe-finance/maybe/pull/1921\r\n*
+ Fix value wrapping on account balance in sidebar by @zachgoll in https://github.com/maybe-finance/maybe/pull/1922\r\n*
+ Fix import configuration form so number format is applied by @zachgoll in
+ https://github.com/maybe-finance/maybe/pull/1923\r\n* Add transitions to buttons
+ and other common design system elements by @zachgoll in https://github.com/maybe-finance/maybe/pull/1924\r\n*
+ Allow offline trade tickers by @zachgoll in https://github.com/maybe-finance/maybe/pull/1925\r\n*
+ fix: Don''t show Billings on settings navbar when self-hosted by @tonyvince
+ in https://github.com/maybe-finance/maybe/pull/1912\r\n* Show UI warning to
+ user when they need provider data but have not setup Synth yet by @zachgoll
+ in https://github.com/maybe-finance/maybe/pull/1926\r\n* Invert liability
+ graphs to have correct signage by @zachgoll in https://github.com/maybe-finance/maybe/pull/1928\r\n*
+ Escape quotations in CSV imports properly by @zachgoll in https://github.com/maybe-finance/maybe/pull/1929\r\n\r\n##
+ New Contributors\r\n* @syedbarimanjan made their first contribution in https://github.com/maybe-finance/maybe/pull/1857\r\n\r\n**Full
+ Changelog**: https://github.com/maybe-finance/maybe/compare/v0.4.2...v0.4.3"}'
headers:
Accept:
- application/vnd.github.raw
User-Agent:
- - Octokit Ruby Gem 9.1.0
+ - Octokit Ruby Gem 9.2.0
Content-Type:
- application/json
Accept-Encoding:
@@ -121,7 +127,7 @@ http_interactions:
message: OK
headers:
Date:
- - Mon, 09 Sep 2024 20:03:35 GMT
+ - Wed, 19 Mar 2025 12:40:58 GMT
Content-Type:
- text/html;charset=utf-8
X-Commonmarker-Version:
@@ -131,7 +137,7 @@ http_interactions:
Vary:
- Accept,Accept-Encoding, Accept, X-Requested-With
Etag:
- - W/"4b6d4a2163bd3920fb140d306008bd394fd881338320e3400547c6833368f2ea"
+ - W/"bff98cc65001c41f8dd63749dc92891772179ad935cf7a314a5e9a289fd17557"
X-Github-Media-Type:
- github.v3; param=raw
X-Github-Api-Version-Selected:
@@ -160,55 +166,45 @@ http_interactions:
X-Ratelimit-Limit:
- '60'
X-Ratelimit-Remaining:
- - '56'
+ - '58'
X-Ratelimit-Reset:
- - '1725915804'
+ - '1742391658'
X-Ratelimit-Resource:
- core
X-Ratelimit-Used:
- - '4'
- Accept-Ranges:
- - bytes
+ - '2'
Content-Length:
- - '12673'
+ - '11567'
X-Github-Request-Id:
- - E97A:2198A3:C56E5C:17C26E8:66DF5497
+ - DDEE:10ABF0:184826:30A90D:67DABB5A
body:
encoding: ASCII-8BIT
string: |-
-
This week's release comes with a variety of bug fixes and improvements to the UI.
-
Additionally, users can now input details for their property and vehicle accounts as shown in the video below. In the near future, Maybe will support data providers related to the "valuation" of properties and vehicles (i.e. Zillow, KBB). We will use the information from user accounts to automatically fetch estimated market values for these assets which will then be added periodically as "Valuations" in the value tab of each account. This will then show up in the history graph for the account balance.
Data resets, offline investment trades, and miscellaneous stability improvements
+
This release comes with a wide mix of stability improvements and quality of life updates; particularly for self hosted apps, which can now be "reset" in user settings. If your data looks wrong or you want a "clean slate" to work from, we've added the ability for you to easily perform these resets without writing SQL or manually deleting records.
+
This release also comes with a much clearer UI surrounding the Synth data provider. New self hosted users will now see a prominent warning message if they have missing data as a result of a misconfigured or absent data provider.