From cb16b5610aca20fe011ab47cd604b5c32e74b4a3 Mon Sep 17 00:00:00 2001 From: Mariya Burrows Date: Tue, 10 Sep 2019 16:14:53 -0700 Subject: [PATCH 01/18] "set up classes and created abstract methods and recipients" --- lib/channel.rb | 39 +++++++++++++++++++++++++++++++++++++++ lib/recipient.rb | 34 ++++++++++++++++++++++++++++++++++ lib/slack_env_test.rb | 29 +++++++++++++++++++++++++++++ lib/user.rb | 30 ++++++++++++++++++++++++++++++ test/channel_test.rb | 0 test/recipient_test.rb | 15 +++++++++++++++ test/user_test.rb | 0 7 files changed, 147 insertions(+) create mode 100644 lib/channel.rb create mode 100644 lib/recipient.rb create mode 100644 lib/slack_env_test.rb create mode 100644 lib/user.rb create mode 100644 test/channel_test.rb create mode 100644 test/recipient_test.rb create mode 100644 test/user_test.rb diff --git a/lib/channel.rb b/lib/channel.rb new file mode 100644 index 00000000..215d23e0 --- /dev/null +++ b/lib/channel.rb @@ -0,0 +1,39 @@ +require 'dotenv' +require_relative 'recipient' + +module Slack + class Channel < Recipient + + attr_reader :topic, :member_count + + def initialize(topic, member_count) + super(slack_id, name) + @topic = topic + @member_count = member_count + end + + def details + end + + def list + url = "https://slack.com/api/channels.list" + + KEY = ENV["SLACK_TOKEN"] + query_parameters = { + token: KEY + } + + channel_objects = self.get(url, query: query_parameters) + + channel_list = [] + channel_objects["channels"].each do |channel| + channel_list << channel["name"] + end + + return channel_list + + end + + + end +end diff --git a/lib/recipient.rb b/lib/recipient.rb new file mode 100644 index 00000000..10a19866 --- /dev/null +++ b/lib/recipient.rb @@ -0,0 +1,34 @@ +require 'httparty' + +module Slack + class Recipient + attr_reader :slack_id, :name + + def initialize(slack_id, name) + @slack_id = slack_id + @name = name + end + + # pass down methods that will send messages + # pass down: make a request to API (get) + # raise error if API is down or nil -- maybe do in another class? + # list all the users or channels + + def send_message(message) + + end + + def details + raise NotImplementedError, "Implement me in a child class" + end + + def self.get(url, params) + response = HTTParty.get(url, query: params) + end + + def self.list + raise NotImplementedError, "Implement me in a child class" + end + + end +end \ No newline at end of file diff --git a/lib/slack_env_test.rb b/lib/slack_env_test.rb new file mode 100644 index 00000000..32239b3a --- /dev/null +++ b/lib/slack_env_test.rb @@ -0,0 +1,29 @@ +require 'httparty' +require 'dotenv' +require 'awesome_print' +Dotenv.load + + +url = "https://slack.com/api/channels.list" + +KEY = ENV["SLACK_TOKEN"] +query_parameters = { + token: KEY +} + +channel_objects = HTTParty.get(url, query: query_parameters) + +#ap response.class +# ["channels"][0]["name"] + +# response["channels"].each do |object| +# puts object["name"] +# end + + +channel_list = [] +channel_objects["channels"].each do |channel| + channel_list << channel["name"] +end + +puts channel_list \ No newline at end of file diff --git a/lib/user.rb b/lib/user.rb new file mode 100644 index 00000000..65e54dc8 --- /dev/null +++ b/lib/user.rb @@ -0,0 +1,30 @@ +require 'dotenv' +require_relative 'recipient' + +module Slack + class User < Recipient + attr_reader :real_name + + def initialize(real_name) + super(slack_id, name) + @real_name = real_name + end + + def details + end + + def list + url = "https://slack.com/api/users.list" + + KEY = ENV["SLACK_TOKEN"] + query_parameters = { + token: KEY + } + + list = self.get(url, query: query_parameters) + + end + + + end +end \ No newline at end of file diff --git a/test/channel_test.rb b/test/channel_test.rb new file mode 100644 index 00000000..e69de29b diff --git a/test/recipient_test.rb b/test/recipient_test.rb new file mode 100644 index 00000000..cd911417 --- /dev/null +++ b/test/recipient_test.rb @@ -0,0 +1,15 @@ +require 'test_helper' + +describe "Recipient Class" do + describe "New instance of Slack::Recipient" do + before do + VCR.use_cassette("self.get") do + responseself.get() + response = HTTParty.get(url, query: params) + end + end + it "calls the Slack API to generate a list" do + expect() + end + end +end \ No newline at end of file diff --git a/test/user_test.rb b/test/user_test.rb new file mode 100644 index 00000000..e69de29b From 2ab30dc5e38ca07c4ce3cc4bbda519ec1fdfb58b Mon Sep 17 00:00:00 2001 From: Mariya Burrows Date: Tue, 10 Sep 2019 17:25:19 -0700 Subject: [PATCH 02/18] Added channel list. Needs correct id in test --- lib/channel.rb | 8 ++--- lib/recipient.rb | 1 - test/cassettes/lists_channels.yml | 60 +++++++++++++++++++++++++++++++ test/channel_test.rb | 21 +++++++++++ test/recipient_test.rb | 28 +++++++-------- test/test_helper.rb | 26 ++++++++++++-- 6 files changed, 121 insertions(+), 23 deletions(-) create mode 100644 test/cassettes/lists_channels.yml diff --git a/lib/channel.rb b/lib/channel.rb index 215d23e0..50e1fcc6 100644 --- a/lib/channel.rb +++ b/lib/channel.rb @@ -6,7 +6,7 @@ class Channel < Recipient attr_reader :topic, :member_count - def initialize(topic, member_count) + def initialize(slack_id, name, topic, member_count) super(slack_id, name) @topic = topic @member_count = member_count @@ -17,13 +17,11 @@ def details def list url = "https://slack.com/api/channels.list" - - KEY = ENV["SLACK_TOKEN"] query_parameters = { - token: KEY + token: ENV["SLACK_TOKEN"] } - channel_objects = self.get(url, query: query_parameters) + channel_objects = Recipient.get(url, query: query_parameters) channel_list = [] channel_objects["channels"].each do |channel| diff --git a/lib/recipient.rb b/lib/recipient.rb index 10a19866..4bb82c9f 100644 --- a/lib/recipient.rb +++ b/lib/recipient.rb @@ -1,4 +1,3 @@ -require 'httparty' module Slack class Recipient diff --git a/test/cassettes/lists_channels.yml b/test/cassettes/lists_channels.yml new file mode 100644 index 00000000..c248b580 --- /dev/null +++ b/test/cassettes/lists_channels.yml @@ -0,0 +1,60 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/channels.list?query%5Btoken%5D= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '58' + Connection: + - keep-alive + Date: + - Wed, 11 Sep 2019 00:20:56 GMT + Server: + - Apache + X-Xss-Protection: + - '0' + X-Slack-Req-Id: + - e89946e1-3dd4-4d27-98ba-f6f44792df4e + Vary: + - Accept-Encoding + X-Content-Type-Options: + - nosniff + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-1nva + X-Cache: + - Miss from cloudfront + Via: + - 1.1 4d8620b80ebe37d366388e117039aa8e.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C1 + X-Amz-Cf-Id: + - 2dNRe8XCKaHvebeHOXBPDjmB0X53XGHJpvJBn6p1wnhw3EDD6FUvtg== + body: + encoding: ASCII-8BIT + string: '{"ok":false,"error":"invalid_array_arg"}' + http_version: + recorded_at: Wed, 11 Sep 2019 00:20:56 GMT +recorded_with: VCR 5.0.0 diff --git a/test/channel_test.rb b/test/channel_test.rb index e69de29b..ea1e7a87 100644 --- a/test/channel_test.rb +++ b/test/channel_test.rb @@ -0,0 +1,21 @@ +require_relative 'test_helper' + +describe "Channel Class" do + describe "New instance of Slack::Channel" do + before do + VCR.use_cassette("lists_channels") do + # url = "https://slack.com/api/channels.list" + # KEY = ENV["SLACK_TOKEN"] + # query_parameters = { + # token: KEY + # } + # channel_objects = self.get(url, query: query_parameters) + channel = Slack::Channel.new(14, "Morgan", "general", 5) + @test_list = channel.list + end + end + it "lists the channels" do + expect(@test_list).must_equal ["random", "turkey", "slack-cli", "general"] + end + end +end \ No newline at end of file diff --git a/test/recipient_test.rb b/test/recipient_test.rb index cd911417..51df35da 100644 --- a/test/recipient_test.rb +++ b/test/recipient_test.rb @@ -1,15 +1,15 @@ -require 'test_helper' +# require 'test_helper' -describe "Recipient Class" do - describe "New instance of Slack::Recipient" do - before do - VCR.use_cassette("self.get") do - responseself.get() - response = HTTParty.get(url, query: params) - end - end - it "calls the Slack API to generate a list" do - expect() - end - end -end \ No newline at end of file +# describe "Recipient Class" do +# describe "New instance of Slack::Recipient" do +# before do +# VCR.use_cassette("self.get") do +# responseself.get() +# response = HTTParty.get(url, query: params) +# end +# end +# it "calls the Slack API to generate a list" do +# expect() +# end +# end +# end \ No newline at end of file diff --git a/test/test_helper.rb b/test/test_helper.rb index 90aeb408..929b78b3 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -3,15 +3,35 @@ add_filter 'test/' end +require 'httparty' require 'minitest' require 'minitest/autorun' require 'minitest/reporters' require 'minitest/skip_dsl' require 'vcr' +require 'dotenv' + +Dotenv.load + +require_relative "../lib/recipient" +require_relative "../lib/channel" Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new +# VCR.configure do |config| +# config.cassette_library_dir = "test/cassettes" +# config.hook_into :webmock +# end + VCR.configure do |config| - config.cassette_library_dir = "test/cassettes" - config.hook_into :webmock -end + config.cassette_library_dir = "test/cassettes" # folder where casettes will be located + config.hook_into :webmock # tie into this other tool called webmock + config.default_cassette_options = { + :record => :new_episodes, # record new data when we don't have it yet + :match_requests_on => [:method, :uri, :body], # The http method, URI and body of a request all need to match + } + # Don't leave our token lying around in a cassette file. + config.filter_sensitive_data("") do + ENV["SLACK_TOKEN"] + end +end \ No newline at end of file From b995d02dfe1a2ae684b3cc7278c5f9bdc10354da Mon Sep 17 00:00:00 2001 From: Mariya Burrows Date: Tue, 10 Sep 2019 20:41:25 -0700 Subject: [PATCH 03/18] updated channel code --- lib/channel.rb | 2 +- lib/slack_env_test.rb | 12 +++++---- test/cassettes/lists_channels.yml | 45 ++++++++++++++++++++++--------- test/channel_test.rb | 2 +- 4 files changed, 42 insertions(+), 19 deletions(-) diff --git a/lib/channel.rb b/lib/channel.rb index 50e1fcc6..421912f1 100644 --- a/lib/channel.rb +++ b/lib/channel.rb @@ -21,7 +21,7 @@ def list token: ENV["SLACK_TOKEN"] } - channel_objects = Recipient.get(url, query: query_parameters) + channel_objects = Recipient.get(url, query_parameters) channel_list = [] channel_objects["channels"].each do |channel| diff --git a/lib/slack_env_test.rb b/lib/slack_env_test.rb index 32239b3a..3ed3ed81 100644 --- a/lib/slack_env_test.rb +++ b/lib/slack_env_test.rb @@ -21,9 +21,11 @@ # end -channel_list = [] -channel_objects["channels"].each do |channel| - channel_list << channel["name"] -end +p channel_objects["channels"] -puts channel_list \ No newline at end of file +# channel_list = [] +# channel_objects["channels"].each do |channel| +# channel_list << channel["name"] +# end + +# puts channel_list \ No newline at end of file diff --git a/test/cassettes/lists_channels.yml b/test/cassettes/lists_channels.yml index c248b580..d4376569 100644 --- a/test/cassettes/lists_channels.yml +++ b/test/cassettes/lists_channels.yml @@ -2,7 +2,7 @@ http_interactions: - request: method: get - uri: https://slack.com/api/channels.list?query%5Btoken%5D= + uri: https://slack.com/api/channels.list?token= body: encoding: US-ASCII string: '' @@ -21,21 +21,35 @@ http_interactions: Content-Type: - application/json; charset=utf-8 Content-Length: - - '58' + - '687' Connection: - keep-alive Date: - - Wed, 11 Sep 2019 00:20:56 GMT + - Wed, 11 Sep 2019 03:34:29 GMT Server: - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - cc8e1624-ebb4-4050-b42e-eea40d712f0e + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after X-Xss-Protection: - '0' - X-Slack-Req-Id: - - e89946e1-3dd4-4d27-98ba-f6f44792df4e + X-Accepted-Oauth-Scopes: + - channels:read Vary: - Accept-Encoding - X-Content-Type-Options: - - nosniff + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Referrer-Policy: @@ -43,18 +57,25 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-1nva + - haproxy-www-0t0n X-Cache: - Miss from cloudfront Via: - - 1.1 4d8620b80ebe37d366388e117039aa8e.cloudfront.net (CloudFront) + - 1.1 2e20768704c71ff3ce2e677251d27f3c.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - SEA19-C1 X-Amz-Cf-Id: - - 2dNRe8XCKaHvebeHOXBPDjmB0X53XGHJpvJBn6p1wnhw3EDD6FUvtg== + - "-rnmzFJqUUG8ZBU4uS3_E5NdvL9mqM9PfNq-cdjuxh5LylPK2v558Q==" body: encoding: ASCII-8BIT - string: '{"ok":false,"error":"invalid_array_arg"}' + string: '{"ok":true,"channels":[{"id":"CMUR2JTNX","name":"random","is_channel":true,"created":1568071183,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UN5R273J8","name_normalized":"random","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTG0S5D0","UMUR43REX","UMZSUVBED","UN5R273J8","UN5R3N6P6","UN5R3NYUU","UN69C37BJ"],"topic":{"value":"Non-work + banter and water cooler conversation","creator":"UN5R273J8","last_set":1568071183},"purpose":{"value":"A + place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber + you''d prefer to keep out of more focused work-related channels.","creator":"UN5R273J8","last_set":1568071183},"previous_names":[],"num_members":7},{"id":"CN6A88SJZ","name":"turkey","is_channel":true,"created":1568073346,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMUR43REX","name_normalized":"turkey","is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":["UMUR43REX","UN5R273J8","UN69C37BJ"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"to + collect images of turkeys and information about turkeys","creator":"UMUR43REX","last_set":1568073347},"previous_names":[],"num_members":3},{"id":"CN85BSBQF","name":"slack-cli","is_channel":true,"created":1568071183,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UN5R273J8","name_normalized":"slack-cli","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTG0S5D0","UMUR43REX","UMZSUVBED","UN5R273J8","UN5R3N6P6","UN5R3NYUU","UN69C37BJ"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":7},{"id":"CN8FME7AS","name":"general","is_channel":true,"created":1568071183,"is_archived":false,"is_general":true,"unlinked":0,"creator":"UN5R273J8","name_normalized":"general","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTG0S5D0","UMUR43REX","UMZSUVBED","UN5R273J8","UN5R3N6P6","UN5R3NYUU","UN69C37BJ"],"topic":{"value":"Company-wide + announcements and work-based matters","creator":"UN5R273J8","last_set":1568071183},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UN5R273J8","last_set":1568071183},"previous_names":[],"num_members":7}],"response_metadata":{"next_cursor":""}}' http_version: - recorded_at: Wed, 11 Sep 2019 00:20:56 GMT + recorded_at: Wed, 11 Sep 2019 03:34:29 GMT recorded_with: VCR 5.0.0 diff --git a/test/channel_test.rb b/test/channel_test.rb index ea1e7a87..870a6e20 100644 --- a/test/channel_test.rb +++ b/test/channel_test.rb @@ -10,7 +10,7 @@ # token: KEY # } # channel_objects = self.get(url, query: query_parameters) - channel = Slack::Channel.new(14, "Morgan", "general", 5) + channel = Slack::Channel.new("CMUR2JTNX", "random", {"value"=>"", "creator"=>"", "last_set"=>0}, 7) @test_list = channel.list end end From 95d03095e140188abae359607d2899e55b4aee74 Mon Sep 17 00:00:00 2001 From: Mariya Burrows Date: Wed, 11 Sep 2019 09:43:56 -0700 Subject: [PATCH 04/18] added initialize & list method for user with corresponding tests --- lib/channel.rb | 4 +--- lib/slack_env_test.rb | 41 +++++++++++++++++++++++++++++++++++------ lib/user.rb | 18 ++++++++++-------- test/channel_test.rb | 23 +++++++++++++---------- test/test_helper.rb | 27 ++++++++++++++------------- test/user_test.rb | 24 ++++++++++++++++++++++++ 6 files changed, 97 insertions(+), 40 deletions(-) diff --git a/lib/channel.rb b/lib/channel.rb index 421912f1..3ddf6633 100644 --- a/lib/channel.rb +++ b/lib/channel.rb @@ -15,6 +15,7 @@ def initialize(slack_id, name, topic, member_count) def details end + def list url = "https://slack.com/api/channels.list" query_parameters = { @@ -22,14 +23,11 @@ def list } channel_objects = Recipient.get(url, query_parameters) - channel_list = [] channel_objects["channels"].each do |channel| channel_list << channel["name"] end - return channel_list - end diff --git a/lib/slack_env_test.rb b/lib/slack_env_test.rb index 3ed3ed81..245caa8b 100644 --- a/lib/slack_env_test.rb +++ b/lib/slack_env_test.rb @@ -4,14 +4,43 @@ Dotenv.load -url = "https://slack.com/api/channels.list" - -KEY = ENV["SLACK_TOKEN"] +url = "https://slack.com/api/users.list" query_parameters = { - token: KEY + token: ENV["SLACK_TOKEN"] } +user_objects = HTTParty.get(url, query: query_parameters) + + +# user_objects["members"].each do |member| +# p "The id is: #{member["id"]}" +# p "The name is: #{member["name"]}" +# end + +p user_objects +p user_objects.class +p user_objects["members"][1]["id"] +p user_objects["members"][1]["real_name"] +p user_objects["members"][1]["name"] + +# user_list = [] +# user_objects["members"].each do |user| +# user_list << member["name"]["real_name"] +# end +# return user_list + + + +# url = "https://slack.com/api/channels.list" + +# KEY = ENV["SLACK_TOKEN"] +# query_parameters = { +# token: KEY +# } + + -channel_objects = HTTParty.get(url, query: query_parameters) +# channel_objects = HTTParty.get(url, query: query_parameters) +# p channel_objects.class #ap response.class # ["channels"][0]["name"] @@ -21,7 +50,7 @@ # end -p channel_objects["channels"] +#p channel_objects["channels"] # channel_list = [] # channel_objects["channels"].each do |channel| diff --git a/lib/user.rb b/lib/user.rb index 65e54dc8..ef09104a 100644 --- a/lib/user.rb +++ b/lib/user.rb @@ -5,24 +5,26 @@ module Slack class User < Recipient attr_reader :real_name - def initialize(real_name) + def initialize(slack_id, name, real_name) super(slack_id, name) @real_name = real_name end - def details - end + # def details + # end def list url = "https://slack.com/api/users.list" - - KEY = ENV["SLACK_TOKEN"] query_parameters = { - token: KEY + token: ENV["SLACK_TOKEN"] } + user_objects = Recipient.get(url, query_parameters) - list = self.get(url, query: query_parameters) - + user_list = [] + user_objects["members"].each do |name| + user_list << name["real_name"] + end + return user_list end diff --git a/test/channel_test.rb b/test/channel_test.rb index 870a6e20..61343cb4 100644 --- a/test/channel_test.rb +++ b/test/channel_test.rb @@ -3,19 +3,22 @@ describe "Channel Class" do describe "New instance of Slack::Channel" do before do - VCR.use_cassette("lists_channels") do - # url = "https://slack.com/api/channels.list" - # KEY = ENV["SLACK_TOKEN"] - # query_parameters = { - # token: KEY - # } - # channel_objects = self.get(url, query: query_parameters) - channel = Slack::Channel.new("CMUR2JTNX", "random", {"value"=>"", "creator"=>"", "last_set"=>0}, 7) - @test_list = channel.list - end + #VCR.use_cassette("lists_channels") do + @channel = Slack::Channel.new("CMUR2JTNX", "random", {"value"=>"", "creator"=>"", "last_set"=>0}, 7) + @test_list = @channel.list + #end end + + it "is of the class Channel" do + expect(@channel.class).must_equal (Slack::Channel) + end + it "lists the channels" do expect(@test_list).must_equal ["random", "turkey", "slack-cli", "general"] end + + # it "provides details" do + # expect(@test_list.details).must_equal + # end end end \ No newline at end of file diff --git a/test/test_helper.rb b/test/test_helper.rb index 929b78b3..22760a6c 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -8,13 +8,14 @@ require 'minitest/autorun' require 'minitest/reporters' require 'minitest/skip_dsl' -require 'vcr' +#require 'vcr' require 'dotenv' Dotenv.load require_relative "../lib/recipient" require_relative "../lib/channel" +require_relative "../lib/user" Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new @@ -23,15 +24,15 @@ # config.hook_into :webmock # end -VCR.configure do |config| - config.cassette_library_dir = "test/cassettes" # folder where casettes will be located - config.hook_into :webmock # tie into this other tool called webmock - config.default_cassette_options = { - :record => :new_episodes, # record new data when we don't have it yet - :match_requests_on => [:method, :uri, :body], # The http method, URI and body of a request all need to match - } - # Don't leave our token lying around in a cassette file. - config.filter_sensitive_data("") do - ENV["SLACK_TOKEN"] - end -end \ No newline at end of file +# VCR.configure do |config| +# config.cassette_library_dir = "test/cassettes" # folder where casettes will be located +# config.hook_into :webmock # tie into this other tool called webmock +# config.default_cassette_options = { +# :record => :new_episodes, # record new data when we don't have it yet +# :match_requests_on => [:method, :uri, :body], # The http method, URI and body of a request all need to match +# } +# # Don't leave our token lying around in a cassette file. +# config.filter_sensitive_data("") do +# ENV["SLACK_TOKEN"] +# end +# end \ No newline at end of file diff --git a/test/user_test.rb b/test/user_test.rb index e69de29b..a0b23f16 100644 --- a/test/user_test.rb +++ b/test/user_test.rb @@ -0,0 +1,24 @@ +require_relative 'test_helper' + +describe "User Class" do + describe "New instance of Slack::User" do + before do + #VCR.use_cassette("lists_users") do + @user = Slack::User.new("UMTG0S5D0", "samantha.collares", "Samantha Collares") + @user_test_list = @user.list + #end + end + + it "is of the class User" do + expect(@user.class).must_equal (Slack::User) + end + + it "lists the users" do + expect(@user_test_list).must_equal ["Slackbot", "Samantha Collares", "Sabrina Lowney", "Mariya Burrows", "Dianna Tingg", "Julia K", "Morgan Schuler", "Tiffany Chio"] + end + + # it "provides details" do + # expect(@user_test_list.details).must_equal + # end + end +end \ No newline at end of file From 69ccdb38ec3fa87ea67de8ea057b02feb7c0f165 Mon Sep 17 00:00:00 2001 From: Mariya Burrows Date: Wed, 11 Sep 2019 12:37:13 -0700 Subject: [PATCH 05/18] added psuedo code. Currently passing all tests. --- lib/user.rb | 22 ++++++-- test/cassettes/lists_users.yml | 95 ++++++++++++++++++++++++++++++++++ test/channel_test.rb | 8 +-- test/test_helper.rb | 31 +++++------ test/user_test.rb | 8 +-- 5 files changed, 135 insertions(+), 29 deletions(-) create mode 100644 test/cassettes/lists_users.yml diff --git a/lib/user.rb b/lib/user.rb index ef09104a..b20f7bf4 100644 --- a/lib/user.rb +++ b/lib/user.rb @@ -10,9 +10,6 @@ def initialize(slack_id, name, real_name) @real_name = real_name end - # def details - # end - def list url = "https://slack.com/api/users.list" query_parameters = { @@ -27,6 +24,25 @@ def list return user_list end + def select(user_name: nil, slack_id: nil) + #returns the user object that goes with passed in user_name? + + # error when no user exists + + end + + def details + #depends on getting the select object? + #? + # id + # user name + # real name + # location? + # email + end + + def quit + end end end \ No newline at end of file diff --git a/test/cassettes/lists_users.yml b/test/cassettes/lists_users.yml new file mode 100644 index 00000000..b9e6d6c8 --- /dev/null +++ b/test/cassettes/lists_users.yml @@ -0,0 +1,95 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/users.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '1604' + Connection: + - keep-alive + Date: + - Wed, 11 Sep 2019 17:01:07 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 142cecf9-6d6a-4365-9d7e-743effe9d79a + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - users:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-iuw2 + X-Cache: + - Miss from cloudfront + Via: + - 1.1 97d744cbc5fa647cc362d14ff20ecf08.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C2 + X-Amz-Cf-Id: + - nSteNJ_TuLf6_YtslWbjkjSw3PFKuNNNUkIjEjsh_Pry1Y2I4d0uug== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN69AJ2SU","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Slackbot","real_name_normalized":"Slackbot","display_name":"Slackbot","display_name_normalized":"Slackbot","fields":null,"status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"sv41d8cd98f0","always_active":true,"first_name":"slackbot","last_name":"","image_24":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_24.png","image_32":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_32.png","image_48":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_48.png","image_72":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_72.png","image_192":"https:\/\/a.slack-edge.com\/80588\/marketing\/img\/avatars\/slackbot\/avatar-slackbot.png","image_512":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":0},{"id":"UMTG0S5D0","team_id":"TN69AJ2SU","name":"samantha.collares","deleted":false,"color":"674b1b","real_name":"Samantha + Collares","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Samantha + Collares","real_name_normalized":"Samantha Collares","display_name":"Samantha + Collares","display_name_normalized":"Samantha Collares","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge444d412eed","image_24":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071698},{"id":"UMUR43REX","team_id":"TN69AJ2SU","name":"sabrina","deleted":false,"color":"e7392d","real_name":"Sabrina + Lowney","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Sabrina + Lowney","real_name_normalized":"Sabrina Lowney","display_name":"Sabrina Lowney","display_name_normalized":"Sabrina + Lowney","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g3826fd588f7","image_24":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071592},{"id":"UMZSUVBED","team_id":"TN69AJ2SU","name":"mariya.burrows","deleted":false,"color":"e96699","real_name":"Mariya + Burrows","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Mariya + Burrows","real_name_normalized":"Mariya Burrows","display_name":"Mariya Burrows","display_name_normalized":"Mariya + Burrows","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g742995f6521","image_24":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071452,"has_2fa":false},{"id":"UN5R273J8","team_id":"TN69AJ2SU","name":"dtingg","deleted":false,"color":"9f69e7","real_name":"Dianna + Tingg","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Dianna + Tingg","real_name_normalized":"Dianna Tingg","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g18e16502755","first_name":"Dianna","last_name":"Tingg","image_24":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":true,"is_owner":true,"is_primary_owner":true,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071477},{"id":"UN5R3N6P6","team_id":"TN69AJ2SU","name":"juliakingreyworks","deleted":false,"color":"3c989f","real_name":"Julia + K","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Julia + K","real_name_normalized":"Julia K","display_name":"Julia K","display_name_normalized":"Julia + K","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g8ae03401380","image_24":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071668},{"id":"UN5R3NYUU","team_id":"TN69AJ2SU","name":"morganlschuler","deleted":false,"color":"e0a729","real_name":"Morgan + Schuler","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Morgan + Schuler","real_name_normalized":"Morgan Schuler","display_name":"Morgan Schuler","display_name_normalized":"Morgan + Schuler","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gc6d02aa49cf","image_24":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071410},{"id":"UN69C37BJ","team_id":"TN69AJ2SU","name":"tiffanycee123","deleted":false,"color":"4bbe2e","real_name":"Tiffany + Chio","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Tiffany + Chio","real_name_normalized":"Tiffany Chio","display_name":"Tiffany Chio","display_name_normalized":"Tiffany + Chio","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge49485fcc1e","image_24":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071504}],"cache_ts":1568221267,"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Wed, 11 Sep 2019 17:01:07 GMT +recorded_with: VCR 5.0.0 diff --git a/test/channel_test.rb b/test/channel_test.rb index 61343cb4..f702c8b7 100644 --- a/test/channel_test.rb +++ b/test/channel_test.rb @@ -3,10 +3,10 @@ describe "Channel Class" do describe "New instance of Slack::Channel" do before do - #VCR.use_cassette("lists_channels") do - @channel = Slack::Channel.new("CMUR2JTNX", "random", {"value"=>"", "creator"=>"", "last_set"=>0}, 7) - @test_list = @channel.list - #end + VCR.use_cassette("lists_channels") do + @channel = Slack::Channel.new("CMUR2JTNX", "random", {"value"=>"", "creator"=>"", "last_set"=>0}, 7) + @test_list = @channel.list + end end it "is of the class Channel" do diff --git a/test/test_helper.rb b/test/test_helper.rb index 22760a6c..af1b7998 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -8,7 +8,7 @@ require 'minitest/autorun' require 'minitest/reporters' require 'minitest/skip_dsl' -#require 'vcr' +require 'vcr' require 'dotenv' Dotenv.load @@ -19,20 +19,15 @@ Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new -# VCR.configure do |config| -# config.cassette_library_dir = "test/cassettes" -# config.hook_into :webmock -# end - -# VCR.configure do |config| -# config.cassette_library_dir = "test/cassettes" # folder where casettes will be located -# config.hook_into :webmock # tie into this other tool called webmock -# config.default_cassette_options = { -# :record => :new_episodes, # record new data when we don't have it yet -# :match_requests_on => [:method, :uri, :body], # The http method, URI and body of a request all need to match -# } -# # Don't leave our token lying around in a cassette file. -# config.filter_sensitive_data("") do -# ENV["SLACK_TOKEN"] -# end -# end \ No newline at end of file +VCR.configure do |config| + config.cassette_library_dir = "test/cassettes" # folder where casettes will be located + config.hook_into :webmock # tie into this other tool called webmock + config.default_cassette_options = { + :record => :new_episodes, # record new data when we don't have it yet + :match_requests_on => [:method, :uri, :body], # The http method, URI and body of a request all need to match + } + # Don't leave our token lying around in a cassette file. + config.filter_sensitive_data("") do + ENV["SLACK_TOKEN"] + end +end \ No newline at end of file diff --git a/test/user_test.rb b/test/user_test.rb index a0b23f16..f93e8e52 100644 --- a/test/user_test.rb +++ b/test/user_test.rb @@ -3,10 +3,10 @@ describe "User Class" do describe "New instance of Slack::User" do before do - #VCR.use_cassette("lists_users") do - @user = Slack::User.new("UMTG0S5D0", "samantha.collares", "Samantha Collares") - @user_test_list = @user.list - #end + VCR.use_cassette("lists_users") do + @user = Slack::User.new("UMTG0S5D0", "samantha.collares", "Samantha Collares") + @user_test_list = @user.list + end end it "is of the class User" do From 65ca2456e0fc310cd34e508332fc9e9affe8e5ea Mon Sep 17 00:00:00 2001 From: Mariya Burrows Date: Wed, 11 Sep 2019 14:13:46 -0700 Subject: [PATCH 06/18] added send_msg method & corresponding tests. All tests are passing. --- lib/channel.rb | 4 + lib/recipient.rb | 20 +++- lib/user.rb | 6 - lib/workspace.rb | 36 ++++++ test/cassettes/slack-posts.yml | 202 +++++++++++++++++++++++++++++++++ test/recipient_test.rb | 35 +++--- test/workspace_test.rb | 0 7 files changed, 282 insertions(+), 21 deletions(-) create mode 100644 lib/workspace.rb create mode 100644 test/cassettes/slack-posts.yml create mode 100644 test/workspace_test.rb diff --git a/lib/channel.rb b/lib/channel.rb index 3ddf6633..fd701b72 100644 --- a/lib/channel.rb +++ b/lib/channel.rb @@ -13,6 +13,10 @@ def initialize(slack_id, name, topic, member_count) end def details + # channel_id + # name + # topic + # member_count end diff --git a/lib/recipient.rb b/lib/recipient.rb index 4bb82c9f..ed9a341a 100644 --- a/lib/recipient.rb +++ b/lib/recipient.rb @@ -1,5 +1,7 @@ module Slack + class SlackApiError < StandardError; end + class Recipient attr_reader :slack_id, :name @@ -13,10 +15,26 @@ def initialize(slack_id, name) # raise error if API is down or nil -- maybe do in another class? # list all the users or channels - def send_message(message) + def self.send_msg(message, channel) + # BASE_URL = "https://slack.com/api/chat.postMessage" + response = HTTParty.post( + "#{"https://slack.com/api/chat.postMessage"}", + body: { + token: ENV["SLACK_TOKEN"], + text: message, + channel: channel + }, + headers: { 'Content-Type' => 'application/x-www-form-urlencoded' } + ) + unless response.code == 200 && response.parsed_response["ok"] + raise SlackApiError, "Error when posting #{message} to #{channel}, error: #{response.parsed_response["error"]}" + end + + return true end + def details raise NotImplementedError, "Implement me in a child class" end diff --git a/lib/user.rb b/lib/user.rb index b20f7bf4..0ced8223 100644 --- a/lib/user.rb +++ b/lib/user.rb @@ -24,12 +24,6 @@ def list return user_list end - def select(user_name: nil, slack_id: nil) - #returns the user object that goes with passed in user_name? - - # error when no user exists - - end def details #depends on getting the select object? diff --git a/lib/workspace.rb b/lib/workspace.rb new file mode 100644 index 00000000..49d615bf --- /dev/null +++ b/lib/workspace.rb @@ -0,0 +1,36 @@ +require_relative 'user' +require_relative 'channel' + +module Slack + class Workspace + + attr_reader :users, :channels, :selected + + def initialize(users, channels, selected) + @users = users + @channels = channels + @selected = selected + end + + def select_user(user_name: nil, slack_id: nil) + #returns the user object that goes with passed in user_name? + + # error when no user exists + + end + + def select_channel(user_name: nil, slack_id: nil) + #returns the user object that goes with passed in user_name? + + # error when no user exists + + end + + def show_details + end + + def send_message + end + + end +end \ No newline at end of file diff --git a/test/cassettes/slack-posts.yml b/test/cassettes/slack-posts.yml new file mode 100644 index 00000000..65a52d1c --- /dev/null +++ b/test/cassettes/slack-posts.yml @@ -0,0 +1,202 @@ +--- +http_interactions: +- request: + method: post + uri: https://slack.com/api/chat.postMessage/chat.postMessage + body: + encoding: UTF-8 + string: token=&text=Hey%20I%20can%20post%20messages%21&channel=general + headers: + Content-Type: + - application/x-www-form-urlencoded + response: + status: + code: 404 + message: Not Found + headers: + Content-Type: + - text/html; charset=utf-8 + Transfer-Encoding: + - chunked + Connection: + - keep-alive + Date: + - Wed, 11 Sep 2019 21:04:54 GMT + Server: + - Apache + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Cache-Control: + - private, no-cache, no-store, must-revalidate + X-Xss-Protection: + - '0' + X-Robots-Tag: + - noindex,nofollow + Vary: + - Accept-Encoding + Pragma: + - no-cache + Set-Cookie: + - b=49lagqqn3lgnatrwv8snhikl9; expires=Tue, 11-Sep-2029 21:04:54 GMT; Max-Age=315619200; + path=/; domain=.slack.com + - x=49lagqqn3lgnatrwv8snhikl9.1568235894; expires=Wed, 11-Sep-2019 21:19:54 + GMT; Max-Age=900; path=/; domain=.slack.com + X-Frame-Options: + - SAMEORIGIN + X-Via: + - haproxy-www-f2n6 + X-Cache: + - Error from cloudfront + Via: + - 1.1 0cf6c59c77f0fff670ae085179adc459.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C1 + X-Amz-Cf-Id: + - 6ej1YZWXrkWNtvO9s4CR5XYiZwCclyOnvzbL4z0y3NPZ4D-HooaR-w== + body: + encoding: ASCII-8BIT + string: !binary |- + PCFET0NUWVBFIGh0bWw+PGh0bWwgbGFuZz0iZW4tVVMiIGNsYXNzPSIiPjxoZWFkPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vYS5zbGFjay1lZGdlLmNvbS9idjEtNi0xYjI1YzQ1L3dlYnBhY2subWFuaWZlc3QuMWQ4ZTIxMzE5YjBmNDNmNjE4YmEubWluLmpzIiBvbmxvYWQ9IndpbmRvdy5fY2RuID8gX2Nkbi5vayh0aGlzLCBhcmd1bWVudHMpIDogbnVsbCIgb25lcnJvcj0id2luZG93Ll9jZG4gPyBfY2RuLmZhaWxlZCh0aGlzLCBhcmd1bWVudHMpIDogbnVsbCIgY3Jvc3NvcmlnaW49ImFub255bW91cyI+PC9zY3JpcHQ+PHNjcmlwdD53aW5kb3cudHNfZW5kcG9pbnRfdXJsID0gImh0dHBzOlwvXC9zbGFjay5jb21cL2JlYWNvblwvdGltaW5nIjsoZnVuY3Rpb24oZSkgewoJdmFyIG49RGF0ZS5ub3c/RGF0ZS5ub3coKTorbmV3IERhdGUscj1lLnBlcmZvcm1hbmNlfHx7fSx0PVtdLGE9e30saT1mdW5jdGlvbihlLG4pe2Zvcih2YXIgcj0wLGE9dC5sZW5ndGgsaT1bXTthPnI7cisrKXRbcl1bZV09PW4mJmkucHVzaCh0W3JdKTtyZXR1cm4gaX0sbz1mdW5jdGlvbihlLG4pe2Zvcih2YXIgcixhPXQubGVuZ3RoO2EtLTspcj10W2FdLHIuZW50cnlUeXBlIT1lfHx2b2lkIDAhPT1uJiZyLm5hbWUhPW58fHQuc3BsaWNlKGEsMSl9O3Iubm93fHwoci5ub3c9ci53ZWJraXROb3d8fHIubW96Tm93fHxyLm1zTm93fHxmdW5jdGlvbigpe3JldHVybihEYXRlLm5vdz9EYXRlLm5vdygpOituZXcgRGF0ZSktbn0pLHIubWFya3x8KHIubWFyaz1yLndlYmtpdE1hcmt8fGZ1bmN0aW9uKGUpe3ZhciBuPXtuYW1lOmUsZW50cnlUeXBlOiJtYXJrIixzdGFydFRpbWU6ci5ub3coKSxkdXJhdGlvbjowfTt0LnB1c2gobiksYVtlXT1ufSksci5tZWFzdXJlfHwoci5tZWFzdXJlPXIud2Via2l0TWVhc3VyZXx8ZnVuY3Rpb24oZSxuLHIpe249YVtuXS5zdGFydFRpbWUscj1hW3JdLnN0YXJ0VGltZSx0LnB1c2goe25hbWU6ZSxlbnRyeVR5cGU6Im1lYXN1cmUiLHN0YXJ0VGltZTpuLGR1cmF0aW9uOnItbn0pfSksci5nZXRFbnRyaWVzQnlUeXBlfHwoci5nZXRFbnRyaWVzQnlUeXBlPXIud2Via2l0R2V0RW50cmllc0J5VHlwZXx8ZnVuY3Rpb24oZSl7cmV0dXJuIGkoImVudHJ5VHlwZSIsZSl9KSxyLmdldEVudHJpZXNCeU5hbWV8fChyLmdldEVudHJpZXNCeU5hbWU9ci53ZWJraXRHZXRFbnRyaWVzQnlOYW1lfHxmdW5jdGlvbihlKXtyZXR1cm4gaSgibmFtZSIsZSl9KSxyLmNsZWFyTWFya3N8fChyLmNsZWFyTWFya3M9ci53ZWJraXRDbGVhck1hcmtzfHxmdW5jdGlvbihlKXtvKCJtYXJrIixlKX0pLHIuY2xlYXJNZWFzdXJlc3x8KHIuY2xlYXJNZWFzdXJlcz1yLndlYmtpdENsZWFyTWVhc3VyZXN8fGZ1bmN0aW9uKGUpe28oIm1lYXN1cmUiLGUpfSksZS5wZXJmb3JtYW5jZT1yLCJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJihkZWZpbmUuYW1kfHxkZWZpbmUuYWpzKSYmZGVmaW5lKCJwZXJmb3JtYW5jZSIsW10sZnVuY3Rpb24oKXtyZXR1cm4gcn0pIC8vIGVzbGludC1kaXNhYmxlLWxpbmUKfSkod2luZG93KTs8L3NjcmlwdD48c2NyaXB0PgoKKGZ1bmN0aW9uKCkgewoJCgl3aW5kb3cuVFNNYXJrID0gZnVuY3Rpb24obWFya19sYWJlbCkgewoJCWlmICghd2luZG93LnBlcmZvcm1hbmNlIHx8ICF3aW5kb3cucGVyZm9ybWFuY2UubWFyaykgcmV0dXJuOwoJCXBlcmZvcm1hbmNlLm1hcmsobWFya19sYWJlbCk7Cgl9OwoJd2luZG93LlRTTWFyaygnc3RhcnRfbG9hZCcpOwoKCQoJd2luZG93LlRTTWVhc3VyZUFuZEJlYWNvbiA9IGZ1bmN0aW9uKG1lYXN1cmVfbGFiZWwsIHN0YXJ0X21hcmtfbGFiZWwpIHsKCQlpZiAoIXdpbmRvdy5wZXJmb3JtYW5jZSB8fCAhd2luZG93LnBlcmZvcm1hbmNlLm1hcmsgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5tZWFzdXJlKSB7CgkJCXJldHVybjsKCQl9CgoJCXBlcmZvcm1hbmNlLm1hcmsoc3RhcnRfbWFya19sYWJlbCArICdfZW5kJyk7CgoJCXRyeSB7CgkJCXBlcmZvcm1hbmNlLm1lYXN1cmUobWVhc3VyZV9sYWJlbCwgc3RhcnRfbWFya19sYWJlbCwgc3RhcnRfbWFya19sYWJlbCArICdfZW5kJyk7CgkJCXdpbmRvdy5UU0JlYWNvbihtZWFzdXJlX2xhYmVsLCBwZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlOYW1lKG1lYXN1cmVfbGFiZWwpWzBdLmR1cmF0aW9uKTsKCQl9IGNhdGNoIChlKSB7CgkJCQoJCX0KCX07CgoJCglpZiAoJ3NlbmRCZWFjb24nIGluIG5hdmlnYXRvcikgewoJCXdpbmRvdy5UU0JlYWNvbiA9IGZ1bmN0aW9uKGxhYmVsLCB2YWx1ZSkgewoJCQl2YXIgZW5kcG9pbnRfdXJsID0gd2luZG93LnRzX2VuZHBvaW50X3VybCB8fCAnaHR0cHM6Ly9zbGFjay5jb20vYmVhY29uL3RpbWluZyc7CgkJCW5hdmlnYXRvci5zZW5kQmVhY29uKAoJCQkJZW5kcG9pbnRfdXJsICsgJz9kYXRhPScgKyBlbmNvZGVVUklDb21wb25lbnQobGFiZWwgKyAnOicgKyB2YWx1ZSksCgkJCQknJwoJCQkpOwoJCX07Cgl9IGVsc2UgewoJCXdpbmRvdy5UU0JlYWNvbiA9IGZ1bmN0aW9uKGxhYmVsLCB2YWx1ZSkgewoJCQl2YXIgZW5kcG9pbnRfdXJsID0gd2luZG93LnRzX2VuZHBvaW50X3VybCB8fCAnaHR0cHM6Ly9zbGFjay5jb20vYmVhY29uL3RpbWluZyc7CgkJCW5ldyBJbWFnZSgpLnNyYyA9IGVuZHBvaW50X3VybCArICc/ZGF0YT0nICsgZW5jb2RlVVJJQ29tcG9uZW50KGxhYmVsICsgJzonICsgdmFsdWUpOwoJCX07Cgl9Cn0pKCk7Cjwvc2NyaXB0PjxzY3JpcHQ+d2luZG93LlRTTWFyaygnc3RlcF9sb2FkJyk7PC9zY3JpcHQ+PG5vc2NyaXB0PjxtZXRhIGh0dHAtZXF1aXY9InJlZnJlc2giIGNvbnRlbnQ9IjA7IFVSTD0vYXBpL2NoYXQucG9zdE1lc3NhZ2UvY2hhdC5wb3N0TWVzc2FnZT9ub2pzbW9kZT0xIj48L25vc2NyaXB0PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij52YXIgc2FmZV9ob3N0cyA9IFsnYXBwLm9wdGltaXplbHkuY29tJ107CgppZiAoc2VsZiAhPT0gdG9wICYmIHNhZmVfaG9zdHMuaW5kZXhPZih0b3AubG9jYXRpb24uaG9zdCkgPT09IC0xKSB7Cgl3aW5kb3cuZG9jdW1lbnQud3JpdGUoCgkJJ1x1MDAzQ3N0eWxlPmJvZHkgKiB7ZGlzcGxheTpub25lICFpbXBvcnRhbnQ7fVx1MDAzQy9zdHlsZT5cdTAwM0NhIGhyZWY9IiMiIG9uY2xpY2s9JyArCgkJCScidG9wLmxvY2F0aW9uLmhyZWY9d2luZG93LmxvY2F0aW9uLmhyZWYiIHN0eWxlPSJkaXNwbGF5OmJsb2NrICFpbXBvcnRhbnQ7cGFkZGluZzoxMHB4Ij5HbyB0byBTbGFjay5jb21cdTAwM0MvYT4nCgkpOwp9CgooZnVuY3Rpb24oKSB7Cgl2YXIgdGltZXI7CglpZiAoc2VsZiAhPT0gdG9wICYmIHNhZmVfaG9zdHMuaW5kZXhPZih0b3AubG9jYXRpb24uaG9zdCkgPT09IC0xKSB7CgkJdGltZXIgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CgkJCWlmICh3aW5kb3cpIHsKCQkJCXRyeSB7CgkJCQkJdmFyIHBhZ2VFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYWdlJyk7CgkJCQkJdmFyIGNsaWVudEVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NsaWVudC11aScpOwoJCQkJCXZhciBzZWN0aW9uRWxzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnbmF2LCBoZWFkZXIsIHNlY3Rpb24nKTsKCgkJCQkJcGFnZUVsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQocGFnZUVsKTsKCQkJCQljbGllbnRFbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNsaWVudEVsKTsKCQkJCQlmb3IgKHZhciBpID0gMDsgaSA8IHNlY3Rpb25FbHMubGVuZ3RoOyBpKyspIHsKCQkJCQkJc2VjdGlvbkVsc1tpXS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHNlY3Rpb25FbHNbaV0pOwoJCQkJCX0KCQkJCQl3aW5kb3cuVFMgPSBudWxsOwoJCQkJCXdpbmRvdy5URCA9IG51bGw7CgkJCQkJd2luZG93LmNsZWFySW50ZXJ2YWwodGltZXIpOwoJCQkJfSBjYXRjaCAoZSkge30JCgkJCX0KCQl9LCAyMDApOwoJfQp9KSgpOzwvc2NyaXB0PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij50cnkgewoJaWYgKHdpbmRvdy5sb2NhdGlvbi5oYXNoICYmICF3aW5kb3cubG9jYXRpb24uaGFzaC5tYXRjaCgvXigjP1thLXpBLVowLTlfXSopJC8pKSB7CgkJd2luZG93LmxvY2F0aW9uLmhhc2ggPSAnJzsKCX0KfSBjYXRjaCAoZSkge30KPC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgp3aW5kb3cuZGF0YUxheWVyID0gd2luZG93LmRhdGFMYXllciB8fCBbXTsKd2luZG93LmRhdGFMYXllci5wdXNoKHsKCSdndG0uc3RhcnQnOiBEYXRlLm5vdygpLAoJJ2V2ZW50JyA6ICdndG0uanMnLAoJJ3NlY3VyZV9wYWdlJyA6IGZhbHNlLAp9KTsKdmFyIGZpcnN0U2NyaXB0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NjcmlwdCcpWzBdOwp2YXIgdGhpc1NjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpOwp0aGlzU2NyaXB0LmFzeW5jID0gdHJ1ZTsKdGhpc1NjcmlwdC5zcmMgPSAnLy93d3cuZ29vZ2xldGFnbWFuYWdlci5jb20vZ3RtLmpzP2lkPUdUTS1LSDJMUEsnOwpmaXJzdFNjcmlwdC5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzU2NyaXB0LCBmaXJzdFNjcmlwdCk7Cjwvc2NyaXB0PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGZ1bmN0aW9uKGUpIHsKCXZhciBndG1EYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwoJdmFyIGd0bVRhZ3MgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcqW2RhdGEtZ3RtLWNsaWNrXScpOwoJdmFyIGd0bUNsaWNrSGFuZGxlciA9IGZ1bmN0aW9uKGMpIHsKCQl2YXIgZ3RtX2V2ZW50cyA9IHRoaXMuZ2V0QXR0cmlidXRlKCdkYXRhLWd0bS1jbGljaycpOwoJCWlmICghZ3RtX2V2ZW50cykgcmV0dXJuOwoJCXZhciBndG1fZXZlbnRzX2FyciA9IGd0bV9ldmVudHMuc3BsaXQoIiwiKTsKCQlmb3IodmFyIGU9MDsgZSA8IGd0bV9ldmVudHNfYXJyLmxlbmd0aDsgZSsrKSB7CgkJCXZhciBldiA9IGd0bV9ldmVudHNfYXJyW2VdLnRyaW0oKTsKCQkJZ3RtRGF0YUxheWVyLnB1c2goeyAnZXZlbnQnOiBldiB9KTsKCQl9Cgl9OwoJZm9yKHZhciBnPTA7IGcgPCBndG1UYWdzLmxlbmd0aDsgZysrKXsKCQl2YXIgZWxlbSA9IGd0bVRhZ3NbZ107CgkJZWxlbS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGd0bUNsaWNrSGFuZGxlcik7Cgl9Cn0pOwo8L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CihmdW5jdGlvbihlLGMsYixmLGQsZyxhKXtlLlNsYWNrQmVhY29uT2JqZWN0PWQ7CmVbZF09ZVtkXXx8ZnVuY3Rpb24oKXsoZVtkXS5xPWVbZF0ucXx8W10pLnB1c2goWzEqbmV3IERhdGUoKSxhcmd1bWVudHNdKX07CmVbZF0ubD0xKm5ldyBEYXRlKCk7Zz1jLmNyZWF0ZUVsZW1lbnQoYik7YT1jLmdldEVsZW1lbnRzQnlUYWdOYW1lKGIpWzBdOwpnLmFzeW5jPTE7Zy5zcmM9ZjthLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGcsYSkKfSkod2luZG93LGRvY3VtZW50LCJzY3JpcHQiLCJodHRwczovL2Euc2xhY2stZWRnZS5jb20vYnYxLTYtMWIyNWM0NS9zbGFja19iZWFjb24uNTI1NmMxZjI1MmY5YWU4ODUwNzEubWluLmpzIiwic2IiKTsKd2luZG93LnNiKCdzZXQnLCAndG9rZW4nLCAnMzMwN2Y0MzY5NjNlMDJkNGY5ZWI4NWNlNTE1OTc0NGMnKTsKd2luZG93LnNiKCd0cmFjaycsICdwYWdldmlldycpOwo8L3NjcmlwdD48bWV0YSBuYW1lPSJyZWZlcnJlciIgY29udGVudD0ibm8tcmVmZXJyZXIiPjxtZXRhIG5hbWU9InN1cGVyZmlzaCIgY29udGVudD0ibm9maXNoIj48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+dmFyIFRTX2xhc3RfbG9nX2RhdGUgPSBudWxsOwp2YXIgVFNNYWtlTG9nRGF0ZSA9IGZ1bmN0aW9uKCkgewoJdmFyIGRhdGUgPSBuZXcgRGF0ZSgpOwoKCXZhciB5ID0gZGF0ZS5nZXRGdWxsWWVhcigpOwoJdmFyIG1vID0gZGF0ZS5nZXRNb250aCgpKzE7Cgl2YXIgZCA9IGRhdGUuZ2V0RGF0ZSgpOwoKCXZhciB0aW1lID0gewoJICBoOiBkYXRlLmdldEhvdXJzKCksCgkgIG1pOiBkYXRlLmdldE1pbnV0ZXMoKSwKCSAgczogZGF0ZS5nZXRTZWNvbmRzKCksCgkgIG1zOiBkYXRlLmdldE1pbGxpc2Vjb25kcygpCgl9OwoKCU9iamVjdC5rZXlzKHRpbWUpLm1hcChmdW5jdGlvbihtb21lbnQsIGluZGV4KSB7CgkJaWYgKG1vbWVudCA9PSAnbXMnKSB7CgkJCWlmICh0aW1lW21vbWVudF0gPCAxMCkgewoJCQkJdGltZVttb21lbnRdID0gdGltZVttb21lbnRdKycwMCc7CgkJCX0gZWxzZSBpZiAodGltZVttb21lbnRdIDwgMTAwKSB7CgkJCQl0aW1lW21vbWVudF0gPSB0aW1lW21vbWVudF0rJzAnOwoJCQl9CgkJfSBlbHNlIGlmICh0aW1lW21vbWVudF0gPCAxMCkgewoJCQl0aW1lW21vbWVudF0gPSAnMCcgKyB0aW1lW21vbWVudF07CgkJfQoJfSk7CgoJdmFyIHN0ciA9IHkgKyAnLycgKyBtbyArICcvJyArIGQgKyAnICcgKyB0aW1lLmggKyAnOicgKyB0aW1lLm1pICsgJzonICsgdGltZS5zICsgJy4nICsgdGltZS5tczsKCWlmIChUU19sYXN0X2xvZ19kYXRlKSB7CgkJdmFyIGRpZmYgPSBkYXRlLVRTX2xhc3RfbG9nX2RhdGU7CgkJLy9zdHIrPSAnICgnK2RpZmYrJ21zKSc7Cgl9CglUU19sYXN0X2xvZ19kYXRlID0gZGF0ZTsKCXJldHVybiBzdHIrJyAnOwp9Cgp2YXIgcGFyc2VEZWVwTGlua1JlcXVlc3QgPSBmdW5jdGlvbihjb2RlKSB7Cgl2YXIgbSA9IGNvZGUubWF0Y2goLyJpZCI6IihbQ0RHXVtBLVowLTldezh9KSIvKTsKCXZhciBpZCA9IG0gPyBtWzFdIDogbnVsbDsKCgltID0gY29kZS5tYXRjaCgvInRlYW0iOiIoVFtBLVowLTldezh9KSIvKTsKCXZhciB0ZWFtID0gbSA/IG1bMV0gOiBudWxsOwoKCW0gPSBjb2RlLm1hdGNoKC8ibWVzc2FnZSI6IihbMC05XStcLlswLTldKykiLyk7Cgl2YXIgbWVzc2FnZSA9IG0gPyBtWzFdIDogbnVsbDsKCglyZXR1cm4geyBpZDogaWQsIHRlYW06IHRlYW0sIG1lc3NhZ2U6IG1lc3NhZ2UgfTsKfQoKaWYgKCdyZW5kZXJlckV2YWxBc3luYycgaW4gd2luZG93KSB7Cgl2YXIgb3JpZ1JlbmRlcmVyRXZhbEFzeW5jID0gd2luZG93LnJlbmRlcmVyRXZhbEFzeW5jOwoJd2luZG93LnJlbmRlcmVyRXZhbEFzeW5jID0gZnVuY3Rpb24oYmxvYikgewoJCXRyeSB7CgkJCXZhciBkYXRhID0gSlNPTi5wYXJzZShkZWNvZGVVUklDb21wb25lbnQoYXRvYihibG9iKSkpOwoJCQlpZiAoZGF0YS5jb2RlLm1hdGNoKC9oYW5kbGVEZWVwTGluay8pKSB7CgkJCQl2YXIgcmVxdWVzdCA9IHBhcnNlRGVlcExpbmtSZXF1ZXN0KGRhdGEuY29kZSk7CgkJCQlpZiAoIXJlcXVlc3QuaWQgfHwgIXJlcXVlc3QudGVhbSB8fCAhcmVxdWVzdC5tZXNzYWdlKSByZXR1cm47CgoJCQkJcmVxdWVzdC5jbWQgPSAnY2hhbm5lbCc7CgkJCQlUU1NTQi5oYW5kbGVEZWVwTGlua1dpdGhBcmdzKEpTT04uc3RyaW5naWZ5KHJlcXVlc3QpKTsKCQkJCXJldHVybjsKCQkJfSBlbHNlIHsKCQkJCW9yaWdSZW5kZXJlckV2YWxBc3luYyhibG9iKTsKCQkJfQoJCX0gY2F0Y2ggKGUpIHsKCQl9Cgl9Cn08L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+dmFyIFRTU1NCID0gewoJY2FsbDogZnVuY3Rpb24oKSB7CgkJcmV0dXJuIGZhbHNlOwoJfQp9Ozwvc2NyaXB0PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij53aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGZ1bmN0aW9uKCkgewoJdmFyIHdhc19UUyA9IHdpbmRvdy5UUzsKCWRlbGV0ZSB3aW5kb3cuVFM7CglpZiAod2FzX1RTKSB3aW5kb3cuVFMgPSB3YXNfVFM7Cn0pOzwvc2NyaXB0Pjx0aXRsZT5UaGVyZSdzIGJlZW4gYSBnbGl0Y2jigKYgfCBTbGFjazwvdGl0bGU+PGxpbmsgaHJlZj0iaHR0cHM6Ly9hLnNsYWNrLWVkZ2UuY29tL2I5NzQxL3N0eWxlL3JvbGx1cC1zbGFja19raXRfbGVnYWN5X2FkYXB0ZXJzLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgb25sb2FkPSJ3aW5kb3cuX2NkbiA/IF9jZG4ub2sodGhpcywgYXJndW1lbnRzKSA6IG51bGwiIG9uZXJyb3I9IndpbmRvdy5fY2RuID8gX2Nkbi5mYWlsZWQodGhpcywgYXJndW1lbnRzKSA6IG51bGwiIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiPjxsaW5rIGhyZWY9Imh0dHBzOi8vYS5zbGFjay1lZGdlLmNvbS9iMWY3My9zdHlsZS9yb2xsdXAtcGxhc3RpYy5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIG9ubG9hZD0id2luZG93Ll9jZG4gPyBfY2RuLm9rKHRoaXMsIGFyZ3VtZW50cykgOiBudWxsIiBvbmVycm9yPSJ3aW5kb3cuX2NkbiA/IF9jZG4uZmFpbGVkKHRoaXMsIGFyZ3VtZW50cykgOiBudWxsIiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIj48bGluayBocmVmPSJodHRwczovL2Euc2xhY2stZWRnZS5jb20vYnYxLTYtMWIyNWM0NS9tb2Rlcm4udmVuZG9yLmM4YmFlYjIubWluLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgb25sb2FkPSJ3aW5kb3cuX2NkbiA/IF9jZG4ub2sodGhpcywgYXJndW1lbnRzKSA6IG51bGwiIG9uZXJyb3I9IndpbmRvdy5fY2RuID8gX2Nkbi5mYWlsZWQodGhpcywgYXJndW1lbnRzKSA6IG51bGwiIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiPjxsaW5rIGhyZWY9Imh0dHBzOi8vYS5zbGFjay1lZGdlLmNvbS9idjEtNi0xYjI1YzQ1L2FwcGxpY2F0aW9uLmYyZmMwYzMubWluLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgb25sb2FkPSJ3aW5kb3cuX2NkbiA/IF9jZG4ub2sodGhpcywgYXJndW1lbnRzKSA6IG51bGwiIG9uZXJyb3I9IndpbmRvdy5fY2RuID8gX2Nkbi5mYWlsZWQodGhpcywgYXJndW1lbnRzKSA6IG51bGwiIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiPjxsaW5rIGhyZWY9Imh0dHBzOi8vYS5zbGFjay1lZGdlLmNvbS9mMTk1YzMvc3R5bGUvcm9sbHVwLXNsYWNrX2tpdF9oZWxwZXJzLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiBpZD0ic2xhY2tfa2l0X2hlbHBlcnNfc3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIG9ubG9hZD0id2luZG93Ll9jZG4gPyBfY2RuLm9rKHRoaXMsIGFyZ3VtZW50cykgOiBudWxsIiBvbmVycm9yPSJ3aW5kb3cuX2NkbiA/IF9jZG4uZmFpbGVkKHRoaXMsIGFyZ3VtZW50cykgOiBudWxsIiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIj48bGluayBocmVmPSJodHRwczovL2Euc2xhY2stZWRnZS5jb20vZjAyMGE4L3N0eWxlLzQwNC5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIG9ubG9hZD0id2luZG93Ll9jZG4gPyBfY2RuLm9rKHRoaXMsIGFyZ3VtZW50cykgOiBudWxsIiBvbmVycm9yPSJ3aW5kb3cuX2NkbiA/IF9jZG4uZmFpbGVkKHRoaXMsIGFyZ3VtZW50cykgOiBudWxsIiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIj48bGluayBocmVmPSJodHRwczovL2Euc2xhY2stZWRnZS5jb20vOGVmZDMvc3R5bGUvc3RpY2t5X25hdi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIG9ubG9hZD0id2luZG93Ll9jZG4gPyBfY2RuLm9rKHRoaXMsIGFyZ3VtZW50cykgOiBudWxsIiBvbmVycm9yPSJ3aW5kb3cuX2NkbiA/IF9jZG4uZmFpbGVkKHRoaXMsIGFyZ3VtZW50cykgOiBudWxsIiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIj48bGluayBocmVmPSJodHRwczovL2Euc2xhY2stZWRnZS5jb20vOTVhYmEwL3N0eWxlL2Zvb3Rlci5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIG9ubG9hZD0id2luZG93Ll9jZG4gPyBfY2RuLm9rKHRoaXMsIGFyZ3VtZW50cykgOiBudWxsIiBvbmVycm9yPSJ3aW5kb3cuX2NkbiA/IF9jZG4uZmFpbGVkKHRoaXMsIGFyZ3VtZW50cykgOiBudWxsIiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIj48bGluayBocmVmPSJodHRwczovL2Euc2xhY2stZWRnZS5jb20vMDQxNWMvc3R5bGUvbGlicy9sYXRvLTItY29tcHJlc3NlZC5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIG9ubG9hZD0id2luZG93Ll9jZG4gPyBfY2RuLm9rKHRoaXMsIGFyZ3VtZW50cykgOiBudWxsIiBvbmVycm9yPSJ3aW5kb3cuX2NkbiA/IF9jZG4uZmFpbGVkKHRoaXMsIGFyZ3VtZW50cykgOiBudWxsIiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIj48bWV0YSBwcm9wZXJ0eT0ib2c6dHlwZSIgY29udGVudD0id2Vic2l0ZSI+PG1ldGEgcHJvcGVydHk9Im9nOnNpdGVfbmFtZSIgY29udGVudD0iU2xhY2siPjxtZXRhIHByb3BlcnR5PSJvZzp0aXRsZSIgY29udGVudD0iVGhlcmUncyBiZWVuIGEgZ2xpdGNo4oCmIj48bWV0YSBwcm9wZXJ0eT0ib2c6aW1hZ2UiIGNvbnRlbnQ9Imh0dHBzOi8vYS5zbGFjay1lZGdlLmNvbS84MDU4OC9pbWcvNDA0LzQwNC1tZXRhLXRodW1iLmpwZyI+PG1ldGEgcHJvcGVydHk9Im9nOmRlc2NyaXB0aW9uIiBjb250ZW50PSJXZSdyZSBub3QgcXVpdGUgc3VyZSB3aGF0IHdlbnQgd3JvbmcuIFlvdSBjYW4gZ28gYmFjaywgb3IgdHJ5IGxvb2tpbmcgb24gb3VyICZsdDthIGhyZWY9JnF1b3Q7aHR0cDovL2dldC5zbGFjay5oZWxwJnF1b3Q7IHRhcmdldD0mcXVvdDtfYmxhbmsmcXVvdDsmZ3Q7SGVscCBDZW50ZXImbHQ7L2EmZ3Q7IGlmIHlvdSBuZWVkIGEgaGFuZC4iPjxtZXRhIHByb3BlcnR5PSJvZzp1cmwiIGNvbnRlbnQ9Imh0dHBzOi8vc2xhY2suY29tL2FwaS9jaGF0LnBvc3RNZXNzYWdlL2NoYXQucG9zdE1lc3NhZ2UiPjxsaW5rIGlkPSJmYXZpY29uIiByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Imh0dHBzOi8vYS5zbGFjay1lZGdlLmNvbS84MDU4OC9tYXJrZXRpbmcvaW1nL21ldGEvZmF2aWNvbi0zMi5wbmciIHNpemVzPSIxNngxNiAzMngzMiA0OHg0OCIgdHlwZT0iaW1hZ2UvcG5nIj48L2hlYWQ+PGJvZHkgY2xhc3M9IiBkZXByZWNhdGVkIj48c2NyaXB0PnZhciB3ID0gTWF0aC5tYXgoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoLCB3aW5kb3cuaW5uZXJXaWR0aCB8fCAwKTsKaWYgKHcgPiAxNDQwKSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdib2R5JykuY2xhc3NMaXN0LmFkZCgnd2lkZXNjcmVlbicpOzwvc2NyaXB0PjxuYXYgY2xhc3M9InRvcCBwZXJzaXN0ZW50Ij48YSBocmVmPSJodHRwczovL3NsYWNrLmNvbS8iIGNsYXNzPSJsb2dvIiBkYXRhLXFhPSJsb2dvIiBkYXRhLWNsb2ctZXZlbnQ9IldFQlNJVEVfQ0xJQ0siIGRhdGEtY2xvZy1wYXJhbXM9ImNsaWNrX3RhcmdldD1sb2dvIiBhcmlhLWxhYmVsPSJTbGFjayBob21lcGFnZSI+PC9hPjx1bD48bGk+PGEgaHJlZj0iaHR0cHM6Ly9zbGFjay5jb20vaXMiIGRhdGEtcWE9InByb2R1Y3QiIGRhdGEtY2xvZy1ldmVudD0iV0VCU0lURV9DTElDSyIgZGF0YS1jbG9nLXBhcmFtcz0iY2xpY2tfdGFyZ2V0PW5hdl9wcm9kdWN0Ij5Qcm9kdWN0PC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vc2xhY2suY29tL3ByaWNpbmc/dWlfc3RlcD01NSZ1aV9lbGVtZW50PTUiIGRhdGEtcWE9InByaWNpbmciIGRhdGEtY2xvZy1ldmVudD0iV0VCU0lURV9DTElDSyIgZGF0YS1jbG9nLXBhcmFtcz0iY2xpY2tfdGFyZ2V0PW5hdl9wcmljaW5nIj5QcmljaW5nPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2V0LnNsYWNrLmhlbHAvaGMvZW4tdXMiIGRhdGEtcWE9InN1cHBvcnQiIGRhdGEtY2xvZy1ldmVudD0iV0VCU0lURV9DTElDSyIgZGF0YS1jbG9nLXBhcmFtcz0iY2xpY2tfdGFyZ2V0PW5hdl9zdXBwb3J0Ij5TdXBwb3J0PC9hPjwvbGk+PGxpIGNsYXNzPSJtb2JpbGVfYnRuIGRvd25sb2FkX3NsYWNrIj48YSBocmVmPSIvZ2V0IiBkYXRhLXFhPSJkb3dubG9hZF9zbGFjayIgZGF0YS1jbG9nLWV2ZW50PSJXRUJTSVRFX0NMSUNLIiBkYXRhLWNsb2ctcGFyYW1zPSJjbGlja190YXJnZXQ9bmF2X2Rvd25sb2FkIj5Eb3dubG9hZCBTbGFjazwvYT48L2xpPjxsaT48YSBkYXRhLWd0bS1jbGljaz0iU2lnblVwLG9wdG91dF9uYXZfY3JlYXRlX3RlYW0iIGhyZWY9Imh0dHBzOi8vc2xhY2suY29tL2NyZWF0ZSIgY2xhc3M9IiIgZGF0YS1xYT0iY3JlYXRlX3RlYW0iIGRhdGEtY2xvZy1ldmVudD0iV0VCU0lURV9DTElDSyIgZGF0YS1jbG9nLXBhcmFtcz0iY2xpY2tfdGFyZ2V0PW5hdl9jcmVhdGVfdGVhbSI+Q3JlYXRlIGEgbmV3IHdvcmtzcGFjZTwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwczovL3NsYWNrLmNvbS9nZXQtc3RhcnRlZCIgZGF0YS1ndG0tY2xpY2s9Im9wdG91dF9uYXZfZmluZF90ZWFtIiBkYXRhLXFhPSJmaW5kX3RlYW0iIGRhdGEtY2xvZy1ldmVudD0iV0VCU0lURV9DTElDSyIgZGF0YS1jbG9nLXBhcmFtcz0iY2xpY2tfdGFyZ2V0PW5hdl9maW5kX3RlYW0iPkZpbmQgeW91ciB3b3Jrc3BhY2U8L2E+PC9saT48bGkgY2xhc3M9InNpZ25faW4gaGlkZV9vbl9tb2JpbGUiPjxhIGRhdGEtZ3RtLWNsaWNrPSJvcHRvdXRfbmF2X3NpZ25pbiIgaHJlZj0iaHR0cHM6Ly9zbGFjay5jb20vc2lnbmluIiBjbGFzcz0iYnRuX3N0aWNreSBidG5fZmlsbGVkIiBkYXRhLXFhPSJzaWduX2luIiBkYXRhLWNsb2ctZXZlbnQ9IldFQlNJVEVfQ0xJQ0siIGRhdGEtY2xvZy1wYXJhbXM9ImNsaWNrX3RhcmdldD1uYXZfc2lnbl9pbiI+U2lnbiBpbjwvYT48L2xpPjxsaSBjbGFzcz0ibW9iaWxlX2J0biBtb2JpbGVfbWVudV9idG4iPjxhIGhyZWY9IiMiIGNsYXNzPSJidG5fc3RpY2t5IiBkYXRhLWNsb2ctZXZlbnQ9IldFQlNJVEVfQ0xJQ0siIGRhdGEtY2xvZy1wYXJhbXM9ImNsaWNrX3RhcmdldD1uYXZfbW9iaWxlX21lbnVfYnRuIj5NZW51PC9hPjwvbGk+PC91bD48L25hdj48bmF2IGNsYXNzPSJtb2JpbGVfbWVudSBsb2FkaW5nIG1lbnVfc2Nyb2xsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PGRpdiBjbGFzcz0ibW9iaWxlX21lbnVfd3JhcHBlciI+PGRpdiBjbGFzcz0ibW9iaWxlX21lbnVfaGVhZGVyIj48YSBocmVmPSJodHRwczovL3NsYWNrLmNvbS8iIGNsYXNzPSJsb2dvIiBkYXRhLWNsb2ctZXZlbnQ9IldFQlNJVEVfQ0xJQ0siIGRhdGEtY2xvZy1wYXJhbXM9ImNsaWNrX3RhcmdldD1uYXZfbG9nbyI+PC9hPjxhIGhyZWY9IiMiIGNsYXNzPSJjbG9zZSIgYXJpYS1sYWJlbD0iY2xvc2UiIGRhdGEtY2xvZy1ldmVudD0iV0VCU0lURV9DTElDSyIgZGF0YS1jbG9nLXBhcmFtcz0iY2xpY2tfdGFyZ2V0PW5hdl9tZW51X2Nsb3NlIj48dHMtaWNvbiBjbGFzcz0idHNfaWNvbiB0c19pY29uX3RpbWVzIj48L3RzLWljb24+PC9hPjwvZGl2Pjx1bD48bGk+PGEgaHJlZj0iaHR0cHM6Ly9zbGFjay5jb20vaXMiIGRhdGEtY2xvZy1ldmVudD0iV0VCU0lURV9DTElDSyIgZGF0YS1jbG9nLXBhcmFtcz0iY2xpY2tfdGFyZ2V0PW5hdl9wcm9kdWN0Ij5Qcm9kdWN0PC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vc2xhY2suY29tL3ByaWNpbmc/dWlfc3RlcD01NSZ1aV9lbGVtZW50PTUiIGNsYXNzPSJtb2JpbGVfbmF2X3ByaWNpbmciIGRhdGEtY2xvZy1ldmVudD0iV0VCU0lURV9DTElDSyIgZGF0YS1jbG9nLXBhcmFtcz0iY2xpY2tfdGFyZ2V0PW5hdl9wcmljaW5nIj5QcmljaW5nPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2V0LnNsYWNrLmhlbHAvaGMvZW4tdXMiIGRhdGEtY2xvZy1ldmVudD0iV0VCU0lURV9DTElDSyIgZGF0YS1jbG9nLXBhcmFtcz0iY2xpY2tfdGFyZ2V0PW5hdl9zdXBwb3J0Ij5TdXBwb3J0PC9hPjwvbGk+PGxpPjxhIGhyZWY9Ii9nZXQiIGRhdGEtY2xvZy1ldmVudD0iV0VCU0lURV9DTElDSyIgZGF0YS1jbG9nLXBhcmFtcz0iY2xpY2tfdGFyZ2V0PW5hdl9kb3dubG9hZCI+RG93bmxvYWQgPHNwYW4gY2xhc3M9Im9wdGlvbmFsX2Rlc2t0b3BfbmF2X21lc3NhZ2UiPnRoZSBTbGFjayBhcHA8L3NwYW4+PC9hPjwvbGk+PC91bD48dWwgY2xhc3M9Im1vYmlsZV9tZW51X2Zvb3RlciI+PGxpPjxhIGhyZWY9Imh0dHBzOi8vc2xhY2suY29tL3NpZ25pbiIgZGF0YS1ndG0tY2xpY2s9Im9wdG91dF9uYXZfc2lnbmluIiB0YXJnZXQ9Il9ibGFuayIgZGF0YS1jbG9nLWV2ZW50PSJXRUJTSVRFX0NMSUNLIiBkYXRhLWNsb2ctcGFyYW1zPSJjbGlja190YXJnZXQ9bmF2X3NpZ25faW4iPjx0cy1pY29uIGNsYXNzPSJ0c19pY29uIHNtYWxsIGZsb2F0X25vbmUgdGVhbV9pY29uIHRzX2ljb25fcGx1cyBkZWZhdWx0IHNpZ251cF9pY29uIj48L3RzLWljb24+PHNwYW4gY2xhc3M9InN3aXRjaGVyX2xhYmVsIj5TaWduIGluPC9zcGFuPjwvYT48L2xpPjxsaT48YSBkYXRhLWd0bS1jbGljaz0iU2lnblVwLG9wdG91dF9uYXZfY3JlYXRlX3RlYW0iIGhyZWY9Imh0dHBzOi8vc2xhY2suY29tL2NyZWF0ZSIgY2xhc3M9IiIgdGFyZ2V0PSJfYmxhbmsiIGRhdGEtY2xvZy1ldmVudD0iV0VCU0lURV9DTElDSyIgZGF0YS1jbG9nLXBhcmFtcz0iY2xpY2tfdGFyZ2V0PW5hdl9jcmVhdGVfdGVhbSI+PHRzLWljb24gY2xhc3M9InRzX2ljb24gc21hbGwgZmxvYXRfbm9uZSB0ZWFtX2ljb24gYy1pY29uLS1zbGFjayBkZWZhdWx0IHNpZ251cF9pY29uIj48L3RzLWljb24+PHNwYW4gY2xhc3M9InN3aXRjaGVyX2xhYmVsIj5DcmVhdGUgYSBuZXcgd29ya3NwYWNlPC9zcGFuPjwvYT48L2xpPjwvdWw+PC9kaXY+PC9uYXY+PGRpdiBpZD0icGFnZSIgY2xhc3M9IiI+PGRpdiBpZD0icGFnZV9jb250ZW50cyIgZGF0YS1xYT0icGFnZV9jb250ZW50cyIgY2xhc3M9IiI+PGRpdiBpZD0icHJlbG9hZCI+PC9kaXY+PGRpdiBpZD0iY29udGVudCIgZGF0YS1iYWNrZ3JvdW5kPSJodHRwczovL2Euc2xhY2stZWRnZS5jb20vODA1ODgvaW1nLzQwNC9tYXJyYWtlc2gtbWVhZG93LTgwLmpwZyI+PGltZyBpZD0iYmFja2dyb3VuZCIgc3JjPSJkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhBUUFCQUlBQUFBQUFBUC8vL3lINUJBRUFBQUFBTEFBQUFBQUJBQUVBQUFJQlJBQTciPjxkaXYgaWQ9InNwcml0ZS13cmFwcGVyIj48ZGl2IGNsYXNzPSJzcHJpdGUgcGlnZ3kgcGlnZ3lfY2hld2luZyI+PC9kaXY+PGRpdiBjbGFzcz0ic3ByaXRlIGNoaWNrZW4gY2hpY2tlbl93YWxrX2xyIj48ZGl2IGNsYXNzPSJzdWJfc3ByaXRlIj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJzcHJpdGUgY2hpY2tlbiBjaGlja2VuX3BlY2tfMnggZmxpcHBlZCI+PC9kaXY+PGRpdiBjbGFzcz0ic3ByaXRlIHBpZ2d5IHBpZ2d5X3dhbGsgcGlnZ3lfd2Fsa19sciI+PC9kaXY+PGRpdiBjbGFzcz0ic3ByaXRlIGNoaWNrZW4gY2hpY2tlbl93YWxrX3JsIGZsaXBwZWQiPjxkaXYgY2xhc3M9InN1Yl9zcHJpdGUiPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9InNwcml0ZSBwaWdneSBwaWdneV93YWxrIGZsaXBwZWQgcGlnZ3lfd2Fsa19ybCI+PC9kaXY+PGRpdiBjbGFzcz0ic3ByaXRlIGJ1dHRlcmZseSBidXR0ZXJmbHlfYW5nbGUgYnV0dGVyZmx5X2FuZ2xlX2xyIj48L2Rpdj48ZGl2IGNsYXNzPSJzcHJpdGUgYnV0dGVyZmx5IGJ1dHRlcmZseV9hbmdsZV8xIGJ1dHRlcmZseV9hbmdsZV8xX2xyIj48L2Rpdj48ZGl2IGNsYXNzPSJzcHJpdGUgYnV0dGVyZmx5IGJ1dHRlcmZseV9yb29rZWQgYnV0dGVyZmx5X3Jvb2tlZF9sciI+PC9kaXY+PGRpdiBjbGFzcz0ic3ByaXRlIGJ1dHRlcmZseSBidXR0ZXJmbHlfc2lkZSBidXR0ZXJmbHlfc2lkZV9sciI+PC9kaXY+PGRpdiBjbGFzcz0ic3ByaXRlIGJ1dHRlcmZseSBidXR0ZXJmbHlfYW5nbGUgZmxpcHBlZCBidXR0ZXJmbHlfYW5nbGVfcmwgYm90dG9tIj48L2Rpdj48ZGl2IGNsYXNzPSJzcHJpdGUgYnV0dGVyZmx5IGJ1dHRlcmZseV9hbmdsZV8xIGZsaXBwZWQgYnV0dGVyZmx5X2FuZ2xlXzFfcmwgYm90dG9tIj48L2Rpdj48ZGl2IGNsYXNzPSJzcHJpdGUgYnV0dGVyZmx5IGJ1dHRlcmZseV9yb29rZWQgZmxpcHBlZCBidXR0ZXJmbHlfcm9va2VkX3JsIGJvdHRvbSI+PC9kaXY+PGRpdiBjbGFzcz0ic3ByaXRlIGJ1dHRlcmZseSBidXR0ZXJmbHlfc2lkZSBmbGlwcGVkIGJ1dHRlcmZseV9zaWRlX3JsIGJvdHRvbSI+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBpZD0ibG9hZGVyIj48P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pjxzdmcgd2lkdGg9IjMycHgiIGhlaWdodD0iMzJweCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiIGNsYXNzPSJ1aWwtaGVhcnQiPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPTEwMCBoZWlnaHQ9MTAwIGZpbGw9Im5vbmUiIGNsYXNzPSJiayI+PC9yZWN0PjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUwIDUwKSI+PGc+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTUwIC01MCkiPjxwYXRoIGQ9Ik05MCwzMC4yYzAtMTEtOS0yMC4xLTIwLTIwLjFzLTIwLDkuMS0yMCwyMC4yYzAsMC4yLDAtMC4zLDAsMC43SDUwYzAtMSwwLTAuNiwwLTAuOGMwLTExLTktMjAuMS0yMC0yMC4xcy0yMCw5LjEtMjAsMjAuMiBjMCwwLjIsMC0wLjMsMCwwLjdoMGMwLjMsMjAsMzAsMzkuNSw0MCw1NWMxMC0xNS41LDM5LjctMzUsNDAtNTVoMEM5MCwzMCw5MCwzMC40LDkwLDMwLjJ6IiBmaWxsPSIjZjAyIj48L3BhdGg+PC9nPjxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgdHlwZT0ic2NhbGUiIGZyb209IjEuMyIgdG89IjAuOSIgZHVyPSIxcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGNhbGNNb2RlPSJzcGxpbmUiIHZhbHVlcz0iMS4zOzAuOTsxLjE7MC45IiBrZXlUaW1lcz0iMDswLjM7MC4zMDE7MSIga2V5U3BsaW5lcz0iMCAwLjc1IDAuMjUgMTswIDEgMCAxOzAgLjc1IC4yNSAxIj48L2FuaW1hdGVUcmFuc2Zvcm0+PC9nPjwvZz48L3N2Zz48L2Rpdj48ZGl2IGNsYXNzPSJjYXJkIj48aDE+PGkgY2xhc3M9InRzX2ljb24gdHNfaWNvbl93YXJuaW5nIG11c3RhcmRfeWVsbG93Ij48L2k+VGhlcmXigJlzIGJlZW4gYSBnbGl0Y2jigKY8L2gxPjxwPldl4oCZcmUgbm90IHF1aXRlIHN1cmUgd2hhdCB3ZW50IHdyb25nLiBZb3UgY2FuIGdvIGJhY2ssIG9yIHRyeSBsb29raW5nIG9uIG91ciA8YSBocmVmPSJodHRwOi8vZ2V0LnNsYWNrLmhlbHAvaGMvZW4tdXMiIHRhcmdldD0iX2JsYW5rIj5IZWxwIENlbnRlcjwvYT4gaWYgeW91IG5lZWQgYSBoYW5kLjwvcD48L2Rpdj48bm9zY3JpcHQ+PHN0eWxlPiNsb2FkZXIgewoJCQkJCQlkaXNwbGF5OiBub25lOwoJCQkJCX08L3N0eWxlPjwvbm9zY3JpcHQ+PHNjcmlwdD4KLy8gZmlyZSA0MDQKd2luZG93LmRhdGFMYXllciA9IHdpbmRvdy5kYXRhTGF5ZXIgfHwgW107CndpbmRvdy5kYXRhTGF5ZXIucHVzaCh7CgknZXZlbnQnIDogJ0Vycm9yNDA0JywKfSk7CgooZnVuY3Rpb24oKSB7CgkvLyBxdWljayBoYWNrOiA4LWJpdCBhbHBoYS1mcmllbmRseSBsb2dvCgl2YXIgbG9nbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoZWFkZXJfbG9nbycpOwoJdmFyIGFsdF9zcmMgPSAnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFQQUFBQUJJQ0FNQUFBRC9Fb2k0QUFBQytsQk1WRVVBQUFBb0ZTY3FJakVvSlRNckxEUXJNamcxTURrN016Z3FPRDA5TlRvL09EMUNPajlFUEVGRlBVTklQVWhOUEVtOUh5bEpRVWJQRjF4TVJFbGlQVkZkUDFDd0oxcThLU3BQUjB6TUlWZkxJVnVSTTFTcksxa3dVazZMTmxpR09GY3NWVkhCTFNkVFNrL1BKbDVWVFZJeldFL05LMDYvTkNqUksyWlpVVmJDTnlyTk0wVXlZRlZjVkZuUE5reGZWbHd1WmxyUU5XaGhXRjdKUGpaa1cySFVPbkhKUlRmRlNDcG5YMlJxWW1kc1pHblZSSFhJVVNodVpXdHhhRzdNVlRMSldDeDFiSEZMZVc0YWpIUjRjSFhhVW9OMGNuWmdnRFZlZ0RzN2gydDhjM2t6aTI0aGtIaG9namVBZG56YldvWjdlWDEwaGpZam1IaDdoampTY0N5SGZvUTBtSGwvaVRRdW1vQ0ZpRFY0aTBHRGdZV0dpVGJRZEMxSGxYemdabzU4ajBXSGhZbEFuWGlKaDR2Z2JaTFVlVDh0cFg3VWZDcCtrazQ2bzMzZ2I1bU1pbzQrcG8yamtUWGZkWnVRanBMV2hDdVNrSlNubERBNHJvYXVsREk1cjRlVms1YzhzWWxEclorSG9HZmpmNk9abHBxRG9tNUJ0WTJjbVo3amhxZUNxWCtmbmFHQXFvYmNtUzdPbml0U3VaR2lvS1RWbmk1UXZadm1qNjJsbzZmZ29TdXBwcXBmd0o5bnZhcmVwamJvbDdOc3ZiR3RxcTkydmJOeXZybXdyYkxpcWtKdHc2UnB3Y2h2d2NLeXI3Und4cWJyb2JwdHhjemhzVTYydExodng4NTZ4ODkreXF6bHRWbTZ1THpzcWNCK3k5VG51R0srdThEa3VtS0l6N2p1c2NibHZXdkJ2OE9QenRMRXdjYkp3OEtWMUw3cXczZnZ1c3pJeHNyTXg4V1gxZG5NeWM3dHg0SHV5WW1qMnNYUnpNcnh3dFBQemRHajJkL1V6czNUME5YajBaL3MwSlNvM3VUWTB0R3gzOHp6eTlyWDFObnYxSjZ5MytiYzE5WG8yS3k0NGVLODR0RGIyTnp4MktmZjJkanowOSs4NXRybDNiemYzT0h6M0xIajN0ekY1dW5tNE4vSTZ1REk2ZXpsNHVmMzRyM3E1T1A1NE9ycDV1djU1c2ZVN2ZMVjcrYjU2TS90NnUvdzZ1bmI4Ty82NlBENzdkcmg4K3p3N3ZMMzhOdm04L1QyOE8vdzh1LzU3L1gyOC9qMDl2UHUrUFA2OXVmKzl1N3orUHY4OXZYNitlLzQrdmY4K2Y3MisvNy8rdm42L1BuOC92dmVndjF1QUFBQUFYUlNUbE1BUU9iWVpnQUFDZ2RKUkVGVWVBSGwyZ1Y0RTJrZXgvSC82bnRwc2FicnZxVXJTQTZIdGx4N0c5emRZZDBYeVhhbDJTTzQweFQzTG1sd0QxcTVXeVM0dXgvZFhuSGJTb3FVYVVtZTU2YVp5WnYvWk43Sk5KQVQ2T2Z4ZmJEdnppOXZNNU5BS2JtZ0xMbTBmSko1MHZyclVFYTQxcHZkSnAyQ3NtRzcyZU4zS0F2K01GTXBUaWdEOXBxOS9oT2p0dmR0cDQrSmlXMlhDY0dRMVNvbU9pbzZKbTRJUExDbEtIZ1ZCRjhVRVNSRE1Bd25vcUtnQkUrNkIwRlhsd2ltUWpDWWlDZ1hIdFRmemYvWlRkY2dnaVFJaHZoQWdsM0gxeTFZZDl3RlVyK2I1WnUrZTI3ZmpvTTVFQlE2SWhnRHdXQWdvaXVnNnVJRVk0a0pGMEhDT2NsbjAzZlBwRnZjMHU5Q0VGUWhndUVRREgxTEgzeGpzRkV3MktkNHZSazV3TmRTUzRKUkhFa0VRNElibkEwcW5PT01IaE9VTmozMnArNmZXTEFkOFBBaWdocjhPUkZsZ29wL0dyMk9zemJOMXpadjBhTHRkQXQyTjNqQnB1QUdud1VWNjFEd0F0OU44N1U5K2RvU2d5ellCWGhvTC8xbmdrK0RpZ1VvZURBSDJJbWYrb2kxdkY0VzdGendnaE9DRzN3U1ZLd3dzamRkZkM1OVR0c1dYczJuNGVBY2VHamhSQkFmM09Dam9PSTREbDdnclozSFozMkNnaVdiWGczQkN6YjhsNE01SThaNWEzbkRVQy9lOVB3Y2VIaGhRUTN1UzBUN1FmMUZqQndTYXdVS201NS9GWUlZM0RlNHdYc2dnRTMvL0cwL3ZoYjVwZ1h5TjR2YnZCMTNJUUJPKzVoV2RTUEtoMVdKYmpaOFk2RjY4T1dOMWhsSnliYWR1YURzOGg3YjFNUVppL1k3R01FN0FjdTJIWFhLTmoxWXJQMnFVK1BHamVmZ1h2bW01NldmSzRZQU9NWkVFRVNqdHhYNUNYYlpEZDVmcnZ2VXp2NGZhSWdrSHJYajkvZ050b1lRRWhvMzNNNUpOMDFyZWIrZ1hObW1aYlZxVWw4aXZzS25Pc0d0UEJGOERpSXUwZmRYUjZXQkwxc1ZJbFZqa1ZNU3ZCVzhaaEJSK2VHU1RkTmFYZytMMHFhNy83UU5BcFJJV0dwY2xnUi9Db0psa1VUTzVBVHNaRFNScTNzVTN5MmhXVXdsVkZlZ2lpK2t0Mm1NekxaZ0k4VGF6aitNTXB1WFFtQ3NoQzJCRWN4MUpVd2RBRWtyUjFoQzB3RGk1Y0ZKYUNvRjlPZnRsdmtXU3c4Y3pOaDA1LzU4YllsN0VJakxvWVROS2c5MjFDWUt4Z0NWckNGc3NRQUpSTFNaTWErNjR1bVd3OWVXK0FYMXlqYmRrYS8xT0FLQjZFM1l3amw1Y0NwUmRCaEV5cjltaGp3WTk5YklneEt1SGZReW9sN3BPYjNrNEFrekV0Q211VkJhT1B4b1FWSGV6cWx4a2p0K3p6eDdBNC9URVJZODZpdGhSSUdPUTgrME5vTGJHTlI3RTl4b3IyelR0RFlId0RrVEY5OEdkYklMVXVVS0hia3BqSkN3QWtZd2JQVzhIcHNscHE1ZGxpQWVUdmlHRC8rbmlFK1RGaVVQYVZMZWMxRlJjSVpTN3dXYXk5ejBraDA1NkZsZXdKdkdtMG9GcjRJeHNjdEFHdHdWUFpRS0g1TUxndjB4eEdPNDc2Q3IyRURndE1XSnJ3a2N6TzZGTFNoNHRuVFRmTzFWRjRqTzQrQ0ZEL0pZclFDWXlxTmdZZFNoUXh4QWNiRkVGT2R6Z2ZYNEQ5eW9xK0lBM2hBaVNsUG9oU1VvV0xycGlkNWFlSWhOOTVXT1RDMFl6cHF1QUpaRlJLR2NNSGxSVkJGZ25KQS9IQVV6ZTJHZWhibnBUbC85L0t1ZjU5TjdIK0N6Z1BKVzlXQTVkRTFQQXpxRk5abisvN1pVM0ZzN0Y0QjVoV2ZUV2lQdkZtQ1htSnUrLzY5ODhHOFJvU0lUTmhjRUh0d2JUNlF1d1dlY0hLMWNpM3JyNW9IWFFRdldnOWJ5ZGdIbWttLzYydHltbGJYYVd1UDlOanRDQ0ZhbFE2SzlTRDJZeTk1djMzK1drN3dtckFDNXhHT3p5aEVaUWFnb0J5REY4MUh2dkNuZi9taWtmRGI5RCttbTgrZTIxNG9hWGd2c2pVZW9maEhuTDNobjN4b2FjUk1kckhsOTBadXRuVVFVd2dGVEVwRUpkWURFVlZyTTN3UTVCeHNSNVUyUC9MTDlLMXF2aHZkQldXNDRrUXRMNHBTQzAyb1ROaFBBR3ZxcUJKVmdaQkZJNVd4eDMrQ2V1WXVlNWZuZDlNZ3VEVjZzOUs0V1d3eCs3QWtqRERXeW1jRWNIb1RzWmlNWnZXMW1ta3JrUW8rQ2orS2NuR0wwUE43dnBrZCt5TmZ5Nm1peDl1QlBaalJoZUNsTGZBQ0FnN2tZb2h5TUxtQVQxV0FrSWhjVStkMDByZVZWMVdMMTFJNXExa3hqWFNoWVBIYTdFbVh4QUZhMUt6eURzTVE1Z2NuL3BndFgvcFd2cFNTYmJnaHE5cGlpTmNTSFRSYWNJWmxBVkxQZXZXTTArQXFuRVpFTzJKSVZ4eUhqZjlPRkc3Nm9ySzJQZXFXYi9nNUtvVERERkJNcXV3RUt3N2VIVWNTajlwaVQ0cG5YQWYycjl4T1JKbGY5WWNOVXRHOWJRSnN1S3FubFZVTzkwazF2Z2xMaTdKK1c5eDdWdnNIWnRHZXFDenlXb1ZPNmtGN3ZOYXB2YzVJQTlNU2pmR2FwTjgzWHZpOW12WXdualRmOUJRUWd0eDN4NE5BbkQ1L2lWK0JVVm9NSnY4L1Vxd1VQQjRETFljU2pMbGVxVGMvYU5JQ3ZwZW93TjExNThuMElTRE1peWtiQm42TnZhTHprWkIyOFEvRHRIN0VESnB0RE05K0Z4NE1DMTJqNlBMN2w2MCsrUUdObG0zNVBQSy9HWHdQLzF2UzJvZ0I4RDVlSFBqM3NpODVvUFNBR2ZNMzJlSSswSzREc1R5eUFFamFmWTZvSm9UYjYzL1RQcmQ5Njhva25ubmhPSy9HMno2YnJEVDBHYXZacitFRnRCQ1NPQ0VMQUo5aHpQbFVCTDBjRWVtdUo3NGNqVDRPSE0wbERZampncmNYN2w0NDZ3cUc0YWI3MkhiNjJ4TE8wVmI3cCtxaFdtVXU0d1lsWlV5UzdoWXZHM3dBdzRKdS9iUEFvaUNNZWllNjVFQ3JFSVB3eWJwSE9QV0luZmlCaWtoL2JYWUhOOWRFN1R6MUJ2YWJGL2t4cjMvN2creFJRaFVjVzFqVXA5ZlJSMi9BcStCekZ3ZWluYUEwSENESWlpZlNYdTZJSW9tdG4rRlJmRHAwQ0dlZ0ZMeHQxS2pBY0cxcXZBcTJWYi9vOWQrMkxIM3h2NXYwUnlGY0w1Y3JmeE1FSkFIQlRRMFJoSnZ2cHpMVkRxaEFCT3JxenloTWxWb0ROK0FVdkczVXVvNWFQZWhNSHl6Zjk0bCsrTmd1Mmd6cU9LRXFVZjZtbEhmRWpHZjNrWVdvSHNGVVdqSC85cHlDeHFhRVE5WXI0K21WdW1xK2xTclZwUFZHZzUrVGYwOG91UjVSWldUY0lTRVFtT3NYSEFOV0JzQjhiREtCVmtrMC9yNlVxZjd5eU1NV01sR2JUbklFd1JUbFkzOFN6YWVRZHN2dGFXd2l6TnhzQWp1TDVpSEpmSWg1Vk9LQW1hNmszV0p0K3BmM0tmUHo5ZUpWTkl4dWppSnlCQTRGTytpKzArVjVqVTZiMC9UQitXbzMxdmdtODAraUVvMUx4cHpFZStlZ0pobXpUZk8zaWZIQzdqb05Ub0hUc1RUUStjN2FEUncyZmQ1TlhXa2wya0FxWGlXZ3Rmak9qSXhMUlc4RXRFd2ZMSGhXSHg2V0J4MkthSzk5MDA3bjVRS1U4MFBQcHdsUkQzWER4QU5ZUHp3U3Y1Tm8xZERwZGphalQ0SEUyb2E1R3VHTXliQVplM3liTjlQcG1UYnBlQWV4MFlteW9lTnBISjJXRHlOazdMaWFhRjNjWUVLNUozUTRtNjlZODFpdFl0dWsvTmJvR21HVFRseUFRenN2N2oyWTdYS0NPeTlwLzlESUhhaHhaT3plZWRVRGdwTUZvMDgvVS9NeG92QUhZZFdud0kydXlGcXY0Qk8vcG10Mk1KWDREREc5NmtoTWVXZGNxNCtCWG4zaTZlamVGcnhPZk1sUHI0UkUySGorVEcvcVJFWkZ1MnJuUUxKcDVCeDVsQThYYVdnTjN1L0MzaVdXYnZyZFE3TDBFajdaajN6V3MxWFRncHZ2QXU0aURKNENVODhqQ1NlYVU3VTU0bkl4bWJScHh3bU5Hc3VuajhQaVRiUG9RbEFGNDB4ZWhEUGpOU0kyR3NvQWJqUi9IbHdVWEI0dTlLNkNNdVBHcmU4KzdYRkJtM0xweDQ1WVRIaXYvQm91WVNLOVlUVFRuQUFBQUFFbEZUa1N1UW1DQyc7CglpZiAobG9nbykgewoJCWxvZ28gPSBsb2dvLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbWcnKVswXTsKCQlpZiAoIWxvZ28pIHJldHVybjsKCQlsb2dvLnNyYyA9IGFsdF9zcmM7Cgl9Cn0oKSk7Cjwvc2NyaXB0PjwvZGl2PjxkaXYgaWQ9Im92ZXJsYXkiPjwvZGl2PjwvZGl2Pjxmb290ZXIgZGF0YS1xYT0iZm9vdGVyIj48c2VjdGlvbiBjbGFzcz0ibGlua3MiPjxkaXYgY2xhc3M9ImdyaWQiPjxkaXYgY2xhc3M9ImNvbCBzcGFuXzFfb2ZfNCBuYXZfY29sIj48dWw+PGxpIGNsYXNzPSJjYXRfMSI+VXNpbmcgU2xhY2s8L2xpPjxsaT48YSBocmVmPSJodHRwczovL3NsYWNrLmNvbS9pcyIgZGF0YS1xYT0icHJvZHVjdF9mb290ZXIiIGRhdGEtY2xvZy1ldmVudD0iV0VCU0lURV9DTElDSyIgZGF0YS1jbG9nLXBhcmFtcz0iY2xpY2tfdGFyZ2V0PWZvb3Rlcl9wcm9kdWN0Ij5Qcm9kdWN0PC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vc2xhY2suY29tL2VudGVycHJpc2UiIGRhdGEtcWE9ImVudGVycHJpc2VfZm9vdGVyIiBkYXRhLWNsb2ctZXZlbnQ9IldFQlNJVEVfQ0xJQ0siIGRhdGEtY2xvZy1wYXJhbXM9ImNsaWNrX3RhcmdldD1mb290ZXJfZW50ZXJwcmlzZSI+RW50ZXJwcmlzZTwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwczovL3NsYWNrLmNvbS9wcmljaW5nP3VpX3N0ZXA9MjgmdWlfZWxlbWVudD01IiBkYXRhLXFhPSJwcmljaW5nX2Zvb3RlciIgZGF0YS1jbG9nLWV2ZW50PSJXRUJTSVRFX0NMSUNLIiBkYXRhLWNsb2ctcGFyYW1zPSJjbGlja190YXJnZXQ9Zm9vdGVyX3ByaWNpbmciPlByaWNpbmc8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cHM6Ly9nZXQuc2xhY2suaGVscC9oYy9lbi11cyIgZGF0YS1xYT0ic3VwcG9ydF9mb290ZXIiIGRhdGEtY2xvZy1ldmVudD0iV0VCU0lURV9DTElDSyIgZGF0YS1jbG9nLXBhcmFtcz0iY2xpY2tfdGFyZ2V0PWZvb3Rlcl9zdXBwb3J0Ij5TdXBwb3J0PC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vc2xhY2suY29tL2d1aWRlcyIgZGF0YS1xYT0iZ2V0dGluZ19zdGFydGVkIiBkYXRhLWNsb2ctZXZlbnQ9IldFQlNJVEVfQ0xJQ0siIGRhdGEtY2xvZy1wYXJhbXM9ImNsaWNrX3RhcmdldD1mb290ZXJfZ2V0dGluZ19zdGFydGVkIj5TbGFjayBHdWlkZXM8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cHM6Ly9zbGFjay5jb20vYXBwcyIgZGF0YS1xYT0iYXBwX2RpcmVjdG9yeSIgZGF0YS1jbG9nLWV2ZW50PSJXRUJTSVRFX0NMSUNLIiBkYXRhLWNsb2ctcGFyYW1zPSJjbGlja190YXJnZXQ9Zm9vdGVyX2FwcF9kaXJlY3RvcnkiPkFwcCBEaXJlY3Rvcnk8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cHM6Ly9hcGkuc2xhY2suY29tLyIgZGF0YS1xYT0iYXBpIiBkYXRhLWNsb2ctZXZlbnQ9IldFQlNJVEVfQ0xJQ0siIGRhdGEtY2xvZy1wYXJhbXM9ImNsaWNrX3RhcmdldD1mb290ZXJfYXBpIj5BUEk8L2E+PC9saT48L3VsPjwvZGl2PjxkaXYgY2xhc3M9ImNvbCBzcGFuXzFfb2ZfNCBuYXZfY29sIj48dWw+PGxpIGNsYXNzPSJjYXRfMiI+U2xhY2sgPHRzLWljb24gY2xhc3M9InRzX2ljb25faGVhcnQiPjwvdHMtaWNvbj48L2xpPjxsaT48YSBocmVmPSJodHRwczovL3NsYWNrLmNvbS9qb2JzIiBkYXRhLXFhPSJqb2JzIiBkYXRhLWNsb2ctZXZlbnQ9IldFQlNJVEVfQ0xJQ0siIGRhdGEtY2xvZy1wYXJhbXM9ImNsaWNrX3RhcmdldD1mb290ZXJfam9icyI+Sm9iczwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwczovL3NsYWNrLmNvbS9jdXN0b21lcnMiIGRhdGEtcWE9ImN1c3RvbWVycyIgZGF0YS1jbG9nLWV2ZW50PSJXRUJTSVRFX0NMSUNLIiBkYXRhLWNsb2ctcGFyYW1zPSJjbGlja190YXJnZXQ9Zm9vdGVyX2N1c3RvbWVycyI+Q3VzdG9tZXJzPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vc2xhY2suY29tL2RldmVsb3BlcnMiIGRhdGEtcWE9ImRldmVsb3BlcnMiIGRhdGEtY2xvZy1ldmVudD0iV0VCU0lURV9DTElDSyIgZGF0YS1jbG9nLXBhcmFtcz0iY2xpY2tfdGFyZ2V0PWZvb3Rlcl9kZXZlbG9wZXJzIj5EZXZlbG9wZXJzPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vc2xhY2suY29tL2V2ZW50cyIgZGF0YS1xYT0iZXZlbnRzIiBkYXRhLWNsb2ctZXZlbnQ9IldFQlNJVEVfQ0xJQ0siIGRhdGEtY2xvZy1wYXJhbXM9ImNsaWNrX3RhcmdldD1mb290ZXJfZXZlbnRzIj5FdmVudHM8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cHM6Ly9zbGFja2hxLmNvbS8iIGRhdGEtcWE9ImJsb2dfZm9vdGVyIiBkYXRhLWNsb2ctZXZlbnQ9IldFQlNJVEVfQ0xJQ0siIGRhdGEtY2xvZy1wYXJhbXM9ImNsaWNrX3RhcmdldD1mb290ZXJfYmxvZyI+QmxvZzwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwczovL3NsYWNrLnNob3AvIiBkYXRhLXFhPSJzbGFja19zaG9wIiBkYXRhLWNsb2ctZXZlbnQ9IldFQlNJVEVfQ0xJQ0siIGRhdGEtY2xvZy1wYXJhbXM9ImNsaWNrX3RhcmdldD1mb290ZXJfc2xhY2tfc2hvcCI+U2xhY2sgU2hvcDwvYT48L2xpPjwvdWw+PC9kaXY+PGRpdiBjbGFzcz0iY29sIHNwYW5fMV9vZl80IG5hdl9jb2wiPjx1bD48bGkgY2xhc3M9ImNhdF8zIj5MZWdhbDwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vc2xhY2suY29tL3ByaXZhY3ktcG9saWN5IiBkYXRhLXFhPSJwcml2YWN5IiBkYXRhLWNsb2ctZXZlbnQ9IldFQlNJVEVfQ0xJQ0siIGRhdGEtY2xvZy1wYXJhbXM9ImNsaWNrX3RhcmdldD1mb290ZXJfcHJpdmFjeSI+UHJpdmFjeTwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwczovL3NsYWNrLmNvbS9zZWN1cml0eSIgZGF0YS1xYT0ic2VjdXJpdHkiIGRhdGEtY2xvZy1ldmVudD0iV0VCU0lURV9DTElDSyIgZGF0YS1jbG9nLXBhcmFtcz0iY2xpY2tfdGFyZ2V0PWZvb3Rlcl9zZWN1cml0eSI+U2VjdXJpdHk8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cHM6Ly9zbGFjay5jb20vdGVybXMtb2Ytc2VydmljZSIgZGF0YS1xYT0idG9zIiBkYXRhLWNsb2ctZXZlbnQ9IldFQlNJVEVfQ0xJQ0siIGRhdGEtY2xvZy1wYXJhbXM9ImNsaWNrX3RhcmdldD1mb290ZXJfdG9zIj5UZXJtcyBvZiBTZXJ2aWNlPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vc2xhY2suY29tL3BvbGljaWVzIiBkYXRhLXFhPSJwb2xpY2llcyIgZGF0YS1jbG9nLWV2ZW50PSJXRUJTSVRFX0NMSUNLIiBkYXRhLWNsb2ctcGFyYW1zPSJjbGlja190YXJnZXQ9Zm9vdGVyX3BvbGljaWVzIj5Qb2xpY2llczwvYT48L2xpPjwvdWw+PC9kaXY+PGRpdiBjbGFzcz0iY29sIHNwYW5fMV9vZl80IG5hdl9jb2wiPjx1bD48bGkgY2xhc3M9ImNhdF80Ij5IYW5keSBMaW5rczwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vc2xhY2suY29tL2Rvd25sb2FkcyIgZGF0YS1xYT0iZG93bmxvYWRzIiBkYXRhLWNsb2ctZXZlbnQ9IldFQlNJVEVfQ0xJQ0siIGRhdGEtY2xvZy1wYXJhbXM9ImNsaWNrX3RhcmdldD1mb290ZXJfZG93bmxvYWRzIj5Eb3dubG9hZCBkZXNrdG9wIGFwcDwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwczovL3NsYWNrLmNvbS9kb3dubG9hZHMiIGRhdGEtcWE9ImRvd25sb2Fkc19tb2JpbGUiIGRhdGEtY2xvZy1ldmVudD0iV0VCU0lURV9DTElDSyIgZGF0YS1jbG9nLXBhcmFtcz0iY2xpY2tfdGFyZ2V0PWZvb3Rlcl9kb3dubG9hZHNfbW9iaWxlIj5Eb3dubG9hZCBtb2JpbGUgYXBwPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vc2xhY2suY29tL2JyYW5kLWd1aWRlbGluZXMiIGRhdGEtcWE9ImJyYW5kX2d1aWRlbGluZXMiIGRhdGEtY2xvZy1ldmVudD0iV0VCU0lURV9DTElDSyIgZGF0YS1jbG9nLXBhcmFtcz0iY2xpY2tfdGFyZ2V0PWZvb3Rlcl9icmFuZF9ndWlkZWxpbmVzIj5CcmFuZCBHdWlkZWxpbmVzPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vc2xhY2thdHdvcmsuY29tIiBkYXRhLXFhPSJzbGFja19hdF93b3JrIiBkYXRhLWNsb2ctZXZlbnQ9IldFQlNJVEVfQ0xJQ0siIGRhdGEtY2xvZy1wYXJhbXM9ImNsaWNrX3RhcmdldD1mb290ZXJfc2xhY2tfYXRfd29yayI+U2xhY2sgYXQgV29yazwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwczovL3N0YXR1cy5zbGFjay5jb20vIiBkYXRhLXFhPSJzdGF0dXMiIGRhdGEtY2xvZy1ldmVudD0iV0VCU0lURV9DTElDSyIgZGF0YS1jbG9nLXBhcmFtcz0iY2xpY2tfdGFyZ2V0PWZvb3Rlcl9zdGF0dXMiPlN0YXR1czwvYT48L2xpPjwvdWw+PC9kaXY+PC9kaXY+PC9zZWN0aW9uPjxkaXYgY2xhc3M9ImZvb3Rub3RlIj48c2VjdGlvbj48YSBocmVmPSJodHRwczovL3NsYWNrLmNvbSIgYXJpYS1sYWJlbD0iU2xhY2sgaG9tZXBhZ2UiIGRhdGEtY2xvZy1ldmVudD0iV0VCU0lURV9DTElDSyIgZGF0YS1jbG9nLXBhcmFtcz0iY2xpY2tfdGFyZ2V0PWZvb3Rlcl9zbGFja19pY29uIj48dHMtaWNvbiBjbGFzcz0iYy1pY29uLS1zbGFjayIgYXJpYS1oaWRkZW4+PC90cy1pY29uPjwvYT48dWw+PGxpPjxhIGhyZWY9Imh0dHBzOi8vc2xhY2suY29tL2hlbHAvY29udGFjdCIgZGF0YS1xYT0iY29udGFjdF91cyIgZGF0YS1jbG9nLWV2ZW50PSJXRUJTSVRFX0NMSUNLIiBkYXRhLWNsb2ctcGFyYW1zPSJjbGlja190YXJnZXQ9Zm9vdGVyX2NvbnRhY3RfdXMiPkNvbnRhY3QgVXM8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cHM6Ly90d2l0dGVyLmNvbS9TbGFja0hRIiBkYXRhLXFhPSJzbGFja190d2l0dGVyIiBkYXRhLWNsb2ctZXZlbnQ9IldFQlNJVEVfQ0xJQ0siIGRhdGEtY2xvZy1wYXJhbXM9ImNsaWNrX3RhcmdldD1mb290ZXJfc2xhY2tfdHdpdHRlciIgYXJpYS1sYWJlbD0iU2xhY2sgb24gVHdpdHRlciI+PHRzLWljb24gY2xhc3M9InRzX2ljb25fdHdpdHRlciIgYXJpYS1oaWRkZW4+PC90cy1pY29uPjwvYT48L2xpPjxsaSBjbGFzcz0ieXQiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2NoYW5uZWwvVUNZM1lFQ2dlQmNMQ3pJckZMUDRnYmx3IiBkYXRhLXFhPSJzbGFja195b3V0dWJlIiBkYXRhLWNsb2ctZXZlbnQ9IldFQlNJVEVfQ0xJQ0siIGRhdGEtY2xvZy1wYXJhbXM9ImNsaWNrX3RhcmdldD1mb290ZXJfc2xhY2tfeW91dHViZSIgYXJpYS1sYWJlbD0iU2xhY2sgb24gWW91VHViZSI+PHRzLWljb24gY2xhc3M9InRzX2ljb25feW91dHViZSIgYXJpYS1oaWRkZW4+PC90cy1pY29uPjwvYT48L2xpPjwvdWw+PC9zZWN0aW9uPjwvZGl2PjwvZm9vdGVyPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLyoqCiAqIEEgcGxhY2Vob2xkZXIgZnVuY3Rpb24gdGhhdCB0aGUgYnVpbGQgc2NyaXB0IHVzZXMgdG8KICogcmVwbGFjZSBmaWxlIHBhdGhzIHdpdGggdGhlaXIgQ0ROIHZlcnNpb25zLgogKgogKiBAcGFyYW0ge1N0cmluZ30gZmlsZV9wYXRoIC0gRmlsZSBwYXRoCiAqIEByZXR1cm5zIHtTdHJpbmd9CiAqLwpmdW5jdGlvbiB2dnYoZmlsZV9wYXRoKSB7CgkJIHZhciB2dnZfd2FybmluZyA9ICdZb3UgY2Fubm90IHVzZSB2dnYgb24gZHluYW1pYyB2YWx1ZXMuIFBsZWFzZSBtYWtlIHN1cmUgeW91IG9ubHkgcGFzcyBpbiBzdGF0aWMgZmlsZSBwYXRocy4nOyBpZiAoVFMgJiYgVFMud2FybikgeyBUUy53YXJuKHZ2dl93YXJuaW5nKTsgfSBlbHNlIHsgY29uc29sZS53YXJuKHZ2dl93YXJuaW5nKTsgfSAKCXJldHVybiBmaWxlX3BhdGg7Cn0KCnZhciBjZG5fdXJsID0gImh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tIjsKdmFyIHZ2dl9hYnNfdXJsID0gImh0dHBzOlwvXC9zbGFjay5jb21cLyI7CnZhciBpbmNfanNfc2V0dXBfZGF0YSA9IHsKCWVtb2ppX3NoZWV0czogewoJCWFwcGxlOiAnaHR0cHM6Ly9hLnNsYWNrLWVkZ2UuY29tLzgwNTg4L2ltZy9lbW9qaV8yMDE3XzEyXzA2L3NoZWV0X2FwcGxlXzY0X2luZGV4ZWRfMjU2LnBuZycsCgkJZ29vZ2xlOiAnaHR0cHM6Ly9hLnNsYWNrLWVkZ2UuY29tLzgwNTg4L2ltZy9lbW9qaV8yMDE3XzEyXzA2L3NoZWV0X2dvb2dsZV82NF9pbmRleGVkXzI1Ni5wbmcnLAoJfSwKfTsKPC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgkvLyBjb21tb24gYm9vdF9kYXRhCgl2YXIgYm9vdF9kYXRhID0geyJhcGlfdXJsIjoiXC9hcGlcLyIsImFwcCI6IndlYiIsInVzZXJfaWQiOm51bGwsInRlYW1faWQiOiJUMDAwMDAwMDAiLCJ2aXNpdG9yX3VpZCI6IjQ5bGFncXFuM2xnbmF0cnd2OHNuaGlrbDkiLCJub19sb2dpbiI6dHJ1ZSwidmVyc2lvbl90cyI6IjE1NjgyMjI0OTAiLCJ2ZXJzaW9uX3VpZCI6IjRmZWEwYzMzM2NkMzQ5YzdhM2VkMzUxZTRiZjkxMjE0MDRlZTgwMDMiLCJjYWNoZV92ZXJzaW9uIjoidjE4LWt1ZHUiLCJjYWNoZV90c192ZXJzaW9uIjoidjItYnVubnkiLCJyZWRpcl9kb21haW4iOiJzbGFjay1yZWRpci5uZXQiLCJzaWduaW5fdXJsIjoiaHR0cHM6XC9cL3NsYWNrLmNvbVwvc2lnbmluIiwiYWJzX3Jvb3RfdXJsIjoiaHR0cHM6XC9cL3NsYWNrLmNvbVwvIiwidGVhbV91cmwiOiIiLCJpbWFnZV9wcm94eV91cmwiOiJodHRwczpcL1wvc2xhY2staW1ncy5jb21cLyIsImJlYWNvbl90aW1pbmdfdXJsIjoiaHR0cHM6XC9cL3NsYWNrLmNvbVwvYmVhY29uXC90aW1pbmciLCJiZWFjb25fZXJyb3JfdXJsIjoiaHR0cHM6XC9cL3NsYWNrLmNvbVwvYmVhY29uXC9lcnJvciIsImNsb2dfdXJsIjoiY2xvZ1wvdHJhY2tcLyIsImFwaV90b2tlbiI6IiIsImhjX3RyYWNraW5nX3FzIjoiIiwidnZ2X3BhdGhzIjp7Imx6X3N0cmluZyI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9sei1zdHJpbmctMS40LjQud29ya2VyLjhkZTFiMDBkNjcwZmYzZGM3MDZhMC5qcyIsImNvZGVtaXJyb3IiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvci5taW4uNjhjNmEwNjEyYWJjY2M2Yjg4NTkubWluLmpzIiwiY29kZW1pcnJvcl9hZGRvbl9zaW1wbGUiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9zaW1wbGUuOTkzZmM1ZjhkZGQ0MDFmNjMyYWEubWluLmpzIiwiY29kZW1pcnJvcl9sb2FkIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbG9hZC5hOThkZGYxY2ExODVhMmE1MTcxMS5taW4uanMiLCJjb2RlbWlycm9yX2ZpbGVzIjp7ImFwbCI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfYXBsLjljZTk4YzhiMjQ0NWIyMjNjODdmLm1pbi5qcyIsImFzY2lpYXJtb3IiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX2FzY2lpYXJtb3IuMzU1ODc5MzdlYTUxYzJhMjNmMjEubWluLmpzIiwiYXNuLjEiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX2Fzbi4xLjAxYzYxMDg2MjM5N2UyNWJlOTkxLm1pbi5qcyIsImFzdGVyaXNrIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19hc3Rlcmlzay5kOTNiNGFiNDg4ZmEzOWQxNTM1YS5taW4uanMiLCJicmFpbmZ1Y2siOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX2JyYWluZnVjay4zMjIxYWExYmI5MDE4NmJjNmQ0Yy5taW4uanMiLCJjbGlrZSI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfY2xpa2UuM2ExOGU4NjhjNjdmNmJlYzA5MWMubWluLmpzIiwiY2xvanVyZSI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfY2xvanVyZS5iZjJmODQyMjlkOTUxZGYxMDM5MS5taW4uanMiLCJjbWFrZSI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfY21ha2UuNGNiMzgxODMxNDgzYzRmNTRjNTcubWluLmpzIiwiY29ib2wiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX2NvYm9sLmUzYzhjYmZjNTdkMDM1NjY3N2JlLm1pbi5qcyIsImNvZmZlZXNjcmlwdCI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfY29mZmVlc2NyaXB0LmU1NzAwNjI2ZjExNGYyOTkwNTc5Lm1pbi5qcyIsImNvbW1vbmxpc3AiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX2NvbW1vbmxpc3AuODU1ZWRmYzBlMWQ5MWNhMDVjMTYubWluLmpzIiwiY3NzIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19jc3MuMjdmMGZhMWYyZjk5NzM2NzhmNDEubWluLmpzIiwiY3J5c3RhbCI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfY3J5c3RhbC5hOGU0ZTJkZjFjMTE1Y2Q4MGFjZi5taW4uanMiLCJjeXBoZXIiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX2N5cGhlci41MTYyNjQ2NzVlMzM5NjQ4N2YzZC5taW4uanMiLCJkIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19kLjJhNTNkNTAyZTY2Nzc3MGQyZDUwLm1pbi5qcyIsImRhcnQiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX2RhcnQuZDEwOTNmM2I5MzIzN2VhNzNkZGEubWluLmpzIiwiZGlmZiI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfZGlmZi40Yjc2ZDcwMmZmZDhlNDBjYjM4ZS5taW4uanMiLCJkamFuZ28iOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX2RqYW5nby4xYTZjMDMxYTI2ZGFhMjFhNjliOC5taW4uanMiLCJkb2NrZXJmaWxlIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19kb2NrZXJmaWxlLjYwNDM3Y2RkNzMzZGRmZjRkNjllLm1pbi5qcyIsImR0ZCI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfZHRkLjVhZjNiYmY5Mzk2MGM4NGY1MDJmLm1pbi5qcyIsImR5bGFuIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19keWxhbi43Y2U4ZjIxZTUyMGQ2ODJmNGY4Yi5taW4uanMiLCJlYm5mIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19lYm5mLmM0NjZlNGUzMzFlMzE3ZWUzYmI2Lm1pbi5qcyIsImVjbCI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfZWNsLmVkYWI0ODY5MGM3ZGQwYjBlN2JmLm1pbi5qcyIsImVpZmZlbCI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfZWlmZmVsLjM4Mjk1Nzc5ZDg3N2YyZDkzMTcyLm1pbi5qcyIsImVsbSI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfZWxtLjYyNWQ1OTQwMGJhZjY2MDJmODBiLm1pbi5qcyIsImVybGFuZyI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfZXJsYW5nLmNmOTU4NjFkZmNhYzM3MTM3NjM1Lm1pbi5qcyIsImZhY3RvciI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfZmFjdG9yLmQzNjE0ZGZhNDFhYzBkYzc4NDVjLm1pbi5qcyIsImZvcnRoIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19mb3J0aC44NDgzNDg1YjBjNDVhY2Q5OTY4ZS5taW4uanMiLCJmb3J0cmFuIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19mb3J0cmFuLjE0N2Y5MzM5YjRiYjFmYTUyZjVhLm1pbi5qcyIsImdhcyI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfZ2FzLmQ0YmMxYjUyZWUwYmY1NjJkMzhiLm1pbi5qcyIsImdmbSI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfZ2ZtLjA0NGViZTc1NjNlMTMyZGRjNzc2Lm1pbi5qcyIsImdoZXJraW4iOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX2doZXJraW4uOTllZThkMGMwYjBlNDNkZjNmYzIubWluLmpzIiwiZ28iOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX2dvLmNjYzNmYjVkMmZhMThiNzIxNDcyLm1pbi5qcyIsImdyb292eSI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfZ3Jvb3Z5LjNiNzk5ZmNkYjcyNTExM2IyNmU2Lm1pbi5qcyIsImhhbWwiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX2hhbWwuYjA2ZmNjYjRhODY4ODY5M2NlNjAubWluLmpzIiwiaGFuZGxlYmFycyI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfaGFuZGxlYmFycy5hNDAwOWMwZTZhY2FlODU0NDlhZS5taW4uanMiLCJoYXNrZWxsIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19oYXNrZWxsLjVkZWM4YmIxMDg1YjY1Zjc3Y2ZiLm1pbi5qcyIsImhheGUiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX2hheGUuMmI0MDA0MDc1ZmE1OWRiNDIxNWQubWluLmpzIiwiaHRtbGVtYmVkZGVkIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19odG1sZW1iZWRkZWQuNDkwMTVjYmVlN2Y2YmVkNGZkYjIubWluLmpzIiwiaHRtbG1peGVkIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19odG1sbWl4ZWQuOTJkOTNkNTNhMTZlMDc1ODQ2ZWYubWluLmpzIiwiaHR0cCI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfaHR0cC44YTI0NjNjODJjYTUzNTMzMDMyNC5taW4uanMiLCJpZGwiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX2lkbC41MTRiNmE1ZTZmZjk5YzMyNjY3Ni5taW4uanMiLCJqYWRlIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19qYWRlLjMyYzBhZTk2OWMwOTEyYzdkMWE3Lm1pbi5qcyIsImphdmFzY3JpcHQiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX2phdmFzY3JpcHQuYWMxODMzZTllMjM5ZDUzMmI1YTkubWluLmpzIiwiamluamEyIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19qaW5qYTIuZGIxMmVjZmQ0YmJjYjg3NTk2NjMubWluLmpzIiwianVsaWEiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX2p1bGlhLjdiMmNkZTU4ZGMwZWViMDdlNjcwLm1pbi5qcyIsImxpdmVzY3JpcHQiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX2xpdmVzY3JpcHQuOTU5YzRkYzcyNTY2YTI2NDc4ODcubWluLmpzIiwibHVhIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19sdWEuMWZkOWIzNDZjZDFlNmVhZTgwMDUubWluLmpzIiwibWFya2Rvd24iOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX21hcmtkb3duLjM1N2Q0ZjAyMzFkNzA1Y2NmNGE4Lm1pbi5qcyIsIm1hdGhlbWF0aWNhIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19tYXRoZW1hdGljYS40NWNlNmE4NDQ4NzQ3NTU1ZWU4Zi5taW4uanMiLCJtaXJjIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19taXJjLjY0MmEwYTkwOTNjM2VkZWVkMWQzLm1pbi5qcyIsIm1sbGlrZSI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfbWxsaWtlLmIyZTU5ZTM0YjJhZWIwYjBlMzNlLm1pbi5qcyIsIm1vZGVsaWNhIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19tb2RlbGljYS45YmViYTkwMmZhZDY4ZDY1MjUwNC5taW4uanMiLCJtc2NnZW4iOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX21zY2dlbi45ZGVkNWQxMzJjZWE1NDhhNTg0ZS5taW4uanMiLCJtdW1wcyI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfbXVtcHMuNjI3NTEwMGQzY2JhM2NkZGIxNzEubWluLmpzIiwibmdpbngiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX25naW54LjM5Mjk0N2E1Y2RlMzYwZTU1MzkxLm1pbi5qcyIsIm5zaXMiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX25zaXMuMTgwNjA5OGYyZWZmYzRjNWVmZDcubWluLmpzIiwibnRyaXBsZXMiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX250cmlwbGVzLjVjNmI5MWY2ZGMyOWQyMjUxNTliLm1pbi5qcyIsIm9jdGF2ZSI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfb2N0YXZlLjk5Y2JmM2UwYTcyMmQ5NTI3N2ZkLm1pbi5qcyIsIm96IjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19vei40NTQ3Y2NmZGRjNTI4NWZlYmRkYS5taW4uanMiLCJwYXNjYWwiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX3Bhc2NhbC4xZmRiYzc1ZjY1OWFiN2IyMGVmOS5taW4uanMiLCJwZWdqcyI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfcGVnanMuMzUyMTE1NGI5ZDBmYjhkZGUyYzgubWluLmpzIiwicGVybCI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfcGVybC4yNjE2MmIxZGUzZjI0ODhmZmVkYy5taW4uanMiLCJwaHAiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX3BocC44ZTc3MDIxNDFjNGQwMDZiYjIwZC5taW4uanMiLCJwaWciOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX3BpZy5jY2YzOTI5Mzk2ZWU3ZDI0MTQwNi5taW4uanMiLCJwb3dlcnNoZWxsIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19wb3dlcnNoZWxsLjg5ZjJlOWJmNmM4MmFkMWRkOWJlLm1pbi5qcyIsInByb3BlcnRpZXMiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX3Byb3BlcnRpZXMuZWE3Y2UxNGM0MjUxNzRhZGJmMTUubWluLmpzIiwicHVwcGV0IjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19wdXBwZXQuMDlkNGEwNDM5MDNhNTIyMzc0NjcubWluLmpzIiwicHl0aG9uIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19weXRob24uOWNmY2I4MjQyYzNjNWY0ZDA5MDIubWluLmpzIiwicSI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfcS43NjA5YjZlZmFmNWRkZmRmYTRhNS5taW4uanMiLCJyIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19yLjM0OTM2ZTQxZjExZWMxOGE3NTc0Lm1pbi5qcyIsInJwbSI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfcnBtLmMyOTE3OWQ5MTg4NzAxZWI1ZjNlLm1pbi5qcyIsInJzdCI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfcnN0LjEzYmVjNjMzMWMwMTc1Y2JiMDk2Lm1pbi5qcyIsInJ1YnkiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX3J1YnkuODJkZWExMTY0NGM3NGU0ZWE1NDIubWluLmpzIiwicnVzdCI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfcnVzdC4wZTZjYzFhMGQyZDJkOGY4ZWJkYi5taW4uanMiLCJzYXNzIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19zYXNzLjFmYmNlNTRiMmMzMDQ0Mzc3OWVlLm1pbi5qcyIsInNjaGVtZSI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfc2NoZW1lLjg4NzllZTVmODg3NWQ2YmNjODA0Lm1pbi5qcyIsInNoZWxsIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19zaGVsbC5kYzVkMzU1OGZkZGVkZDE4Mzk0Zi5taW4uanMiLCJzaWV2ZSI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfc2lldmUuM2IzMjI3MjZiOTA3MTQwYjk0ZTgubWluLmpzIiwic2xpbSI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfc2xpbS5jN2MwYmMwZjE3MzgzNDQwOTUxMS5taW4uanMiLCJzbWFsbHRhbGsiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX3NtYWxsdGFsay45OGMxMjM3NWM4N2M1MTkwYzgzOS5taW4uanMiLCJzbWFydHkiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX3NtYXJ0eS43YmE2MjM3N2Y1OWY3MTc2OTk5Ny5taW4uanMiLCJzb2xyIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19zb2xyLjI2YzRlNDE5YjBjODc5OWJiYjdkLm1pbi5qcyIsInNveSI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfc295Ljg4ZTk1ZmZiNDVhNGFjNDI0NWE2Lm1pbi5qcyIsInNwYXJxbCI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfc3BhcnFsLjhjMDUzMTExMGQ4YTljYzMwNWFmLm1pbi5qcyIsInNwcmVhZHNoZWV0IjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19zcHJlYWRzaGVldC5iYzlhYTgzNzJkOTk0MTkxYmRmNS5taW4uanMiLCJzcWwiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX3NxbC4xMDk0M2ZkNGIyM2YyMzI4NzM0Ni5taW4uanMiLCJzdGV4IjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19zdGV4LjVjZTgxY2RkMDIzYjg5YWVlNzlhLm1pbi5qcyIsInN0eWx1cyI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfc3R5bHVzLmYzOTdmMDJkZTM1NmFlNmY5YzcwLm1pbi5qcyIsInN3aWZ0IjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19zd2lmdC5mOWUzYTE4YTE0OTRjNjUwMjJkNy5taW4uanMiLCJ0Y2wiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX3RjbC5lZTE0Y2UzNTI4MzNjNGZjNDc5ZS5taW4uanMiLCJ0ZXh0aWxlIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ190ZXh0aWxlLjczNWYyMjU0ODFlYjU3MzQxMjA5Lm1pbi5qcyIsInRpZGRseXdpa2kiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX3RpZGRseXdpa2kuYzIzMTk3MjQ0N2VkMWJiZTA0NDgubWluLmpzIiwidGlraSI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfdGlraS5kNzdmMGU2NmU3M2VjY2RkYzRiYi5taW4uanMiLCJ0b21sIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ190b21sLjQwNjViNGVjMDY1NzA0MDM1NzA0Lm1pbi5qcyIsInRvcm5hZG8iOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX3Rvcm5hZG8uMzMzMzA5ZGNmNDE1MTRhM2EzZmQubWluLmpzIiwidHJvZmYiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX3Ryb2ZmLmY2YjBmYTA4NzQxMTE5ZWY2YTVjLm1pbi5qcyIsInR0Y24iOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX3R0Y24uMjVmZDBmZjcyOWRiMTZmMDEzNmMubWluLmpzIiwidHRjbjpjZmciOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX3R0Y24tY2ZnLmE2NmUzYTRiNGJkODU3MWNlNjgwLm1pbi5qcyIsInR1cnRsZSI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfdHVydGxlLmQ3Mzk5YzdjNzA4YWUxYTczZjQ1Lm1pbi5qcyIsInR3aWciOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX3R3aWcuNzFmMTIzYmRkMzQyMmM2ODMyODEubWluLmpzIiwidmIiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX3ZiLmIwOTEyM2M2YmMxZTRiZTM4OWVjLm1pbi5qcyIsInZic2NyaXB0IjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ192YnNjcmlwdC45OTk3YmJmOTVhZWEwMjU0NWJhNy5taW4uanMiLCJ2ZWxvY2l0eSI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfdmVsb2NpdHkuNjY3ZWE0OWUyYTU2ZTdkZWU5YWUubWluLmpzIiwidmVyaWxvZyI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfdmVyaWxvZy5lNjYxMDdhYzU2N2UyYWZmZDYxMC5taW4uanMiLCJ2aGRsIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ192aGRsLmIwN2ZlNzljZmE5ZjVhZjYyMTZlLm1pbi5qcyIsInZ1ZSI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfdnVlLjU5Y2VmMTExN2VkZWM4N2I1NTcyLm1pbi5qcyIsInhtbCI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfeG1sLjFjYzRlYzM5ZTNlYzUxNWFhY2E2Lm1pbi5qcyIsInhxdWVyeSI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfeHF1ZXJ5Ljc4YzBlYjc4M2M3NWE1MjdlZjY0Lm1pbi5qcyIsInlhbWwiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX3lhbWwuYTA1MjEyYjgxMDA3MWI1YzYxM2YubWluLmpzIiwiejgwIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ196ODAuNTY3OTgzNWZjMzExNGM1NjAwZTIubWluLmpzIn19LCJub3RpZmljYXRpb25fc291bmRzIjpbeyJ2YWx1ZSI6ImIyLm1wMyIsImxhYmVsIjoiRGluZyIsInVybCI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC83ZTkxXC9zb3VuZHNcL3B1c2hcL2IyLm1wMyIsInVybF9vZ2ciOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvNDZlYmJcL3NvdW5kc1wvcHVzaFwvYjIub2dnIn0seyJ2YWx1ZSI6ImFuaW1hbF9zdGljay5tcDMiLCJsYWJlbCI6IkJvaW5nIiwidXJsIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cLzdlOTFcL3NvdW5kc1wvcHVzaFwvYW5pbWFsX3N0aWNrLm1wMyIsInVybF9vZ2ciOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvNDZlYmJcL3NvdW5kc1wvcHVzaFwvYW5pbWFsX3N0aWNrLm9nZyJ9LHsidmFsdWUiOiJiZWVuX3RyZWUubXAzIiwibGFiZWwiOiJEcm9wIiwidXJsIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cLzdlOTFcL3NvdW5kc1wvcHVzaFwvYmVlbl90cmVlLm1wMyIsInVybF9vZ2ciOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvNDZlYmJcL3NvdW5kc1wvcHVzaFwvYmVlbl90cmVlLm9nZyJ9LHsidmFsdWUiOiJjb21wbGV0ZV9xdWVzdF9yZXF1aXJlbWVudC5tcDMiLCJsYWJlbCI6IlRhLWRhIiwidXJsIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cLzdlOTFcL3NvdW5kc1wvcHVzaFwvY29tcGxldGVfcXVlc3RfcmVxdWlyZW1lbnQubXAzIiwidXJsX29nZyI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC80NmViYlwvc291bmRzXC9wdXNoXC9jb21wbGV0ZV9xdWVzdF9yZXF1aXJlbWVudC5vZ2cifSx7InZhbHVlIjoiY29uZmlybV9kZWxpdmVyeS5tcDMiLCJsYWJlbCI6IlBsaW5rIiwidXJsIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cLzdlOTFcL3NvdW5kc1wvcHVzaFwvY29uZmlybV9kZWxpdmVyeS5tcDMiLCJ1cmxfb2dnIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cLzQ2ZWJiXC9zb3VuZHNcL3B1c2hcL2NvbmZpcm1fZGVsaXZlcnkub2dnIn0seyJ2YWx1ZSI6ImZsaXR0ZXJidWcubXAzIiwibGFiZWwiOiJXb3ciLCJ1cmwiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvN2U5MVwvc291bmRzXC9wdXNoXC9mbGl0dGVyYnVnLm1wMyIsInVybF9vZ2ciOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvNDZlYmJcL3NvdW5kc1wvcHVzaFwvZmxpdHRlcmJ1Zy5vZ2cifSx7InZhbHVlIjoiaGVyZV95b3VfZ29fbGlnaHRlci5tcDMiLCJsYWJlbCI6IkhlcmUgeW91IGdvIiwidXJsIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cLzdlOTFcL3NvdW5kc1wvcHVzaFwvaGVyZV95b3VfZ29fbGlnaHRlci5tcDMiLCJ1cmxfb2dnIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cLzQ2ZWJiXC9zb3VuZHNcL3B1c2hcL2hlcmVfeW91X2dvX2xpZ2h0ZXIub2dnIn0seyJ2YWx1ZSI6ImhpX2Zsb3dlcnNfaGl0Lm1wMyIsImxhYmVsIjoiSGkiLCJ1cmwiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvN2U5MVwvc291bmRzXC9wdXNoXC9oaV9mbG93ZXJzX2hpdC5tcDMiLCJ1cmxfb2dnIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cLzQ2ZWJiXC9zb3VuZHNcL3B1c2hcL2hpX2Zsb3dlcnNfaGl0Lm9nZyJ9LHsidmFsdWUiOiJrbm9ja19icnVzaC5tcDMiLCJsYWJlbCI6Iktub2NrIEJydXNoIiwidXJsIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cLzdlOTFcL3NvdW5kc1wvcHVzaFwva25vY2tfYnJ1c2gubXAzIiwidXJsX29nZyI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC80NmViYlwvc291bmRzXC9wdXNoXC9rbm9ja19icnVzaC5vZ2cifSx7InZhbHVlIjoic2F2ZV9hbmRfY2hlY2tvdXQubXAzIiwibGFiZWwiOiJXaG9hISIsInVybCI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC83ZTkxXC9zb3VuZHNcL3B1c2hcL3NhdmVfYW5kX2NoZWNrb3V0Lm1wMyIsInVybF9vZ2ciOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvNDZlYmJcL3NvdW5kc1wvcHVzaFwvc2F2ZV9hbmRfY2hlY2tvdXQub2dnIn0seyJ2YWx1ZSI6Iml0ZW1fcGlja3VwLm1wMyIsImxhYmVsIjoiWW9pbmsiLCJ1cmwiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvN2U5MVwvc291bmRzXC9wdXNoXC9pdGVtX3BpY2t1cC5tcDMiLCJ1cmxfb2dnIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cLzQ2ZWJiXC9zb3VuZHNcL3B1c2hcL2l0ZW1fcGlja3VwLm9nZyJ9LHsidmFsdWUiOiJodW1tdXMubXAzIiwibGFiZWwiOiJIdW1tdXMiLCJ1cmwiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvN2ZhOVwvc291bmRzXC9wdXNoXC9odW1tdXMubXAzIiwidXJsX29nZyI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC80NmViYlwvc291bmRzXC9wdXNoXC9odW1tdXMub2dnIn0seyJ2YWx1ZSI6Im5vbmUiLCJsYWJlbCI6Ik5vbmUifV0sImFsZXJ0X3NvdW5kcyI6W3sidmFsdWUiOiJmcm9nLm1wMyIsImxhYmVsIjoiRnJvZyIsInVybCI6Imh0dHBzOlwvXC9zbGFjay5nbG9iYWwuc3NsLmZhc3RseS5uZXRcL2EzNGFcL3NvdW5kc1wvZnJvZy5tcDMifV0sImNhbGxfc291bmRzIjpbeyJ2YWx1ZSI6ImNhbGxcL2FsZXJ0X3YyLm1wMyIsImxhYmVsIjoiQWxlcnQiLCJ1cmwiOiJodHRwczpcL1wvc2xhY2suZ2xvYmFsLnNzbC5mYXN0bHkubmV0XC8wOGY3XC9zb3VuZHNcL2NhbGxcL2FsZXJ0X3YyLm1wMyJ9LHsidmFsdWUiOiJjYWxsXC9pbmNvbWluZ19yaW5nX3YyLm1wMyIsImxhYmVsIjoiSW5jb21pbmcgcmluZyIsInVybCI6Imh0dHBzOlwvXC9zbGFjay5nbG9iYWwuc3NsLmZhc3RseS5uZXRcLzA4ZjdcL3NvdW5kc1wvY2FsbFwvaW5jb21pbmdfcmluZ192Mi5tcDMifSx7InZhbHVlIjoiY2FsbFwvb3V0Z29pbmdfcmluZ192Mi5tcDMiLCJsYWJlbCI6Ik91dGdvaW5nIHJpbmciLCJ1cmwiOiJodHRwczpcL1wvc2xhY2suZ2xvYmFsLnNzbC5mYXN0bHkubmV0XC8wOGY3XC9zb3VuZHNcL2NhbGxcL291dGdvaW5nX3JpbmdfdjIubXAzIn0seyJ2YWx1ZSI6ImNhbGxcL3BvcF92Mi5tcDMiLCJsYWJlbCI6IkluY29taW5nIHJlYWN0aW9uIiwidXJsIjoiaHR0cHM6XC9cL3NsYWNrLmdsb2JhbC5zc2wuZmFzdGx5Lm5ldFwvMDhmN1wvc291bmRzXC9jYWxsXC9wb3BfdjIubXAzIn0seyJ2YWx1ZSI6ImNhbGxcL3RoZXlfbGVmdF9jYWxsX3YyLm1wMyIsImxhYmVsIjoiVGhleSBsZWZ0IGNhbGwiLCJ1cmwiOiJodHRwczpcL1wvc2xhY2suZ2xvYmFsLnNzbC5mYXN0bHkubmV0XC8wOGY3XC9zb3VuZHNcL2NhbGxcL3RoZXlfbGVmdF9jYWxsX3YyLm1wMyJ9LHsidmFsdWUiOiJjYWxsXC95b3VfbGVmdF9jYWxsX3YyLm1wMyIsImxhYmVsIjoiWW91IGxlZnQgY2FsbCIsInVybCI6Imh0dHBzOlwvXC9zbGFjay5nbG9iYWwuc3NsLmZhc3RseS5uZXRcLzA4ZjdcL3NvdW5kc1wvY2FsbFwveW91X2xlZnRfY2FsbF92Mi5tcDMifSx7InZhbHVlIjoiY2FsbFwvdGhleV9qb2luZWRfY2FsbF92Mi5tcDMiLCJsYWJlbCI6IlRoZXkgam9pbmVkIGNhbGwiLCJ1cmwiOiJodHRwczpcL1wvc2xhY2suZ2xvYmFsLnNzbC5mYXN0bHkubmV0XC8wOGY3XC9zb3VuZHNcL2NhbGxcL3RoZXlfam9pbmVkX2NhbGxfdjIubXAzIn0seyJ2YWx1ZSI6ImNhbGxcL3lvdV9qb2luZWRfY2FsbF92Mi5tcDMiLCJsYWJlbCI6IllvdSBqb2luZWQgY2FsbCIsInVybCI6Imh0dHBzOlwvXC9zbGFjay5nbG9iYWwuc3NsLmZhc3RseS5uZXRcLzA4ZjdcL3NvdW5kc1wvY2FsbFwveW91X2pvaW5lZF9jYWxsX3YyLm1wMyJ9LHsidmFsdWUiOiJjYWxsXC9jb25maXJtYXRpb25fdjIubXAzIiwibGFiZWwiOiJDb25maXJtYXRpb24iLCJ1cmwiOiJodHRwczpcL1wvc2xhY2suZ2xvYmFsLnNzbC5mYXN0bHkubmV0XC8wOGY3XC9zb3VuZHNcL2NhbGxcL2NvbmZpcm1hdGlvbl92Mi5tcDMifV0sImNhbGxfc291bmRzX3ZlcnNpb24iOiJ2MiIsImExMXlfc291bmRzIjpbXSwiaW1nIjp7ImFwcF9pY29uIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cLzgwNTg4XC9pbWdcL3NsYWNrX2dyb3dsX2ljb25fdm9ndWUucG5nIn0sInBhZ2VfbmVlZHNfZW50ZXJwcmlzZSI6ZmFsc2UsInBhZ2VfbmVlZHNfY3VzdG9tX2Vtb2ppIjpmYWxzZSwiaXNfZGVwcmVjYXRlZF93ZWJjbGllbnRfYnJvd3NlciI6ZmFsc2UsImlzX3Vuc3VwcG9ydGVkX3dlYmNsaWVudF9icm93c2VyIjp0cnVlLCJkZWZhdWx0X3R6IjoiQW1lcmljYVwvTG9zX0FuZ2VsZXMiLCJmZWF0dXJlX2J1aWxkZXJfYXBwX2NvbGxhYm9yYXRvcnMiOmZhbHNlLCJmZWF0dXJlX2F1ZGl0X2xvZ3NfdmlldyI6ZmFsc2UsImZlYXR1cmVfYXVkaXRfbG9nc192aWV3X3dvcmtzcGFjZSI6ZmFsc2UsImZlYXR1cmVfc2tfaTE4biI6ZmFsc2UsImZlYXR1cmVfb3JnX21vZGVybl9zZXR0aW5nX3BhZ2UiOmZhbHNlLCJmZWF0dXJlX29yZ19tb2Rlcm5fc2VjdXJpdHlfcHJlZmVyZW5jZXNfcGFnZSI6ZmFsc2UsImZlYXR1cmVfb3JnX21vZGVybl9zc29fcHJlZmVyZW5jZXNfcGFnZSI6dHJ1ZSwiZmVhdHVyZV9pZHBfZ3JvdXBfY291bnQiOmZhbHNlLCJmZWF0dXJlX20xMW5fb3JnX3RlYW1fb3ZlcnZpZXciOmZhbHNlLCJmZWF0dXJlX2J1aWxkZXJfZXhwb3J0X2ltcG9ydCI6dHJ1ZSwiZmVhdHVyZV9hY2Nlc3NpYmxlX3NlbGVjdHMiOmZhbHNlLCJmZWF0dXJlX2J1aWxkZXJfY2hhbm5lbF9hY3Rpb25zIjpmYWxzZSwiZmVhdHVyZV9idWlsZGVyX3JlYWN0aW9uX2FkZGVkIjp0cnVlLCJmZWF0dXJlX2J1aWxkZXJfYXBwX3JlbW92YWwiOmZhbHNlLCJmZWF0dXJlX2J1aWxkZXJfZGlzYWJsZV9nbG9iYWxfdHJpZ2dlcnMiOmZhbHNlLCJmZWF0dXJlX2J1aWxkZXJfYXBwX3BhZ2VzIjp0cnVlLCJmZWF0dXJlX2J1aWxkZXJfY2FuX2FjY2VzcyI6ZmFsc2UsImZlYXR1cmVfc2hhcmVkX2NoYW5uZWxzX3JlbW92ZV9iZXRhX2xhYmVsIjpmYWxzZSwiZmVhdHVyZV9zaGFyZWRfY2hhbm5lbHNfbm9fb25lX3ByZWYiOmZhbHNlLCJmZWF0dXJlX2VzY19ncmFudWxhcl90ZWFtX3ByZWZzIjpmYWxzZSwiZmVhdHVyZV9lc2NfZ3JhbnVsYXJfdGVhbV9wcmVmc19jbGllbnQiOmZhbHNlLCJmZWF0dXJlX2dyYW51bGFyX2RuZCI6ZmFsc2UsImZlYXR1cmVfY29udGV4dF9iYXIiOnRydWUsImZlYXR1cmVfY29udGV4dF9iYXJfY3VzdG9tX3N0YXR1cyI6ZmFsc2UsImZlYXR1cmVfY29udGV4dF9iYXJfZ3Vlc3RzIjpmYWxzZSwiZmVhdHVyZV9lc2Nfd29ya3NwYWNlX3NldHRpbmdzX2NsaWVudCI6ZmFsc2UsImZlYXR1cmVfY2VfZW5nX2hjMnNsYWNrIjpmYWxzZSwiZmVhdHVyZV9tdWx0aV9maWxlX2xheW91dCI6dHJ1ZSwiZmVhdHVyZV9yaWNoX3RleHRfbGlua3MiOnRydWUsImZlYXR1cmVfcmljaF90ZXh0X3NsYXNoX2NvbW1tYW5kcyI6ZmFsc2UsImZlYXR1cmVfcmljaF90ZXh0X3N0aWNreV90b29sYmFyIjpmYWxzZSwiZmVhdHVyZV9taWdyYXRpb25fb3JnX2FwcHJvdmFscyI6dHJ1ZSwiZmVhdHVyZV90aW55c3BlY2siOmZhbHNlLCJmZWF0dXJlX2Rlc2t0b3BfY29weV90ZXh0IjpmYWxzZSwiZmVhdHVyZV93ZWJhcHBfYWx3YXlzX2NvbGxlY3RfaW5pdGlhbF90aW1lX3BlcmlvZF9zdGF0cyI6ZmFsc2UsImZlYXR1cmVfZmxhbm5lbF91c2VfY2FuYXJ5X3NvbWV0aW1lcyI6ZmFsc2UsImZlYXR1cmVfc3NiX3EzMTlfZGVwcmVjYXRpb24iOmZhbHNlLCJmZWF0dXJlX3NzYl9xMzE5X2RlcHJlY2F0aW9uX2RhcmsiOmZhbHNlLCJmZWF0dXJlX3NzYl9xMzE5X2RlcHJlY2F0aW9uX21vZGFsIjpmYWxzZSwiZmVhdHVyZV9zc2JfcTMxOV9kZXByZWNhdGlvbl9ibG9jayI6ZmFsc2UsImZlYXR1cmVfZGVwcmVjYXRlX3ExMTlfdW5zdXBwb3J0ZWQiOnRydWUsImZlYXR1cmVfZGVwcmVjYXRlX3ExMTlfdW5zdXBwb3J0ZWRfdG9hc3QiOnRydWUsImZlYXR1cmVfZGVwcmVjYXRlX3ExMTlfbW9iaWxlIjp0cnVlLCJmZWF0dXJlX2RlcHJlY2F0ZV9xMTE5X291dGRhdGVkIjp0cnVlLCJmZWF0dXJlX2RlcHJlY2F0ZV9xMTE5X291dGRhdGVkX3RvYXN0Ijp0cnVlLCJmZWF0dXJlX2RlcHJlY2F0ZV9xMTE5X29zIjp0cnVlLCJmZWF0dXJlX2RlcHJlY2F0ZV9xMTE5X29zX3RvYXN0Ijp0cnVlLCJmZWF0dXJlX2RlcHJlY2F0ZV9xMTE5X21vZGFsIjp0cnVlLCJmZWF0dXJlX2RlcHJlY2F0ZV9xMTE5X2Jsb2NrIjp0cnVlLCJmZWF0dXJlX2RlcHJlY2F0ZV9nZXRfbWVtYmVyX2J5X25hbWUiOmZhbHNlLCJmZWF0dXJlX3JlYWN0X2ZpbGVfdmlld2VyIjpmYWxzZSwiZmVhdHVyZV9yZWFjdF9maWxlX3ZpZXdlcl9uYXZpZ2F0aW9uIjp0cnVlLCJmZWF0dXJlX3Vua25vd25fZmlsZXMiOmZhbHNlLCJmZWF0dXJlX2FkZF9tZXNzYWdlX3BlcmYiOmZhbHNlLCJmZWF0dXJlX2ZpeF9jdXN0b21fZW1vamlfZXJyb3JzIjp0cnVlLCJmZWF0dXJlX21vZGVybl9kZWxldGVfZmlsZSI6dHJ1ZSwiZmVhdHVyZV9zb25pY19jaGFubmVsX29wdGlvbnMiOmZhbHNlLCJmZWF0dXJlX3NvbmljX2RlbHV4ZV90b2FzdCI6dHJ1ZSwiZmVhdHVyZV9zb25pY19kZWx1eGVfdG9hc3RfZXhpc3RpbmciOnRydWUsImZlYXR1cmVfc29uaWNfZGVsdXhlX3RvYXN0X2RhcmsiOnRydWUsImZlYXR1cmVfc2VsZWN0X21vZGVsX29wdGlvbl9mZXRjaGVyX20xMW4iOmZhbHNlLCJmZWF0dXJlX2ExMXlfbWVzc2FnZV9zdW1tYXJ5Ijp0cnVlLCJmZWF0dXJlX3JldHJ5X25ld19pbWFnZXMiOmZhbHNlLCJmZWF0dXJlX2NoYW5uZWxfZGV0YWlsc19tZW1iZXJzaGlwX2xpc3QiOmZhbHNlLCJmZWF0dXJlX2FsbF9kbV9tdXQiOmZhbHNlLCJmZWF0dXJlX2ZpbGVfdGhyZWFkcyI6dHJ1ZSwiZmVhdHVyZV9maWxlX3RocmVhZHNfZGFya19sYXVuY2giOnRydWUsImZlYXR1cmVfYnJvYWRjYXN0X2luZGljYXRvciI6dHJ1ZSwiZmVhdHVyZV9uZXdfcmVwbGllc19hZnRlcl9iY2FzdCI6dHJ1ZSwiZmVhdHVyZV9zb25pY19lbW9qaSI6ZmFsc2UsImZlYXR1cmVfZW1vamlfc2VhcmNoX2tleXdvcmRzX2luX2F1dG9jb21wbGV0ZSI6ZmFsc2UsImZlYXR1cmVfY3VzdG9tX2Vtb2ppX3NlYXJjaF9ieV9jcmVhdG9yIjp0cnVlLCJmZWF0dXJlX3NvbmljX2ZyZXF1ZW50X2Vtb2ppX2Zyb21fcHJlZiI6ZmFsc2UsImZlYXR1cmVfc29uaWNfaW1nX3Byb3h5Ijp0cnVlLCJmZWF0dXJlX2VtYWlsX2luZ2VzdGlvbiI6ZmFsc2UsImZlYXR1cmVfc2lkZWJhcl9jb250ZXh0X21lbnUiOmZhbHNlLCJmZWF0dXJlX2F0dGFjaG1lbnRzX2lubGluZSI6ZmFsc2UsImZlYXR1cmVfZml4X2ZpbGVzIjp0cnVlLCJmZWF0dXJlX3BhZ2luZ19hcGkiOmZhbHNlLCJmZWF0dXJlX2FhYV9hZG1pbl9hcGlzIjpmYWxzZSwiZmVhdHVyZV9hYWFfYWRtaW5fYXBpc19ldmVudHNfZG9jcyI6dHJ1ZSwiZmVhdHVyZV90cmlnZ2VyX3VzZXJfZG1fY2xpY2siOnRydWUsImZlYXR1cmVfYXBwX2xhdW5jaGVyIjpmYWxzZSwiZmVhdHVyZV93YWxtYXJ0X29vbV9hZG1pbl9wYWdlX2ZpeCI6ZmFsc2UsImZlYXR1cmVfYXBwX2RpcmVjdG9yeV9wcmltZXIiOmZhbHNlLCJmZWF0dXJlX2Rpc21pc3NfYWRkX2FwcHMiOnRydWUsImZlYXR1cmVfY3VzdG9tX3N0YXR1c19leHBpcnkiOnRydWUsImZlYXR1cmVfY2hhbm5lbF9zaWRlYmFyX2RyYWZ0c19zZWN0aW9uIjp0cnVlLCJmZWF0dXJlX25hdmlnYXRlX2hpc3RvcnkiOnRydWUsImZlYXR1cmVfY29tcG9zZV9mbG93IjpmYWxzZSwiZmVhdHVyZV9iZXR0ZXJfc25vb3plIjp0cnVlLCJmZWF0dXJlX3NvbmljX2RuZF9tYW5hZ2VyIjpmYWxzZSwiZmVhdHVyZV9zb25pY19kbmRfcnRtIjpmYWxzZSwiZmVhdHVyZV9zb25pY19wcmVzZW5jZV9tYW5hZ2VyIjpmYWxzZSwiZmVhdHVyZV9mYXN0ZXJfY291bnRfYWxsX3VucmVhZHMiOnRydWUsImZlYXR1cmVfc29uaWNfdXNlcl9ncm91cHMiOmZhbHNlLCJmZWF0dXJlX3NvbmljX3VzZXJfZ3JvdXBzX2ExMXlfcmVmYWN0b3IiOmZhbHNlLCJmZWF0dXJlX3NvbmljX3VzZXJfZ3JvdXBzX2NvcHlfdXBkYXRlIjpmYWxzZSwiZmVhdHVyZV9sYXp5X3VzZXJfZ3JvdXBzIjp0cnVlLCJmZWF0dXJlX3NvbmljX3NlcnZpY2VfZG93biI6dHJ1ZSwiZmVhdHVyZV9tMTFuX3VzZXJfZmV0Y2hfc3RhdHMiOnRydWUsImZlYXR1cmVfdW50cnVzdHdvcnRoeV9uYXZpZ2F0b3Jfb25saW5lIjp0cnVlLCJmZWF0dXJlX2Nvbm5lY3Rpdml0eV9tYW5hZ2VyIjp0cnVlLCJmZWF0dXJlX2NsaWVudF9ib290X3Nob3VsZF9yZWxvYWQiOmZhbHNlLCJmZWF0dXJlX2RhdGFfcmVzaWRlbmN5X2RlYnVnZ2luZyI6ZmFsc2UsImZlYXR1cmVfZW50X2FwcF9tYW5hZ2VtZW50X3Jlc3RyaWN0aW9uIjpmYWxzZSwiZmVhdHVyZV9lbnRpdGxlbWVudHMiOnRydWUsImZlYXR1cmVfZ3JpZF9hcmNoaXZlX2xpbmtfZml4ZXMiOnRydWUsImZlYXR1cmVfc29uaWNfbWVtYmVyX2RpcmVjdG9yeSI6ZmFsc2UsImZlYXR1cmVfbW9kZXJuaXplZF94d3NfcGVybWFsaW5rX2RpYWxvZ3MiOnRydWUsImZlYXR1cmVfc2FmZWd1YXJkX29yZ19yZXRlbnRpb24iOnRydWUsImZlYXR1cmVfZGFzaGJvYXJkX3NvcnRhYmxlX2xpc3RzIjpmYWxzZSwiZmVhdHVyZV9lbnRlcHJpc2VfdXNlcl90ZWFtc191cGRhdGUiOnRydWUsImZlYXR1cmVfc2tfbG9hZGluZ19idXR0b25fbW90aW9ucyI6ZmFsc2UsImZlYXR1cmVfc2tfYmFzZV9pY29uIjpmYWxzZSwiZmVhdHVyZV9zYW1sX2F1dGhuX2tleV9leHBpcnlfZGF0ZSI6dHJ1ZSwiZmVhdHVyZV93dGFfcGVybV9hcGlfc3BsaXQiOmZhbHNlLCJmZWF0dXJlX3d0YV9jb252ZXJzYXRpb25zX2FwaV9jaGFubmVsX2NyZWF0ZWRfbXNnIjpmYWxzZSwiZmVhdHVyZV9maWxlX2xpbmtzX2JldHRlcmVyIjpmYWxzZSwiZmVhdHVyZV91bnNhZmVfdGxzX2RlcHJlY2F0aW9uX2FwaV92aWV3Ijp0cnVlLCJmZWF0dXJlX2FwcF9kaXJlY3RvcnlfaW5mb19jb25zb2xpZGF0aW9uX3BoYXNlXzEiOmZhbHNlLCJmZWF0dXJlX2FwcF9kaXJlY3RvcnlfaW5mb19jb25zb2xpZGF0aW9uX3BoYXNlXzIiOmZhbHNlLCJmZWF0dXJlX2FwcF9jb21wbGlhbmNlX2luZm9fY29sbGVjdGlvbiI6ZmFsc2UsImZlYXR1cmVfZ3Vlc3RfYXBpX2NoYW5nZXMiOmZhbHNlLCJmZWF0dXJlX2dkcHJfZXhwb3J0cyI6dHJ1ZSwiZmVhdHVyZV9hbGxvd19idWxrX2RlbGV0ZV9qb2luX2xlYXZlX21lc3NhZ2VzIjp0cnVlLCJmZWF0dXJlX3NoYXJlZF9jaGFubmVsc19ibG9ja19sYXJnZV9vcmdzIjpmYWxzZSwiZmVhdHVyZV9jaGFubmVsX2lzX3JlbW92ZV9jcmVhdGVfc2hhcmVkX2NoYW5uZWwiOmZhbHNlLCJmZWF0dXJlX3NoYXJlZF9jaGFubmVsc19uZXR3b3JrIjpmYWxzZSwiZmVhdHVyZV9tcGltX2NoYW5uZWxzIjpmYWxzZSwiZmVhdHVyZV9jb252ZXJzYXRpb25zX2xpc3QiOnRydWUsImZlYXR1cmVfZ2Rwcl91c2VyX2pvaW5fdG9zIjp0cnVlLCJmZWF0dXJlX3VzZXJfaW52aXRlX3Rvc19hcHJpbF8yMDE4Ijp0cnVlLCJmZWF0dXJlX21vZGVybml6ZV9pbnZpdGVzIjp0cnVlLCJmZWF0dXJlX2N1c3RvbV9lbW9qaV9kb3dubG9hZF9idG4iOmZhbHNlLCJmZWF0dXJlX2ludml0ZXNfc3NvX2NoZWNrIjp0cnVlLCJmZWF0dXJlX2luY3JlbWVudGFsX3VucmVhZF9jb3VudHMiOmZhbHNlLCJmZWF0dXJlX25ldWVfdHlwZSI6ZmFsc2UsImZlYXR1cmVfY3VzdF9hY3FfaTE4bl90d2Vha3MiOmZhbHNlLCJmZWF0dXJlX3NlY3VyaXR5X2xlZ2FsX3BhZ2VfdXBkYXRlcyI6ZmFsc2UsImZlYXR1cmVfcHJval91cGRhdGVkX3ByaWNpbmdfbHAiOnRydWUsImZlYXR1cmVfcHJval93b3JrZmxvd19idWlsZGVyX2xwIjpmYWxzZSwiZmVhdHVyZV9wcm9qX2lkcl93ZWIiOnRydWUsImZlYXR1cmVfcHJval9pZHJfd2ViX2N0YSI6dHJ1ZSwiZmVhdHVyZV9wcm9qX3NwZWNfZWFybHlfYmlyZCI6ZmFsc2UsImZlYXR1cmVfcHJval9icmFuZF90b19wZXJmX3BhZ2UiOmZhbHNlLCJmZWF0dXJlX3Byb2pfcHJpY2luZ19zaWduZWRfb3V0X3VwZGF0ZXMiOnRydWUsImZlYXR1cmVfcGFydG5lcl96b29tX2xwIjp0cnVlLCJmZWF0dXJlX3doaXRlbGlzdF96ZW5kZXNrX2NoYXRfd2lkZ2V0IjpmYWxzZSwiZmVhdHVyZV9saXZlX3N1cHBvcnRfZnJlZV9wbGFuIjpmYWxzZSwiZmVhdHVyZV9vZmZsaW5lX21vZGUiOmZhbHNlLCJmZWF0dXJlX2ZvcmNlX2xzX2NvbXByZXNzaW9uIjpmYWxzZSwiZmVhdHVyZV91c2VfaW1ncHJveHlfcmVzaXppbmciOnRydWUsImZlYXR1cmVfc2hhcmVfbWVudGlvbl9jb21tZW50X2NsZWFudXAiOmZhbHNlLCJmZWF0dXJlX2V4dGVybmFsX2ZpbGVzIjpmYWxzZSwiZmVhdHVyZV9kZXNrdG9wX3NvbmljX3JvbGxvdXQiOnRydWUsImZlYXR1cmVfZGVza3RvcF9zb25pY19iZXRhX3JvbGxvdXQiOnRydWUsImZlYXR1cmVfZGVza3RvcF9zb25pY19kaXNhYmxlX3JvbGxvdXQiOmZhbHNlLCJmZWF0dXJlX2VsZWN0cm9uX21lbW9yeV9sb2dnaW5nIjpmYWxzZSwiZmVhdHVyZV9uYXRpdmVfYXBwX3N0YXJ0X25vbl9tYWMiOmZhbHNlLCJmZWF0dXJlX2xvY2FsaXphdGlvbl9waGFzZV90d28iOnRydWUsImZlYXR1cmVfbG9jYWxlX2VzX0xBIjp0cnVlLCJmZWF0dXJlX2xvY2FsZV9lbl9HQiI6dHJ1ZSwiZmVhdHVyZV9sb2NhbGVfcHRfQlIiOnRydWUsImZlYXR1cmVfbmV3X2xvY2FsZV90b2FzdCI6dHJ1ZSwiZmVhdHVyZV9jaGFubmVsX2V4cG9ydHMiOmZhbHNlLCJmZWF0dXJlX2RvY3MiOnRydWUsImZlYXR1cmVfZG9jc190cmFuc2xhdGlvbnMiOmZhbHNlLCJmZWF0dXJlX2RvY3NfbWVudGlvbnNfYW5kX2NoYW5uZWxzIjpmYWxzZSwiZmVhdHVyZV9ib290X2ZhbGxiYWNrX3ZpZXdfdjEiOmZhbHNlLCJmZWF0dXJlX2NhbGxzX2VzY191aSI6dHJ1ZSwiZmVhdHVyZV9zcG9ja19jYWxscyI6dHJ1ZSwiZmVhdHVyZV9tb2Rlcm5fY2FsbHNfaW52aXRlIjpmYWxzZSwiZmVhdHVyZV9zcG9ja19jYWxsc19hMTF5IjpmYWxzZSwiZmVhdHVyZV9zcG9ja19jYWxsc19kcmF3X2NvbG9yX3BpY2tlciI6ZmFsc2UsImZlYXR1cmVfY2FsbHNfc3VydmV5X3JlcXVlc3RfcmVzcG9uc2UiOnRydWUsImZlYXR1cmVfcmVtb3RlX2ZpbGVzX2Ryb3Bib3hfbWlncmF0aW9uIjp0cnVlLCJmZWF0dXJlX3JlbW90ZV9maWxlc19kcm9wYm94X21pZ3JhdGlvbl9sYWJlbHMiOnRydWUsImZlYXR1cmVfcmVtb3RlX2ZpbGVzX2FwaSI6dHJ1ZSwiZmVhdHVyZV9kZWZhdWx0X3NoYXJlZF9jaGFubmVscyI6dHJ1ZSwiZmVhdHVyZV9yZWFjdF9sZnMiOmZhbHNlLCJmZWF0dXJlX2xvZ19xdWlja3N3aXRjaGVyX3F1ZXJpZXMiOnRydWUsImZlYXR1cmVfbWNfbWVudGlvbnNfdGFiX3ByZWZzX2FuZF9jaGFubmVscyI6dHJ1ZSwiZmVhdHVyZV90b2tlbl9pcF93aGl0ZWxpc3QiOnRydWUsImZlYXR1cmVfc2lkZWJhcl90aGVtZV91bmRvIjpmYWxzZSwiZmVhdHVyZV9oaWRlX29uX3N0YXJ0dXAiOmZhbHNlLCJmZWF0dXJlX2RvbnRfc2V0X2NoYW5uZWxfbWVtYmVyc2hpcF90d2ljZSI6ZmFsc2UsImZlYXR1cmVfYWxsb3dfaW50cmFfd29yZF9mb3JtYXR0aW5nIjp0cnVlLCJmZWF0dXJlX2FsbG93X2Nqa19hdXRvY29tcGxldGUiOnRydWUsImZlYXR1cmVfaTE4bl9jaGFubmVsc192YWxpZGF0ZV9lbW9qaSI6dHJ1ZSwiZmVhdHVyZV9md19lbmdfbm9ybWFsaXphdGlvbiI6dHJ1ZSwiZmVhdHVyZV9zbGltX3Njcm9sbGJhciI6ZmFsc2UsImZlYXR1cmVfcHJpbWFyeV9zZWFyY2giOmZhbHNlLCJmZWF0dXJlX21vZGVybl9zb3VuZHMiOmZhbHNlLCJmZWF0dXJlX21vZGVybl9mdXp6eV9tYXRjaGVyIjpmYWxzZSwiZmVhdHVyZV9zbGlfY2hhbm5lbF9hcmNoaXZlX3N1Z2dlc3Rpb25zIjp0cnVlLCJmZWF0dXJlX3N0ZWVwbGVfY2h1cmNoIjp0cnVlLCJmZWF0dXJlX3N0ZWVwbGVfY2h1cmNoX2xpbmsiOnRydWUsImZlYXR1cmVfc3RlZXBsZV9jaHVyY2hfZXh0IjpmYWxzZSwiZmVhdHVyZV9zdHJvbGxlcnNfdG9fcGVyY2giOnRydWUsImZlYXR1cmVfc2lkZWJhcl92aXJ0dWFsaXplZCI6ZmFsc2UsImZlYXR1cmVfZmFudGFpbF9udXJ0dXJlIjpmYWxzZSwiZmVhdHVyZV9wb3Vyb3ZlciI6ZmFsc2UsImZlYXR1cmVfbW9kZXJuX21waW1fbWFrZV9uYW1lIjpmYWxzZSwiZmVhdHVyZV9wZW9wbGVfc2VhcmNoIjpmYWxzZSwiZmVhdHVyZV9yZWFjdF9tZXNzYWdlcyI6dHJ1ZSwiZmVhdHVyZV9lZGdlX3VwbG9hZF9wcm94eV9jaGVjayI6ZmFsc2UsImZlYXR1cmVfbGVnYWN5X2ZpbGVfdXBsb2FkX2FuYWx5dGljcyI6dHJ1ZSwiZmVhdHVyZV9zb25pY19jbGlwYm9hcmQiOmZhbHNlLCJmZWF0dXJlX3NvbmljX2FjdGl2aXR5IjpmYWxzZSwiZmVhdHVyZV9lZGl0X3Byb2ZpbGVfc3BlZWRfYnVtcCI6ZmFsc2UsImZlYXR1cmVfZG93bmxvYWRzX3BvbGlzaCI6ZmFsc2UsImZlYXR1cmVfc29uaWNfZG1fYnJvd3NlciI6dHJ1ZSwiZmVhdHVyZV9zb25pY19lZGl0X3Byb2ZpbGUiOmZhbHNlLCJmZWF0dXJlX3NvbmljX2ZpbmRfbW9yZV93a3NwcyI6ZmFsc2UsImZlYXR1cmVfc29uaWNfaW5wdXRzIjpmYWxzZSwiZmVhdHVyZV90aHJlYWRlZF9zbGFja19vd25lZF9wbHVnaW5zIjp0cnVlLCJmZWF0dXJlX2RlcHJlY2F0ZV91bnVzZWRfY29tbWFuZHMiOnRydWUsImZlYXR1cmVfaGlkZV91bmZ1cmxfdXJscyI6ZmFsc2UsImZlYXR1cmVfcmVhY3RfbWVtYmVyX3Byb2ZpbGVfY2FyZCI6ZmFsc2UsImZlYXR1cmVfZXJyb3JfYm91bmRhcnlfY29weSI6dHJ1ZSwiZmVhdHVyZV9zb25pY19jbG91ZF9maWxlc19waWNrZXIiOmZhbHNlLCJmZWF0dXJlX3NvbmljX3NuaXBwZXRzIjpmYWxzZSwiZmVhdHVyZV9jb3B5X2NoYW5uZWxfbmFtZSI6ZmFsc2UsImZlYXR1cmVfYm94X2NvbnRlbnRfcGlja2VyIjp0cnVlLCJmZWF0dXJlX2ZhaWxvdmVyX3Byb3h5X2NoZWNrIjpmYWxzZSwiZmVhdHVyZV9hcHBfc3ViZG9tYWluX2NoZWNrIjp0cnVlLCJmZWF0dXJlX3NvbmljX2RyYWZ0X21pZ3JhdGlvbiI6dHJ1ZSwiZmVhdHVyZV9jZG5fZG93bmxvYWRfdGVzdCI6ZmFsc2UsImZlYXR1cmVfYXBwX2luZGV4IjpmYWxzZSwiZmVhdHVyZV9tb2Rlcm5pemVfc2xhY2tfYWN0aW9ucyI6ZmFsc2UsImZlYXR1cmVfZ2RyaXZlX2RvX25vdF9pbnN0YWxsX2J5X2RlZmF1bHQiOnRydWUsImZlYXR1cmVfZGVsZXRlX21vdmVkX2NoYW5uZWxzIjp0cnVlLCJmZWF0dXJlX3NpbmdsZV93b3Jrc3BhY2VfcmVkaXJlY3QiOnRydWUsImZlYXR1cmVfemVyb193b3Jrc3BhY2Vfb25ib2FyZGluZyI6dHJ1ZSwiZmVhdHVyZV9vb21fbXZfY2hhbm5lbHNfbGlzdCI6dHJ1ZSwiZmVhdHVyZV9zc29fZm9ybWF0dGluZ19lcnJvciI6dHJ1ZSwiZmVhdHVyZV9zaW5nbGVfdXNlcl93b3Jrc3BhY2VfcGFnaW5hdGlvbiI6dHJ1ZSwiZmVhdHVyZV9la21fcGhhc2VfMiI6dHJ1ZSwiZmVhdHVyZV9la21fYmFja2ZpbGxfYWRkX3NsZWVwIjpmYWxzZSwiZmVhdHVyZV9la21fZmlsZV9yZXZvY2F0aW9uIjpmYWxzZSwiZmVhdHVyZV9la21fcmV2b2NhdGlvbl9hcGlfY2hhbmdlcyI6ZmFsc2UsImZlYXR1cmVfZWttX21lc3NhZ2VfcmV2b2NhdGlvbl9wb2xsaW5nX3Rlc3QiOmZhbHNlLCJmZWF0dXJlX2VrbV9tZXNzYWdlX3Jldm9jYXRpb24iOnRydWUsImZlYXR1cmVfbG9uZ2VyX2NoYW5uZWxfbmFtZXMiOnRydWUsImZlYXR1cmVfbXNfbGF0ZXN0Ijp0cnVlLCJmZWF0dXJlX2d1ZXN0c191c2VfZW50aXRsZW1lbnRzIjp0cnVlLCJmZWF0dXJlX2FwcF9zcGFjZSI6dHJ1ZSwiZmVhdHVyZV9tMTFuX2FwcHNfYnJvd3NlciI6ZmFsc2UsImZlYXR1cmVfc2hvd19pbnN0YWxsZWRfYXBwX2RtX3N1Z2dlc3Rpb25zIjp0cnVlLCJmZWF0dXJlX2FwcF9zcGFjZV9saW5rcyI6dHJ1ZSwiZmVhdHVyZV9hcHBfY2FudmFzZXMiOmZhbHNlLCJmZWF0dXJlX2FwcF92aWV3c192MSI6ZmFsc2UsImZlYXR1cmVfYXBwX3ZpZXdzX2FwaXNfdjEiOmZhbHNlLCJmZWF0dXJlX2FwcF92aWV3c19yZW1pbmRlcnMiOmZhbHNlLCJmZWF0dXJlX2FwcF92aWV3c19yZW1pbmRlcnNfbGlzdCI6ZmFsc2UsImZlYXR1cmVfYmxvY2tzX3JlbWluZGVyc19saXN0IjpmYWxzZSwiZmVhdHVyZV9tZXNzYWdlX2Jsb2NrcyI6ZmFsc2UsImZlYXR1cmVfc2lsZW5jZV9hcHBfZG1zIjpmYWxzZSwiZmVhdHVyZV9zZXRfdHpfYXV0b21hdGljYWxseSI6dHJ1ZSwiZmVhdHVyZV9jb25maXJtX2NsZWFyX2FsbF91bnJlYWRzX3ByZWYiOnRydWUsImZlYXR1cmVfYmxvY2tfbW91bnRzIjp0cnVlLCJmZWF0dXJlX2F0dGFjaG1lbnRzX3YyIjp0cnVlLCJmZWF0dXJlX2Jsb2NrX2tpdF9kb2N1bWVudGF0aW9uIjp0cnVlLCJmZWF0dXJlX2Jsb2NrX2tpdF9leHBhbmRhYmxlX2Jsb2NrIjpmYWxzZSwiZmVhdHVyZV9ncm91cF9ibG9jayI6ZmFsc2UsImZlYXR1cmVfYmxvY2tfa2l0X2RlZXBfbGlua3MiOmZhbHNlLCJmZWF0dXJlX2Jsb2NrX2tpdF9tdWx0aV9zZWxlY3RzIjpmYWxzZSwiZmVhdHVyZV9zaG93X2Jsb2NrX2tpdF9pbl9zaGFyZV9kaWFsb2dzIjpmYWxzZSwiZmVhdHVyZV9ibG9ja19raXRfZXZlbnRfYmxvY2siOmZhbHNlLCJmZWF0dXJlX2Jsb2NrX2tpdF9yZWZhY3RvciI6ZmFsc2UsImZlYXR1cmVfYmxvY2tfa2l0X3Nob3VsZF91c2Vfc2xhY2tfa2l0X3NlbGVjdCI6dHJ1ZSwiZmVhdHVyZV9ibG9ja19raXRfdXNlcl9ibG9jayI6ZmFsc2UsImZlYXR1cmVfYmxvY2tfa2l0X3JhZGlvX2J1dHRvbnMiOmZhbHNlLCJmZWF0dXJlX2Jsb2NrX2tpdF9jaGVja2JveGVzIjpmYWxzZSwiZmVhdHVyZV9ibG9ja19raXRfcmFuZ2VfZGF0ZXBpY2tlciI6ZmFsc2UsImZlYXR1cmVfYWRkX2FwcF9ob21lX3RlYW1fbmFtZSI6ZmFsc2UsImZlYXR1cmVfZGF0ZV90aW1lX3BpY2tlciI6ZmFsc2UsImZlYXR1cmVfYmVhY29uX2pzX2Vycm9ycyI6ZmFsc2UsImZlYXR1cmVfYmVhY29uX2pzX2FkbWluX2Vycm9ycyI6ZmFsc2UsImZlYXR1cmVfZGlhbG9nc192Ml9tb2JpbGUiOnRydWUsImZlYXR1cmVfdXNlcl9hcHBfZGlzYWJsZV9zcGVlZF9idW1wIjp0cnVlLCJmZWF0dXJlX29uZWRyaXZlX3BpY2tlciI6dHJ1ZSwiZmVhdHVyZV9vbmVkcml2ZV9yZWRpcmVjdF91cmkiOnRydWUsImZlYXR1cmVfb25lZHJpdmVfYmV0dGVyX2Vycm9ycyI6dHJ1ZSwiZmVhdHVyZV9vbmVkcml2ZV9sYW5kaW5nX3BhZ2UiOmZhbHNlLCJmZWF0dXJlX29uZWRyaXZlX3VwZGF0ZV91bmZ1cmxfc3VnZ2VzdGlvbnMiOmZhbHNlLCJmZWF0dXJlX2Rpc2FibGVfYm94X3BsdXNfbWVudSI6ZmFsc2UsImZlYXR1cmVfdHJhY3Rvcl9zaGFyZWRfaW52aXRlX2xpbmsiOnRydWUsImZlYXR1cmVfbmV3eHBfMjExOSI6dHJ1ZSwiZmVhdHVyZV90cmFjdG9yX2JhY2t1cF9jaGFubmVsbmFtZV9jb3B5Ijp0cnVlLCJmZWF0dXJlX3NrX3RhYmxlcyI6ZmFsc2UsImZlYXR1cmVfb3Bwb3J0dW5pc3RpY19yZWxvYWRzIjpmYWxzZSwiZmVhdHVyZV9zb25pY19kZWdyYWRlZF9iYW5uZXIiOnRydWUsImZlYXR1cmVfZGVncmFkZWRfc2VuZCI6dHJ1ZSwiZmVhdHVyZV9mbGFubmVsX3hociI6dHJ1ZSwiZmVhdHVyZV9kZXN5bmNfcmVzeW5jIjpmYWxzZSwiZmVhdHVyZV92aXRlc3Nfc2lkZWJhciI6dHJ1ZSwiZmVhdHVyZV9zdHJhbmdlcl9kYW5nZXIiOmZhbHNlLCJmZWF0dXJlX21lc3NhZ2VfaGlzdG9yeV9jZm0iOnRydWUsImZlYXR1cmVfZGVncmFkZWRfcnRtX2Fsd2F5c19mYWlscyI6ZmFsc2UsImZlYXR1cmVfZGVsZXRlX3RlYW1fYW5kX2FwcHMiOnRydWUsImZlYXR1cmVfcGpwZWciOmZhbHNlLCJmZWF0dXJlX3BkZl90aHVtYiI6dHJ1ZSwiZmVhdHVyZV9hcHBzX21hbmFnZV9wZXJtaXNzaW9uc19zY29wZV9jaGFuZ2VzIjp0cnVlLCJmZWF0dXJlX3JlbWluZGVyX2Nyb3NzX3dvcmtzcGFjZSI6dHJ1ZSwiZmVhdHVyZV9zcGVlZHlfYm9vdF9oYW5kbGViYXJzIjpmYWxzZSwiZmVhdHVyZV9zYW1sX293bmVyc19vbmx5Ijp0cnVlLCJmZWF0dXJlX21vZGVybl9kdW5uaW5nX2Jhbm5lcnNfaTE4biI6dHJ1ZSwiZmVhdHVyZV9mbGFubmVsX2Fsd2F5c191c2VfY2FuYXJ5IjpmYWxzZSwiZmVhdHVyZV9zb25pY19yZWRpcmVjdF9vcHRfb3V0IjpmYWxzZSwiZmVhdHVyZV9nbG9iYWxfbmF2IjpmYWxzZSwiZmVhdHVyZV9nbG9iYWxfbmF2X3JvbGxiYWNrIjpmYWxzZSwiZmVhdHVyZV9nbG9iYWxfbmF2X2xheW91dCI6ZmFsc2UsImZlYXR1cmVfY2xhc3NpY19uYXYiOmZhbHNlLCJmZWF0dXJlX25ld19yZWFjdGlvbnMiOnRydWUsImZlYXR1cmVfcGFnZXNfZXhhbXBsZSI6ZmFsc2UsImZlYXR1cmVfc29uaWNfcGlucyI6ZmFsc2UsImZlYXR1cmVfc29uaWNfY2hhbm5lbF9icm93c2VyIjp0cnVlLCJmZWF0dXJlX3NvbmljX3ZpZGVvX3BsYWNlaG9sZGVyIjp0cnVlLCJmZWF0dXJlX2FwcF9kaXJlY3RvcnlfaG9tZV9wYWdlX3JlZGVzaWduIjp0cnVlLCJmZWF0dXJlX2hpZGRlbl93a3NwX3VuZnVybHMiOnRydWUsImZlYXR1cmVfZ3Vlc3Rfd2tzcF91bmZ1cmxzIjpmYWxzZSwiZmVhdHVyZV93b3Jrc3BhY2Vfc2NpbV9tYW5hZ2VtZW50IjpmYWxzZSwiZmVhdHVyZV91bmlmaWVkX21lbWJlciI6ZmFsc2UsImZlYXR1cmVfbmV3X3VuaWZpZWRfbGlzdF9lbnRpdGllcyI6ZmFsc2UsImZlYXR1cmVfdHVybl9tcGRtX25vdGlmc19vbiI6dHJ1ZSwiZmVhdHVyZV9icm93c2VyX2RyYWduZHJvcCI6ZmFsc2UsImZlYXR1cmVfZGVza3RvcF9mb3JjZV9wcm9kdWN0aW9uX2NoYW5uZWwiOmZhbHNlLCJmZWF0dXJlX2Rlc2t0b3BfbG9nc191cGxvYWQiOmZhbHNlLCJmZWF0dXJlX21hY29zX2Rpc2FibGVfaHciOnRydWUsImZlYXR1cmVfZGVza3RvcF9ub3RpZmljYXRpb25zXzIwMTgiOmZhbHNlLCJmZWF0dXJlX2V4Y2VsX29mZmljZV9wcmV2aWV3Ijp0cnVlLCJmZWF0dXJlX29yZ19hd2FyZV9leHRlcm5hbF9zaGFyZWRfY2hhbm5lbHMiOnRydWUsImZlYXR1cmVfZXNjX2Rpc2Nvbm5lY3RfdjJfY2xpZW50Ijp0cnVlLCJmZWF0dXJlX2VzY19kaXNjb25uZWN0X3YyX3JlbGVhc2VfZGVwZW5kZW50X2NvcHkiOnRydWUsImZlYXR1cmVfcXVpbGxfdXBncmFkZSI6dHJ1ZSwiZmVhdHVyZV9hbGx5X3NvdW5kcyI6ZmFsc2UsImZlYXR1cmVfYm90c19ub3RfbWVtYmVycyI6dHJ1ZSwiZmVhdHVyZV93dGFfbW9kYWxfbTExbiI6ZmFsc2UsImZlYXR1cmVfd3RhX3N0b3BfY3JlYXRpb24iOnRydWUsImZlYXR1cmVfbTExbl9jaGFubmVsX2RldGFpbHMiOmZhbHNlLCJmZWF0dXJlX2dyb3VwX3Njb3BlcyI6ZmFsc2UsImZlYXR1cmVfYmxvY2tfZ3Vlc3RfYXBwX2NyZWF0aW9uIjp0cnVlLCJmZWF0dXJlX29hdXRoX2NoYW5uZWxfcGlja2Vyc19mbGFubmVsIjpmYWxzZSwiZmVhdHVyZV93dGFfb3JnX2xldmVsX2FwcHMiOmZhbHNlLCJmZWF0dXJlX2NoYW5uZWxfYWN0aW9ucyI6ZmFsc2UsImZlYXR1cmVfc2hvcnRjdXRzX2J1dHRvbl9vbl9sZWZ0IjpmYWxzZSwiZmVhdHVyZV9jb2xvcmZ1bF9zbGFzaF9jb21tYW5kcyI6ZmFsc2UsImZlYXR1cmVfY2hhbm5lbF9hY3Rpb25zX2NsaWVudCI6ZmFsc2UsImZlYXR1cmVfc2hvcnRjdXRzX3Byb21wdCI6dHJ1ZSwiZmVhdHVyZV9hY2Nlc3NpYmxlX2RpYWxvZ3MiOnRydWUsImZlYXR1cmVfYXBwX2FjdGlvbnNfZ2xvYmFsIjpmYWxzZSwiZmVhdHVyZV9hcHBfYWN0aW9uc19mZV9yZWZhY3RvciI6ZmFsc2UsImZlYXR1cmVfc2hhcmVkX2NoYW5uZWxfZnJlZV90cmlhbF9mbG93Ijp0cnVlLCJmZWF0dXJlX2NhbGxzX2NsaXBib2FyZF9icm9hZGNhc3Rpbmdfb3B0aW4iOnRydWUsImZlYXR1cmVfc2NyZWVuX3NoYXJlX25lZWRzX2Flcm8iOmZhbHNlLCJmZWF0dXJlX3NsaV90cmVuZGluZ19kYXNoYm9hcmQiOmZhbHNlLCJmZWF0dXJlX2kxOG5fc2VsZWN0X2VtcHR5X3N0YXRlX3N0cmluZyI6ZmFsc2UsImZlYXR1cmVfYWNjZXNzaWJsZV9mc19kaWFsb2dzIjp0cnVlLCJmZWF0dXJlX2NoYW5uZWxfYnJvd3Nlcl9kcm9wZG93biI6dHJ1ZSwiZmVhdHVyZV90cmFwX2tiX3dpdGhpbl9mc19tb2RhbHMiOnRydWUsImZlYXR1cmVfZGlhbG9nX3NwZWVkYnVtcCI6dHJ1ZSwiZmVhdHVyZV9tb2Rlcm5faW1hZ2Vfdmlld2VyIjp0cnVlLCJmZWF0dXJlX2Vtb2ppX2J5X2lkIjp0cnVlLCJmZWF0dXJlX3d0YV9ub3RpZmljYXRpb25zIjp0cnVlLCJmZWF0dXJlX21jX21pZ3JhdGlvbl9iYW5uZXIiOnRydWUsImZlYXR1cmVfZmlsZV9jb21tZW50X2RlbGV0ZWRfcnRtX2hhbmRsZXIiOmZhbHNlLCJmZWF0dXJlX2F0dGFjaG1lbnRfdGV4dF9tb3JlIjpmYWxzZSwiZmVhdHVyZV9hcmlhX2FwcGxpY2F0aW9uX21vZGUiOmZhbHNlLCJmZWF0dXJlX21vZGVybl9yZXF1ZXN0X3dvcmtzcGFjZV9kaWFsb2ciOmZhbHNlLCJmZWF0dXJlX21vZGVybl9wcm9maWxlX2ZsZXhwYW5lIjpmYWxzZSwiZmVhdHVyZV9zY2dfY29udmVyc2lvbl9jaGFubmVscyI6dHJ1ZSwiZmVhdHVyZV9yZWR1Y2VfdW5leHBlY3RlZF91bmluc3RhbGxzIjp0cnVlLCJmZWF0dXJlX3NvbmljX3F1aWNrX3N3aXRjaGVyIjpmYWxzZSwiZmVhdHVyZV9pZHBfZ3JvdXBfd2FybmluZyI6ZmFsc2UsImZlYXR1cmVfdHJhY2tfdGltZV9zcGVudCI6dHJ1ZSwiZmVhdHVyZV9hbm5vdW5jZV9vbmx5Ijp0cnVlLCJmZWF0dXJlX2Fubm91bmNlX29ubHlfd2Vic29ja2V0Ijp0cnVlLCJmZWF0dXJlX2Fubm91bmNlX29ubHlfcHJlZl9jaGFuZ2VfbWVzc2FnZSI6dHJ1ZSwiZmVhdHVyZV9hbm5vdW5jZV9vbmx5X3Byb21vIjpmYWxzZSwiZmVhdHVyZV9hdF9tZW50aW9uX2ludml0ZXMiOmZhbHNlLCJmZWF0dXJlX2NoYW5uZWxfaW52aXRlX3Rva2VuaXphdGlvbiI6ZmFsc2UsImZlYXR1cmVfY2hhbm5lbF9pc19uZXdfY3JlYXRlX2VkaXQiOmZhbHNlLCJmZWF0dXJlX2NvbXBvc2VfcHJvdG90eXBlIjpmYWxzZSwiZmVhdHVyZV9pbXBvcnRzX2NhbmNlbCI6ZmFsc2UsImZlYXR1cmVfaW1wb3J0c19jaGFubmVsX3NlcGFyYXRpb24iOmZhbHNlLCJmZWF0dXJlX2V2YWx1ZV8yNjQxX2Rpc2FsbG93X2VuZm9yY2Vfb3Jnd2lkZV9wb2xpY3kiOmZhbHNlLCJmZWF0dXJlX2VtYWlsX3dvcmtvYmplY3RfdWkiOmZhbHNlLCJmZWF0dXJlX2VtYWlsX25vdGlmeSI6ZmFsc2UsImZlYXR1cmVfZW1haWxfcHJpdmF0ZSI6dHJ1ZSwiZmVhdHVyZV9hc3luY191c2Vyc19zZXRfcGhvdG8iOmZhbHNlLCJmZWF0dXJlX2VzY19hZG1pbiI6dHJ1ZSwiZmVhdHVyZV9jdXN0b21pemVkX2RvbWFpbl9jbGFpbWluZyI6dHJ1ZSwiZmVhdHVyZV9vcmdfd2lkZV9tMTFuIjpmYWxzZSwiZmVhdHVyZV9jYWxlbmRhcl9zaW1wbGVfYWdlbmRhX3ZpZXciOmZhbHNlLCJmZWF0dXJlX2FuYWx5dGljc19lbmFibGVfZGl2aXNpb24iOmZhbHNlLCJmZWF0dXJlX3NlYXJjaF9vbl9uYW1lX2FuZF9lbWFpbF9vbmx5Ijp0cnVlLCJmZWF0dXJlX2VudGVycHJpc2VfYW5hbHl0aWNzX2FwcHNfdGFiIjpmYWxzZSwiZmVhdHVyZV9lbnRlcnByaXNlX2FuYWx5dGljc18yMDE5X3ExX3VwZGF0ZSI6dHJ1ZSwiZmVhdHVyZV9pbnNpZ2h0c19hbGxvd19hY2Nlc3NfdG9fYXBwIjpmYWxzZSwiZmVhdHVyZV9leGlzdGluZ19oZWxwX3JlcXVlc3RfYXR0YWNobWVudHMiOnRydWUsImZlYXR1cmVfbWlncmF0aW9uX2JhY2tncm91bmRfY2xpZW50IjpmYWxzZSwiZmVhdHVyZV91bmZ1cmxfbWV0YWRhdGEiOmZhbHNlLCJmZWF0dXJlX3BsdXNfbWVudV9hZGRfYXBwc19saW5rIjpmYWxzZSwiZmVhdHVyZV9yZWNlbnRfZmlsZXNfb21uaXBpY2tlciI6ZmFsc2UsImZlYXR1cmVfZ3JhbnVsYXJfYm90c19kZXZlbG9wZXJfcHJldmlldyI6ZmFsc2UsImZlYXR1cmVfZ3JhbnVsYXJfYm90X3Njb3Blc19HQSI6ZmFsc2UsImZlYXR1cmVfZW1haWxfYnJpZGdlX2dyaWQiOmZhbHNlLCJmZWF0dXJlX3JlbW92ZV9nZHJpdmVfY29uZmlybWF0aW9uIjpmYWxzZSwiZmVhdHVyZV9zdHJpcGVfc2NhIjpmYWxzZSwiZmVhdHVyZV9zZWxmX3NlcnZlX3NlbGVjdCI6dHJ1ZSwiZmVhdHVyZV92YXRfcHJvamVjdF9zYV9zayI6dHJ1ZSwiZmVhdHVyZV92YXRfcHJvamVjdF9zYV9za18yIjp0cnVlLCJmZWF0dXJlX3ZhdF9wcm9qZWN0X3NhX3NrX2NvbGxlY3Rpb24iOnRydWUsImZlYXR1cmVfZW1haWxfYmlsbGluZ19wZW5kaW5nX2V4cGlyeV90cmFuc2xhdGlvbnMiOnRydWUsImZlYXR1cmVfdXBncmFkZV9zbGFja190cmFuc2xhdGlvbnMiOnRydWUsImZlYXR1cmVfcGVyc19zZWFyY2hfbXNnX2xpbWl0X3dhcm5pbmdfaTE4biI6dHJ1ZSwiZmVhdHVyZV9oaWdobGlnaHRfc3RhbmRhcmRfb25fcGxhbnNfcGFnZV9pMThuIjp0cnVlLCJmZWF0dXJlX2dzb19yZW1vdGVfc2Vzc2lvbl93aXBlIjpmYWxzZSwiZmVhdHVyZV9hZG1pbl9tb3ZlX2NoYW5uZWxzX21lc3NhZ2UiOmZhbHNlLCJmZWF0dXJlX25ld3hwX2ppcmFfMjA0MyI6dHJ1ZSwiZmVhdHVyZV9zZWVfbW9yZV9jaGFubmVscyI6ZmFsc2UsImZlYXR1cmVfY3JlYXRvcl9zb25pY191cmwiOmZhbHNlLCJmZWF0dXJlX2ppcmFfbmV3eHBfMjM3MiI6dHJ1ZSwiZmVhdHVyZV9qaXJhX25ld3hwXzE3NTQiOmZhbHNlLCJmZWF0dXJlX3Vuc3VwcG9ydGVkX2Jyb3dzZXJzX2NvbXBvbmVudF90cmFuc2xhdGlvbnMiOmZhbHNlLCJmZWF0dXJlX25ld3hwX2ZlX2ludml0ZV9tb2Rlcm4iOnRydWUsImZlYXR1cmVfYWN0aXZhdGlvbl9tb2Rlcm5fZ2V0X3N0YXJ0ZWQiOmZhbHNlLCJmZWF0dXJlX21vZGVybml6ZV9jaGFubmVsX2NyZWF0ZV9tb2RhbCI6dHJ1ZSwiZmVhdHVyZV9zb25pY19wbGFjZWhvbGRlcl9sYWJlbHMiOmZhbHNlLCJmZWF0dXJlX3NvbmljX2VzY19jcmVhdGlvbiI6ZmFsc2UsImZlYXR1cmVfbmlnaHRzaGFkZSI6ZmFsc2UsImZlYXR1cmVfcGxhdGZvcm1fY2FsbHNfYXBpIjp0cnVlLCJmZWF0dXJlX3RocmVhZGVkX2NhbGxfYmxvY2siOmZhbHNlLCJmZWF0dXJlX2JyaW5nX3BsYW5zX3BhZ2VfdG9fc3NiX3RyYW5zbGF0aW9ucyI6dHJ1ZSwiZmVhdHVyZV9laWRlbnRfMjA5MiI6ZmFsc2UsImZlYXR1cmVfZWlkZW50XzIxNTQiOmZhbHNlLCJmZWF0dXJlX21vYmlsZV9iaW9tZXRyaWNzX3RpbWVvdXQiOnRydWUsImZlYXR1cmVfc29uaWNfY2hhbm5lbF9pbnZpdGVfbW9kYWwiOmZhbHNlLCJmZWF0dXJlX2xpZmVjeWNsZV9sb2dnaW5nX3BsYW5zX3BhZ2UiOnRydWUsImZlYXR1cmVfY2hhbmdlX3B1cnBvc2VfdG9fZGVzY3JpcHRpb24iOmZhbHNlLCJmZWF0dXJlX3BsYXRmb3JtX2FwcF9tYW5hZ2VtZW50X29uX2RlbWFuZF9waWNrZXJzIjp0cnVlLCJmZWF0dXJlX3BsYXRmb3JtX2FwcF9tYW5hZ2VtZW50X29uX2RlbWFuZF9waWNrZXJzX3BoYXNlXzIiOmZhbHNlLCJmZWF0dXJlX3NsYWNrX21lc3NhZ2VfYXR0YWNobWVudF90b29sdGlwIjpmYWxzZSwiZmVhdHVyZV9jaGVja291dF9mdWxsX3NjaGVkdWxlX3NlbGVjdG9yX3RyYW5zbGF0aW9ucyI6dHJ1ZSwiZmVhdHVyZV9tb2Rlcm5fZ2RyaXZlX2NyZWF0ZSI6ZmFsc2UsImZlYXR1cmVfZ2RyaXZlX3Byb21wdF9yZWZhY3RvciI6dHJ1ZSwiZmVhdHVyZV9hcHBfcHJvbXB0c19jb25uZWN0X3JlZmFjdG9yIjpmYWxzZSwiZmVhdHVyZV9uZXd4cF8yNzc4Ijp0cnVlLCJmZWF0dXJlX25ld3hwXzMxMDAiOmZhbHNlLCJmZWF0dXJlX25ld3hwMzEwMF92MSI6dHJ1ZSwiZmVhdHVyZV9zZWFyY2hfZmVlZGJhY2siOmZhbHNlLCJmZWF0dXJlX21vZGVybml6ZV9saW1pdF9tZXRlciI6dHJ1ZSwiZmVhdHVyZV9zaGFyZWRfY2hhbm5lbHNfY3VzdG9tX2Vtb2ppc191cmwiOmZhbHNlLCJmZWF0dXJlX3NoYXJlZF9jaGFubmVsc19jdXN0b21fZW1vamlzX3VybF9jbGllbnQiOmZhbHNlLCJmZWF0dXJlX25ld19jb3B5X2Zvcl9pZGVudGl0eV9iYXNpYyI6ZmFsc2UsImZlYXR1cmVfbmV3eHBfMjc5OCI6ZmFsc2UsImZlYXR1cmVfc29uaWNfbGVhdmVfd29ya3NwYWNlX2RpYWxvZyI6ZmFsc2UsImZlYXR1cmVfY2hhbm5lbF9uYW1pbmdfbm9ybXMiOnRydWUsImZlYXR1cmVfYXBwc19icm93c2VyX2ExMXkiOmZhbHNlLCJmZWF0dXJlX2JldHRlcl9zY19pbnZpdGVzIjpmYWxzZSwiZmVhdHVyZV9iZXR0ZXJfbWFuYWdlX3NjX21vZGFsIjpmYWxzZSwiZmVhdHVyZV9iZXR0ZXJfc2NfaW52aXRlc19hY2NlcHRfZmxvd19hcHAiOmZhbHNlLCJmZWF0dXJlX2JldHRlcl9zY19pbnZpdGVzX3NsYWNrYm90X2NsaWVudCI6ZmFsc2UsImZlYXR1cmVfcGFpZF9vbmJvYXJkaW5nX3BhZ2V1cGRhdGUiOnRydWUsImZlYXR1cmVfZG93bmxvYWRfYWNjZXNzX2xvZ3MiOnRydWUsImZlYXR1cmVfbmV3eHBfMzA5N190cmFuc2xhdGlvbnMiOmZhbHNlLCJmZWF0dXJlX3RyYWNlX3dlYmFwcF9pbml0Ijp0cnVlLCJmZWF0dXJlX25ld3hwXzI4MzIiOnRydWUsImZlYXR1cmVfYXBwX2Jyb3dzZXJfYmV0dGVyX2hlYWRlcl90cmFuc2xhdGlvbnMiOnRydWUsImZlYXR1cmVfYW5ub3VuY2VtZW50X29ubHlfY2hhbm5lbF9jb3B5X2NoYW5nZV90cmFuc2xhdGlvbnMiOnRydWUsImZlYXR1cmVfd29ya2Zsb3dfYm90c19pbl9jbGllbnQiOmZhbHNlLCJmZWF0dXJlX2J1aWxkZXJfaXNfd29ya2Zsb3dfYXBwIjpmYWxzZSwiZmVhdHVyZV9zdHJpcGVfY29tcGxldGVseV9kb3duX2Jhbm5lciI6ZmFsc2UsImZlYXR1cmVfZmVhdF9icm93c2VyX2NvbnRyb2wiOmZhbHNlLCJmZWF0dXJlX25ld3hwXzI4NjJfdHJhbnNsYXRpb25zIjpmYWxzZSwiZmVhdHVyZV9tb3ZlX2NoYW5uZWxzX2NvcHkiOmZhbHNlLCJmZWF0dXJlX21vZGVybl9wbGFuc19wYWdlX3RyYW5zbGF0aW9ucyI6ZmFsc2UsImZlYXR1cmVfcGxhbnNfcGFnZV9xdW90ZSI6ZmFsc2UsImZlYXR1cmVfY2hlY2tvdXR2Ml9kaXNjb3VudF9mb3JfZWR1Y2F0aW9uX2FuZF9ub25wcm9maXQiOmZhbHNlLCJmZWF0dXJlX2RlcHJlY2F0aW9uX2Rhc2hib2FyZHMiOmZhbHNlLCJjbGllbnRfbG9ncyI6eyIwIjp7Im51bWJlcnMiOlswXSwidXNlcl9mYWNpbmciOmZhbHNlfSwiMiI6eyJudW1iZXJzIjpbMl0sInVzZXJfZmFjaW5nIjpmYWxzZX0sIjQiOnsibnVtYmVycyI6WzRdLCJ1c2VyX2ZhY2luZyI6ZmFsc2V9LCI1Ijp7Im51bWJlcnMiOls1XSwidXNlcl9mYWNpbmciOmZhbHNlfSwiMjMiOnsibnVtYmVycyI6WzIzXSwidXNlcl9mYWNpbmciOmZhbHNlfSwic291bmRzIjp7Im5hbWUiOiJzb3VuZHMiLCJudW1iZXJzIjpbMzddfSwiMzciOnsibmFtZSI6InNvdW5kcyIsIm51bWJlcnMiOlszN10sInVzZXJfZmFjaW5nIjp0cnVlfSwiNDciOnsibnVtYmVycyI6WzQ3XSwidXNlcl9mYWNpbmciOmZhbHNlfSwiNDgiOnsibnVtYmVycyI6WzQ4XSwidXNlcl9mYWNpbmciOmZhbHNlfSwiTWVzc2FnZSBIaXN0b3J5Ijp7Im5hbWUiOiJNZXNzYWdlIEhpc3RvcnkiLCJudW1iZXJzIjpbNThdfSwiNTgiOnsibmFtZSI6Ik1lc3NhZ2UgSGlzdG9yeSIsIm51bWJlcnMiOls1OF0sInVzZXJfZmFjaW5nIjp0cnVlfSwiNjciOnsibnVtYmVycyI6WzY3XSwidXNlcl9mYWNpbmciOmZhbHNlfSwiNzIiOnsibnVtYmVycyI6WzcyXSwidXNlcl9mYWNpbmciOmZhbHNlfSwiNzMiOnsibnVtYmVycyI6WzczXSwidXNlcl9mYWNpbmciOmZhbHNlfSwiODIiOnsibnVtYmVycyI6WzgyXSwidXNlcl9mYWNpbmciOmZhbHNlfSwiODgiOnsibnVtYmVycyI6Wzg4XSwidXNlcl9mYWNpbmciOmZhbHNlfSwiOTEiOnsibnVtYmVycyI6WzkxXSwidXNlcl9mYWNpbmciOmZhbHNlfSwiOTMiOnsibnVtYmVycyI6WzkzXSwidXNlcl9mYWNpbmciOmZhbHNlfSwiOTYiOnsibnVtYmVycyI6Wzk2XSwidXNlcl9mYWNpbmciOmZhbHNlfSwiOTkiOnsibnVtYmVycyI6Wzk5XSwidXNlcl9mYWNpbmciOmZhbHNlfSwiQ2hhbm5lbCBNYXJraW5nIChNUykiOnsibmFtZSI6IkNoYW5uZWwgTWFya2luZyAoTVMpIiwibnVtYmVycyI6WzE0MV19LCIxNDEiOnsibmFtZSI6IkNoYW5uZWwgTWFya2luZyAoTVMpIiwibnVtYmVycyI6WzE0MV0sInVzZXJfZmFjaW5nIjp0cnVlfSwiQ2hhbm5lbCBNYXJraW5nIChDbGllbnQpIjp7Im5hbWUiOiJDaGFubmVsIE1hcmtpbmcgKENsaWVudCkiLCJudW1iZXJzIjpbMTQyXX0sIjE0MiI6eyJuYW1lIjoiQ2hhbm5lbCBNYXJraW5nIChDbGllbnQpIiwibnVtYmVycyI6WzE0Ml0sInVzZXJfZmFjaW5nIjp0cnVlfSwiQ2xvc2UgT2xkIElNcyAoQ2xpZW50KSI6eyJuYW1lIjoiQ2xvc2UgT2xkIElNcyAoQ2xpZW50KSIsIm51bWJlcnMiOlsyMjFdfSwiMjIxIjp7Im5hbWUiOiJDbG9zZSBPbGQgSU1zIChDbGllbnQpIiwibnVtYmVycyI6WzIyMV0sInVzZXJfZmFjaW5nIjp0cnVlfSwiMzY1Ijp7Im51bWJlcnMiOlszNjVdLCJ1c2VyX2ZhY2luZyI6ZmFsc2V9LCIzODkiOnsibnVtYmVycyI6WzM4OV0sInVzZXJfZmFjaW5nIjpmYWxzZX0sIjQzOCI6eyJudW1iZXJzIjpbNDM4XSwidXNlcl9mYWNpbmciOmZhbHNlfSwiNDQ0Ijp7Im51bWJlcnMiOls0NDRdLCJ1c2VyX2ZhY2luZyI6ZmFsc2V9LCI0ODEiOnsibnVtYmVycyI6WzQ4MV0sInVzZXJfZmFjaW5nIjpmYWxzZX0sIjQ4OCI6eyJudW1iZXJzIjpbNDg4XSwidXNlcl9mYWNpbmciOmZhbHNlfSwiNTI5Ijp7Im51bWJlcnMiOls1MjldLCJ1c2VyX2ZhY2luZyI6ZmFsc2V9LCI1NTIiOnsibnVtYmVycyI6WzU1Ml0sInVzZXJfZmFjaW5nIjpmYWxzZX0sImRhc2hib2FyZCI6eyJuYW1lIjoiZGFzaGJvYXJkIiwibnVtYmVycyI6WzY2Nl19LCI2NjYiOnsibmFtZSI6ImRhc2hib2FyZCIsIm51bWJlcnMiOls2NjZdLCJ1c2VyX2ZhY2luZyI6ZmFsc2V9LCI2NjciOnsibnVtYmVycyI6WzY2N10sInVzZXJfZmFjaW5nIjpmYWxzZX0sIjc3MyI6eyJudW1iZXJzIjpbNzczXSwidXNlcl9mYWNpbmciOmZhbHNlfSwiNzc3Ijp7Im51bWJlcnMiOls3NzddLCJ1c2VyX2ZhY2luZyI6ZmFsc2V9LCI3OTQiOnsibnVtYmVycyI6Wzc5NF0sInVzZXJfZmFjaW5nIjpmYWxzZX0sIkNsaWVudCBSZXNwb25zaXZlbmVzcyI6eyJuYW1lIjoiQ2xpZW50IFJlc3BvbnNpdmVuZXNzIiwidXNlcl9mYWNpbmciOmZhbHNlLCJudW1iZXJzIjpbODA4XX0sIjgwOCI6eyJuYW1lIjoiQ2xpZW50IFJlc3BvbnNpdmVuZXNzIiwidXNlcl9mYWNpbmciOmZhbHNlLCJudW1iZXJzIjpbODA4XX0sIk1lc3NhZ2UgUGFuZSBTY3JvbGxpbmciOnsibmFtZSI6Ik1lc3NhZ2UgUGFuZSBTY3JvbGxpbmciLCJudW1iZXJzIjpbODg4XX0sIjg4OCI6eyJuYW1lIjoiTWVzc2FnZSBQYW5lIFNjcm9sbGluZyIsIm51bWJlcnMiOls4ODhdLCJ1c2VyX2ZhY2luZyI6dHJ1ZX0sIlVucmVhZCBiYW5uZXIgYW5kIGRpdmlkZXIiOnsibmFtZSI6IlVucmVhZCBiYW5uZXIgYW5kIGRpdmlkZXIiLCJudW1iZXJzIjpbOTk5XX0sIjk5OSI6eyJuYW1lIjoiVW5yZWFkIGJhbm5lciBhbmQgZGl2aWRlciIsIm51bWJlcnMiOls5OTldLCJ1c2VyX2ZhY2luZyI6dHJ1ZX0sIjEwMDAiOnsibnVtYmVycyI6WzEwMDBdLCJ1c2VyX2ZhY2luZyI6ZmFsc2V9LCJEdXBsaWNhdGUgYmFkZ2VzIChkZXNrdG9wIGFwcCBpY29ucykiOnsibmFtZSI6IkR1cGxpY2F0ZSBiYWRnZXMgKGRlc2t0b3AgYXBwIGljb25zKSIsIm51bWJlcnMiOlsxNzAxXX0sIjE3MDEiOnsibmFtZSI6IkR1cGxpY2F0ZSBiYWRnZXMgKGRlc2t0b3AgYXBwIGljb25zKSIsIm51bWJlcnMiOlsxNzAxXSwidXNlcl9mYWNpbmciOnRydWV9LCJNZW1iZXJzIjp7Im5hbWUiOiJNZW1iZXJzIiwibnVtYmVycyI6WzE5NzVdfSwiMTk3NSI6eyJuYW1lIjoiTWVtYmVycyIsIm51bWJlcnMiOlsxOTc1XSwidXNlcl9mYWNpbmciOnRydWV9LCJsYXp5IGxvYWRpbmciOnsibmFtZSI6ImxhenkgbG9hZGluZyIsIm51bWJlcnMiOlsxOTg5XX0sIjE5ODkiOnsibmFtZSI6ImxhenkgbG9hZGluZyIsIm51bWJlcnMiOlsxOTg5XSwidXNlcl9mYWNpbmciOnRydWV9LCJ0aGluX2NoYW5uZWxfbWVtYmVyc2hpcCI6eyJuYW1lIjoidGhpbl9jaGFubmVsX21lbWJlcnNoaXAiLCJudW1iZXJzIjpbMTk5MF19LCIxOTkwIjp7Im5hbWUiOiJ0aGluX2NoYW5uZWxfbWVtYmVyc2hpcCIsIm51bWJlcnMiOlsxOTkwXSwidXNlcl9mYWNpbmciOnRydWV9LCJzdGF0cyI6eyJuYW1lIjoic3RhdHMiLCJudW1iZXJzIjpbMTk5MV19LCIxOTkxIjp7Im5hbWUiOiJzdGF0cyIsIm51bWJlcnMiOlsxOTkxXSwidXNlcl9mYWNpbmciOnRydWV9LCJtcyI6eyJuYW1lIjoibXMiLCJudW1iZXJzIjpbMTk5Nl19LCIxOTk2Ijp7Im5hbWUiOiJtcyIsIm51bWJlcnMiOlsxOTk2XSwidXNlcl9mYWNpbmciOnRydWV9LCJzaGFyZWRfY2hhbm5lbHNfY29ubmVjdGlvbiI6eyJuYW1lIjoic2hhcmVkX2NoYW5uZWxzX2Nvbm5lY3Rpb24iLCJudW1iZXJzIjpbMTk5OV19LCIxOTk5Ijp7Im5hbWUiOiJzaGFyZWRfY2hhbm5lbHNfY29ubmVjdGlvbiIsIm51bWJlcnMiOlsxOTk5XSwidXNlcl9mYWNpbmciOmZhbHNlfSwiZG5kIjp7Im5hbWUiOiJkbmQiLCJudW1iZXJzIjpbMjAwMl19LCIyMDAyIjp7Im5hbWUiOiJkbmQiLCJudW1iZXJzIjpbMjAwMl0sInVzZXJfZmFjaW5nIjp0cnVlfSwiMjAwMyI6eyJudW1iZXJzIjpbMjAwM10sInVzZXJfZmFjaW5nIjpmYWxzZX0sIlRocmVhZHMiOnsibmFtZSI6IlRocmVhZHMiLCJudW1iZXJzIjpbMjAwNF19LCIyMDA0Ijp7Im5hbWUiOiJUaHJlYWRzIiwibnVtYmVycyI6WzIwMDRdLCJ1c2VyX2ZhY2luZyI6dHJ1ZX0sIjIwMDUiOnsibnVtYmVycyI6WzIwMDVdLCJ1c2VyX2ZhY2luZyI6ZmFsc2V9LCJSZWFjdGlvbnMiOnsibmFtZSI6IlJlYWN0aW9ucyIsIm51bWJlcnMiOlsyMDA2XX0sIjIwMDYiOnsibmFtZSI6IlJlYWN0aW9ucyIsIm51bWJlcnMiOlsyMDA2XSwidXNlcl9mYWNpbmciOnRydWV9LCJUU1NTQi5mb2N1c1RhYkFuZFN3aXRjaFRvQ2hhbm5lbCI6eyJuYW1lIjoiVFNTU0IuZm9jdXNUYWJBbmRTd2l0Y2hUb0NoYW5uZWwiLCJudW1iZXJzIjpbMjAwN119LCIyMDA3Ijp7Im5hbWUiOiJUU1NTQi5mb2N1c1RhYkFuZFN3aXRjaFRvQ2hhbm5lbCIsIm51bWJlcnMiOlsyMDA3XSwidXNlcl9mYWNpbmciOmZhbHNlfSwiUHJlc2VuY2UgRGV0ZWN0aW9uIjp7Im5hbWUiOiJQcmVzZW5jZSBEZXRlY3Rpb24iLCJudW1iZXJzIjpbMjAxN119LCIyMDE3Ijp7Im5hbWUiOiJQcmVzZW5jZSBEZXRlY3Rpb24iLCJudW1iZXJzIjpbMjAxN10sInVzZXJfZmFjaW5nIjp0cnVlfSwibWNfc2licyI6eyJuYW1lIjoibWNfc2licyIsIm51bWJlcnMiOls5OTk5XX0sIjk5OTkiOnsibmFtZSI6Im1jX3NpYnMiLCJudW1iZXJzIjpbOTk5OV0sInVzZXJfZmFjaW5nIjpmYWxzZX0sIk1lbWJlciBzZWFyY2hpbmciOnsibmFtZSI6Ik1lbWJlciBzZWFyY2hpbmciLCJudW1iZXJzIjpbOTAyMTFdfSwiOTAyMTEiOnsibmFtZSI6Ik1lbWJlciBzZWFyY2hpbmciLCJudW1iZXJzIjpbOTAyMTFdLCJ1c2VyX2ZhY2luZyI6dHJ1ZX0sIjk4NzY1Ijp7Im51bWJlcnMiOls5ODc2NV0sInVzZXJfZmFjaW5nIjpmYWxzZX0sIjg2NzUzMDkiOnsibnVtYmVycyI6Wzg2NzUzMDldLCJ1c2VyX2ZhY2luZyI6ZmFsc2V9fX07Cglib290X2RhdGEuc3RhcnRfbXMgPSBEYXRlLm5vdygpOwo8L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2Euc2xhY2stZWRnZS5jb20vYnYxLTYtMWIyNWM0NS9yb2xsdXAtY29yZV9yZXF1aXJlZF9saWJzLjRhODE2YThlZDM0NDY3MmY0NDM2Lm1pbi5qcyIgb25sb2FkPSJ3aW5kb3cuX2NkbiA/IF9jZG4ub2sodGhpcywgYXJndW1lbnRzKSA6IG51bGwiIG9uZXJyb3I9IndpbmRvdy5fY2RuID8gX2Nkbi5mYWlsZWQodGhpcywgYXJndW1lbnRzKSA6IG51bGwiIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiPjwvc2NyaXB0PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vYS5zbGFjay1lZGdlLmNvbS9idjEtNi0xYjI1YzQ1L21vZGVybi52ZW5kb3IuNjJjNWQwNDJhODg2YzJlYzFlNjYubWluLmpzIiBvbmxvYWQ9IndpbmRvdy5fY2RuID8gX2Nkbi5vayh0aGlzLCBhcmd1bWVudHMpIDogbnVsbCIgb25lcnJvcj0id2luZG93Ll9jZG4gPyBfY2RuLmZhaWxlZCh0aGlzLCBhcmd1bWVudHMpIDogbnVsbCIgY3Jvc3NvcmlnaW49ImFub255bW91cyI+PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly9hLnNsYWNrLWVkZ2UuY29tL2J2MS02LTFiMjVjNDUvYXBwbGljYXRpb24uNDk5ZDI5ZjI3ODc2NDJhZTU5ZDYubWluLmpzIiBvbmxvYWQ9IndpbmRvdy5fY2RuID8gX2Nkbi5vayh0aGlzLCBhcmd1bWVudHMpIDogbnVsbCIgb25lcnJvcj0id2luZG93Ll9jZG4gPyBfY2RuLmZhaWxlZCh0aGlzLCBhcmd1bWVudHMpIDogbnVsbCIgY3Jvc3NvcmlnaW49ImFub255bW91cyI+PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly9hLnNsYWNrLWVkZ2UuY29tL2J2MS02LTFiMjVjNDUvcm9sbHVwLWNvcmVfcmVxdWlyZWRfdHMuYTk3MDY2M2E2NmUyNjM2NTliYTIubWluLmpzIiBvbmxvYWQ9IndpbmRvdy5fY2RuID8gX2Nkbi5vayh0aGlzLCBhcmd1bWVudHMpIDogbnVsbCIgb25lcnJvcj0id2luZG93Ll9jZG4gPyBfY2RuLmZhaWxlZCh0aGlzLCBhcmd1bWVudHMpIDogbnVsbCIgY3Jvc3NvcmlnaW49ImFub255bW91cyI+PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly9hLnNsYWNrLWVkZ2UuY29tL2J2MS02LTFiMjVjNDUvVFMud2ViLmJkYzk2YzJkN2FhZjRhZGRhYjNjLm1pbi5qcyIgb25sb2FkPSJ3aW5kb3cuX2NkbiA/IF9jZG4ub2sodGhpcywgYXJndW1lbnRzKSA6IG51bGwiIG9uZXJyb3I9IndpbmRvdy5fY2RuID8gX2Nkbi5mYWlsZWQodGhpcywgYXJndW1lbnRzKSA6IG51bGwiIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiPjwvc2NyaXB0PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vYS5zbGFjay1lZGdlLmNvbS9idjEtNi0xYjI1YzQ1L3NpZ25hbHMuYjRhODIyYjE5Y2VhN2U5ZWE4NjQubWluLmpzIiBvbmxvYWQ9IndpbmRvdy5fY2RuID8gX2Nkbi5vayh0aGlzLCBhcmd1bWVudHMpIDogbnVsbCIgb25lcnJvcj0id2luZG93Ll9jZG4gPyBfY2RuLmZhaWxlZCh0aGlzLCBhcmd1bWVudHMpIDogbnVsbCIgY3Jvc3NvcmlnaW49ImFub255bW91cyI+PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly9hLnNsYWNrLWVkZ2UuY29tL2J2MS02LTFiMjVjNDUvcm9sbHVwLWNvcmVfd2ViLjE4OWNmMjk2NDc0NWJhMTY0NDFhLm1pbi5qcyIgb25sb2FkPSJ3aW5kb3cuX2NkbiA/IF9jZG4ub2sodGhpcywgYXJndW1lbnRzKSA6IG51bGwiIG9uZXJyb3I9IndpbmRvdy5fY2RuID8gX2Nkbi5mYWlsZWQodGhpcywgYXJndW1lbnRzKSA6IG51bGwiIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiPjwvc2NyaXB0PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vYS5zbGFjay1lZGdlLmNvbS9idjEtNi0xYjI1YzQ1L3JvbGx1cC1zZWNvbmRhcnlfYV9yZXF1aXJlZC4yZjFjYjFhM2JjNTVhOWEzMjA1OC5taW4uanMiIG9ubG9hZD0id2luZG93Ll9jZG4gPyBfY2RuLm9rKHRoaXMsIGFyZ3VtZW50cykgOiBudWxsIiBvbmVycm9yPSJ3aW5kb3cuX2NkbiA/IF9jZG4uZmFpbGVkKHRoaXMsIGFyZ3VtZW50cykgOiBudWxsIiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIj48L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2Euc2xhY2stZWRnZS5jb20vYnYxLTYtMWIyNWM0NS9yb2xsdXAtc2Vjb25kYXJ5X2JfcmVxdWlyZWQuNzY1OTVkZmE3OThhMjIzYmNjNzQubWluLmpzIiBvbmxvYWQ9IndpbmRvdy5fY2RuID8gX2Nkbi5vayh0aGlzLCBhcmd1bWVudHMpIDogbnVsbCIgb25lcnJvcj0id2luZG93Ll9jZG4gPyBfY2RuLmZhaWxlZCh0aGlzLCBhcmd1bWVudHMpIDogbnVsbCIgY3Jvc3NvcmlnaW49ImFub255bW91cyI+PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPlRTLmJvb3QoYm9vdF9kYXRhKTs8L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2Euc2xhY2stZWRnZS5jb20vYnYxLTYtMWIyNWM0NS9UUy53ZWIuXzQwNC41N2FiZjA4NmFkZDI5NWQwZTY3Zi5taW4uanMiIG9ubG9hZD0id2luZG93Ll9jZG4gPyBfY2RuLm9rKHRoaXMsIGFyZ3VtZW50cykgOiBudWxsIiBvbmVycm9yPSJ3aW5kb3cuX2NkbiA/IF9jZG4uZmFpbGVkKHRoaXMsIGFyZ3VtZW50cykgOiBudWxsIiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIj48L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2Euc2xhY2stZWRnZS5jb20vYnYxLTYtMWIyNWM0NS9zdGlja3lfbmF2LmE0MGNlNWU0MjVjZmQ0MDY5MzBjLm1pbi5qcyIgb25sb2FkPSJ3aW5kb3cuX2NkbiA/IF9jZG4ub2sodGhpcywgYXJndW1lbnRzKSA6IG51bGwiIG9uZXJyb3I9IndpbmRvdy5fY2RuID8gX2Nkbi5mYWlsZWQodGhpcywgYXJndW1lbnRzKSA6IG51bGwiIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiPjwvc2NyaXB0PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vYS5zbGFjay1lZGdlLmNvbS9idjEtNi0xYjI1YzQ1L2Zvb3Rlci5kMGMzZDI5MWNhYzdkZTFlZTczMS5taW4uanMiIG9ubG9hZD0id2luZG93Ll9jZG4gPyBfY2RuLm9rKHRoaXMsIGFyZ3VtZW50cykgOiBudWxsIiBvbmVycm9yPSJ3aW5kb3cuX2NkbiA/IF9jZG4uZmFpbGVkKHRoaXMsIGFyZ3VtZW50cykgOiBudWxsIiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIj48L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ym9vdF9kYXRhLm5vX2xvZ2luID0gdHJ1ZTs8L3NjcmlwdD48c3R5bGU+LmNvbG9yXzlmNjllNzpub3QoLm51Yykge2NvbG9yOiM5RjY5RTc7fS5jb2xvcl80YmJlMmU6bm90KC5udWMpIHtjb2xvcjojNEJCRTJFO30uY29sb3JfZTczOTJkOm5vdCgubnVjKSB7Y29sb3I6I0U3MzkyRDt9LmNvbG9yXzNjOTg5Zjpub3QoLm51Yykge2NvbG9yOiMzQzk4OUY7fS5jb2xvcl82NzRiMWI6bm90KC5udWMpIHtjb2xvcjojNjc0QjFCO30uY29sb3JfZTk2Njk5Om5vdCgubnVjKSB7Y29sb3I6I0U5NjY5OTt9LmNvbG9yX2UwYTcyOTpub3QoLm51Yykge2NvbG9yOiNFMEE3Mjk7fS5jb2xvcl82ODRiNmM6bm90KC5udWMpIHtjb2xvcjojNjg0QjZDO30uY29sb3JfNWI4OWQ1Om5vdCgubnVjKSB7Y29sb3I6IzVCODlENTt9LmNvbG9yXzJiNjgzNjpub3QoLm51Yykge2NvbG9yOiMyQjY4MzY7fS5jb2xvcl85OWE5NDk6bm90KC5udWMpIHtjb2xvcjojOTlBOTQ5O30uY29sb3JfZGYzZGMwOm5vdCgubnVjKSB7Y29sb3I6I0RGM0RDMDt9LmNvbG9yXzRjYzA5MTpub3QoLm51Yykge2NvbG9yOiM0Q0MwOTE7fS5jb2xvcl85YjNiNDU6bm90KC5udWMpIHtjb2xvcjojOUIzQjQ1O30uY29sb3JfZDU4MjQ3Om5vdCgubnVjKSB7Y29sb3I6I0Q1ODI0Nzt9LmNvbG9yX2JiODZiNzpub3QoLm51Yykge2NvbG9yOiNCQjg2Qjc7fS5jb2xvcl81YTQ1OTI6bm90KC5udWMpIHtjb2xvcjojNUE0NTkyO30uY29sb3JfZGIzMTUwOm5vdCgubnVjKSB7Y29sb3I6I0RCMzE1MDt9LmNvbG9yXzIzNWU1Yjpub3QoLm51Yykge2NvbG9yOiMyMzVFNUI7fS5jb2xvcl85ZTM5OTc6bm90KC5udWMpIHtjb2xvcjojOUUzOTk3O30uY29sb3JfNTNiNzU5Om5vdCgubnVjKSB7Y29sb3I6IzUzQjc1OTt9LmNvbG9yX2MzODZkZjpub3QoLm51Yykge2NvbG9yOiNDMzg2REY7fS5jb2xvcl8zODVhODY6bm90KC5udWMpIHtjb2xvcjojMzg1QTg2O30uY29sb3JfYTYzMDI0Om5vdCgubnVjKSB7Y29sb3I6I0E2MzAyNDt9LmNvbG9yXzU4NzBkZDpub3QoLm51Yykge2NvbG9yOiM1ODcwREQ7fS5jb2xvcl9lYTI5Nzc6bm90KC5udWMpIHtjb2xvcjojRUEyOTc3O30uY29sb3JfNTBhMGNmOm5vdCgubnVjKSB7Y29sb3I6IzUwQTBDRjt9LmNvbG9yX2Q1NWFlZjpub3QoLm51Yykge2NvbG9yOiNENTVBRUY7fS5jb2xvcl9kMTcwN2Q6bm90KC5udWMpIHtjb2xvcjojRDE3MDdEO30uY29sb3JfNDM3NjFiOm5vdCgubnVjKSB7Y29sb3I6IzQzNzYxQjt9LmNvbG9yX2UwNmI1Njpub3QoLm51Yykge2NvbG9yOiNFMDZCNTY7fS5jb2xvcl84ZjRhMmI6bm90KC5udWMpIHtjb2xvcjojOEY0QTJCO30uY29sb3JfOTAyZDU5Om5vdCgubnVjKSB7Y29sb3I6IzkwMkQ1OTt9LmNvbG9yX2RlNWYyNDpub3QoLm51Yykge2NvbG9yOiNERTVGMjQ7fS5jb2xvcl9hMmE1ZGM6bm90KC5udWMpIHtjb2xvcjojQTJBNURDO30uY29sb3JfODI3MzI3Om5vdCgubnVjKSB7Y29sb3I6IzgyNzMyNzt9LmNvbG9yXzNjOGM2OTpub3QoLm51Yykge2NvbG9yOiMzQzhDNjk7fS5jb2xvcl84ZDRiODQ6bm90KC5udWMpIHtjb2xvcjojOEQ0Qjg0O30uY29sb3JfODRiMjJmOm5vdCgubnVjKSB7Y29sb3I6Izg0QjIyRjt9LmNvbG9yXzRlYzBkNjpub3QoLm51Yykge2NvbG9yOiM0RUMwRDY7fS5jb2xvcl9lMjNmOTk6bm90KC5udWMpIHtjb2xvcjojRTIzRjk5O30uY29sb3JfZTQ3NWRmOm5vdCgubnVjKSB7Y29sb3I6I0U0NzVERjt9LmNvbG9yXzYxOWE0Zjpub3QoLm51Yykge2NvbG9yOiM2MTlBNEY7fS5jb2xvcl9hNzJmNzk6bm90KC5udWMpIHtjb2xvcjojQTcyRjc5O30uY29sb3JfN2Q0MTRjOm5vdCgubnVjKSB7Y29sb3I6IzdENDE0Qzt9LmNvbG9yX2FiYTcyNzpub3QoLm51Yykge2NvbG9yOiNBQkE3Mjc7fS5jb2xvcl85NjVkMWI6bm90KC5udWMpIHtjb2xvcjojOTY1RDFCO30uY29sb3JfNGQ1ZTI2Om5vdCgubnVjKSB7Y29sb3I6IzRENUUyNjt9LmNvbG9yX2RkODUyNzpub3QoLm51Yykge2NvbG9yOiNERDg1Mjc7fS5jb2xvcl9iZDkzMzY6bm90KC5udWMpIHtjb2xvcjojQkQ5MzM2O30uY29sb3JfZTg1ZDcyOm5vdCgubnVjKSB7Y29sb3I6I0U4NUQ3Mjt9LmNvbG9yX2RjN2RiYjpub3QoLm51Yykge2NvbG9yOiNEQzdEQkI7fS5jb2xvcl9iYzM2NjM6bm90KC5udWMpIHtjb2xvcjojQkMzNjYzO30uY29sb3JfOWQ4ZWVlOm5vdCgubnVjKSB7Y29sb3I6IzlEOEVFRTt9LmNvbG9yXzg0NjliYzpub3QoLm51Yykge2NvbG9yOiM4NDY5QkM7fS5jb2xvcl83Mzc2OWQ6bm90KC5udWMpIHtjb2xvcjojNzM3NjlEO30uY29sb3JfYjE0Y2JjOm5vdCgubnVjKSB7Y29sb3I6I0IxNENCQzt9PC9zdHlsZT4KCjwhLS0gc2xhY2std3d3LWhodm0tbWFpbi1pYWQtdjd2Ny8gMjAxOS0wOS0xMSAxNDowNDo1NC8gdjRmZWEwYzMzM2NkMzQ5YzdhM2VkMzUxZTRiZjkxMjE0MDRlZTgwMDMvIEI6SCAtLT4KCjwvYm9keT48L2h0bWw+ + http_version: + recorded_at: Wed, 11 Sep 2019 21:04:54 GMT +- request: + method: post + uri: https://slack.com/api/chat.postMessage + body: + encoding: UTF-8 + string: token=&text=Hey%20I%20can%20post%20messages%21&channel=general + headers: + Content-Type: + - application/x-www-form-urlencoded + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Transfer-Encoding: + - chunked + Connection: + - keep-alive + Date: + - Wed, 11 Sep 2019 21:08:39 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 6f4ef161-4a7b-48ac-9644-b25d74a6a7ee + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - chat:write:bot + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-s1xo + X-Cache: + - Miss from cloudfront + Via: + - 1.1 72f0ac9702110cafbb646d71a297e2c7.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19 + X-Amz-Cf-Id: + - WTKSvglfestXxP20SJCbAMpsDkzy3RM0CKc07jftXXF91z1MqtGLuQ== + body: + encoding: UTF-8 + string: '{"ok":true,"channel":"CN8FME7AS","ts":"1568236119.000100","message":{"type":"message","subtype":"bot_message","text":"Hey + I can post messages!","ts":"1568236119.000100","username":"Leaves - Mariya + - API Project","bot_id":"BMW5VR8TV"}}' + http_version: + recorded_at: Wed, 11 Sep 2019 21:08:39 GMT +- request: + method: post + uri: https://slack.com/api/chat.postMessage + body: + encoding: UTF-8 + string: token=&text=This%20post%20should%20not%20work&channel=invalid-channel + headers: + Content-Type: + - application/x-www-form-urlencoded + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Transfer-Encoding: + - chunked + Connection: + - keep-alive + Date: + - Wed, 11 Sep 2019 21:09:20 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - aa379eaa-c583-4fd2-a513-f5d4a2b36adc + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - chat:write:bot + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-uw19 + X-Cache: + - Miss from cloudfront + Via: + - 1.1 10b37ec1ede3e33f11dd42b87558cd1f.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C1 + X-Amz-Cf-Id: + - KN6nutzAn5oQ9Ir0Yefg_5iZM0hZSaf8yndn22JNrYTmcFa48zAzLQ== + body: + encoding: UTF-8 + string: '{"ok":false,"error":"channel_not_found"}' + http_version: + recorded_at: Wed, 11 Sep 2019 21:09:20 GMT +recorded_with: VCR 5.0.0 diff --git a/test/recipient_test.rb b/test/recipient_test.rb index 51df35da..e7f676a4 100644 --- a/test/recipient_test.rb +++ b/test/recipient_test.rb @@ -1,15 +1,22 @@ -# require 'test_helper' +require_relative 'test_helper' -# describe "Recipient Class" do -# describe "New instance of Slack::Recipient" do -# before do -# VCR.use_cassette("self.get") do -# responseself.get() -# response = HTTParty.get(url, query: params) -# end -# end -# it "calls the Slack API to generate a list" do -# expect() -# end -# end -# end \ No newline at end of file +describe Slack do + describe "Recipient class" do + it "can send a valid message" do + VCR.use_cassette("slack-posts") do + response = Slack::Recipient.send_msg("Hey I can post messages!", "general") + expect(response).must_equal true + end + end + end + + it "will raise an error when given an invalid channel" do + VCR.use_cassette("slack-posts") do + exception = expect { + Slack::Recipient.send_msg("This post should not work", "invalid-channel") + }.must_raise Slack::SlackApiError + + expect(exception.message).must_equal 'Error when posting This post should not work to invalid-channel, error: channel_not_found' + end + end +end \ No newline at end of file diff --git a/test/workspace_test.rb b/test/workspace_test.rb new file mode 100644 index 00000000..e69de29b From 1093fe45f71d24e49b1e1a24ef7984a0bd553238 Mon Sep 17 00:00:00 2001 From: Mariya Burrows Date: Wed, 11 Sep 2019 14:25:13 -0700 Subject: [PATCH 07/18] added slack.rb skeleton --- lib/slack.rb | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/lib/slack.rb b/lib/slack.rb index 960cf2f7..52dd2549 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -1,11 +1,35 @@ #!/usr/bin/env ruby def main - puts "Welcome to the Ada Slack CLI!" - - # TODO project - - puts "Thank you for using the Ada Slack CLI" + until user_choice == "quit" + puts "Welcome to the Ada Slack CLI!" + + # TODO project + puts "What would you like to do?" + puts "1) List user\n2)List channel" + user_choice = gets.chomp + + if user_choice == "1" + puts "Do you want to:" + puts "1) See details\n 2) Send a message to the user" + user_choice = gets.chomp + if user_choice == "2" + print "Write your message:> " + user_choice = gets.chomp + end + elsif user_choice == "2" + puts "Do you want to:" + puts "1) See details\n 2) Send a message to the channel" + user_choice = gets.chomp + if user_choice == "2" + print "Write your message:> " + user_choice = gets.chomp + end + else + end + + puts "Thank you for using the Ada Slack CLI" + end end main if __FILE__ == $PROGRAM_NAME \ No newline at end of file From 18095fd6a6e3419bf4f26ea496dbf3450a9010ac Mon Sep 17 00:00:00 2001 From: Mariya Burrows Date: Wed, 11 Sep 2019 20:39:14 -0700 Subject: [PATCH 08/18] updated workspace.rb & corresponding tests; added slack.rb. Currently working on methods for list vs. details & how that interacts with slack.rb --- lib/slack.rb | 13 ++++- lib/slack_env_test.rb | 21 +++++--- lib/user.rb | 38 +++++++++---- lib/workspace.rb | 1 + test/cassettes/user_details.yml | 95 +++++++++++++++++++++++++++++++++ test/user_test.rb | 34 ++++++++++-- test/workspace_test.rb | 10 ++++ 7 files changed, 190 insertions(+), 22 deletions(-) create mode 100644 test/cassettes/user_details.yml diff --git a/lib/slack.rb b/lib/slack.rb index 52dd2549..eb2cc838 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -6,12 +6,23 @@ def main # TODO project puts "What would you like to do?" - puts "1) List user\n2)List channel" + puts "1) List users\n2)List channels" user_choice = gets.chomp if user_choice == "1" + + user.list + # call upon list of users from user.list + #provide this numerical list to the user + # they'll select from the list - workspace.select_user + + + puts "Do you want to:" puts "1) See details\n 2) Send a message to the user" + + # Based on user input, either call user.details or workspace.send_message + user_choice = gets.chomp if user_choice == "2" print "Write your message:> " diff --git a/lib/slack_env_test.rb b/lib/slack_env_test.rb index 245caa8b..8d02ab18 100644 --- a/lib/slack_env_test.rb +++ b/lib/slack_env_test.rb @@ -1,7 +1,9 @@ -require 'httparty' + require 'dotenv' -require 'awesome_print' Dotenv.load +require 'awesome_print' +require 'httparty' +require_relative 'user' url = "https://slack.com/api/users.list" @@ -10,17 +12,22 @@ } user_objects = HTTParty.get(url, query: query_parameters) +user = Slack::User.new("UMTG0S5D0", "samantha.collares", "Samantha Collares") + +user_list = user.list +p user_list.length # user_objects["members"].each do |member| # p "The id is: #{member["id"]}" # p "The name is: #{member["name"]}" # end -p user_objects -p user_objects.class -p user_objects["members"][1]["id"] -p user_objects["members"][1]["real_name"] -p user_objects["members"][1]["name"] +# p user_objects +# p user_objects.class +# p user_objects["members"][1]["id"] +# p user_objects["members"][1]["real_name"] +# p user_objects["members"][1]["name"] +# p # user_list = [] # user_objects["members"].each do |user| diff --git a/lib/user.rb b/lib/user.rb index 0ced8223..dcc67530 100644 --- a/lib/user.rb +++ b/lib/user.rb @@ -1,5 +1,6 @@ require 'dotenv' require_relative 'recipient' +require_relative 'workspace' module Slack class User < Recipient @@ -8,6 +9,7 @@ class User < Recipient def initialize(slack_id, name, real_name) super(slack_id, name) @real_name = real_name + @users = [] end def list @@ -18,25 +20,39 @@ def list user_objects = Recipient.get(url, query_parameters) user_list = [] - user_objects["members"].each do |name| - user_list << name["real_name"] + @users = [] + user_objects["members"].each do |member| + user_basic = {} + @users << member + user_basic["slack_id"] = member["slack_id"] + user_basic["name"] = member["name"] + user_basic["real_name"] = member["real_name"] end return user_list end def details - #depends on getting the select object? - #? - # id - # user name - # real name - # location? - # email + user_details = {} + identified_user = @users.find do |user| + user == selected_user + end + + user_details["slack_id"] = identified_user["slack_id"] + user_details["name"] = identified_user["name"] + user_details["real_name"] =i dentified_user["real_name"] + end - def quit - end + #depends on getting the select object? + #? + # id + # user name + # real name end + + def quit + end + end \ No newline at end of file diff --git a/lib/workspace.rb b/lib/workspace.rb index 49d615bf..302a6457 100644 --- a/lib/workspace.rb +++ b/lib/workspace.rb @@ -13,6 +13,7 @@ def initialize(users, channels, selected) end def select_user(user_name: nil, slack_id: nil) + #returns the user object that goes with passed in user_name? # error when no user exists diff --git a/test/cassettes/user_details.yml b/test/cassettes/user_details.yml new file mode 100644 index 00000000..19dd9abf --- /dev/null +++ b/test/cassettes/user_details.yml @@ -0,0 +1,95 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/users.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '1604' + Connection: + - keep-alive + Date: + - Wed, 11 Sep 2019 22:48:33 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 34508f83-d7a2-459b-a799-6add05351595 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - users:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-fdpw + X-Cache: + - Miss from cloudfront + Via: + - 1.1 174acb08636ac7d9e9a778bbf1bcbc53.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C1 + X-Amz-Cf-Id: + - pDQNBR4K5smSou0NaY34tQSCGOcJDVg5tab6r36FbBLqZswvWt70dQ== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN69AJ2SU","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Slackbot","real_name_normalized":"Slackbot","display_name":"Slackbot","display_name_normalized":"Slackbot","fields":null,"status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"sv41d8cd98f0","always_active":true,"first_name":"slackbot","last_name":"","image_24":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_24.png","image_32":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_32.png","image_48":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_48.png","image_72":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_72.png","image_192":"https:\/\/a.slack-edge.com\/80588\/marketing\/img\/avatars\/slackbot\/avatar-slackbot.png","image_512":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":0},{"id":"UMTG0S5D0","team_id":"TN69AJ2SU","name":"samantha.collares","deleted":false,"color":"674b1b","real_name":"Samantha + Collares","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Samantha + Collares","real_name_normalized":"Samantha Collares","display_name":"Samantha + Collares","display_name_normalized":"Samantha Collares","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge444d412eed","image_24":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071698},{"id":"UMUR43REX","team_id":"TN69AJ2SU","name":"sabrina","deleted":false,"color":"e7392d","real_name":"Sabrina + Lowney","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Sabrina + Lowney","real_name_normalized":"Sabrina Lowney","display_name":"Sabrina Lowney","display_name_normalized":"Sabrina + Lowney","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g3826fd588f7","image_24":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071592},{"id":"UMZSUVBED","team_id":"TN69AJ2SU","name":"mariya.burrows","deleted":false,"color":"e96699","real_name":"Mariya + Burrows","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Mariya + Burrows","real_name_normalized":"Mariya Burrows","display_name":"Mariya Burrows","display_name_normalized":"Mariya + Burrows","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g742995f6521","image_24":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071452,"has_2fa":false},{"id":"UN5R273J8","team_id":"TN69AJ2SU","name":"dtingg","deleted":false,"color":"9f69e7","real_name":"Dianna + Tingg","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Dianna + Tingg","real_name_normalized":"Dianna Tingg","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g18e16502755","first_name":"Dianna","last_name":"Tingg","image_24":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":true,"is_owner":true,"is_primary_owner":true,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071477},{"id":"UN5R3N6P6","team_id":"TN69AJ2SU","name":"juliakingreyworks","deleted":false,"color":"3c989f","real_name":"Julia + K","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Julia + K","real_name_normalized":"Julia K","display_name":"Julia K","display_name_normalized":"Julia + K","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g8ae03401380","image_24":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071668},{"id":"UN5R3NYUU","team_id":"TN69AJ2SU","name":"morganlschuler","deleted":false,"color":"e0a729","real_name":"Morgan + Schuler","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Morgan + Schuler","real_name_normalized":"Morgan Schuler","display_name":"Morgan Schuler","display_name_normalized":"Morgan + Schuler","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gc6d02aa49cf","image_24":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071410},{"id":"UN69C37BJ","team_id":"TN69AJ2SU","name":"tiffanycee123","deleted":false,"color":"4bbe2e","real_name":"Tiffany + Chio","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Tiffany + Chio","real_name_normalized":"Tiffany Chio","display_name":"Tiffany Chio","display_name_normalized":"Tiffany + Chio","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge49485fcc1e","image_24":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071504}],"cache_ts":1568242113,"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Wed, 11 Sep 2019 22:48:33 GMT +recorded_with: VCR 5.0.0 diff --git a/test/user_test.rb b/test/user_test.rb index f93e8e52..4841086d 100644 --- a/test/user_test.rb +++ b/test/user_test.rb @@ -12,13 +12,41 @@ it "is of the class User" do expect(@user.class).must_equal (Slack::User) end + end + + describe "list" do + before do + VCR.use_cassette("lists_users") do + @user = Slack::User.new("UMTG0S5D0", "samantha.collares", "Samantha Collares") + @user_test_list = @user.list + @first_user = @user_test_list[1] + end + end it "lists the users" do - expect(@user_test_list).must_equal ["Slackbot", "Samantha Collares", "Sabrina Lowney", "Mariya Burrows", "Dianna Tingg", "Julia K", "Morgan Schuler", "Tiffany Chio"] + expect(@user_test_list.length).must_equal 8 + expect(@first_user).must_be_a_kind_of Hash + expect(@first_user)["slack_id"].must_equal "UMTG0S5D0" + expect(@first_user)["name"].must_equal "samantha.collares" + expect(@first_user)["real_name"].must_equal "Samantha Collares" + end + end + + describe "details" do + before do + VCR.use_cassette("user_details") do + @user = Slack::User.new("UMTG0S5D0", "samantha.collares", "Samantha Collares") + @user_test_list = @user.list + @first_user = @user_test_list[1] + end + end + + it "provides details" do + expect(@user.details).must_equal ({"slack_id"=> "UMTG0S5D0", "name"=> "samantha.collares", "real_name"=> "Samantha Collares" }) end # it "provides details" do # expect(@user_test_list.details).must_equal # end - end -end \ No newline at end of file + end # desscribe the class end +end diff --git a/test/workspace_test.rb b/test/workspace_test.rb index e69de29b..c43b35d6 100644 --- a/test/workspace_test.rb +++ b/test/workspace_test.rb @@ -0,0 +1,10 @@ +require_relative 'test_helper' + +describe "Workspace class" do + describe "New instance of Slack::Workspace" do + before do + VCR.cassette() do + end + end + end +end \ No newline at end of file From fc33e75b621984c7d3a4d1985491f4e12912243a Mon Sep 17 00:00:00 2001 From: Mariya Burrows Date: Wed, 11 Sep 2019 21:19:48 -0700 Subject: [PATCH 09/18] fixed the bug in user.rb --- lib/user.rb | 3 ++- test/user_test.rb | 10 ++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/lib/user.rb b/lib/user.rb index dcc67530..9817bdab 100644 --- a/lib/user.rb +++ b/lib/user.rb @@ -24,9 +24,10 @@ def list user_objects["members"].each do |member| user_basic = {} @users << member - user_basic["slack_id"] = member["slack_id"] + user_basic["slack_id"] = member["id"] user_basic["name"] = member["name"] user_basic["real_name"] = member["real_name"] + user_list << user_basic end return user_list end diff --git a/test/user_test.rb b/test/user_test.rb index 4841086d..272f28da 100644 --- a/test/user_test.rb +++ b/test/user_test.rb @@ -1,4 +1,5 @@ require_relative 'test_helper' +#equire 'pry' describe "User Class" do describe "New instance of Slack::User" do @@ -20,15 +21,16 @@ @user = Slack::User.new("UMTG0S5D0", "samantha.collares", "Samantha Collares") @user_test_list = @user.list @first_user = @user_test_list[1] + #binding.pry end end it "lists the users" do expect(@user_test_list.length).must_equal 8 - expect(@first_user).must_be_a_kind_of Hash - expect(@first_user)["slack_id"].must_equal "UMTG0S5D0" - expect(@first_user)["name"].must_equal "samantha.collares" - expect(@first_user)["real_name"].must_equal "Samantha Collares" + expect(@first_user).must_be_kind_of Hash + expect(@first_user["slack_id"]).must_equal "UMTG0S5D0" + expect(@first_user["name"]).must_equal "samantha.collares" + expect(@first_user["real_name"]).must_equal "Samantha Collares" end end From 84dc85ed5325d3b074aef4717cd450522728d86a Mon Sep 17 00:00:00 2001 From: Mariya Burrows Date: Thu, 12 Sep 2019 15:44:38 -0700 Subject: [PATCH 10/18] updated self.list method in user class and updated user class tests --- lib/recipient.rb | 3 +- lib/slack.rb | 8 +-- lib/user.rb | 19 ++---- lib/workspace.rb | 2 +- mariya_slack_tryout.rb | 44 +++++++++++++ test/cassettes/lists_channels.yml | 23 ++++--- test/cassettes/lists_users.yml | 16 ++--- test/cassettes/slack-posts.yml | 101 ++++++------------------------ test/cassettes/user_details.yml | 18 +++--- test/user_test.rb | 81 +++++++++++++----------- 10 files changed, 150 insertions(+), 165 deletions(-) create mode 100644 mariya_slack_tryout.rb diff --git a/lib/recipient.rb b/lib/recipient.rb index ed9a341a..5b31380d 100644 --- a/lib/recipient.rb +++ b/lib/recipient.rb @@ -1,3 +1,4 @@ +require 'httparty' module Slack class SlackApiError < StandardError; end @@ -40,7 +41,7 @@ def details end def self.get(url, params) - response = HTTParty.get(url, query: params) + return HTTParty.get(url, query: params) end def self.list diff --git a/lib/slack.rb b/lib/slack.rb index eb2cc838..53748159 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -11,12 +11,10 @@ def main if user_choice == "1" - user.list - # call upon list of users from user.list + puts user.list + #call upon list of users from user.list #provide this numerical list to the user - # they'll select from the list - workspace.select_user - - + #they'll select from the list - workspace.select_user puts "Do you want to:" puts "1) See details\n 2) Send a message to the user" diff --git a/lib/user.rb b/lib/user.rb index 9817bdab..efd56cbb 100644 --- a/lib/user.rb +++ b/lib/user.rb @@ -1,6 +1,5 @@ require 'dotenv' require_relative 'recipient' -require_relative 'workspace' module Slack class User < Recipient @@ -9,10 +8,10 @@ class User < Recipient def initialize(slack_id, name, real_name) super(slack_id, name) @real_name = real_name - @users = [] + end - def list + def self.list url = "https://slack.com/api/users.list" query_parameters = { token: ENV["SLACK_TOKEN"] @@ -20,20 +19,16 @@ def list user_objects = Recipient.get(url, query_parameters) user_list = [] - @users = [] user_objects["members"].each do |member| - user_basic = {} - @users << member - user_basic["slack_id"] = member["id"] - user_basic["name"] = member["name"] - user_basic["real_name"] = member["real_name"] + # @users << member + user_basic = self.new(member["slack_id"], member["name"], member["real_name"]) user_list << user_basic end return user_list end - def details + def details(user) user_details = {} identified_user = @users.find do |user| user == selected_user @@ -42,7 +37,6 @@ def details user_details["slack_id"] = identified_user["slack_id"] user_details["name"] = identified_user["name"] user_details["real_name"] =i dentified_user["real_name"] - end #depends on getting the select object? @@ -53,7 +47,4 @@ def details end - def quit - end - end \ No newline at end of file diff --git a/lib/workspace.rb b/lib/workspace.rb index 302a6457..a61aa90b 100644 --- a/lib/workspace.rb +++ b/lib/workspace.rb @@ -7,7 +7,7 @@ class Workspace attr_reader :users, :channels, :selected def initialize(users, channels, selected) - @users = users + @users = User.list @channels = channels @selected = selected end diff --git a/mariya_slack_tryout.rb b/mariya_slack_tryout.rb new file mode 100644 index 00000000..ce108fcb --- /dev/null +++ b/mariya_slack_tryout.rb @@ -0,0 +1,44 @@ +require 'dotenv' +Dotenv.load +require_relative 'lib/user' +#this file equivilent must be in the main with .env + +def main + #@channel = Slack::Channel.new("CMUR2JTNX", "random", {"value"=>"", "creator"=>"", "last_set"=>0}, 7) + @user_sam = Slack::User.new("UMTG0S5D0", "samantha.collares", "Samantha Collares") + @user_list = @user_sam.list + + #binding.pry + #binding.pry + #@workspace = Slack::Workspace.new + + puts "Welcome to the Ada Slack CLI!" + puts "Here are your options: " + user_action_options = ["list users", "list channels", "select user", "select channel", "show details", "send message"] + + i = 1 + user_action_options.each do |option| + puts "#{i}. #{option}" + i += 1 + end + + puts "What would you like to do? > " + user_choice = gets.chomp + + if user_choice == "1" + #binding.pry + puts @user_list + #binding.pry + puts "\nPlease select a user:" + user_choice = gets.chomp + #make find part user validation helper method? + selected_user_object_id = @user_list.find { |user| user.value?(user_choice) } + puts selected_user_object_id["slack_id"] + end +end + +puts "Thank you for using the Ada Slack CLI" + +main + +main if __FILE__ == $MARIYA_SLACK_TRYOUT \ No newline at end of file diff --git a/test/cassettes/lists_channels.yml b/test/cassettes/lists_channels.yml index d4376569..601ba70f 100644 --- a/test/cassettes/lists_channels.yml +++ b/test/cassettes/lists_channels.yml @@ -21,17 +21,17 @@ http_interactions: Content-Type: - application/json; charset=utf-8 Content-Length: - - '687' + - '717' Connection: - keep-alive Date: - - Wed, 11 Sep 2019 03:34:29 GMT + - Thu, 12 Sep 2019 06:07:40 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - cc8e1624-ebb4-4050-b42e-eea40d712f0e + - 7c038270-1731-4b2b-a74f-b4ef4e9dc063 X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -57,25 +57,28 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-0t0n + - haproxy-www-wzn6 X-Cache: - Miss from cloudfront Via: - - 1.1 2e20768704c71ff3ce2e677251d27f3c.cloudfront.net (CloudFront) + - 1.1 3403c96e1b1db500ff6526f1a7bc6813.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - - SEA19-C1 + - SEA19 X-Amz-Cf-Id: - - "-rnmzFJqUUG8ZBU4uS3_E5NdvL9mqM9PfNq-cdjuxh5LylPK2v558Q==" + - s3EwlsmLLeCNCGlqdTTAC7plOKN3YTFhx1ShBOXBRYQwHLzcrLKzKw== body: encoding: ASCII-8BIT string: '{"ok":true,"channels":[{"id":"CMUR2JTNX","name":"random","is_channel":true,"created":1568071183,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UN5R273J8","name_normalized":"random","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTG0S5D0","UMUR43REX","UMZSUVBED","UN5R273J8","UN5R3N6P6","UN5R3NYUU","UN69C37BJ"],"topic":{"value":"Non-work banter and water cooler conversation","creator":"UN5R273J8","last_set":1568071183},"purpose":{"value":"A place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber - you''d prefer to keep out of more focused work-related channels.","creator":"UN5R273J8","last_set":1568071183},"previous_names":[],"num_members":7},{"id":"CN6A88SJZ","name":"turkey","is_channel":true,"created":1568073346,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMUR43REX","name_normalized":"turkey","is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":["UMUR43REX","UN5R273J8","UN69C37BJ"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"to - collect images of turkeys and information about turkeys","creator":"UMUR43REX","last_set":1568073347},"previous_names":[],"num_members":3},{"id":"CN85BSBQF","name":"slack-cli","is_channel":true,"created":1568071183,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UN5R273J8","name_normalized":"slack-cli","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTG0S5D0","UMUR43REX","UMZSUVBED","UN5R273J8","UN5R3N6P6","UN5R3NYUU","UN69C37BJ"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":7},{"id":"CN8FME7AS","name":"general","is_channel":true,"created":1568071183,"is_archived":false,"is_general":true,"unlinked":0,"creator":"UN5R273J8","name_normalized":"general","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTG0S5D0","UMUR43REX","UMZSUVBED","UN5R273J8","UN5R3N6P6","UN5R3NYUU","UN69C37BJ"],"topic":{"value":"Company-wide + you''d prefer to keep out of more focused work-related channels.","creator":"UN5R273J8","last_set":1568071183},"previous_names":[],"num_members":7},{"id":"CN6A88SJZ","name":"turkey","is_channel":true,"created":1568073346,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMUR43REX","name_normalized":"turkey","is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":["UMUR43REX","UN5R273J8","UN69C37BJ"],"topic":{"value":"To + collect images of turkeys and information about turkeys","creator":"UN5R273J8","last_set":1568232705},"purpose":{"value":"to + collect images of turkeys and information about turkeys","creator":"UMUR43REX","last_set":1568073347},"previous_names":[],"num_members":3},{"id":"CN85BSBQF","name":"slack-cli","is_channel":true,"created":1568071183,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UN5R273J8","name_normalized":"slack-cli","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTG0S5D0","UMUR43REX","UMZSUVBED","UN5R273J8","UN5R3N6P6","UN5R3NYUU","UN69C37BJ"],"topic":{"value":"Posts + about the Slack CLI project","creator":"UN5R273J8","last_set":1568232665},"purpose":{"value":"Posts + about the Slack CLI project","creator":"UN5R273J8","last_set":1568232660},"previous_names":[],"num_members":7},{"id":"CN8FME7AS","name":"general","is_channel":true,"created":1568071183,"is_archived":false,"is_general":true,"unlinked":0,"creator":"UN5R273J8","name_normalized":"general","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTG0S5D0","UMUR43REX","UMZSUVBED","UN5R273J8","UN5R3N6P6","UN5R3NYUU","UN69C37BJ"],"topic":{"value":"Company-wide announcements and work-based matters","creator":"UN5R273J8","last_set":1568071183},"purpose":{"value":"This channel is for workspace-wide communication and announcements. All members are in this channel.","creator":"UN5R273J8","last_set":1568071183},"previous_names":[],"num_members":7}],"response_metadata":{"next_cursor":""}}' http_version: - recorded_at: Wed, 11 Sep 2019 03:34:29 GMT + recorded_at: Thu, 12 Sep 2019 06:07:40 GMT recorded_with: VCR 5.0.0 diff --git a/test/cassettes/lists_users.yml b/test/cassettes/lists_users.yml index b9e6d6c8..69ac6428 100644 --- a/test/cassettes/lists_users.yml +++ b/test/cassettes/lists_users.yml @@ -21,17 +21,17 @@ http_interactions: Content-Type: - application/json; charset=utf-8 Content-Length: - - '1604' + - '1606' Connection: - keep-alive Date: - - Wed, 11 Sep 2019 17:01:07 GMT + - Thu, 12 Sep 2019 22:34:58 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - 142cecf9-6d6a-4365-9d7e-743effe9d79a + - bd26b131-bf70-414a-aac0-f17a40a080b9 X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -57,15 +57,15 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-iuw2 + - haproxy-www-20wj X-Cache: - Miss from cloudfront Via: - - 1.1 97d744cbc5fa647cc362d14ff20ecf08.cloudfront.net (CloudFront) + - 1.1 814362d7589b223cc8927cc821d97136.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - SEA19-C2 X-Amz-Cf-Id: - - nSteNJ_TuLf6_YtslWbjkjSw3PFKuNNNUkIjEjsh_Pry1Y2I4d0uug== + - 7F8l1q9657DWoYm9uiH878BJeryj2QnyEEpjX_s53hZQXxbqz9Glhg== body: encoding: ASCII-8BIT string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN69AJ2SU","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific @@ -89,7 +89,7 @@ http_interactions: Schuler","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gc6d02aa49cf","image_24":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071410},{"id":"UN69C37BJ","team_id":"TN69AJ2SU","name":"tiffanycee123","deleted":false,"color":"4bbe2e","real_name":"Tiffany Chio","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Tiffany Chio","real_name_normalized":"Tiffany Chio","display_name":"Tiffany Chio","display_name_normalized":"Tiffany - Chio","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge49485fcc1e","image_24":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071504}],"cache_ts":1568221267,"response_metadata":{"next_cursor":""}}' + Chio","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge49485fcc1e","image_24":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071504}],"cache_ts":1568327698,"response_metadata":{"next_cursor":""}}' http_version: - recorded_at: Wed, 11 Sep 2019 17:01:07 GMT + recorded_at: Thu, 12 Sep 2019 22:34:58 GMT recorded_with: VCR 5.0.0 diff --git a/test/cassettes/slack-posts.yml b/test/cassettes/slack-posts.yml index 65a52d1c..ecc1ff39 100644 --- a/test/cassettes/slack-posts.yml +++ b/test/cassettes/slack-posts.yml @@ -1,74 +1,11 @@ --- http_interactions: -- request: - method: post - uri: https://slack.com/api/chat.postMessage/chat.postMessage - body: - encoding: UTF-8 - string: token=&text=Hey%20I%20can%20post%20messages%21&channel=general - headers: - Content-Type: - - application/x-www-form-urlencoded - response: - status: - code: 404 - message: Not Found - headers: - Content-Type: - - text/html; charset=utf-8 - Transfer-Encoding: - - chunked - Connection: - - keep-alive - Date: - - Wed, 11 Sep 2019 21:04:54 GMT - Server: - - Apache - Expires: - - Mon, 26 Jul 1997 05:00:00 GMT - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Referrer-Policy: - - no-referrer - Cache-Control: - - private, no-cache, no-store, must-revalidate - X-Xss-Protection: - - '0' - X-Robots-Tag: - - noindex,nofollow - Vary: - - Accept-Encoding - Pragma: - - no-cache - Set-Cookie: - - b=49lagqqn3lgnatrwv8snhikl9; expires=Tue, 11-Sep-2029 21:04:54 GMT; Max-Age=315619200; - path=/; domain=.slack.com - - x=49lagqqn3lgnatrwv8snhikl9.1568235894; expires=Wed, 11-Sep-2019 21:19:54 - GMT; Max-Age=900; path=/; domain=.slack.com - X-Frame-Options: - - SAMEORIGIN - X-Via: - - haproxy-www-f2n6 - X-Cache: - - Error from cloudfront - Via: - - 1.1 0cf6c59c77f0fff670ae085179adc459.cloudfront.net (CloudFront) - X-Amz-Cf-Pop: - - SEA19-C1 - X-Amz-Cf-Id: - - 6ej1YZWXrkWNtvO9s4CR5XYiZwCclyOnvzbL4z0y3NPZ4D-HooaR-w== - body: - encoding: ASCII-8BIT - string: !binary |- - PCFET0NUWVBFIGh0bWw+PGh0bWwgbGFuZz0iZW4tVVMiIGNsYXNzPSIiPjxoZWFkPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vYS5zbGFjay1lZGdlLmNvbS9idjEtNi0xYjI1YzQ1L3dlYnBhY2subWFuaWZlc3QuMWQ4ZTIxMzE5YjBmNDNmNjE4YmEubWluLmpzIiBvbmxvYWQ9IndpbmRvdy5fY2RuID8gX2Nkbi5vayh0aGlzLCBhcmd1bWVudHMpIDogbnVsbCIgb25lcnJvcj0id2luZG93Ll9jZG4gPyBfY2RuLmZhaWxlZCh0aGlzLCBhcmd1bWVudHMpIDogbnVsbCIgY3Jvc3NvcmlnaW49ImFub255bW91cyI+PC9zY3JpcHQ+PHNjcmlwdD53aW5kb3cudHNfZW5kcG9pbnRfdXJsID0gImh0dHBzOlwvXC9zbGFjay5jb21cL2JlYWNvblwvdGltaW5nIjsoZnVuY3Rpb24oZSkgewoJdmFyIG49RGF0ZS5ub3c/RGF0ZS5ub3coKTorbmV3IERhdGUscj1lLnBlcmZvcm1hbmNlfHx7fSx0PVtdLGE9e30saT1mdW5jdGlvbihlLG4pe2Zvcih2YXIgcj0wLGE9dC5sZW5ndGgsaT1bXTthPnI7cisrKXRbcl1bZV09PW4mJmkucHVzaCh0W3JdKTtyZXR1cm4gaX0sbz1mdW5jdGlvbihlLG4pe2Zvcih2YXIgcixhPXQubGVuZ3RoO2EtLTspcj10W2FdLHIuZW50cnlUeXBlIT1lfHx2b2lkIDAhPT1uJiZyLm5hbWUhPW58fHQuc3BsaWNlKGEsMSl9O3Iubm93fHwoci5ub3c9ci53ZWJraXROb3d8fHIubW96Tm93fHxyLm1zTm93fHxmdW5jdGlvbigpe3JldHVybihEYXRlLm5vdz9EYXRlLm5vdygpOituZXcgRGF0ZSktbn0pLHIubWFya3x8KHIubWFyaz1yLndlYmtpdE1hcmt8fGZ1bmN0aW9uKGUpe3ZhciBuPXtuYW1lOmUsZW50cnlUeXBlOiJtYXJrIixzdGFydFRpbWU6ci5ub3coKSxkdXJhdGlvbjowfTt0LnB1c2gobiksYVtlXT1ufSksci5tZWFzdXJlfHwoci5tZWFzdXJlPXIud2Via2l0TWVhc3VyZXx8ZnVuY3Rpb24oZSxuLHIpe249YVtuXS5zdGFydFRpbWUscj1hW3JdLnN0YXJ0VGltZSx0LnB1c2goe25hbWU6ZSxlbnRyeVR5cGU6Im1lYXN1cmUiLHN0YXJ0VGltZTpuLGR1cmF0aW9uOnItbn0pfSksci5nZXRFbnRyaWVzQnlUeXBlfHwoci5nZXRFbnRyaWVzQnlUeXBlPXIud2Via2l0R2V0RW50cmllc0J5VHlwZXx8ZnVuY3Rpb24oZSl7cmV0dXJuIGkoImVudHJ5VHlwZSIsZSl9KSxyLmdldEVudHJpZXNCeU5hbWV8fChyLmdldEVudHJpZXNCeU5hbWU9ci53ZWJraXRHZXRFbnRyaWVzQnlOYW1lfHxmdW5jdGlvbihlKXtyZXR1cm4gaSgibmFtZSIsZSl9KSxyLmNsZWFyTWFya3N8fChyLmNsZWFyTWFya3M9ci53ZWJraXRDbGVhck1hcmtzfHxmdW5jdGlvbihlKXtvKCJtYXJrIixlKX0pLHIuY2xlYXJNZWFzdXJlc3x8KHIuY2xlYXJNZWFzdXJlcz1yLndlYmtpdENsZWFyTWVhc3VyZXN8fGZ1bmN0aW9uKGUpe28oIm1lYXN1cmUiLGUpfSksZS5wZXJmb3JtYW5jZT1yLCJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJihkZWZpbmUuYW1kfHxkZWZpbmUuYWpzKSYmZGVmaW5lKCJwZXJmb3JtYW5jZSIsW10sZnVuY3Rpb24oKXtyZXR1cm4gcn0pIC8vIGVzbGludC1kaXNhYmxlLWxpbmUKfSkod2luZG93KTs8L3NjcmlwdD48c2NyaXB0PgoKKGZ1bmN0aW9uKCkgewoJCgl3aW5kb3cuVFNNYXJrID0gZnVuY3Rpb24obWFya19sYWJlbCkgewoJCWlmICghd2luZG93LnBlcmZvcm1hbmNlIHx8ICF3aW5kb3cucGVyZm9ybWFuY2UubWFyaykgcmV0dXJuOwoJCXBlcmZvcm1hbmNlLm1hcmsobWFya19sYWJlbCk7Cgl9OwoJd2luZG93LlRTTWFyaygnc3RhcnRfbG9hZCcpOwoKCQoJd2luZG93LlRTTWVhc3VyZUFuZEJlYWNvbiA9IGZ1bmN0aW9uKG1lYXN1cmVfbGFiZWwsIHN0YXJ0X21hcmtfbGFiZWwpIHsKCQlpZiAoIXdpbmRvdy5wZXJmb3JtYW5jZSB8fCAhd2luZG93LnBlcmZvcm1hbmNlLm1hcmsgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5tZWFzdXJlKSB7CgkJCXJldHVybjsKCQl9CgoJCXBlcmZvcm1hbmNlLm1hcmsoc3RhcnRfbWFya19sYWJlbCArICdfZW5kJyk7CgoJCXRyeSB7CgkJCXBlcmZvcm1hbmNlLm1lYXN1cmUobWVhc3VyZV9sYWJlbCwgc3RhcnRfbWFya19sYWJlbCwgc3RhcnRfbWFya19sYWJlbCArICdfZW5kJyk7CgkJCXdpbmRvdy5UU0JlYWNvbihtZWFzdXJlX2xhYmVsLCBwZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlOYW1lKG1lYXN1cmVfbGFiZWwpWzBdLmR1cmF0aW9uKTsKCQl9IGNhdGNoIChlKSB7CgkJCQoJCX0KCX07CgoJCglpZiAoJ3NlbmRCZWFjb24nIGluIG5hdmlnYXRvcikgewoJCXdpbmRvdy5UU0JlYWNvbiA9IGZ1bmN0aW9uKGxhYmVsLCB2YWx1ZSkgewoJCQl2YXIgZW5kcG9pbnRfdXJsID0gd2luZG93LnRzX2VuZHBvaW50X3VybCB8fCAnaHR0cHM6Ly9zbGFjay5jb20vYmVhY29uL3RpbWluZyc7CgkJCW5hdmlnYXRvci5zZW5kQmVhY29uKAoJCQkJZW5kcG9pbnRfdXJsICsgJz9kYXRhPScgKyBlbmNvZGVVUklDb21wb25lbnQobGFiZWwgKyAnOicgKyB2YWx1ZSksCgkJCQknJwoJCQkpOwoJCX07Cgl9IGVsc2UgewoJCXdpbmRvdy5UU0JlYWNvbiA9IGZ1bmN0aW9uKGxhYmVsLCB2YWx1ZSkgewoJCQl2YXIgZW5kcG9pbnRfdXJsID0gd2luZG93LnRzX2VuZHBvaW50X3VybCB8fCAnaHR0cHM6Ly9zbGFjay5jb20vYmVhY29uL3RpbWluZyc7CgkJCW5ldyBJbWFnZSgpLnNyYyA9IGVuZHBvaW50X3VybCArICc/ZGF0YT0nICsgZW5jb2RlVVJJQ29tcG9uZW50KGxhYmVsICsgJzonICsgdmFsdWUpOwoJCX07Cgl9Cn0pKCk7Cjwvc2NyaXB0PjxzY3JpcHQ+d2luZG93LlRTTWFyaygnc3RlcF9sb2FkJyk7PC9zY3JpcHQ+PG5vc2NyaXB0PjxtZXRhIGh0dHAtZXF1aXY9InJlZnJlc2giIGNvbnRlbnQ9IjA7IFVSTD0vYXBpL2NoYXQucG9zdE1lc3NhZ2UvY2hhdC5wb3N0TWVzc2FnZT9ub2pzbW9kZT0xIj48L25vc2NyaXB0PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij52YXIgc2FmZV9ob3N0cyA9IFsnYXBwLm9wdGltaXplbHkuY29tJ107CgppZiAoc2VsZiAhPT0gdG9wICYmIHNhZmVfaG9zdHMuaW5kZXhPZih0b3AubG9jYXRpb24uaG9zdCkgPT09IC0xKSB7Cgl3aW5kb3cuZG9jdW1lbnQud3JpdGUoCgkJJ1x1MDAzQ3N0eWxlPmJvZHkgKiB7ZGlzcGxheTpub25lICFpbXBvcnRhbnQ7fVx1MDAzQy9zdHlsZT5cdTAwM0NhIGhyZWY9IiMiIG9uY2xpY2s9JyArCgkJCScidG9wLmxvY2F0aW9uLmhyZWY9d2luZG93LmxvY2F0aW9uLmhyZWYiIHN0eWxlPSJkaXNwbGF5OmJsb2NrICFpbXBvcnRhbnQ7cGFkZGluZzoxMHB4Ij5HbyB0byBTbGFjay5jb21cdTAwM0MvYT4nCgkpOwp9CgooZnVuY3Rpb24oKSB7Cgl2YXIgdGltZXI7CglpZiAoc2VsZiAhPT0gdG9wICYmIHNhZmVfaG9zdHMuaW5kZXhPZih0b3AubG9jYXRpb24uaG9zdCkgPT09IC0xKSB7CgkJdGltZXIgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CgkJCWlmICh3aW5kb3cpIHsKCQkJCXRyeSB7CgkJCQkJdmFyIHBhZ2VFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYWdlJyk7CgkJCQkJdmFyIGNsaWVudEVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NsaWVudC11aScpOwoJCQkJCXZhciBzZWN0aW9uRWxzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnbmF2LCBoZWFkZXIsIHNlY3Rpb24nKTsKCgkJCQkJcGFnZUVsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQocGFnZUVsKTsKCQkJCQljbGllbnRFbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNsaWVudEVsKTsKCQkJCQlmb3IgKHZhciBpID0gMDsgaSA8IHNlY3Rpb25FbHMubGVuZ3RoOyBpKyspIHsKCQkJCQkJc2VjdGlvbkVsc1tpXS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHNlY3Rpb25FbHNbaV0pOwoJCQkJCX0KCQkJCQl3aW5kb3cuVFMgPSBudWxsOwoJCQkJCXdpbmRvdy5URCA9IG51bGw7CgkJCQkJd2luZG93LmNsZWFySW50ZXJ2YWwodGltZXIpOwoJCQkJfSBjYXRjaCAoZSkge30JCgkJCX0KCQl9LCAyMDApOwoJfQp9KSgpOzwvc2NyaXB0PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij50cnkgewoJaWYgKHdpbmRvdy5sb2NhdGlvbi5oYXNoICYmICF3aW5kb3cubG9jYXRpb24uaGFzaC5tYXRjaCgvXigjP1thLXpBLVowLTlfXSopJC8pKSB7CgkJd2luZG93LmxvY2F0aW9uLmhhc2ggPSAnJzsKCX0KfSBjYXRjaCAoZSkge30KPC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgp3aW5kb3cuZGF0YUxheWVyID0gd2luZG93LmRhdGFMYXllciB8fCBbXTsKd2luZG93LmRhdGFMYXllci5wdXNoKHsKCSdndG0uc3RhcnQnOiBEYXRlLm5vdygpLAoJJ2V2ZW50JyA6ICdndG0uanMnLAoJJ3NlY3VyZV9wYWdlJyA6IGZhbHNlLAp9KTsKdmFyIGZpcnN0U2NyaXB0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NjcmlwdCcpWzBdOwp2YXIgdGhpc1NjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpOwp0aGlzU2NyaXB0LmFzeW5jID0gdHJ1ZTsKdGhpc1NjcmlwdC5zcmMgPSAnLy93d3cuZ29vZ2xldGFnbWFuYWdlci5jb20vZ3RtLmpzP2lkPUdUTS1LSDJMUEsnOwpmaXJzdFNjcmlwdC5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzU2NyaXB0LCBmaXJzdFNjcmlwdCk7Cjwvc2NyaXB0PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGZ1bmN0aW9uKGUpIHsKCXZhciBndG1EYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwoJdmFyIGd0bVRhZ3MgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcqW2RhdGEtZ3RtLWNsaWNrXScpOwoJdmFyIGd0bUNsaWNrSGFuZGxlciA9IGZ1bmN0aW9uKGMpIHsKCQl2YXIgZ3RtX2V2ZW50cyA9IHRoaXMuZ2V0QXR0cmlidXRlKCdkYXRhLWd0bS1jbGljaycpOwoJCWlmICghZ3RtX2V2ZW50cykgcmV0dXJuOwoJCXZhciBndG1fZXZlbnRzX2FyciA9IGd0bV9ldmVudHMuc3BsaXQoIiwiKTsKCQlmb3IodmFyIGU9MDsgZSA8IGd0bV9ldmVudHNfYXJyLmxlbmd0aDsgZSsrKSB7CgkJCXZhciBldiA9IGd0bV9ldmVudHNfYXJyW2VdLnRyaW0oKTsKCQkJZ3RtRGF0YUxheWVyLnB1c2goeyAnZXZlbnQnOiBldiB9KTsKCQl9Cgl9OwoJZm9yKHZhciBnPTA7IGcgPCBndG1UYWdzLmxlbmd0aDsgZysrKXsKCQl2YXIgZWxlbSA9IGd0bVRhZ3NbZ107CgkJZWxlbS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGd0bUNsaWNrSGFuZGxlcik7Cgl9Cn0pOwo8L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CihmdW5jdGlvbihlLGMsYixmLGQsZyxhKXtlLlNsYWNrQmVhY29uT2JqZWN0PWQ7CmVbZF09ZVtkXXx8ZnVuY3Rpb24oKXsoZVtkXS5xPWVbZF0ucXx8W10pLnB1c2goWzEqbmV3IERhdGUoKSxhcmd1bWVudHNdKX07CmVbZF0ubD0xKm5ldyBEYXRlKCk7Zz1jLmNyZWF0ZUVsZW1lbnQoYik7YT1jLmdldEVsZW1lbnRzQnlUYWdOYW1lKGIpWzBdOwpnLmFzeW5jPTE7Zy5zcmM9ZjthLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGcsYSkKfSkod2luZG93LGRvY3VtZW50LCJzY3JpcHQiLCJodHRwczovL2Euc2xhY2stZWRnZS5jb20vYnYxLTYtMWIyNWM0NS9zbGFja19iZWFjb24uNTI1NmMxZjI1MmY5YWU4ODUwNzEubWluLmpzIiwic2IiKTsKd2luZG93LnNiKCdzZXQnLCAndG9rZW4nLCAnMzMwN2Y0MzY5NjNlMDJkNGY5ZWI4NWNlNTE1OTc0NGMnKTsKd2luZG93LnNiKCd0cmFjaycsICdwYWdldmlldycpOwo8L3NjcmlwdD48bWV0YSBuYW1lPSJyZWZlcnJlciIgY29udGVudD0ibm8tcmVmZXJyZXIiPjxtZXRhIG5hbWU9InN1cGVyZmlzaCIgY29udGVudD0ibm9maXNoIj48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+dmFyIFRTX2xhc3RfbG9nX2RhdGUgPSBudWxsOwp2YXIgVFNNYWtlTG9nRGF0ZSA9IGZ1bmN0aW9uKCkgewoJdmFyIGRhdGUgPSBuZXcgRGF0ZSgpOwoKCXZhciB5ID0gZGF0ZS5nZXRGdWxsWWVhcigpOwoJdmFyIG1vID0gZGF0ZS5nZXRNb250aCgpKzE7Cgl2YXIgZCA9IGRhdGUuZ2V0RGF0ZSgpOwoKCXZhciB0aW1lID0gewoJICBoOiBkYXRlLmdldEhvdXJzKCksCgkgIG1pOiBkYXRlLmdldE1pbnV0ZXMoKSwKCSAgczogZGF0ZS5nZXRTZWNvbmRzKCksCgkgIG1zOiBkYXRlLmdldE1pbGxpc2Vjb25kcygpCgl9OwoKCU9iamVjdC5rZXlzKHRpbWUpLm1hcChmdW5jdGlvbihtb21lbnQsIGluZGV4KSB7CgkJaWYgKG1vbWVudCA9PSAnbXMnKSB7CgkJCWlmICh0aW1lW21vbWVudF0gPCAxMCkgewoJCQkJdGltZVttb21lbnRdID0gdGltZVttb21lbnRdKycwMCc7CgkJCX0gZWxzZSBpZiAodGltZVttb21lbnRdIDwgMTAwKSB7CgkJCQl0aW1lW21vbWVudF0gPSB0aW1lW21vbWVudF0rJzAnOwoJCQl9CgkJfSBlbHNlIGlmICh0aW1lW21vbWVudF0gPCAxMCkgewoJCQl0aW1lW21vbWVudF0gPSAnMCcgKyB0aW1lW21vbWVudF07CgkJfQoJfSk7CgoJdmFyIHN0ciA9IHkgKyAnLycgKyBtbyArICcvJyArIGQgKyAnICcgKyB0aW1lLmggKyAnOicgKyB0aW1lLm1pICsgJzonICsgdGltZS5zICsgJy4nICsgdGltZS5tczsKCWlmIChUU19sYXN0X2xvZ19kYXRlKSB7CgkJdmFyIGRpZmYgPSBkYXRlLVRTX2xhc3RfbG9nX2RhdGU7CgkJLy9zdHIrPSAnICgnK2RpZmYrJ21zKSc7Cgl9CglUU19sYXN0X2xvZ19kYXRlID0gZGF0ZTsKCXJldHVybiBzdHIrJyAnOwp9Cgp2YXIgcGFyc2VEZWVwTGlua1JlcXVlc3QgPSBmdW5jdGlvbihjb2RlKSB7Cgl2YXIgbSA9IGNvZGUubWF0Y2goLyJpZCI6IihbQ0RHXVtBLVowLTldezh9KSIvKTsKCXZhciBpZCA9IG0gPyBtWzFdIDogbnVsbDsKCgltID0gY29kZS5tYXRjaCgvInRlYW0iOiIoVFtBLVowLTldezh9KSIvKTsKCXZhciB0ZWFtID0gbSA/IG1bMV0gOiBudWxsOwoKCW0gPSBjb2RlLm1hdGNoKC8ibWVzc2FnZSI6IihbMC05XStcLlswLTldKykiLyk7Cgl2YXIgbWVzc2FnZSA9IG0gPyBtWzFdIDogbnVsbDsKCglyZXR1cm4geyBpZDogaWQsIHRlYW06IHRlYW0sIG1lc3NhZ2U6IG1lc3NhZ2UgfTsKfQoKaWYgKCdyZW5kZXJlckV2YWxBc3luYycgaW4gd2luZG93KSB7Cgl2YXIgb3JpZ1JlbmRlcmVyRXZhbEFzeW5jID0gd2luZG93LnJlbmRlcmVyRXZhbEFzeW5jOwoJd2luZG93LnJlbmRlcmVyRXZhbEFzeW5jID0gZnVuY3Rpb24oYmxvYikgewoJCXRyeSB7CgkJCXZhciBkYXRhID0gSlNPTi5wYXJzZShkZWNvZGVVUklDb21wb25lbnQoYXRvYihibG9iKSkpOwoJCQlpZiAoZGF0YS5jb2RlLm1hdGNoKC9oYW5kbGVEZWVwTGluay8pKSB7CgkJCQl2YXIgcmVxdWVzdCA9IHBhcnNlRGVlcExpbmtSZXF1ZXN0KGRhdGEuY29kZSk7CgkJCQlpZiAoIXJlcXVlc3QuaWQgfHwgIXJlcXVlc3QudGVhbSB8fCAhcmVxdWVzdC5tZXNzYWdlKSByZXR1cm47CgoJCQkJcmVxdWVzdC5jbWQgPSAnY2hhbm5lbCc7CgkJCQlUU1NTQi5oYW5kbGVEZWVwTGlua1dpdGhBcmdzKEpTT04uc3RyaW5naWZ5KHJlcXVlc3QpKTsKCQkJCXJldHVybjsKCQkJfSBlbHNlIHsKCQkJCW9yaWdSZW5kZXJlckV2YWxBc3luYyhibG9iKTsKCQkJfQoJCX0gY2F0Y2ggKGUpIHsKCQl9Cgl9Cn08L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+dmFyIFRTU1NCID0gewoJY2FsbDogZnVuY3Rpb24oKSB7CgkJcmV0dXJuIGZhbHNlOwoJfQp9Ozwvc2NyaXB0PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij53aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGZ1bmN0aW9uKCkgewoJdmFyIHdhc19UUyA9IHdpbmRvdy5UUzsKCWRlbGV0ZSB3aW5kb3cuVFM7CglpZiAod2FzX1RTKSB3aW5kb3cuVFMgPSB3YXNfVFM7Cn0pOzwvc2NyaXB0Pjx0aXRsZT5UaGVyZSdzIGJlZW4gYSBnbGl0Y2jigKYgfCBTbGFjazwvdGl0bGU+PGxpbmsgaHJlZj0iaHR0cHM6Ly9hLnNsYWNrLWVkZ2UuY29tL2I5NzQxL3N0eWxlL3JvbGx1cC1zbGFja19raXRfbGVnYWN5X2FkYXB0ZXJzLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgb25sb2FkPSJ3aW5kb3cuX2NkbiA/IF9jZG4ub2sodGhpcywgYXJndW1lbnRzKSA6IG51bGwiIG9uZXJyb3I9IndpbmRvdy5fY2RuID8gX2Nkbi5mYWlsZWQodGhpcywgYXJndW1lbnRzKSA6IG51bGwiIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiPjxsaW5rIGhyZWY9Imh0dHBzOi8vYS5zbGFjay1lZGdlLmNvbS9iMWY3My9zdHlsZS9yb2xsdXAtcGxhc3RpYy5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIG9ubG9hZD0id2luZG93Ll9jZG4gPyBfY2RuLm9rKHRoaXMsIGFyZ3VtZW50cykgOiBudWxsIiBvbmVycm9yPSJ3aW5kb3cuX2NkbiA/IF9jZG4uZmFpbGVkKHRoaXMsIGFyZ3VtZW50cykgOiBudWxsIiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIj48bGluayBocmVmPSJodHRwczovL2Euc2xhY2stZWRnZS5jb20vYnYxLTYtMWIyNWM0NS9tb2Rlcm4udmVuZG9yLmM4YmFlYjIubWluLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgb25sb2FkPSJ3aW5kb3cuX2NkbiA/IF9jZG4ub2sodGhpcywgYXJndW1lbnRzKSA6IG51bGwiIG9uZXJyb3I9IndpbmRvdy5fY2RuID8gX2Nkbi5mYWlsZWQodGhpcywgYXJndW1lbnRzKSA6IG51bGwiIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiPjxsaW5rIGhyZWY9Imh0dHBzOi8vYS5zbGFjay1lZGdlLmNvbS9idjEtNi0xYjI1YzQ1L2FwcGxpY2F0aW9uLmYyZmMwYzMubWluLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgb25sb2FkPSJ3aW5kb3cuX2NkbiA/IF9jZG4ub2sodGhpcywgYXJndW1lbnRzKSA6IG51bGwiIG9uZXJyb3I9IndpbmRvdy5fY2RuID8gX2Nkbi5mYWlsZWQodGhpcywgYXJndW1lbnRzKSA6IG51bGwiIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiPjxsaW5rIGhyZWY9Imh0dHBzOi8vYS5zbGFjay1lZGdlLmNvbS9mMTk1YzMvc3R5bGUvcm9sbHVwLXNsYWNrX2tpdF9oZWxwZXJzLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiBpZD0ic2xhY2tfa2l0X2hlbHBlcnNfc3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIG9ubG9hZD0id2luZG93Ll9jZG4gPyBfY2RuLm9rKHRoaXMsIGFyZ3VtZW50cykgOiBudWxsIiBvbmVycm9yPSJ3aW5kb3cuX2NkbiA/IF9jZG4uZmFpbGVkKHRoaXMsIGFyZ3VtZW50cykgOiBudWxsIiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIj48bGluayBocmVmPSJodHRwczovL2Euc2xhY2stZWRnZS5jb20vZjAyMGE4L3N0eWxlLzQwNC5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIG9ubG9hZD0id2luZG93Ll9jZG4gPyBfY2RuLm9rKHRoaXMsIGFyZ3VtZW50cykgOiBudWxsIiBvbmVycm9yPSJ3aW5kb3cuX2NkbiA/IF9jZG4uZmFpbGVkKHRoaXMsIGFyZ3VtZW50cykgOiBudWxsIiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIj48bGluayBocmVmPSJodHRwczovL2Euc2xhY2stZWRnZS5jb20vOGVmZDMvc3R5bGUvc3RpY2t5X25hdi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIG9ubG9hZD0id2luZG93Ll9jZG4gPyBfY2RuLm9rKHRoaXMsIGFyZ3VtZW50cykgOiBudWxsIiBvbmVycm9yPSJ3aW5kb3cuX2NkbiA/IF9jZG4uZmFpbGVkKHRoaXMsIGFyZ3VtZW50cykgOiBudWxsIiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIj48bGluayBocmVmPSJodHRwczovL2Euc2xhY2stZWRnZS5jb20vOTVhYmEwL3N0eWxlL2Zvb3Rlci5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIG9ubG9hZD0id2luZG93Ll9jZG4gPyBfY2RuLm9rKHRoaXMsIGFyZ3VtZW50cykgOiBudWxsIiBvbmVycm9yPSJ3aW5kb3cuX2NkbiA/IF9jZG4uZmFpbGVkKHRoaXMsIGFyZ3VtZW50cykgOiBudWxsIiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIj48bGluayBocmVmPSJodHRwczovL2Euc2xhY2stZWRnZS5jb20vMDQxNWMvc3R5bGUvbGlicy9sYXRvLTItY29tcHJlc3NlZC5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIG9ubG9hZD0id2luZG93Ll9jZG4gPyBfY2RuLm9rKHRoaXMsIGFyZ3VtZW50cykgOiBudWxsIiBvbmVycm9yPSJ3aW5kb3cuX2NkbiA/IF9jZG4uZmFpbGVkKHRoaXMsIGFyZ3VtZW50cykgOiBudWxsIiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIj48bWV0YSBwcm9wZXJ0eT0ib2c6dHlwZSIgY29udGVudD0id2Vic2l0ZSI+PG1ldGEgcHJvcGVydHk9Im9nOnNpdGVfbmFtZSIgY29udGVudD0iU2xhY2siPjxtZXRhIHByb3BlcnR5PSJvZzp0aXRsZSIgY29udGVudD0iVGhlcmUncyBiZWVuIGEgZ2xpdGNo4oCmIj48bWV0YSBwcm9wZXJ0eT0ib2c6aW1hZ2UiIGNvbnRlbnQ9Imh0dHBzOi8vYS5zbGFjay1lZGdlLmNvbS84MDU4OC9pbWcvNDA0LzQwNC1tZXRhLXRodW1iLmpwZyI+PG1ldGEgcHJvcGVydHk9Im9nOmRlc2NyaXB0aW9uIiBjb250ZW50PSJXZSdyZSBub3QgcXVpdGUgc3VyZSB3aGF0IHdlbnQgd3JvbmcuIFlvdSBjYW4gZ28gYmFjaywgb3IgdHJ5IGxvb2tpbmcgb24gb3VyICZsdDthIGhyZWY9JnF1b3Q7aHR0cDovL2dldC5zbGFjay5oZWxwJnF1b3Q7IHRhcmdldD0mcXVvdDtfYmxhbmsmcXVvdDsmZ3Q7SGVscCBDZW50ZXImbHQ7L2EmZ3Q7IGlmIHlvdSBuZWVkIGEgaGFuZC4iPjxtZXRhIHByb3BlcnR5PSJvZzp1cmwiIGNvbnRlbnQ9Imh0dHBzOi8vc2xhY2suY29tL2FwaS9jaGF0LnBvc3RNZXNzYWdlL2NoYXQucG9zdE1lc3NhZ2UiPjxsaW5rIGlkPSJmYXZpY29uIiByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Imh0dHBzOi8vYS5zbGFjay1lZGdlLmNvbS84MDU4OC9tYXJrZXRpbmcvaW1nL21ldGEvZmF2aWNvbi0zMi5wbmciIHNpemVzPSIxNngxNiAzMngzMiA0OHg0OCIgdHlwZT0iaW1hZ2UvcG5nIj48L2hlYWQ+PGJvZHkgY2xhc3M9IiBkZXByZWNhdGVkIj48c2NyaXB0PnZhciB3ID0gTWF0aC5tYXgoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoLCB3aW5kb3cuaW5uZXJXaWR0aCB8fCAwKTsKaWYgKHcgPiAxNDQwKSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdib2R5JykuY2xhc3NMaXN0LmFkZCgnd2lkZXNjcmVlbicpOzwvc2NyaXB0PjxuYXYgY2xhc3M9InRvcCBwZXJzaXN0ZW50Ij48YSBocmVmPSJodHRwczovL3NsYWNrLmNvbS8iIGNsYXNzPSJsb2dvIiBkYXRhLXFhPSJsb2dvIiBkYXRhLWNsb2ctZXZlbnQ9IldFQlNJVEVfQ0xJQ0siIGRhdGEtY2xvZy1wYXJhbXM9ImNsaWNrX3RhcmdldD1sb2dvIiBhcmlhLWxhYmVsPSJTbGFjayBob21lcGFnZSI+PC9hPjx1bD48bGk+PGEgaHJlZj0iaHR0cHM6Ly9zbGFjay5jb20vaXMiIGRhdGEtcWE9InByb2R1Y3QiIGRhdGEtY2xvZy1ldmVudD0iV0VCU0lURV9DTElDSyIgZGF0YS1jbG9nLXBhcmFtcz0iY2xpY2tfdGFyZ2V0PW5hdl9wcm9kdWN0Ij5Qcm9kdWN0PC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vc2xhY2suY29tL3ByaWNpbmc/dWlfc3RlcD01NSZ1aV9lbGVtZW50PTUiIGRhdGEtcWE9InByaWNpbmciIGRhdGEtY2xvZy1ldmVudD0iV0VCU0lURV9DTElDSyIgZGF0YS1jbG9nLXBhcmFtcz0iY2xpY2tfdGFyZ2V0PW5hdl9wcmljaW5nIj5QcmljaW5nPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2V0LnNsYWNrLmhlbHAvaGMvZW4tdXMiIGRhdGEtcWE9InN1cHBvcnQiIGRhdGEtY2xvZy1ldmVudD0iV0VCU0lURV9DTElDSyIgZGF0YS1jbG9nLXBhcmFtcz0iY2xpY2tfdGFyZ2V0PW5hdl9zdXBwb3J0Ij5TdXBwb3J0PC9hPjwvbGk+PGxpIGNsYXNzPSJtb2JpbGVfYnRuIGRvd25sb2FkX3NsYWNrIj48YSBocmVmPSIvZ2V0IiBkYXRhLXFhPSJkb3dubG9hZF9zbGFjayIgZGF0YS1jbG9nLWV2ZW50PSJXRUJTSVRFX0NMSUNLIiBkYXRhLWNsb2ctcGFyYW1zPSJjbGlja190YXJnZXQ9bmF2X2Rvd25sb2FkIj5Eb3dubG9hZCBTbGFjazwvYT48L2xpPjxsaT48YSBkYXRhLWd0bS1jbGljaz0iU2lnblVwLG9wdG91dF9uYXZfY3JlYXRlX3RlYW0iIGhyZWY9Imh0dHBzOi8vc2xhY2suY29tL2NyZWF0ZSIgY2xhc3M9IiIgZGF0YS1xYT0iY3JlYXRlX3RlYW0iIGRhdGEtY2xvZy1ldmVudD0iV0VCU0lURV9DTElDSyIgZGF0YS1jbG9nLXBhcmFtcz0iY2xpY2tfdGFyZ2V0PW5hdl9jcmVhdGVfdGVhbSI+Q3JlYXRlIGEgbmV3IHdvcmtzcGFjZTwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwczovL3NsYWNrLmNvbS9nZXQtc3RhcnRlZCIgZGF0YS1ndG0tY2xpY2s9Im9wdG91dF9uYXZfZmluZF90ZWFtIiBkYXRhLXFhPSJmaW5kX3RlYW0iIGRhdGEtY2xvZy1ldmVudD0iV0VCU0lURV9DTElDSyIgZGF0YS1jbG9nLXBhcmFtcz0iY2xpY2tfdGFyZ2V0PW5hdl9maW5kX3RlYW0iPkZpbmQgeW91ciB3b3Jrc3BhY2U8L2E+PC9saT48bGkgY2xhc3M9InNpZ25faW4gaGlkZV9vbl9tb2JpbGUiPjxhIGRhdGEtZ3RtLWNsaWNrPSJvcHRvdXRfbmF2X3NpZ25pbiIgaHJlZj0iaHR0cHM6Ly9zbGFjay5jb20vc2lnbmluIiBjbGFzcz0iYnRuX3N0aWNreSBidG5fZmlsbGVkIiBkYXRhLXFhPSJzaWduX2luIiBkYXRhLWNsb2ctZXZlbnQ9IldFQlNJVEVfQ0xJQ0siIGRhdGEtY2xvZy1wYXJhbXM9ImNsaWNrX3RhcmdldD1uYXZfc2lnbl9pbiI+U2lnbiBpbjwvYT48L2xpPjxsaSBjbGFzcz0ibW9iaWxlX2J0biBtb2JpbGVfbWVudV9idG4iPjxhIGhyZWY9IiMiIGNsYXNzPSJidG5fc3RpY2t5IiBkYXRhLWNsb2ctZXZlbnQ9IldFQlNJVEVfQ0xJQ0siIGRhdGEtY2xvZy1wYXJhbXM9ImNsaWNrX3RhcmdldD1uYXZfbW9iaWxlX21lbnVfYnRuIj5NZW51PC9hPjwvbGk+PC91bD48L25hdj48bmF2IGNsYXNzPSJtb2JpbGVfbWVudSBsb2FkaW5nIG1lbnVfc2Nyb2xsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PGRpdiBjbGFzcz0ibW9iaWxlX21lbnVfd3JhcHBlciI+PGRpdiBjbGFzcz0ibW9iaWxlX21lbnVfaGVhZGVyIj48YSBocmVmPSJodHRwczovL3NsYWNrLmNvbS8iIGNsYXNzPSJsb2dvIiBkYXRhLWNsb2ctZXZlbnQ9IldFQlNJVEVfQ0xJQ0siIGRhdGEtY2xvZy1wYXJhbXM9ImNsaWNrX3RhcmdldD1uYXZfbG9nbyI+PC9hPjxhIGhyZWY9IiMiIGNsYXNzPSJjbG9zZSIgYXJpYS1sYWJlbD0iY2xvc2UiIGRhdGEtY2xvZy1ldmVudD0iV0VCU0lURV9DTElDSyIgZGF0YS1jbG9nLXBhcmFtcz0iY2xpY2tfdGFyZ2V0PW5hdl9tZW51X2Nsb3NlIj48dHMtaWNvbiBjbGFzcz0idHNfaWNvbiB0c19pY29uX3RpbWVzIj48L3RzLWljb24+PC9hPjwvZGl2Pjx1bD48bGk+PGEgaHJlZj0iaHR0cHM6Ly9zbGFjay5jb20vaXMiIGRhdGEtY2xvZy1ldmVudD0iV0VCU0lURV9DTElDSyIgZGF0YS1jbG9nLXBhcmFtcz0iY2xpY2tfdGFyZ2V0PW5hdl9wcm9kdWN0Ij5Qcm9kdWN0PC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vc2xhY2suY29tL3ByaWNpbmc/dWlfc3RlcD01NSZ1aV9lbGVtZW50PTUiIGNsYXNzPSJtb2JpbGVfbmF2X3ByaWNpbmciIGRhdGEtY2xvZy1ldmVudD0iV0VCU0lURV9DTElDSyIgZGF0YS1jbG9nLXBhcmFtcz0iY2xpY2tfdGFyZ2V0PW5hdl9wcmljaW5nIj5QcmljaW5nPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2V0LnNsYWNrLmhlbHAvaGMvZW4tdXMiIGRhdGEtY2xvZy1ldmVudD0iV0VCU0lURV9DTElDSyIgZGF0YS1jbG9nLXBhcmFtcz0iY2xpY2tfdGFyZ2V0PW5hdl9zdXBwb3J0Ij5TdXBwb3J0PC9hPjwvbGk+PGxpPjxhIGhyZWY9Ii9nZXQiIGRhdGEtY2xvZy1ldmVudD0iV0VCU0lURV9DTElDSyIgZGF0YS1jbG9nLXBhcmFtcz0iY2xpY2tfdGFyZ2V0PW5hdl9kb3dubG9hZCI+RG93bmxvYWQgPHNwYW4gY2xhc3M9Im9wdGlvbmFsX2Rlc2t0b3BfbmF2X21lc3NhZ2UiPnRoZSBTbGFjayBhcHA8L3NwYW4+PC9hPjwvbGk+PC91bD48dWwgY2xhc3M9Im1vYmlsZV9tZW51X2Zvb3RlciI+PGxpPjxhIGhyZWY9Imh0dHBzOi8vc2xhY2suY29tL3NpZ25pbiIgZGF0YS1ndG0tY2xpY2s9Im9wdG91dF9uYXZfc2lnbmluIiB0YXJnZXQ9Il9ibGFuayIgZGF0YS1jbG9nLWV2ZW50PSJXRUJTSVRFX0NMSUNLIiBkYXRhLWNsb2ctcGFyYW1zPSJjbGlja190YXJnZXQ9bmF2X3NpZ25faW4iPjx0cy1pY29uIGNsYXNzPSJ0c19pY29uIHNtYWxsIGZsb2F0X25vbmUgdGVhbV9pY29uIHRzX2ljb25fcGx1cyBkZWZhdWx0IHNpZ251cF9pY29uIj48L3RzLWljb24+PHNwYW4gY2xhc3M9InN3aXRjaGVyX2xhYmVsIj5TaWduIGluPC9zcGFuPjwvYT48L2xpPjxsaT48YSBkYXRhLWd0bS1jbGljaz0iU2lnblVwLG9wdG91dF9uYXZfY3JlYXRlX3RlYW0iIGhyZWY9Imh0dHBzOi8vc2xhY2suY29tL2NyZWF0ZSIgY2xhc3M9IiIgdGFyZ2V0PSJfYmxhbmsiIGRhdGEtY2xvZy1ldmVudD0iV0VCU0lURV9DTElDSyIgZGF0YS1jbG9nLXBhcmFtcz0iY2xpY2tfdGFyZ2V0PW5hdl9jcmVhdGVfdGVhbSI+PHRzLWljb24gY2xhc3M9InRzX2ljb24gc21hbGwgZmxvYXRfbm9uZSB0ZWFtX2ljb24gYy1pY29uLS1zbGFjayBkZWZhdWx0IHNpZ251cF9pY29uIj48L3RzLWljb24+PHNwYW4gY2xhc3M9InN3aXRjaGVyX2xhYmVsIj5DcmVhdGUgYSBuZXcgd29ya3NwYWNlPC9zcGFuPjwvYT48L2xpPjwvdWw+PC9kaXY+PC9uYXY+PGRpdiBpZD0icGFnZSIgY2xhc3M9IiI+PGRpdiBpZD0icGFnZV9jb250ZW50cyIgZGF0YS1xYT0icGFnZV9jb250ZW50cyIgY2xhc3M9IiI+PGRpdiBpZD0icHJlbG9hZCI+PC9kaXY+PGRpdiBpZD0iY29udGVudCIgZGF0YS1iYWNrZ3JvdW5kPSJodHRwczovL2Euc2xhY2stZWRnZS5jb20vODA1ODgvaW1nLzQwNC9tYXJyYWtlc2gtbWVhZG93LTgwLmpwZyI+PGltZyBpZD0iYmFja2dyb3VuZCIgc3JjPSJkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhBUUFCQUlBQUFBQUFBUC8vL3lINUJBRUFBQUFBTEFBQUFBQUJBQUVBQUFJQlJBQTciPjxkaXYgaWQ9InNwcml0ZS13cmFwcGVyIj48ZGl2IGNsYXNzPSJzcHJpdGUgcGlnZ3kgcGlnZ3lfY2hld2luZyI+PC9kaXY+PGRpdiBjbGFzcz0ic3ByaXRlIGNoaWNrZW4gY2hpY2tlbl93YWxrX2xyIj48ZGl2IGNsYXNzPSJzdWJfc3ByaXRlIj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJzcHJpdGUgY2hpY2tlbiBjaGlja2VuX3BlY2tfMnggZmxpcHBlZCI+PC9kaXY+PGRpdiBjbGFzcz0ic3ByaXRlIHBpZ2d5IHBpZ2d5X3dhbGsgcGlnZ3lfd2Fsa19sciI+PC9kaXY+PGRpdiBjbGFzcz0ic3ByaXRlIGNoaWNrZW4gY2hpY2tlbl93YWxrX3JsIGZsaXBwZWQiPjxkaXYgY2xhc3M9InN1Yl9zcHJpdGUiPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9InNwcml0ZSBwaWdneSBwaWdneV93YWxrIGZsaXBwZWQgcGlnZ3lfd2Fsa19ybCI+PC9kaXY+PGRpdiBjbGFzcz0ic3ByaXRlIGJ1dHRlcmZseSBidXR0ZXJmbHlfYW5nbGUgYnV0dGVyZmx5X2FuZ2xlX2xyIj48L2Rpdj48ZGl2IGNsYXNzPSJzcHJpdGUgYnV0dGVyZmx5IGJ1dHRlcmZseV9hbmdsZV8xIGJ1dHRlcmZseV9hbmdsZV8xX2xyIj48L2Rpdj48ZGl2IGNsYXNzPSJzcHJpdGUgYnV0dGVyZmx5IGJ1dHRlcmZseV9yb29rZWQgYnV0dGVyZmx5X3Jvb2tlZF9sciI+PC9kaXY+PGRpdiBjbGFzcz0ic3ByaXRlIGJ1dHRlcmZseSBidXR0ZXJmbHlfc2lkZSBidXR0ZXJmbHlfc2lkZV9sciI+PC9kaXY+PGRpdiBjbGFzcz0ic3ByaXRlIGJ1dHRlcmZseSBidXR0ZXJmbHlfYW5nbGUgZmxpcHBlZCBidXR0ZXJmbHlfYW5nbGVfcmwgYm90dG9tIj48L2Rpdj48ZGl2IGNsYXNzPSJzcHJpdGUgYnV0dGVyZmx5IGJ1dHRlcmZseV9hbmdsZV8xIGZsaXBwZWQgYnV0dGVyZmx5X2FuZ2xlXzFfcmwgYm90dG9tIj48L2Rpdj48ZGl2IGNsYXNzPSJzcHJpdGUgYnV0dGVyZmx5IGJ1dHRlcmZseV9yb29rZWQgZmxpcHBlZCBidXR0ZXJmbHlfcm9va2VkX3JsIGJvdHRvbSI+PC9kaXY+PGRpdiBjbGFzcz0ic3ByaXRlIGJ1dHRlcmZseSBidXR0ZXJmbHlfc2lkZSBmbGlwcGVkIGJ1dHRlcmZseV9zaWRlX3JsIGJvdHRvbSI+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBpZD0ibG9hZGVyIj48P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pjxzdmcgd2lkdGg9IjMycHgiIGhlaWdodD0iMzJweCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiIGNsYXNzPSJ1aWwtaGVhcnQiPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPTEwMCBoZWlnaHQ9MTAwIGZpbGw9Im5vbmUiIGNsYXNzPSJiayI+PC9yZWN0PjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUwIDUwKSI+PGc+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTUwIC01MCkiPjxwYXRoIGQ9Ik05MCwzMC4yYzAtMTEtOS0yMC4xLTIwLTIwLjFzLTIwLDkuMS0yMCwyMC4yYzAsMC4yLDAtMC4zLDAsMC43SDUwYzAtMSwwLTAuNiwwLTAuOGMwLTExLTktMjAuMS0yMC0yMC4xcy0yMCw5LjEtMjAsMjAuMiBjMCwwLjIsMC0wLjMsMCwwLjdoMGMwLjMsMjAsMzAsMzkuNSw0MCw1NWMxMC0xNS41LDM5LjctMzUsNDAtNTVoMEM5MCwzMCw5MCwzMC40LDkwLDMwLjJ6IiBmaWxsPSIjZjAyIj48L3BhdGg+PC9nPjxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgdHlwZT0ic2NhbGUiIGZyb209IjEuMyIgdG89IjAuOSIgZHVyPSIxcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGNhbGNNb2RlPSJzcGxpbmUiIHZhbHVlcz0iMS4zOzAuOTsxLjE7MC45IiBrZXlUaW1lcz0iMDswLjM7MC4zMDE7MSIga2V5U3BsaW5lcz0iMCAwLjc1IDAuMjUgMTswIDEgMCAxOzAgLjc1IC4yNSAxIj48L2FuaW1hdGVUcmFuc2Zvcm0+PC9nPjwvZz48L3N2Zz48L2Rpdj48ZGl2IGNsYXNzPSJjYXJkIj48aDE+PGkgY2xhc3M9InRzX2ljb24gdHNfaWNvbl93YXJuaW5nIG11c3RhcmRfeWVsbG93Ij48L2k+VGhlcmXigJlzIGJlZW4gYSBnbGl0Y2jigKY8L2gxPjxwPldl4oCZcmUgbm90IHF1aXRlIHN1cmUgd2hhdCB3ZW50IHdyb25nLiBZb3UgY2FuIGdvIGJhY2ssIG9yIHRyeSBsb29raW5nIG9uIG91ciA8YSBocmVmPSJodHRwOi8vZ2V0LnNsYWNrLmhlbHAvaGMvZW4tdXMiIHRhcmdldD0iX2JsYW5rIj5IZWxwIENlbnRlcjwvYT4gaWYgeW91IG5lZWQgYSBoYW5kLjwvcD48L2Rpdj48bm9zY3JpcHQ+PHN0eWxlPiNsb2FkZXIgewoJCQkJCQlkaXNwbGF5OiBub25lOwoJCQkJCX08L3N0eWxlPjwvbm9zY3JpcHQ+PHNjcmlwdD4KLy8gZmlyZSA0MDQKd2luZG93LmRhdGFMYXllciA9IHdpbmRvdy5kYXRhTGF5ZXIgfHwgW107CndpbmRvdy5kYXRhTGF5ZXIucHVzaCh7CgknZXZlbnQnIDogJ0Vycm9yNDA0JywKfSk7CgooZnVuY3Rpb24oKSB7CgkvLyBxdWljayBoYWNrOiA4LWJpdCBhbHBoYS1mcmllbmRseSBsb2dvCgl2YXIgbG9nbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoZWFkZXJfbG9nbycpOwoJdmFyIGFsdF9zcmMgPSAnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFQQUFBQUJJQ0FNQUFBRC9Fb2k0QUFBQytsQk1WRVVBQUFBb0ZTY3FJakVvSlRNckxEUXJNamcxTURrN016Z3FPRDA5TlRvL09EMUNPajlFUEVGRlBVTklQVWhOUEVtOUh5bEpRVWJQRjF4TVJFbGlQVkZkUDFDd0oxcThLU3BQUjB6TUlWZkxJVnVSTTFTcksxa3dVazZMTmxpR09GY3NWVkhCTFNkVFNrL1BKbDVWVFZJeldFL05LMDYvTkNqUksyWlpVVmJDTnlyTk0wVXlZRlZjVkZuUE5reGZWbHd1WmxyUU5XaGhXRjdKUGpaa1cySFVPbkhKUlRmRlNDcG5YMlJxWW1kc1pHblZSSFhJVVNodVpXdHhhRzdNVlRMSldDeDFiSEZMZVc0YWpIUjRjSFhhVW9OMGNuWmdnRFZlZ0RzN2gydDhjM2t6aTI0aGtIaG9namVBZG56YldvWjdlWDEwaGpZam1IaDdoampTY0N5SGZvUTBtSGwvaVRRdW1vQ0ZpRFY0aTBHRGdZV0dpVGJRZEMxSGxYemdabzU4ajBXSGhZbEFuWGlKaDR2Z2JaTFVlVDh0cFg3VWZDcCtrazQ2bzMzZ2I1bU1pbzQrcG8yamtUWGZkWnVRanBMV2hDdVNrSlNubERBNHJvYXVsREk1cjRlVms1YzhzWWxEclorSG9HZmpmNk9abHBxRG9tNUJ0WTJjbVo3amhxZUNxWCtmbmFHQXFvYmNtUzdPbml0U3VaR2lvS1RWbmk1UXZadm1qNjJsbzZmZ29TdXBwcXBmd0o5bnZhcmVwamJvbDdOc3ZiR3RxcTkydmJOeXZybXdyYkxpcWtKdHc2UnB3Y2h2d2NLeXI3Und4cWJyb2JwdHhjemhzVTYydExodng4NTZ4ODkreXF6bHRWbTZ1THpzcWNCK3k5VG51R0srdThEa3VtS0l6N2p1c2NibHZXdkJ2OE9QenRMRXdjYkp3OEtWMUw3cXczZnZ1c3pJeHNyTXg4V1gxZG5NeWM3dHg0SHV5WW1qMnNYUnpNcnh3dFBQemRHajJkL1V6czNUME5YajBaL3MwSlNvM3VUWTB0R3gzOHp6eTlyWDFObnYxSjZ5MytiYzE5WG8yS3k0NGVLODR0RGIyTnp4MktmZjJkanowOSs4NXRybDNiemYzT0h6M0xIajN0ekY1dW5tNE4vSTZ1REk2ZXpsNHVmMzRyM3E1T1A1NE9ycDV1djU1c2ZVN2ZMVjcrYjU2TS90NnUvdzZ1bmI4Ty82NlBENzdkcmg4K3p3N3ZMMzhOdm04L1QyOE8vdzh1LzU3L1gyOC9qMDl2UHUrUFA2OXVmKzl1N3orUHY4OXZYNitlLzQrdmY4K2Y3MisvNy8rdm42L1BuOC92dmVndjF1QUFBQUFYUlNUbE1BUU9iWVpnQUFDZ2RKUkVGVWVBSGwyZ1Y0RTJrZXgvSC82bnRwc2FicnZxVXJTQTZIdGx4N0c5emRZZDBYeVhhbDJTTzQweFQzTG1sd0QxcTVXeVM0dXgvZFhuSGJTb3FVYVVtZTU2YVp5WnYvWk43Sk5KQVQ2T2Z4ZmJEdnppOXZNNU5BS2JtZ0xMbTBmSko1MHZyclVFYTQxcHZkSnAyQ3NtRzcyZU4zS0F2K01GTXBUaWdEOXBxOS9oT2p0dmR0cDQrSmlXMlhDY0dRMVNvbU9pbzZKbTRJUExDbEtIZ1ZCRjhVRVNSRE1Bd25vcUtnQkUrNkIwRlhsd2ltUWpDWWlDZ1hIdFRmemYvWlRkY2dnaVFJaHZoQWdsM0gxeTFZZDl3RlVyK2I1WnUrZTI3ZmpvTTVFQlE2SWhnRHdXQWdvaXVnNnVJRVk0a0pGMEhDT2NsbjAzZlBwRnZjMHU5Q0VGUWhndUVRREgxTEgzeGpzRkV3MktkNHZSazV3TmRTUzRKUkhFa0VRNElibkEwcW5PT01IaE9VTmozMnArNmZXTEFkOFBBaWdocjhPUkZsZ29wL0dyMk9zemJOMXpadjBhTHRkQXQyTjNqQnB1QUdud1VWNjFEd0F0OU44N1U5K2RvU2d5ellCWGhvTC8xbmdrK0RpZ1VvZURBSDJJbWYrb2kxdkY0VzdGendnaE9DRzN3U1ZLd3dzamRkZkM1OVR0c1dYczJuNGVBY2VHamhSQkFmM09Dam9PSTREbDdnclozSFozMkNnaVdiWGczQkN6YjhsNE01SThaNWEzbkRVQy9lOVB3Y2VIaGhRUTN1UzBUN1FmMUZqQndTYXdVS201NS9GWUlZM0RlNHdYc2dnRTMvL0cwL3ZoYjVwZ1h5TjR2YnZCMTNJUUJPKzVoV2RTUEtoMVdKYmpaOFk2RjY4T1dOMWhsSnliYWR1YURzOGg3YjFNUVppL1k3R01FN0FjdTJIWFhLTmoxWXJQMnFVK1BHamVmZ1h2bW01NldmSzRZQU9NWkVFRVNqdHhYNUNYYlpEZDVmcnZ2VXp2NGZhSWdrSHJYajkvZ050b1lRRWhvMzNNNUpOMDFyZWIrZ1hObW1aYlZxVWw4aXZzS25Pc0d0UEJGOERpSXUwZmRYUjZXQkwxc1ZJbFZqa1ZNU3ZCVzhaaEJSK2VHU1RkTmFYZytMMHFhNy83UU5BcFJJV0dwY2xnUi9Db0psa1VUTzVBVHNaRFNScTNzVTN5MmhXVXdsVkZlZ2lpK2t0Mm1NekxaZ0k4VGF6aitNTXB1WFFtQ3NoQzJCRWN4MUpVd2RBRWtyUjFoQzB3RGk1Y0ZKYUNvRjlPZnRsdmtXU3c4Y3pOaDA1LzU4YllsN0VJakxvWVROS2c5MjFDWUt4Z0NWckNGc3NRQUpSTFNaTWErNjR1bVd3OWVXK0FYMXlqYmRrYS8xT0FLQjZFM1l3amw1Y0NwUmRCaEV5cjltaGp3WTk5YklneEt1SGZReW9sN3BPYjNrNEFrekV0Q211VkJhT1B4b1FWSGV6cWx4a2p0K3p6eDdBNC9URVJZODZpdGhSSUdPUTgrME5vTGJHTlI3RTl4b3IyelR0RFlId0RrVEY5OEdkYklMVXVVS0hia3BqSkN3QWtZd2JQVzhIcHNscHE1ZGxpQWVUdmlHRC8rbmlFK1RGaVVQYVZMZWMxRlJjSVpTN3dXYXk5ejBraDA1NkZsZXdKdkdtMG9GcjRJeHNjdEFHdHdWUFpRS0g1TUxndjB4eEdPNDc2Q3IyRURndE1XSnJ3a2N6TzZGTFNoNHRuVFRmTzFWRjRqTzQrQ0ZEL0pZclFDWXlxTmdZZFNoUXh4QWNiRkVGT2R6Z2ZYNEQ5eW9xK0lBM2hBaVNsUG9oU1VvV0xycGlkNWFlSWhOOTVXT1RDMFl6cHF1QUpaRlJLR2NNSGxSVkJGZ25KQS9IQVV6ZTJHZWhibnBUbC85L0t1ZjU5TjdIK0N6Z1BKVzlXQTVkRTFQQXpxRk5abisvN1pVM0ZzN0Y0QjVoV2ZUV2lQdkZtQ1htSnUrLzY5ODhHOFJvU0lUTmhjRUh0d2JUNlF1d1dlY0hLMWNpM3JyNW9IWFFRdldnOWJ5ZGdIbWttLzYydHltbGJYYVd1UDlOanRDQ0ZhbFE2SzlTRDJZeTk1djMzK1drN3dtckFDNXhHT3p5aEVaUWFnb0J5REY4MUh2dkNuZi9taWtmRGI5RCttbTgrZTIxNG9hWGd2c2pVZW9maEhuTDNobjN4b2FjUk1kckhsOTBadXRuVVFVd2dGVEVwRUpkWURFVlZyTTN3UTVCeHNSNVUyUC9MTDlLMXF2aHZkQldXNDRrUXRMNHBTQzAyb1ROaFBBR3ZxcUJKVmdaQkZJNVd4eDMrQ2V1WXVlNWZuZDlNZ3VEVjZzOUs0V1d3eCs3QWtqRERXeW1jRWNIb1RzWmlNWnZXMW1ta3JrUW8rQ2orS2NuR0wwUE43dnBrZCt5TmZ5Nm1peDl1QlBaalJoZUNsTGZBQ0FnN2tZb2h5TUxtQVQxV0FrSWhjVStkMDByZVZWMVdMMTFJNXExa3hqWFNoWVBIYTdFbVh4QUZhMUt6eURzTVE1Z2NuL3BndFgvcFd2cFNTYmJnaHE5cGlpTmNTSFRSYWNJWmxBVkxQZXZXTTArQXFuRVpFTzJKSVZ4eUhqZjlPRkc3Nm9ySzJQZXFXYi9nNUtvVERERkJNcXV3RUt3N2VIVWNTajlwaVQ0cG5YQWYycjl4T1JKbGY5WWNOVXRHOWJRSnN1S3FubFZVTzkwazF2Z2xMaTdKK1c5eDdWdnNIWnRHZXFDenlXb1ZPNmtGN3ZOYXB2YzVJQTlNU2pmR2FwTjgzWHZpOW12WXdualRmOUJRUWd0eDN4NE5BbkQ1L2lWK0JVVm9NSnY4L1Vxd1VQQjRETFljU2pMbGVxVGMvYU5JQ3ZwZW93TjExNThuMElTRE1peWtiQm42TnZhTHprWkIyOFEvRHRIN0VESnB0RE05K0Z4NE1DMTJqNlBMN2w2MCsrUUdObG0zNVBQSy9HWHdQLzF2UzJvZ0I4RDVlSFBqM3NpODVvUFNBR2ZNMzJlSSswSzREc1R5eUFFamFmWTZvSm9UYjYzL1RQcmQ5Njhva25ubmhPSy9HMno2YnJEVDBHYXZacitFRnRCQ1NPQ0VMQUo5aHpQbFVCTDBjRWVtdUo3NGNqVDRPSE0wbERZampncmNYN2w0NDZ3cUc0YWI3MkhiNjJ4TE8wVmI3cCtxaFdtVXU0d1lsWlV5UzdoWXZHM3dBdzRKdS9iUEFvaUNNZWllNjVFQ3JFSVB3eWJwSE9QV0luZmlCaWtoL2JYWUhOOWRFN1R6MUJ2YWJGL2t4cjMvN2creFJRaFVjVzFqVXA5ZlJSMi9BcStCekZ3ZWluYUEwSENESWlpZlNYdTZJSW9tdG4rRlJmRHAwQ0dlZ0ZMeHQxS2pBY0cxcXZBcTJWYi9vOWQrMkxIM3h2NXYwUnlGY0w1Y3JmeE1FSkFIQlRRMFJoSnZ2cHpMVkRxaEFCT3JxenloTWxWb0ROK0FVdkczVXVvNWFQZWhNSHl6Zjk0bCsrTmd1Mmd6cU9LRXFVZjZtbEhmRWpHZjNrWVdvSHNGVVdqSC85cHlDeHFhRVE5WXI0K21WdW1xK2xTclZwUFZHZzUrVGYwOG91UjVSWldUY0lTRVFtT3NYSEFOV0JzQjhiREtCVmtrMC9yNlVxZjd5eU1NV01sR2JUbklFd1JUbFkzOFN6YWVRZHN2dGFXd2l6TnhzQWp1TDVpSEpmSWg1Vk9LQW1hNmszV0p0K3BmM0tmUHo5ZUpWTkl4dWppSnlCQTRGTytpKzArVjVqVTZiMC9UQitXbzMxdmdtODAraUVvMUx4cHpFZStlZ0pobXpUZk8zaWZIQzdqb05Ub0hUc1RUUStjN2FEUncyZmQ1TlhXa2wya0FxWGlXZ3Rmak9qSXhMUlc4RXRFd2ZMSGhXSHg2V0J4MkthSzk5MDA3bjVRS1U4MFBQcHdsUkQzWER4QU5ZUHp3U3Y1Tm8xZERwZGphalQ0SEUyb2E1R3VHTXliQVplM3liTjlQcG1UYnBlQWV4MFlteW9lTnBISjJXRHlOazdMaWFhRjNjWUVLNUozUTRtNjlZODFpdFl0dWsvTmJvR21HVFRseUFRenN2N2oyWTdYS0NPeTlwLzlESUhhaHhaT3plZWRVRGdwTUZvMDgvVS9NeG92QUhZZFdud0kydXlGcXY0Qk8vcG10Mk1KWDREREc5NmtoTWVXZGNxNCtCWG4zaTZlamVGcnhPZk1sUHI0UkUySGorVEcvcVJFWkZ1MnJuUUxKcDVCeDVsQThYYVdnTjN1L0MzaVdXYnZyZFE3TDBFajdaajN6V3MxWFRncHZ2QXU0aURKNENVODhqQ1NlYVU3VTU0bkl4bWJScHh3bU5Hc3VuajhQaVRiUG9RbEFGNDB4ZWhEUGpOU0kyR3NvQWJqUi9IbHdVWEI0dTlLNkNNdVBHcmU4KzdYRkJtM0xweDQ1WVRIaXYvQm91WVNLOVlUVFRuQUFBQUFFbEZUa1N1UW1DQyc7CglpZiAobG9nbykgewoJCWxvZ28gPSBsb2dvLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbWcnKVswXTsKCQlpZiAoIWxvZ28pIHJldHVybjsKCQlsb2dvLnNyYyA9IGFsdF9zcmM7Cgl9Cn0oKSk7Cjwvc2NyaXB0PjwvZGl2PjxkaXYgaWQ9Im92ZXJsYXkiPjwvZGl2PjwvZGl2Pjxmb290ZXIgZGF0YS1xYT0iZm9vdGVyIj48c2VjdGlvbiBjbGFzcz0ibGlua3MiPjxkaXYgY2xhc3M9ImdyaWQiPjxkaXYgY2xhc3M9ImNvbCBzcGFuXzFfb2ZfNCBuYXZfY29sIj48dWw+PGxpIGNsYXNzPSJjYXRfMSI+VXNpbmcgU2xhY2s8L2xpPjxsaT48YSBocmVmPSJodHRwczovL3NsYWNrLmNvbS9pcyIgZGF0YS1xYT0icHJvZHVjdF9mb290ZXIiIGRhdGEtY2xvZy1ldmVudD0iV0VCU0lURV9DTElDSyIgZGF0YS1jbG9nLXBhcmFtcz0iY2xpY2tfdGFyZ2V0PWZvb3Rlcl9wcm9kdWN0Ij5Qcm9kdWN0PC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vc2xhY2suY29tL2VudGVycHJpc2UiIGRhdGEtcWE9ImVudGVycHJpc2VfZm9vdGVyIiBkYXRhLWNsb2ctZXZlbnQ9IldFQlNJVEVfQ0xJQ0siIGRhdGEtY2xvZy1wYXJhbXM9ImNsaWNrX3RhcmdldD1mb290ZXJfZW50ZXJwcmlzZSI+RW50ZXJwcmlzZTwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwczovL3NsYWNrLmNvbS9wcmljaW5nP3VpX3N0ZXA9MjgmdWlfZWxlbWVudD01IiBkYXRhLXFhPSJwcmljaW5nX2Zvb3RlciIgZGF0YS1jbG9nLWV2ZW50PSJXRUJTSVRFX0NMSUNLIiBkYXRhLWNsb2ctcGFyYW1zPSJjbGlja190YXJnZXQ9Zm9vdGVyX3ByaWNpbmciPlByaWNpbmc8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cHM6Ly9nZXQuc2xhY2suaGVscC9oYy9lbi11cyIgZGF0YS1xYT0ic3VwcG9ydF9mb290ZXIiIGRhdGEtY2xvZy1ldmVudD0iV0VCU0lURV9DTElDSyIgZGF0YS1jbG9nLXBhcmFtcz0iY2xpY2tfdGFyZ2V0PWZvb3Rlcl9zdXBwb3J0Ij5TdXBwb3J0PC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vc2xhY2suY29tL2d1aWRlcyIgZGF0YS1xYT0iZ2V0dGluZ19zdGFydGVkIiBkYXRhLWNsb2ctZXZlbnQ9IldFQlNJVEVfQ0xJQ0siIGRhdGEtY2xvZy1wYXJhbXM9ImNsaWNrX3RhcmdldD1mb290ZXJfZ2V0dGluZ19zdGFydGVkIj5TbGFjayBHdWlkZXM8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cHM6Ly9zbGFjay5jb20vYXBwcyIgZGF0YS1xYT0iYXBwX2RpcmVjdG9yeSIgZGF0YS1jbG9nLWV2ZW50PSJXRUJTSVRFX0NMSUNLIiBkYXRhLWNsb2ctcGFyYW1zPSJjbGlja190YXJnZXQ9Zm9vdGVyX2FwcF9kaXJlY3RvcnkiPkFwcCBEaXJlY3Rvcnk8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cHM6Ly9hcGkuc2xhY2suY29tLyIgZGF0YS1xYT0iYXBpIiBkYXRhLWNsb2ctZXZlbnQ9IldFQlNJVEVfQ0xJQ0siIGRhdGEtY2xvZy1wYXJhbXM9ImNsaWNrX3RhcmdldD1mb290ZXJfYXBpIj5BUEk8L2E+PC9saT48L3VsPjwvZGl2PjxkaXYgY2xhc3M9ImNvbCBzcGFuXzFfb2ZfNCBuYXZfY29sIj48dWw+PGxpIGNsYXNzPSJjYXRfMiI+U2xhY2sgPHRzLWljb24gY2xhc3M9InRzX2ljb25faGVhcnQiPjwvdHMtaWNvbj48L2xpPjxsaT48YSBocmVmPSJodHRwczovL3NsYWNrLmNvbS9qb2JzIiBkYXRhLXFhPSJqb2JzIiBkYXRhLWNsb2ctZXZlbnQ9IldFQlNJVEVfQ0xJQ0siIGRhdGEtY2xvZy1wYXJhbXM9ImNsaWNrX3RhcmdldD1mb290ZXJfam9icyI+Sm9iczwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwczovL3NsYWNrLmNvbS9jdXN0b21lcnMiIGRhdGEtcWE9ImN1c3RvbWVycyIgZGF0YS1jbG9nLWV2ZW50PSJXRUJTSVRFX0NMSUNLIiBkYXRhLWNsb2ctcGFyYW1zPSJjbGlja190YXJnZXQ9Zm9vdGVyX2N1c3RvbWVycyI+Q3VzdG9tZXJzPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vc2xhY2suY29tL2RldmVsb3BlcnMiIGRhdGEtcWE9ImRldmVsb3BlcnMiIGRhdGEtY2xvZy1ldmVudD0iV0VCU0lURV9DTElDSyIgZGF0YS1jbG9nLXBhcmFtcz0iY2xpY2tfdGFyZ2V0PWZvb3Rlcl9kZXZlbG9wZXJzIj5EZXZlbG9wZXJzPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vc2xhY2suY29tL2V2ZW50cyIgZGF0YS1xYT0iZXZlbnRzIiBkYXRhLWNsb2ctZXZlbnQ9IldFQlNJVEVfQ0xJQ0siIGRhdGEtY2xvZy1wYXJhbXM9ImNsaWNrX3RhcmdldD1mb290ZXJfZXZlbnRzIj5FdmVudHM8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cHM6Ly9zbGFja2hxLmNvbS8iIGRhdGEtcWE9ImJsb2dfZm9vdGVyIiBkYXRhLWNsb2ctZXZlbnQ9IldFQlNJVEVfQ0xJQ0siIGRhdGEtY2xvZy1wYXJhbXM9ImNsaWNrX3RhcmdldD1mb290ZXJfYmxvZyI+QmxvZzwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwczovL3NsYWNrLnNob3AvIiBkYXRhLXFhPSJzbGFja19zaG9wIiBkYXRhLWNsb2ctZXZlbnQ9IldFQlNJVEVfQ0xJQ0siIGRhdGEtY2xvZy1wYXJhbXM9ImNsaWNrX3RhcmdldD1mb290ZXJfc2xhY2tfc2hvcCI+U2xhY2sgU2hvcDwvYT48L2xpPjwvdWw+PC9kaXY+PGRpdiBjbGFzcz0iY29sIHNwYW5fMV9vZl80IG5hdl9jb2wiPjx1bD48bGkgY2xhc3M9ImNhdF8zIj5MZWdhbDwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vc2xhY2suY29tL3ByaXZhY3ktcG9saWN5IiBkYXRhLXFhPSJwcml2YWN5IiBkYXRhLWNsb2ctZXZlbnQ9IldFQlNJVEVfQ0xJQ0siIGRhdGEtY2xvZy1wYXJhbXM9ImNsaWNrX3RhcmdldD1mb290ZXJfcHJpdmFjeSI+UHJpdmFjeTwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwczovL3NsYWNrLmNvbS9zZWN1cml0eSIgZGF0YS1xYT0ic2VjdXJpdHkiIGRhdGEtY2xvZy1ldmVudD0iV0VCU0lURV9DTElDSyIgZGF0YS1jbG9nLXBhcmFtcz0iY2xpY2tfdGFyZ2V0PWZvb3Rlcl9zZWN1cml0eSI+U2VjdXJpdHk8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cHM6Ly9zbGFjay5jb20vdGVybXMtb2Ytc2VydmljZSIgZGF0YS1xYT0idG9zIiBkYXRhLWNsb2ctZXZlbnQ9IldFQlNJVEVfQ0xJQ0siIGRhdGEtY2xvZy1wYXJhbXM9ImNsaWNrX3RhcmdldD1mb290ZXJfdG9zIj5UZXJtcyBvZiBTZXJ2aWNlPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vc2xhY2suY29tL3BvbGljaWVzIiBkYXRhLXFhPSJwb2xpY2llcyIgZGF0YS1jbG9nLWV2ZW50PSJXRUJTSVRFX0NMSUNLIiBkYXRhLWNsb2ctcGFyYW1zPSJjbGlja190YXJnZXQ9Zm9vdGVyX3BvbGljaWVzIj5Qb2xpY2llczwvYT48L2xpPjwvdWw+PC9kaXY+PGRpdiBjbGFzcz0iY29sIHNwYW5fMV9vZl80IG5hdl9jb2wiPjx1bD48bGkgY2xhc3M9ImNhdF80Ij5IYW5keSBMaW5rczwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vc2xhY2suY29tL2Rvd25sb2FkcyIgZGF0YS1xYT0iZG93bmxvYWRzIiBkYXRhLWNsb2ctZXZlbnQ9IldFQlNJVEVfQ0xJQ0siIGRhdGEtY2xvZy1wYXJhbXM9ImNsaWNrX3RhcmdldD1mb290ZXJfZG93bmxvYWRzIj5Eb3dubG9hZCBkZXNrdG9wIGFwcDwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwczovL3NsYWNrLmNvbS9kb3dubG9hZHMiIGRhdGEtcWE9ImRvd25sb2Fkc19tb2JpbGUiIGRhdGEtY2xvZy1ldmVudD0iV0VCU0lURV9DTElDSyIgZGF0YS1jbG9nLXBhcmFtcz0iY2xpY2tfdGFyZ2V0PWZvb3Rlcl9kb3dubG9hZHNfbW9iaWxlIj5Eb3dubG9hZCBtb2JpbGUgYXBwPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vc2xhY2suY29tL2JyYW5kLWd1aWRlbGluZXMiIGRhdGEtcWE9ImJyYW5kX2d1aWRlbGluZXMiIGRhdGEtY2xvZy1ldmVudD0iV0VCU0lURV9DTElDSyIgZGF0YS1jbG9nLXBhcmFtcz0iY2xpY2tfdGFyZ2V0PWZvb3Rlcl9icmFuZF9ndWlkZWxpbmVzIj5CcmFuZCBHdWlkZWxpbmVzPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vc2xhY2thdHdvcmsuY29tIiBkYXRhLXFhPSJzbGFja19hdF93b3JrIiBkYXRhLWNsb2ctZXZlbnQ9IldFQlNJVEVfQ0xJQ0siIGRhdGEtY2xvZy1wYXJhbXM9ImNsaWNrX3RhcmdldD1mb290ZXJfc2xhY2tfYXRfd29yayI+U2xhY2sgYXQgV29yazwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwczovL3N0YXR1cy5zbGFjay5jb20vIiBkYXRhLXFhPSJzdGF0dXMiIGRhdGEtY2xvZy1ldmVudD0iV0VCU0lURV9DTElDSyIgZGF0YS1jbG9nLXBhcmFtcz0iY2xpY2tfdGFyZ2V0PWZvb3Rlcl9zdGF0dXMiPlN0YXR1czwvYT48L2xpPjwvdWw+PC9kaXY+PC9kaXY+PC9zZWN0aW9uPjxkaXYgY2xhc3M9ImZvb3Rub3RlIj48c2VjdGlvbj48YSBocmVmPSJodHRwczovL3NsYWNrLmNvbSIgYXJpYS1sYWJlbD0iU2xhY2sgaG9tZXBhZ2UiIGRhdGEtY2xvZy1ldmVudD0iV0VCU0lURV9DTElDSyIgZGF0YS1jbG9nLXBhcmFtcz0iY2xpY2tfdGFyZ2V0PWZvb3Rlcl9zbGFja19pY29uIj48dHMtaWNvbiBjbGFzcz0iYy1pY29uLS1zbGFjayIgYXJpYS1oaWRkZW4+PC90cy1pY29uPjwvYT48dWw+PGxpPjxhIGhyZWY9Imh0dHBzOi8vc2xhY2suY29tL2hlbHAvY29udGFjdCIgZGF0YS1xYT0iY29udGFjdF91cyIgZGF0YS1jbG9nLWV2ZW50PSJXRUJTSVRFX0NMSUNLIiBkYXRhLWNsb2ctcGFyYW1zPSJjbGlja190YXJnZXQ9Zm9vdGVyX2NvbnRhY3RfdXMiPkNvbnRhY3QgVXM8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cHM6Ly90d2l0dGVyLmNvbS9TbGFja0hRIiBkYXRhLXFhPSJzbGFja190d2l0dGVyIiBkYXRhLWNsb2ctZXZlbnQ9IldFQlNJVEVfQ0xJQ0siIGRhdGEtY2xvZy1wYXJhbXM9ImNsaWNrX3RhcmdldD1mb290ZXJfc2xhY2tfdHdpdHRlciIgYXJpYS1sYWJlbD0iU2xhY2sgb24gVHdpdHRlciI+PHRzLWljb24gY2xhc3M9InRzX2ljb25fdHdpdHRlciIgYXJpYS1oaWRkZW4+PC90cy1pY29uPjwvYT48L2xpPjxsaSBjbGFzcz0ieXQiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2NoYW5uZWwvVUNZM1lFQ2dlQmNMQ3pJckZMUDRnYmx3IiBkYXRhLXFhPSJzbGFja195b3V0dWJlIiBkYXRhLWNsb2ctZXZlbnQ9IldFQlNJVEVfQ0xJQ0siIGRhdGEtY2xvZy1wYXJhbXM9ImNsaWNrX3RhcmdldD1mb290ZXJfc2xhY2tfeW91dHViZSIgYXJpYS1sYWJlbD0iU2xhY2sgb24gWW91VHViZSI+PHRzLWljb24gY2xhc3M9InRzX2ljb25feW91dHViZSIgYXJpYS1oaWRkZW4+PC90cy1pY29uPjwvYT48L2xpPjwvdWw+PC9zZWN0aW9uPjwvZGl2PjwvZm9vdGVyPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLyoqCiAqIEEgcGxhY2Vob2xkZXIgZnVuY3Rpb24gdGhhdCB0aGUgYnVpbGQgc2NyaXB0IHVzZXMgdG8KICogcmVwbGFjZSBmaWxlIHBhdGhzIHdpdGggdGhlaXIgQ0ROIHZlcnNpb25zLgogKgogKiBAcGFyYW0ge1N0cmluZ30gZmlsZV9wYXRoIC0gRmlsZSBwYXRoCiAqIEByZXR1cm5zIHtTdHJpbmd9CiAqLwpmdW5jdGlvbiB2dnYoZmlsZV9wYXRoKSB7CgkJIHZhciB2dnZfd2FybmluZyA9ICdZb3UgY2Fubm90IHVzZSB2dnYgb24gZHluYW1pYyB2YWx1ZXMuIFBsZWFzZSBtYWtlIHN1cmUgeW91IG9ubHkgcGFzcyBpbiBzdGF0aWMgZmlsZSBwYXRocy4nOyBpZiAoVFMgJiYgVFMud2FybikgeyBUUy53YXJuKHZ2dl93YXJuaW5nKTsgfSBlbHNlIHsgY29uc29sZS53YXJuKHZ2dl93YXJuaW5nKTsgfSAKCXJldHVybiBmaWxlX3BhdGg7Cn0KCnZhciBjZG5fdXJsID0gImh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tIjsKdmFyIHZ2dl9hYnNfdXJsID0gImh0dHBzOlwvXC9zbGFjay5jb21cLyI7CnZhciBpbmNfanNfc2V0dXBfZGF0YSA9IHsKCWVtb2ppX3NoZWV0czogewoJCWFwcGxlOiAnaHR0cHM6Ly9hLnNsYWNrLWVkZ2UuY29tLzgwNTg4L2ltZy9lbW9qaV8yMDE3XzEyXzA2L3NoZWV0X2FwcGxlXzY0X2luZGV4ZWRfMjU2LnBuZycsCgkJZ29vZ2xlOiAnaHR0cHM6Ly9hLnNsYWNrLWVkZ2UuY29tLzgwNTg4L2ltZy9lbW9qaV8yMDE3XzEyXzA2L3NoZWV0X2dvb2dsZV82NF9pbmRleGVkXzI1Ni5wbmcnLAoJfSwKfTsKPC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgkvLyBjb21tb24gYm9vdF9kYXRhCgl2YXIgYm9vdF9kYXRhID0geyJhcGlfdXJsIjoiXC9hcGlcLyIsImFwcCI6IndlYiIsInVzZXJfaWQiOm51bGwsInRlYW1faWQiOiJUMDAwMDAwMDAiLCJ2aXNpdG9yX3VpZCI6IjQ5bGFncXFuM2xnbmF0cnd2OHNuaGlrbDkiLCJub19sb2dpbiI6dHJ1ZSwidmVyc2lvbl90cyI6IjE1NjgyMjI0OTAiLCJ2ZXJzaW9uX3VpZCI6IjRmZWEwYzMzM2NkMzQ5YzdhM2VkMzUxZTRiZjkxMjE0MDRlZTgwMDMiLCJjYWNoZV92ZXJzaW9uIjoidjE4LWt1ZHUiLCJjYWNoZV90c192ZXJzaW9uIjoidjItYnVubnkiLCJyZWRpcl9kb21haW4iOiJzbGFjay1yZWRpci5uZXQiLCJzaWduaW5fdXJsIjoiaHR0cHM6XC9cL3NsYWNrLmNvbVwvc2lnbmluIiwiYWJzX3Jvb3RfdXJsIjoiaHR0cHM6XC9cL3NsYWNrLmNvbVwvIiwidGVhbV91cmwiOiIiLCJpbWFnZV9wcm94eV91cmwiOiJodHRwczpcL1wvc2xhY2staW1ncy5jb21cLyIsImJlYWNvbl90aW1pbmdfdXJsIjoiaHR0cHM6XC9cL3NsYWNrLmNvbVwvYmVhY29uXC90aW1pbmciLCJiZWFjb25fZXJyb3JfdXJsIjoiaHR0cHM6XC9cL3NsYWNrLmNvbVwvYmVhY29uXC9lcnJvciIsImNsb2dfdXJsIjoiY2xvZ1wvdHJhY2tcLyIsImFwaV90b2tlbiI6IiIsImhjX3RyYWNraW5nX3FzIjoiIiwidnZ2X3BhdGhzIjp7Imx6X3N0cmluZyI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9sei1zdHJpbmctMS40LjQud29ya2VyLjhkZTFiMDBkNjcwZmYzZGM3MDZhMC5qcyIsImNvZGVtaXJyb3IiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvci5taW4uNjhjNmEwNjEyYWJjY2M2Yjg4NTkubWluLmpzIiwiY29kZW1pcnJvcl9hZGRvbl9zaW1wbGUiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9zaW1wbGUuOTkzZmM1ZjhkZGQ0MDFmNjMyYWEubWluLmpzIiwiY29kZW1pcnJvcl9sb2FkIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbG9hZC5hOThkZGYxY2ExODVhMmE1MTcxMS5taW4uanMiLCJjb2RlbWlycm9yX2ZpbGVzIjp7ImFwbCI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfYXBsLjljZTk4YzhiMjQ0NWIyMjNjODdmLm1pbi5qcyIsImFzY2lpYXJtb3IiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX2FzY2lpYXJtb3IuMzU1ODc5MzdlYTUxYzJhMjNmMjEubWluLmpzIiwiYXNuLjEiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX2Fzbi4xLjAxYzYxMDg2MjM5N2UyNWJlOTkxLm1pbi5qcyIsImFzdGVyaXNrIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19hc3Rlcmlzay5kOTNiNGFiNDg4ZmEzOWQxNTM1YS5taW4uanMiLCJicmFpbmZ1Y2siOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX2JyYWluZnVjay4zMjIxYWExYmI5MDE4NmJjNmQ0Yy5taW4uanMiLCJjbGlrZSI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfY2xpa2UuM2ExOGU4NjhjNjdmNmJlYzA5MWMubWluLmpzIiwiY2xvanVyZSI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfY2xvanVyZS5iZjJmODQyMjlkOTUxZGYxMDM5MS5taW4uanMiLCJjbWFrZSI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfY21ha2UuNGNiMzgxODMxNDgzYzRmNTRjNTcubWluLmpzIiwiY29ib2wiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX2NvYm9sLmUzYzhjYmZjNTdkMDM1NjY3N2JlLm1pbi5qcyIsImNvZmZlZXNjcmlwdCI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfY29mZmVlc2NyaXB0LmU1NzAwNjI2ZjExNGYyOTkwNTc5Lm1pbi5qcyIsImNvbW1vbmxpc3AiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX2NvbW1vbmxpc3AuODU1ZWRmYzBlMWQ5MWNhMDVjMTYubWluLmpzIiwiY3NzIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19jc3MuMjdmMGZhMWYyZjk5NzM2NzhmNDEubWluLmpzIiwiY3J5c3RhbCI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfY3J5c3RhbC5hOGU0ZTJkZjFjMTE1Y2Q4MGFjZi5taW4uanMiLCJjeXBoZXIiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX2N5cGhlci41MTYyNjQ2NzVlMzM5NjQ4N2YzZC5taW4uanMiLCJkIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19kLjJhNTNkNTAyZTY2Nzc3MGQyZDUwLm1pbi5qcyIsImRhcnQiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX2RhcnQuZDEwOTNmM2I5MzIzN2VhNzNkZGEubWluLmpzIiwiZGlmZiI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfZGlmZi40Yjc2ZDcwMmZmZDhlNDBjYjM4ZS5taW4uanMiLCJkamFuZ28iOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX2RqYW5nby4xYTZjMDMxYTI2ZGFhMjFhNjliOC5taW4uanMiLCJkb2NrZXJmaWxlIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19kb2NrZXJmaWxlLjYwNDM3Y2RkNzMzZGRmZjRkNjllLm1pbi5qcyIsImR0ZCI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfZHRkLjVhZjNiYmY5Mzk2MGM4NGY1MDJmLm1pbi5qcyIsImR5bGFuIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19keWxhbi43Y2U4ZjIxZTUyMGQ2ODJmNGY4Yi5taW4uanMiLCJlYm5mIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19lYm5mLmM0NjZlNGUzMzFlMzE3ZWUzYmI2Lm1pbi5qcyIsImVjbCI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfZWNsLmVkYWI0ODY5MGM3ZGQwYjBlN2JmLm1pbi5qcyIsImVpZmZlbCI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfZWlmZmVsLjM4Mjk1Nzc5ZDg3N2YyZDkzMTcyLm1pbi5qcyIsImVsbSI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfZWxtLjYyNWQ1OTQwMGJhZjY2MDJmODBiLm1pbi5qcyIsImVybGFuZyI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfZXJsYW5nLmNmOTU4NjFkZmNhYzM3MTM3NjM1Lm1pbi5qcyIsImZhY3RvciI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfZmFjdG9yLmQzNjE0ZGZhNDFhYzBkYzc4NDVjLm1pbi5qcyIsImZvcnRoIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19mb3J0aC44NDgzNDg1YjBjNDVhY2Q5OTY4ZS5taW4uanMiLCJmb3J0cmFuIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19mb3J0cmFuLjE0N2Y5MzM5YjRiYjFmYTUyZjVhLm1pbi5qcyIsImdhcyI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfZ2FzLmQ0YmMxYjUyZWUwYmY1NjJkMzhiLm1pbi5qcyIsImdmbSI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfZ2ZtLjA0NGViZTc1NjNlMTMyZGRjNzc2Lm1pbi5qcyIsImdoZXJraW4iOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX2doZXJraW4uOTllZThkMGMwYjBlNDNkZjNmYzIubWluLmpzIiwiZ28iOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX2dvLmNjYzNmYjVkMmZhMThiNzIxNDcyLm1pbi5qcyIsImdyb292eSI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfZ3Jvb3Z5LjNiNzk5ZmNkYjcyNTExM2IyNmU2Lm1pbi5qcyIsImhhbWwiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX2hhbWwuYjA2ZmNjYjRhODY4ODY5M2NlNjAubWluLmpzIiwiaGFuZGxlYmFycyI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfaGFuZGxlYmFycy5hNDAwOWMwZTZhY2FlODU0NDlhZS5taW4uanMiLCJoYXNrZWxsIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19oYXNrZWxsLjVkZWM4YmIxMDg1YjY1Zjc3Y2ZiLm1pbi5qcyIsImhheGUiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX2hheGUuMmI0MDA0MDc1ZmE1OWRiNDIxNWQubWluLmpzIiwiaHRtbGVtYmVkZGVkIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19odG1sZW1iZWRkZWQuNDkwMTVjYmVlN2Y2YmVkNGZkYjIubWluLmpzIiwiaHRtbG1peGVkIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19odG1sbWl4ZWQuOTJkOTNkNTNhMTZlMDc1ODQ2ZWYubWluLmpzIiwiaHR0cCI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfaHR0cC44YTI0NjNjODJjYTUzNTMzMDMyNC5taW4uanMiLCJpZGwiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX2lkbC41MTRiNmE1ZTZmZjk5YzMyNjY3Ni5taW4uanMiLCJqYWRlIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19qYWRlLjMyYzBhZTk2OWMwOTEyYzdkMWE3Lm1pbi5qcyIsImphdmFzY3JpcHQiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX2phdmFzY3JpcHQuYWMxODMzZTllMjM5ZDUzMmI1YTkubWluLmpzIiwiamluamEyIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19qaW5qYTIuZGIxMmVjZmQ0YmJjYjg3NTk2NjMubWluLmpzIiwianVsaWEiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX2p1bGlhLjdiMmNkZTU4ZGMwZWViMDdlNjcwLm1pbi5qcyIsImxpdmVzY3JpcHQiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX2xpdmVzY3JpcHQuOTU5YzRkYzcyNTY2YTI2NDc4ODcubWluLmpzIiwibHVhIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19sdWEuMWZkOWIzNDZjZDFlNmVhZTgwMDUubWluLmpzIiwibWFya2Rvd24iOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX21hcmtkb3duLjM1N2Q0ZjAyMzFkNzA1Y2NmNGE4Lm1pbi5qcyIsIm1hdGhlbWF0aWNhIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19tYXRoZW1hdGljYS40NWNlNmE4NDQ4NzQ3NTU1ZWU4Zi5taW4uanMiLCJtaXJjIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19taXJjLjY0MmEwYTkwOTNjM2VkZWVkMWQzLm1pbi5qcyIsIm1sbGlrZSI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfbWxsaWtlLmIyZTU5ZTM0YjJhZWIwYjBlMzNlLm1pbi5qcyIsIm1vZGVsaWNhIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19tb2RlbGljYS45YmViYTkwMmZhZDY4ZDY1MjUwNC5taW4uanMiLCJtc2NnZW4iOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX21zY2dlbi45ZGVkNWQxMzJjZWE1NDhhNTg0ZS5taW4uanMiLCJtdW1wcyI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfbXVtcHMuNjI3NTEwMGQzY2JhM2NkZGIxNzEubWluLmpzIiwibmdpbngiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX25naW54LjM5Mjk0N2E1Y2RlMzYwZTU1MzkxLm1pbi5qcyIsIm5zaXMiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX25zaXMuMTgwNjA5OGYyZWZmYzRjNWVmZDcubWluLmpzIiwibnRyaXBsZXMiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX250cmlwbGVzLjVjNmI5MWY2ZGMyOWQyMjUxNTliLm1pbi5qcyIsIm9jdGF2ZSI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfb2N0YXZlLjk5Y2JmM2UwYTcyMmQ5NTI3N2ZkLm1pbi5qcyIsIm96IjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19vei40NTQ3Y2NmZGRjNTI4NWZlYmRkYS5taW4uanMiLCJwYXNjYWwiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX3Bhc2NhbC4xZmRiYzc1ZjY1OWFiN2IyMGVmOS5taW4uanMiLCJwZWdqcyI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfcGVnanMuMzUyMTE1NGI5ZDBmYjhkZGUyYzgubWluLmpzIiwicGVybCI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfcGVybC4yNjE2MmIxZGUzZjI0ODhmZmVkYy5taW4uanMiLCJwaHAiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX3BocC44ZTc3MDIxNDFjNGQwMDZiYjIwZC5taW4uanMiLCJwaWciOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX3BpZy5jY2YzOTI5Mzk2ZWU3ZDI0MTQwNi5taW4uanMiLCJwb3dlcnNoZWxsIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19wb3dlcnNoZWxsLjg5ZjJlOWJmNmM4MmFkMWRkOWJlLm1pbi5qcyIsInByb3BlcnRpZXMiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX3Byb3BlcnRpZXMuZWE3Y2UxNGM0MjUxNzRhZGJmMTUubWluLmpzIiwicHVwcGV0IjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19wdXBwZXQuMDlkNGEwNDM5MDNhNTIyMzc0NjcubWluLmpzIiwicHl0aG9uIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19weXRob24uOWNmY2I4MjQyYzNjNWY0ZDA5MDIubWluLmpzIiwicSI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfcS43NjA5YjZlZmFmNWRkZmRmYTRhNS5taW4uanMiLCJyIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19yLjM0OTM2ZTQxZjExZWMxOGE3NTc0Lm1pbi5qcyIsInJwbSI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfcnBtLmMyOTE3OWQ5MTg4NzAxZWI1ZjNlLm1pbi5qcyIsInJzdCI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfcnN0LjEzYmVjNjMzMWMwMTc1Y2JiMDk2Lm1pbi5qcyIsInJ1YnkiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX3J1YnkuODJkZWExMTY0NGM3NGU0ZWE1NDIubWluLmpzIiwicnVzdCI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfcnVzdC4wZTZjYzFhMGQyZDJkOGY4ZWJkYi5taW4uanMiLCJzYXNzIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19zYXNzLjFmYmNlNTRiMmMzMDQ0Mzc3OWVlLm1pbi5qcyIsInNjaGVtZSI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfc2NoZW1lLjg4NzllZTVmODg3NWQ2YmNjODA0Lm1pbi5qcyIsInNoZWxsIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19zaGVsbC5kYzVkMzU1OGZkZGVkZDE4Mzk0Zi5taW4uanMiLCJzaWV2ZSI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfc2lldmUuM2IzMjI3MjZiOTA3MTQwYjk0ZTgubWluLmpzIiwic2xpbSI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfc2xpbS5jN2MwYmMwZjE3MzgzNDQwOTUxMS5taW4uanMiLCJzbWFsbHRhbGsiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX3NtYWxsdGFsay45OGMxMjM3NWM4N2M1MTkwYzgzOS5taW4uanMiLCJzbWFydHkiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX3NtYXJ0eS43YmE2MjM3N2Y1OWY3MTc2OTk5Ny5taW4uanMiLCJzb2xyIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19zb2xyLjI2YzRlNDE5YjBjODc5OWJiYjdkLm1pbi5qcyIsInNveSI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfc295Ljg4ZTk1ZmZiNDVhNGFjNDI0NWE2Lm1pbi5qcyIsInNwYXJxbCI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfc3BhcnFsLjhjMDUzMTExMGQ4YTljYzMwNWFmLm1pbi5qcyIsInNwcmVhZHNoZWV0IjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19zcHJlYWRzaGVldC5iYzlhYTgzNzJkOTk0MTkxYmRmNS5taW4uanMiLCJzcWwiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX3NxbC4xMDk0M2ZkNGIyM2YyMzI4NzM0Ni5taW4uanMiLCJzdGV4IjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19zdGV4LjVjZTgxY2RkMDIzYjg5YWVlNzlhLm1pbi5qcyIsInN0eWx1cyI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfc3R5bHVzLmYzOTdmMDJkZTM1NmFlNmY5YzcwLm1pbi5qcyIsInN3aWZ0IjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ19zd2lmdC5mOWUzYTE4YTE0OTRjNjUwMjJkNy5taW4uanMiLCJ0Y2wiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX3RjbC5lZTE0Y2UzNTI4MzNjNGZjNDc5ZS5taW4uanMiLCJ0ZXh0aWxlIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ190ZXh0aWxlLjczNWYyMjU0ODFlYjU3MzQxMjA5Lm1pbi5qcyIsInRpZGRseXdpa2kiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX3RpZGRseXdpa2kuYzIzMTk3MjQ0N2VkMWJiZTA0NDgubWluLmpzIiwidGlraSI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfdGlraS5kNzdmMGU2NmU3M2VjY2RkYzRiYi5taW4uanMiLCJ0b21sIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ190b21sLjQwNjViNGVjMDY1NzA0MDM1NzA0Lm1pbi5qcyIsInRvcm5hZG8iOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX3Rvcm5hZG8uMzMzMzA5ZGNmNDE1MTRhM2EzZmQubWluLmpzIiwidHJvZmYiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX3Ryb2ZmLmY2YjBmYTA4NzQxMTE5ZWY2YTVjLm1pbi5qcyIsInR0Y24iOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX3R0Y24uMjVmZDBmZjcyOWRiMTZmMDEzNmMubWluLmpzIiwidHRjbjpjZmciOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX3R0Y24tY2ZnLmE2NmUzYTRiNGJkODU3MWNlNjgwLm1pbi5qcyIsInR1cnRsZSI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfdHVydGxlLmQ3Mzk5YzdjNzA4YWUxYTczZjQ1Lm1pbi5qcyIsInR3aWciOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX3R3aWcuNzFmMTIzYmRkMzQyMmM2ODMyODEubWluLmpzIiwidmIiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX3ZiLmIwOTEyM2M2YmMxZTRiZTM4OWVjLm1pbi5qcyIsInZic2NyaXB0IjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ192YnNjcmlwdC45OTk3YmJmOTVhZWEwMjU0NWJhNy5taW4uanMiLCJ2ZWxvY2l0eSI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfdmVsb2NpdHkuNjY3ZWE0OWUyYTU2ZTdkZWU5YWUubWluLmpzIiwidmVyaWxvZyI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfdmVyaWxvZy5lNjYxMDdhYzU2N2UyYWZmZDYxMC5taW4uanMiLCJ2aGRsIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ192aGRsLmIwN2ZlNzljZmE5ZjVhZjYyMTZlLm1pbi5qcyIsInZ1ZSI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfdnVlLjU5Y2VmMTExN2VkZWM4N2I1NTcyLm1pbi5qcyIsInhtbCI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfeG1sLjFjYzRlYzM5ZTNlYzUxNWFhY2E2Lm1pbi5qcyIsInhxdWVyeSI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC9idjEtNi0xYjI1YzQ1XC9jb2RlbWlycm9yX2xhbmdfeHF1ZXJ5Ljc4YzBlYjc4M2M3NWE1MjdlZjY0Lm1pbi5qcyIsInlhbWwiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvYnYxLTYtMWIyNWM0NVwvY29kZW1pcnJvcl9sYW5nX3lhbWwuYTA1MjEyYjgxMDA3MWI1YzYxM2YubWluLmpzIiwiejgwIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cL2J2MS02LTFiMjVjNDVcL2NvZGVtaXJyb3JfbGFuZ196ODAuNTY3OTgzNWZjMzExNGM1NjAwZTIubWluLmpzIn19LCJub3RpZmljYXRpb25fc291bmRzIjpbeyJ2YWx1ZSI6ImIyLm1wMyIsImxhYmVsIjoiRGluZyIsInVybCI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC83ZTkxXC9zb3VuZHNcL3B1c2hcL2IyLm1wMyIsInVybF9vZ2ciOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvNDZlYmJcL3NvdW5kc1wvcHVzaFwvYjIub2dnIn0seyJ2YWx1ZSI6ImFuaW1hbF9zdGljay5tcDMiLCJsYWJlbCI6IkJvaW5nIiwidXJsIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cLzdlOTFcL3NvdW5kc1wvcHVzaFwvYW5pbWFsX3N0aWNrLm1wMyIsInVybF9vZ2ciOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvNDZlYmJcL3NvdW5kc1wvcHVzaFwvYW5pbWFsX3N0aWNrLm9nZyJ9LHsidmFsdWUiOiJiZWVuX3RyZWUubXAzIiwibGFiZWwiOiJEcm9wIiwidXJsIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cLzdlOTFcL3NvdW5kc1wvcHVzaFwvYmVlbl90cmVlLm1wMyIsInVybF9vZ2ciOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvNDZlYmJcL3NvdW5kc1wvcHVzaFwvYmVlbl90cmVlLm9nZyJ9LHsidmFsdWUiOiJjb21wbGV0ZV9xdWVzdF9yZXF1aXJlbWVudC5tcDMiLCJsYWJlbCI6IlRhLWRhIiwidXJsIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cLzdlOTFcL3NvdW5kc1wvcHVzaFwvY29tcGxldGVfcXVlc3RfcmVxdWlyZW1lbnQubXAzIiwidXJsX29nZyI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC80NmViYlwvc291bmRzXC9wdXNoXC9jb21wbGV0ZV9xdWVzdF9yZXF1aXJlbWVudC5vZ2cifSx7InZhbHVlIjoiY29uZmlybV9kZWxpdmVyeS5tcDMiLCJsYWJlbCI6IlBsaW5rIiwidXJsIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cLzdlOTFcL3NvdW5kc1wvcHVzaFwvY29uZmlybV9kZWxpdmVyeS5tcDMiLCJ1cmxfb2dnIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cLzQ2ZWJiXC9zb3VuZHNcL3B1c2hcL2NvbmZpcm1fZGVsaXZlcnkub2dnIn0seyJ2YWx1ZSI6ImZsaXR0ZXJidWcubXAzIiwibGFiZWwiOiJXb3ciLCJ1cmwiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvN2U5MVwvc291bmRzXC9wdXNoXC9mbGl0dGVyYnVnLm1wMyIsInVybF9vZ2ciOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvNDZlYmJcL3NvdW5kc1wvcHVzaFwvZmxpdHRlcmJ1Zy5vZ2cifSx7InZhbHVlIjoiaGVyZV95b3VfZ29fbGlnaHRlci5tcDMiLCJsYWJlbCI6IkhlcmUgeW91IGdvIiwidXJsIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cLzdlOTFcL3NvdW5kc1wvcHVzaFwvaGVyZV95b3VfZ29fbGlnaHRlci5tcDMiLCJ1cmxfb2dnIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cLzQ2ZWJiXC9zb3VuZHNcL3B1c2hcL2hlcmVfeW91X2dvX2xpZ2h0ZXIub2dnIn0seyJ2YWx1ZSI6ImhpX2Zsb3dlcnNfaGl0Lm1wMyIsImxhYmVsIjoiSGkiLCJ1cmwiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvN2U5MVwvc291bmRzXC9wdXNoXC9oaV9mbG93ZXJzX2hpdC5tcDMiLCJ1cmxfb2dnIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cLzQ2ZWJiXC9zb3VuZHNcL3B1c2hcL2hpX2Zsb3dlcnNfaGl0Lm9nZyJ9LHsidmFsdWUiOiJrbm9ja19icnVzaC5tcDMiLCJsYWJlbCI6Iktub2NrIEJydXNoIiwidXJsIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cLzdlOTFcL3NvdW5kc1wvcHVzaFwva25vY2tfYnJ1c2gubXAzIiwidXJsX29nZyI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC80NmViYlwvc291bmRzXC9wdXNoXC9rbm9ja19icnVzaC5vZ2cifSx7InZhbHVlIjoic2F2ZV9hbmRfY2hlY2tvdXQubXAzIiwibGFiZWwiOiJXaG9hISIsInVybCI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC83ZTkxXC9zb3VuZHNcL3B1c2hcL3NhdmVfYW5kX2NoZWNrb3V0Lm1wMyIsInVybF9vZ2ciOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvNDZlYmJcL3NvdW5kc1wvcHVzaFwvc2F2ZV9hbmRfY2hlY2tvdXQub2dnIn0seyJ2YWx1ZSI6Iml0ZW1fcGlja3VwLm1wMyIsImxhYmVsIjoiWW9pbmsiLCJ1cmwiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvN2U5MVwvc291bmRzXC9wdXNoXC9pdGVtX3BpY2t1cC5tcDMiLCJ1cmxfb2dnIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cLzQ2ZWJiXC9zb3VuZHNcL3B1c2hcL2l0ZW1fcGlja3VwLm9nZyJ9LHsidmFsdWUiOiJodW1tdXMubXAzIiwibGFiZWwiOiJIdW1tdXMiLCJ1cmwiOiJodHRwczpcL1wvYS5zbGFjay1lZGdlLmNvbVwvN2ZhOVwvc291bmRzXC9wdXNoXC9odW1tdXMubXAzIiwidXJsX29nZyI6Imh0dHBzOlwvXC9hLnNsYWNrLWVkZ2UuY29tXC80NmViYlwvc291bmRzXC9wdXNoXC9odW1tdXMub2dnIn0seyJ2YWx1ZSI6Im5vbmUiLCJsYWJlbCI6Ik5vbmUifV0sImFsZXJ0X3NvdW5kcyI6W3sidmFsdWUiOiJmcm9nLm1wMyIsImxhYmVsIjoiRnJvZyIsInVybCI6Imh0dHBzOlwvXC9zbGFjay5nbG9iYWwuc3NsLmZhc3RseS5uZXRcL2EzNGFcL3NvdW5kc1wvZnJvZy5tcDMifV0sImNhbGxfc291bmRzIjpbeyJ2YWx1ZSI6ImNhbGxcL2FsZXJ0X3YyLm1wMyIsImxhYmVsIjoiQWxlcnQiLCJ1cmwiOiJodHRwczpcL1wvc2xhY2suZ2xvYmFsLnNzbC5mYXN0bHkubmV0XC8wOGY3XC9zb3VuZHNcL2NhbGxcL2FsZXJ0X3YyLm1wMyJ9LHsidmFsdWUiOiJjYWxsXC9pbmNvbWluZ19yaW5nX3YyLm1wMyIsImxhYmVsIjoiSW5jb21pbmcgcmluZyIsInVybCI6Imh0dHBzOlwvXC9zbGFjay5nbG9iYWwuc3NsLmZhc3RseS5uZXRcLzA4ZjdcL3NvdW5kc1wvY2FsbFwvaW5jb21pbmdfcmluZ192Mi5tcDMifSx7InZhbHVlIjoiY2FsbFwvb3V0Z29pbmdfcmluZ192Mi5tcDMiLCJsYWJlbCI6Ik91dGdvaW5nIHJpbmciLCJ1cmwiOiJodHRwczpcL1wvc2xhY2suZ2xvYmFsLnNzbC5mYXN0bHkubmV0XC8wOGY3XC9zb3VuZHNcL2NhbGxcL291dGdvaW5nX3JpbmdfdjIubXAzIn0seyJ2YWx1ZSI6ImNhbGxcL3BvcF92Mi5tcDMiLCJsYWJlbCI6IkluY29taW5nIHJlYWN0aW9uIiwidXJsIjoiaHR0cHM6XC9cL3NsYWNrLmdsb2JhbC5zc2wuZmFzdGx5Lm5ldFwvMDhmN1wvc291bmRzXC9jYWxsXC9wb3BfdjIubXAzIn0seyJ2YWx1ZSI6ImNhbGxcL3RoZXlfbGVmdF9jYWxsX3YyLm1wMyIsImxhYmVsIjoiVGhleSBsZWZ0IGNhbGwiLCJ1cmwiOiJodHRwczpcL1wvc2xhY2suZ2xvYmFsLnNzbC5mYXN0bHkubmV0XC8wOGY3XC9zb3VuZHNcL2NhbGxcL3RoZXlfbGVmdF9jYWxsX3YyLm1wMyJ9LHsidmFsdWUiOiJjYWxsXC95b3VfbGVmdF9jYWxsX3YyLm1wMyIsImxhYmVsIjoiWW91IGxlZnQgY2FsbCIsInVybCI6Imh0dHBzOlwvXC9zbGFjay5nbG9iYWwuc3NsLmZhc3RseS5uZXRcLzA4ZjdcL3NvdW5kc1wvY2FsbFwveW91X2xlZnRfY2FsbF92Mi5tcDMifSx7InZhbHVlIjoiY2FsbFwvdGhleV9qb2luZWRfY2FsbF92Mi5tcDMiLCJsYWJlbCI6IlRoZXkgam9pbmVkIGNhbGwiLCJ1cmwiOiJodHRwczpcL1wvc2xhY2suZ2xvYmFsLnNzbC5mYXN0bHkubmV0XC8wOGY3XC9zb3VuZHNcL2NhbGxcL3RoZXlfam9pbmVkX2NhbGxfdjIubXAzIn0seyJ2YWx1ZSI6ImNhbGxcL3lvdV9qb2luZWRfY2FsbF92Mi5tcDMiLCJsYWJlbCI6IllvdSBqb2luZWQgY2FsbCIsInVybCI6Imh0dHBzOlwvXC9zbGFjay5nbG9iYWwuc3NsLmZhc3RseS5uZXRcLzA4ZjdcL3NvdW5kc1wvY2FsbFwveW91X2pvaW5lZF9jYWxsX3YyLm1wMyJ9LHsidmFsdWUiOiJjYWxsXC9jb25maXJtYXRpb25fdjIubXAzIiwibGFiZWwiOiJDb25maXJtYXRpb24iLCJ1cmwiOiJodHRwczpcL1wvc2xhY2suZ2xvYmFsLnNzbC5mYXN0bHkubmV0XC8wOGY3XC9zb3VuZHNcL2NhbGxcL2NvbmZpcm1hdGlvbl92Mi5tcDMifV0sImNhbGxfc291bmRzX3ZlcnNpb24iOiJ2MiIsImExMXlfc291bmRzIjpbXSwiaW1nIjp7ImFwcF9pY29uIjoiaHR0cHM6XC9cL2Euc2xhY2stZWRnZS5jb21cLzgwNTg4XC9pbWdcL3NsYWNrX2dyb3dsX2ljb25fdm9ndWUucG5nIn0sInBhZ2VfbmVlZHNfZW50ZXJwcmlzZSI6ZmFsc2UsInBhZ2VfbmVlZHNfY3VzdG9tX2Vtb2ppIjpmYWxzZSwiaXNfZGVwcmVjYXRlZF93ZWJjbGllbnRfYnJvd3NlciI6ZmFsc2UsImlzX3Vuc3VwcG9ydGVkX3dlYmNsaWVudF9icm93c2VyIjp0cnVlLCJkZWZhdWx0X3R6IjoiQW1lcmljYVwvTG9zX0FuZ2VsZXMiLCJmZWF0dXJlX2J1aWxkZXJfYXBwX2NvbGxhYm9yYXRvcnMiOmZhbHNlLCJmZWF0dXJlX2F1ZGl0X2xvZ3NfdmlldyI6ZmFsc2UsImZlYXR1cmVfYXVkaXRfbG9nc192aWV3X3dvcmtzcGFjZSI6ZmFsc2UsImZlYXR1cmVfc2tfaTE4biI6ZmFsc2UsImZlYXR1cmVfb3JnX21vZGVybl9zZXR0aW5nX3BhZ2UiOmZhbHNlLCJmZWF0dXJlX29yZ19tb2Rlcm5fc2VjdXJpdHlfcHJlZmVyZW5jZXNfcGFnZSI6ZmFsc2UsImZlYXR1cmVfb3JnX21vZGVybl9zc29fcHJlZmVyZW5jZXNfcGFnZSI6dHJ1ZSwiZmVhdHVyZV9pZHBfZ3JvdXBfY291bnQiOmZhbHNlLCJmZWF0dXJlX20xMW5fb3JnX3RlYW1fb3ZlcnZpZXciOmZhbHNlLCJmZWF0dXJlX2J1aWxkZXJfZXhwb3J0X2ltcG9ydCI6dHJ1ZSwiZmVhdHVyZV9hY2Nlc3NpYmxlX3NlbGVjdHMiOmZhbHNlLCJmZWF0dXJlX2J1aWxkZXJfY2hhbm5lbF9hY3Rpb25zIjpmYWxzZSwiZmVhdHVyZV9idWlsZGVyX3JlYWN0aW9uX2FkZGVkIjp0cnVlLCJmZWF0dXJlX2J1aWxkZXJfYXBwX3JlbW92YWwiOmZhbHNlLCJmZWF0dXJlX2J1aWxkZXJfZGlzYWJsZV9nbG9iYWxfdHJpZ2dlcnMiOmZhbHNlLCJmZWF0dXJlX2J1aWxkZXJfYXBwX3BhZ2VzIjp0cnVlLCJmZWF0dXJlX2J1aWxkZXJfY2FuX2FjY2VzcyI6ZmFsc2UsImZlYXR1cmVfc2hhcmVkX2NoYW5uZWxzX3JlbW92ZV9iZXRhX2xhYmVsIjpmYWxzZSwiZmVhdHVyZV9zaGFyZWRfY2hhbm5lbHNfbm9fb25lX3ByZWYiOmZhbHNlLCJmZWF0dXJlX2VzY19ncmFudWxhcl90ZWFtX3ByZWZzIjpmYWxzZSwiZmVhdHVyZV9lc2NfZ3JhbnVsYXJfdGVhbV9wcmVmc19jbGllbnQiOmZhbHNlLCJmZWF0dXJlX2dyYW51bGFyX2RuZCI6ZmFsc2UsImZlYXR1cmVfY29udGV4dF9iYXIiOnRydWUsImZlYXR1cmVfY29udGV4dF9iYXJfY3VzdG9tX3N0YXR1cyI6ZmFsc2UsImZlYXR1cmVfY29udGV4dF9iYXJfZ3Vlc3RzIjpmYWxzZSwiZmVhdHVyZV9lc2Nfd29ya3NwYWNlX3NldHRpbmdzX2NsaWVudCI6ZmFsc2UsImZlYXR1cmVfY2VfZW5nX2hjMnNsYWNrIjpmYWxzZSwiZmVhdHVyZV9tdWx0aV9maWxlX2xheW91dCI6dHJ1ZSwiZmVhdHVyZV9yaWNoX3RleHRfbGlua3MiOnRydWUsImZlYXR1cmVfcmljaF90ZXh0X3NsYXNoX2NvbW1tYW5kcyI6ZmFsc2UsImZlYXR1cmVfcmljaF90ZXh0X3N0aWNreV90b29sYmFyIjpmYWxzZSwiZmVhdHVyZV9taWdyYXRpb25fb3JnX2FwcHJvdmFscyI6dHJ1ZSwiZmVhdHVyZV90aW55c3BlY2siOmZhbHNlLCJmZWF0dXJlX2Rlc2t0b3BfY29weV90ZXh0IjpmYWxzZSwiZmVhdHVyZV93ZWJhcHBfYWx3YXlzX2NvbGxlY3RfaW5pdGlhbF90aW1lX3BlcmlvZF9zdGF0cyI6ZmFsc2UsImZlYXR1cmVfZmxhbm5lbF91c2VfY2FuYXJ5X3NvbWV0aW1lcyI6ZmFsc2UsImZlYXR1cmVfc3NiX3EzMTlfZGVwcmVjYXRpb24iOmZhbHNlLCJmZWF0dXJlX3NzYl9xMzE5X2RlcHJlY2F0aW9uX2RhcmsiOmZhbHNlLCJmZWF0dXJlX3NzYl9xMzE5X2RlcHJlY2F0aW9uX21vZGFsIjpmYWxzZSwiZmVhdHVyZV9zc2JfcTMxOV9kZXByZWNhdGlvbl9ibG9jayI6ZmFsc2UsImZlYXR1cmVfZGVwcmVjYXRlX3ExMTlfdW5zdXBwb3J0ZWQiOnRydWUsImZlYXR1cmVfZGVwcmVjYXRlX3ExMTlfdW5zdXBwb3J0ZWRfdG9hc3QiOnRydWUsImZlYXR1cmVfZGVwcmVjYXRlX3ExMTlfbW9iaWxlIjp0cnVlLCJmZWF0dXJlX2RlcHJlY2F0ZV9xMTE5X291dGRhdGVkIjp0cnVlLCJmZWF0dXJlX2RlcHJlY2F0ZV9xMTE5X291dGRhdGVkX3RvYXN0Ijp0cnVlLCJmZWF0dXJlX2RlcHJlY2F0ZV9xMTE5X29zIjp0cnVlLCJmZWF0dXJlX2RlcHJlY2F0ZV9xMTE5X29zX3RvYXN0Ijp0cnVlLCJmZWF0dXJlX2RlcHJlY2F0ZV9xMTE5X21vZGFsIjp0cnVlLCJmZWF0dXJlX2RlcHJlY2F0ZV9xMTE5X2Jsb2NrIjp0cnVlLCJmZWF0dXJlX2RlcHJlY2F0ZV9nZXRfbWVtYmVyX2J5X25hbWUiOmZhbHNlLCJmZWF0dXJlX3JlYWN0X2ZpbGVfdmlld2VyIjpmYWxzZSwiZmVhdHVyZV9yZWFjdF9maWxlX3ZpZXdlcl9uYXZpZ2F0aW9uIjp0cnVlLCJmZWF0dXJlX3Vua25vd25fZmlsZXMiOmZhbHNlLCJmZWF0dXJlX2FkZF9tZXNzYWdlX3BlcmYiOmZhbHNlLCJmZWF0dXJlX2ZpeF9jdXN0b21fZW1vamlfZXJyb3JzIjp0cnVlLCJmZWF0dXJlX21vZGVybl9kZWxldGVfZmlsZSI6dHJ1ZSwiZmVhdHVyZV9zb25pY19jaGFubmVsX29wdGlvbnMiOmZhbHNlLCJmZWF0dXJlX3NvbmljX2RlbHV4ZV90b2FzdCI6dHJ1ZSwiZmVhdHVyZV9zb25pY19kZWx1eGVfdG9hc3RfZXhpc3RpbmciOnRydWUsImZlYXR1cmVfc29uaWNfZGVsdXhlX3RvYXN0X2RhcmsiOnRydWUsImZlYXR1cmVfc2VsZWN0X21vZGVsX29wdGlvbl9mZXRjaGVyX20xMW4iOmZhbHNlLCJmZWF0dXJlX2ExMXlfbWVzc2FnZV9zdW1tYXJ5Ijp0cnVlLCJmZWF0dXJlX3JldHJ5X25ld19pbWFnZXMiOmZhbHNlLCJmZWF0dXJlX2NoYW5uZWxfZGV0YWlsc19tZW1iZXJzaGlwX2xpc3QiOmZhbHNlLCJmZWF0dXJlX2FsbF9kbV9tdXQiOmZhbHNlLCJmZWF0dXJlX2ZpbGVfdGhyZWFkcyI6dHJ1ZSwiZmVhdHVyZV9maWxlX3RocmVhZHNfZGFya19sYXVuY2giOnRydWUsImZlYXR1cmVfYnJvYWRjYXN0X2luZGljYXRvciI6dHJ1ZSwiZmVhdHVyZV9uZXdfcmVwbGllc19hZnRlcl9iY2FzdCI6dHJ1ZSwiZmVhdHVyZV9zb25pY19lbW9qaSI6ZmFsc2UsImZlYXR1cmVfZW1vamlfc2VhcmNoX2tleXdvcmRzX2luX2F1dG9jb21wbGV0ZSI6ZmFsc2UsImZlYXR1cmVfY3VzdG9tX2Vtb2ppX3NlYXJjaF9ieV9jcmVhdG9yIjp0cnVlLCJmZWF0dXJlX3NvbmljX2ZyZXF1ZW50X2Vtb2ppX2Zyb21fcHJlZiI6ZmFsc2UsImZlYXR1cmVfc29uaWNfaW1nX3Byb3h5Ijp0cnVlLCJmZWF0dXJlX2VtYWlsX2luZ2VzdGlvbiI6ZmFsc2UsImZlYXR1cmVfc2lkZWJhcl9jb250ZXh0X21lbnUiOmZhbHNlLCJmZWF0dXJlX2F0dGFjaG1lbnRzX2lubGluZSI6ZmFsc2UsImZlYXR1cmVfZml4X2ZpbGVzIjp0cnVlLCJmZWF0dXJlX3BhZ2luZ19hcGkiOmZhbHNlLCJmZWF0dXJlX2FhYV9hZG1pbl9hcGlzIjpmYWxzZSwiZmVhdHVyZV9hYWFfYWRtaW5fYXBpc19ldmVudHNfZG9jcyI6dHJ1ZSwiZmVhdHVyZV90cmlnZ2VyX3VzZXJfZG1fY2xpY2siOnRydWUsImZlYXR1cmVfYXBwX2xhdW5jaGVyIjpmYWxzZSwiZmVhdHVyZV93YWxtYXJ0X29vbV9hZG1pbl9wYWdlX2ZpeCI6ZmFsc2UsImZlYXR1cmVfYXBwX2RpcmVjdG9yeV9wcmltZXIiOmZhbHNlLCJmZWF0dXJlX2Rpc21pc3NfYWRkX2FwcHMiOnRydWUsImZlYXR1cmVfY3VzdG9tX3N0YXR1c19leHBpcnkiOnRydWUsImZlYXR1cmVfY2hhbm5lbF9zaWRlYmFyX2RyYWZ0c19zZWN0aW9uIjp0cnVlLCJmZWF0dXJlX25hdmlnYXRlX2hpc3RvcnkiOnRydWUsImZlYXR1cmVfY29tcG9zZV9mbG93IjpmYWxzZSwiZmVhdHVyZV9iZXR0ZXJfc25vb3plIjp0cnVlLCJmZWF0dXJlX3NvbmljX2RuZF9tYW5hZ2VyIjpmYWxzZSwiZmVhdHVyZV9zb25pY19kbmRfcnRtIjpmYWxzZSwiZmVhdHVyZV9zb25pY19wcmVzZW5jZV9tYW5hZ2VyIjpmYWxzZSwiZmVhdHVyZV9mYXN0ZXJfY291bnRfYWxsX3VucmVhZHMiOnRydWUsImZlYXR1cmVfc29uaWNfdXNlcl9ncm91cHMiOmZhbHNlLCJmZWF0dXJlX3NvbmljX3VzZXJfZ3JvdXBzX2ExMXlfcmVmYWN0b3IiOmZhbHNlLCJmZWF0dXJlX3NvbmljX3VzZXJfZ3JvdXBzX2NvcHlfdXBkYXRlIjpmYWxzZSwiZmVhdHVyZV9sYXp5X3VzZXJfZ3JvdXBzIjp0cnVlLCJmZWF0dXJlX3NvbmljX3NlcnZpY2VfZG93biI6dHJ1ZSwiZmVhdHVyZV9tMTFuX3VzZXJfZmV0Y2hfc3RhdHMiOnRydWUsImZlYXR1cmVfdW50cnVzdHdvcnRoeV9uYXZpZ2F0b3Jfb25saW5lIjp0cnVlLCJmZWF0dXJlX2Nvbm5lY3Rpdml0eV9tYW5hZ2VyIjp0cnVlLCJmZWF0dXJlX2NsaWVudF9ib290X3Nob3VsZF9yZWxvYWQiOmZhbHNlLCJmZWF0dXJlX2RhdGFfcmVzaWRlbmN5X2RlYnVnZ2luZyI6ZmFsc2UsImZlYXR1cmVfZW50X2FwcF9tYW5hZ2VtZW50X3Jlc3RyaWN0aW9uIjpmYWxzZSwiZmVhdHVyZV9lbnRpdGxlbWVudHMiOnRydWUsImZlYXR1cmVfZ3JpZF9hcmNoaXZlX2xpbmtfZml4ZXMiOnRydWUsImZlYXR1cmVfc29uaWNfbWVtYmVyX2RpcmVjdG9yeSI6ZmFsc2UsImZlYXR1cmVfbW9kZXJuaXplZF94d3NfcGVybWFsaW5rX2RpYWxvZ3MiOnRydWUsImZlYXR1cmVfc2FmZWd1YXJkX29yZ19yZXRlbnRpb24iOnRydWUsImZlYXR1cmVfZGFzaGJvYXJkX3NvcnRhYmxlX2xpc3RzIjpmYWxzZSwiZmVhdHVyZV9lbnRlcHJpc2VfdXNlcl90ZWFtc191cGRhdGUiOnRydWUsImZlYXR1cmVfc2tfbG9hZGluZ19idXR0b25fbW90aW9ucyI6ZmFsc2UsImZlYXR1cmVfc2tfYmFzZV9pY29uIjpmYWxzZSwiZmVhdHVyZV9zYW1sX2F1dGhuX2tleV9leHBpcnlfZGF0ZSI6dHJ1ZSwiZmVhdHVyZV93dGFfcGVybV9hcGlfc3BsaXQiOmZhbHNlLCJmZWF0dXJlX3d0YV9jb252ZXJzYXRpb25zX2FwaV9jaGFubmVsX2NyZWF0ZWRfbXNnIjpmYWxzZSwiZmVhdHVyZV9maWxlX2xpbmtzX2JldHRlcmVyIjpmYWxzZSwiZmVhdHVyZV91bnNhZmVfdGxzX2RlcHJlY2F0aW9uX2FwaV92aWV3Ijp0cnVlLCJmZWF0dXJlX2FwcF9kaXJlY3RvcnlfaW5mb19jb25zb2xpZGF0aW9uX3BoYXNlXzEiOmZhbHNlLCJmZWF0dXJlX2FwcF9kaXJlY3RvcnlfaW5mb19jb25zb2xpZGF0aW9uX3BoYXNlXzIiOmZhbHNlLCJmZWF0dXJlX2FwcF9jb21wbGlhbmNlX2luZm9fY29sbGVjdGlvbiI6ZmFsc2UsImZlYXR1cmVfZ3Vlc3RfYXBpX2NoYW5nZXMiOmZhbHNlLCJmZWF0dXJlX2dkcHJfZXhwb3J0cyI6dHJ1ZSwiZmVhdHVyZV9hbGxvd19idWxrX2RlbGV0ZV9qb2luX2xlYXZlX21lc3NhZ2VzIjp0cnVlLCJmZWF0dXJlX3NoYXJlZF9jaGFubmVsc19ibG9ja19sYXJnZV9vcmdzIjpmYWxzZSwiZmVhdHVyZV9jaGFubmVsX2lzX3JlbW92ZV9jcmVhdGVfc2hhcmVkX2NoYW5uZWwiOmZhbHNlLCJmZWF0dXJlX3NoYXJlZF9jaGFubmVsc19uZXR3b3JrIjpmYWxzZSwiZmVhdHVyZV9tcGltX2NoYW5uZWxzIjpmYWxzZSwiZmVhdHVyZV9jb252ZXJzYXRpb25zX2xpc3QiOnRydWUsImZlYXR1cmVfZ2Rwcl91c2VyX2pvaW5fdG9zIjp0cnVlLCJmZWF0dXJlX3VzZXJfaW52aXRlX3Rvc19hcHJpbF8yMDE4Ijp0cnVlLCJmZWF0dXJlX21vZGVybml6ZV9pbnZpdGVzIjp0cnVlLCJmZWF0dXJlX2N1c3RvbV9lbW9qaV9kb3dubG9hZF9idG4iOmZhbHNlLCJmZWF0dXJlX2ludml0ZXNfc3NvX2NoZWNrIjp0cnVlLCJmZWF0dXJlX2luY3JlbWVudGFsX3VucmVhZF9jb3VudHMiOmZhbHNlLCJmZWF0dXJlX25ldWVfdHlwZSI6ZmFsc2UsImZlYXR1cmVfY3VzdF9hY3FfaTE4bl90d2Vha3MiOmZhbHNlLCJmZWF0dXJlX3NlY3VyaXR5X2xlZ2FsX3BhZ2VfdXBkYXRlcyI6ZmFsc2UsImZlYXR1cmVfcHJval91cGRhdGVkX3ByaWNpbmdfbHAiOnRydWUsImZlYXR1cmVfcHJval93b3JrZmxvd19idWlsZGVyX2xwIjpmYWxzZSwiZmVhdHVyZV9wcm9qX2lkcl93ZWIiOnRydWUsImZlYXR1cmVfcHJval9pZHJfd2ViX2N0YSI6dHJ1ZSwiZmVhdHVyZV9wcm9qX3NwZWNfZWFybHlfYmlyZCI6ZmFsc2UsImZlYXR1cmVfcHJval9icmFuZF90b19wZXJmX3BhZ2UiOmZhbHNlLCJmZWF0dXJlX3Byb2pfcHJpY2luZ19zaWduZWRfb3V0X3VwZGF0ZXMiOnRydWUsImZlYXR1cmVfcGFydG5lcl96b29tX2xwIjp0cnVlLCJmZWF0dXJlX3doaXRlbGlzdF96ZW5kZXNrX2NoYXRfd2lkZ2V0IjpmYWxzZSwiZmVhdHVyZV9saXZlX3N1cHBvcnRfZnJlZV9wbGFuIjpmYWxzZSwiZmVhdHVyZV9vZmZsaW5lX21vZGUiOmZhbHNlLCJmZWF0dXJlX2ZvcmNlX2xzX2NvbXByZXNzaW9uIjpmYWxzZSwiZmVhdHVyZV91c2VfaW1ncHJveHlfcmVzaXppbmciOnRydWUsImZlYXR1cmVfc2hhcmVfbWVudGlvbl9jb21tZW50X2NsZWFudXAiOmZhbHNlLCJmZWF0dXJlX2V4dGVybmFsX2ZpbGVzIjpmYWxzZSwiZmVhdHVyZV9kZXNrdG9wX3NvbmljX3JvbGxvdXQiOnRydWUsImZlYXR1cmVfZGVza3RvcF9zb25pY19iZXRhX3JvbGxvdXQiOnRydWUsImZlYXR1cmVfZGVza3RvcF9zb25pY19kaXNhYmxlX3JvbGxvdXQiOmZhbHNlLCJmZWF0dXJlX2VsZWN0cm9uX21lbW9yeV9sb2dnaW5nIjpmYWxzZSwiZmVhdHVyZV9uYXRpdmVfYXBwX3N0YXJ0X25vbl9tYWMiOmZhbHNlLCJmZWF0dXJlX2xvY2FsaXphdGlvbl9waGFzZV90d28iOnRydWUsImZlYXR1cmVfbG9jYWxlX2VzX0xBIjp0cnVlLCJmZWF0dXJlX2xvY2FsZV9lbl9HQiI6dHJ1ZSwiZmVhdHVyZV9sb2NhbGVfcHRfQlIiOnRydWUsImZlYXR1cmVfbmV3X2xvY2FsZV90b2FzdCI6dHJ1ZSwiZmVhdHVyZV9jaGFubmVsX2V4cG9ydHMiOmZhbHNlLCJmZWF0dXJlX2RvY3MiOnRydWUsImZlYXR1cmVfZG9jc190cmFuc2xhdGlvbnMiOmZhbHNlLCJmZWF0dXJlX2RvY3NfbWVudGlvbnNfYW5kX2NoYW5uZWxzIjpmYWxzZSwiZmVhdHVyZV9ib290X2ZhbGxiYWNrX3ZpZXdfdjEiOmZhbHNlLCJmZWF0dXJlX2NhbGxzX2VzY191aSI6dHJ1ZSwiZmVhdHVyZV9zcG9ja19jYWxscyI6dHJ1ZSwiZmVhdHVyZV9tb2Rlcm5fY2FsbHNfaW52aXRlIjpmYWxzZSwiZmVhdHVyZV9zcG9ja19jYWxsc19hMTF5IjpmYWxzZSwiZmVhdHVyZV9zcG9ja19jYWxsc19kcmF3X2NvbG9yX3BpY2tlciI6ZmFsc2UsImZlYXR1cmVfY2FsbHNfc3VydmV5X3JlcXVlc3RfcmVzcG9uc2UiOnRydWUsImZlYXR1cmVfcmVtb3RlX2ZpbGVzX2Ryb3Bib3hfbWlncmF0aW9uIjp0cnVlLCJmZWF0dXJlX3JlbW90ZV9maWxlc19kcm9wYm94X21pZ3JhdGlvbl9sYWJlbHMiOnRydWUsImZlYXR1cmVfcmVtb3RlX2ZpbGVzX2FwaSI6dHJ1ZSwiZmVhdHVyZV9kZWZhdWx0X3NoYXJlZF9jaGFubmVscyI6dHJ1ZSwiZmVhdHVyZV9yZWFjdF9sZnMiOmZhbHNlLCJmZWF0dXJlX2xvZ19xdWlja3N3aXRjaGVyX3F1ZXJpZXMiOnRydWUsImZlYXR1cmVfbWNfbWVudGlvbnNfdGFiX3ByZWZzX2FuZF9jaGFubmVscyI6dHJ1ZSwiZmVhdHVyZV90b2tlbl9pcF93aGl0ZWxpc3QiOnRydWUsImZlYXR1cmVfc2lkZWJhcl90aGVtZV91bmRvIjpmYWxzZSwiZmVhdHVyZV9oaWRlX29uX3N0YXJ0dXAiOmZhbHNlLCJmZWF0dXJlX2RvbnRfc2V0X2NoYW5uZWxfbWVtYmVyc2hpcF90d2ljZSI6ZmFsc2UsImZlYXR1cmVfYWxsb3dfaW50cmFfd29yZF9mb3JtYXR0aW5nIjp0cnVlLCJmZWF0dXJlX2FsbG93X2Nqa19hdXRvY29tcGxldGUiOnRydWUsImZlYXR1cmVfaTE4bl9jaGFubmVsc192YWxpZGF0ZV9lbW9qaSI6dHJ1ZSwiZmVhdHVyZV9md19lbmdfbm9ybWFsaXphdGlvbiI6dHJ1ZSwiZmVhdHVyZV9zbGltX3Njcm9sbGJhciI6ZmFsc2UsImZlYXR1cmVfcHJpbWFyeV9zZWFyY2giOmZhbHNlLCJmZWF0dXJlX21vZGVybl9zb3VuZHMiOmZhbHNlLCJmZWF0dXJlX21vZGVybl9mdXp6eV9tYXRjaGVyIjpmYWxzZSwiZmVhdHVyZV9zbGlfY2hhbm5lbF9hcmNoaXZlX3N1Z2dlc3Rpb25zIjp0cnVlLCJmZWF0dXJlX3N0ZWVwbGVfY2h1cmNoIjp0cnVlLCJmZWF0dXJlX3N0ZWVwbGVfY2h1cmNoX2xpbmsiOnRydWUsImZlYXR1cmVfc3RlZXBsZV9jaHVyY2hfZXh0IjpmYWxzZSwiZmVhdHVyZV9zdHJvbGxlcnNfdG9fcGVyY2giOnRydWUsImZlYXR1cmVfc2lkZWJhcl92aXJ0dWFsaXplZCI6ZmFsc2UsImZlYXR1cmVfZmFudGFpbF9udXJ0dXJlIjpmYWxzZSwiZmVhdHVyZV9wb3Vyb3ZlciI6ZmFsc2UsImZlYXR1cmVfbW9kZXJuX21waW1fbWFrZV9uYW1lIjpmYWxzZSwiZmVhdHVyZV9wZW9wbGVfc2VhcmNoIjpmYWxzZSwiZmVhdHVyZV9yZWFjdF9tZXNzYWdlcyI6dHJ1ZSwiZmVhdHVyZV9lZGdlX3VwbG9hZF9wcm94eV9jaGVjayI6ZmFsc2UsImZlYXR1cmVfbGVnYWN5X2ZpbGVfdXBsb2FkX2FuYWx5dGljcyI6dHJ1ZSwiZmVhdHVyZV9zb25pY19jbGlwYm9hcmQiOmZhbHNlLCJmZWF0dXJlX3NvbmljX2FjdGl2aXR5IjpmYWxzZSwiZmVhdHVyZV9lZGl0X3Byb2ZpbGVfc3BlZWRfYnVtcCI6ZmFsc2UsImZlYXR1cmVfZG93bmxvYWRzX3BvbGlzaCI6ZmFsc2UsImZlYXR1cmVfc29uaWNfZG1fYnJvd3NlciI6dHJ1ZSwiZmVhdHVyZV9zb25pY19lZGl0X3Byb2ZpbGUiOmZhbHNlLCJmZWF0dXJlX3NvbmljX2ZpbmRfbW9yZV93a3NwcyI6ZmFsc2UsImZlYXR1cmVfc29uaWNfaW5wdXRzIjpmYWxzZSwiZmVhdHVyZV90aHJlYWRlZF9zbGFja19vd25lZF9wbHVnaW5zIjp0cnVlLCJmZWF0dXJlX2RlcHJlY2F0ZV91bnVzZWRfY29tbWFuZHMiOnRydWUsImZlYXR1cmVfaGlkZV91bmZ1cmxfdXJscyI6ZmFsc2UsImZlYXR1cmVfcmVhY3RfbWVtYmVyX3Byb2ZpbGVfY2FyZCI6ZmFsc2UsImZlYXR1cmVfZXJyb3JfYm91bmRhcnlfY29weSI6dHJ1ZSwiZmVhdHVyZV9zb25pY19jbG91ZF9maWxlc19waWNrZXIiOmZhbHNlLCJmZWF0dXJlX3NvbmljX3NuaXBwZXRzIjpmYWxzZSwiZmVhdHVyZV9jb3B5X2NoYW5uZWxfbmFtZSI6ZmFsc2UsImZlYXR1cmVfYm94X2NvbnRlbnRfcGlja2VyIjp0cnVlLCJmZWF0dXJlX2ZhaWxvdmVyX3Byb3h5X2NoZWNrIjpmYWxzZSwiZmVhdHVyZV9hcHBfc3ViZG9tYWluX2NoZWNrIjp0cnVlLCJmZWF0dXJlX3NvbmljX2RyYWZ0X21pZ3JhdGlvbiI6dHJ1ZSwiZmVhdHVyZV9jZG5fZG93bmxvYWRfdGVzdCI6ZmFsc2UsImZlYXR1cmVfYXBwX2luZGV4IjpmYWxzZSwiZmVhdHVyZV9tb2Rlcm5pemVfc2xhY2tfYWN0aW9ucyI6ZmFsc2UsImZlYXR1cmVfZ2RyaXZlX2RvX25vdF9pbnN0YWxsX2J5X2RlZmF1bHQiOnRydWUsImZlYXR1cmVfZGVsZXRlX21vdmVkX2NoYW5uZWxzIjp0cnVlLCJmZWF0dXJlX3NpbmdsZV93b3Jrc3BhY2VfcmVkaXJlY3QiOnRydWUsImZlYXR1cmVfemVyb193b3Jrc3BhY2Vfb25ib2FyZGluZyI6dHJ1ZSwiZmVhdHVyZV9vb21fbXZfY2hhbm5lbHNfbGlzdCI6dHJ1ZSwiZmVhdHVyZV9zc29fZm9ybWF0dGluZ19lcnJvciI6dHJ1ZSwiZmVhdHVyZV9zaW5nbGVfdXNlcl93b3Jrc3BhY2VfcGFnaW5hdGlvbiI6dHJ1ZSwiZmVhdHVyZV9la21fcGhhc2VfMiI6dHJ1ZSwiZmVhdHVyZV9la21fYmFja2ZpbGxfYWRkX3NsZWVwIjpmYWxzZSwiZmVhdHVyZV9la21fZmlsZV9yZXZvY2F0aW9uIjpmYWxzZSwiZmVhdHVyZV9la21fcmV2b2NhdGlvbl9hcGlfY2hhbmdlcyI6ZmFsc2UsImZlYXR1cmVfZWttX21lc3NhZ2VfcmV2b2NhdGlvbl9wb2xsaW5nX3Rlc3QiOmZhbHNlLCJmZWF0dXJlX2VrbV9tZXNzYWdlX3Jldm9jYXRpb24iOnRydWUsImZlYXR1cmVfbG9uZ2VyX2NoYW5uZWxfbmFtZXMiOnRydWUsImZlYXR1cmVfbXNfbGF0ZXN0Ijp0cnVlLCJmZWF0dXJlX2d1ZXN0c191c2VfZW50aXRsZW1lbnRzIjp0cnVlLCJmZWF0dXJlX2FwcF9zcGFjZSI6dHJ1ZSwiZmVhdHVyZV9tMTFuX2FwcHNfYnJvd3NlciI6ZmFsc2UsImZlYXR1cmVfc2hvd19pbnN0YWxsZWRfYXBwX2RtX3N1Z2dlc3Rpb25zIjp0cnVlLCJmZWF0dXJlX2FwcF9zcGFjZV9saW5rcyI6dHJ1ZSwiZmVhdHVyZV9hcHBfY2FudmFzZXMiOmZhbHNlLCJmZWF0dXJlX2FwcF92aWV3c192MSI6ZmFsc2UsImZlYXR1cmVfYXBwX3ZpZXdzX2FwaXNfdjEiOmZhbHNlLCJmZWF0dXJlX2FwcF92aWV3c19yZW1pbmRlcnMiOmZhbHNlLCJmZWF0dXJlX2FwcF92aWV3c19yZW1pbmRlcnNfbGlzdCI6ZmFsc2UsImZlYXR1cmVfYmxvY2tzX3JlbWluZGVyc19saXN0IjpmYWxzZSwiZmVhdHVyZV9tZXNzYWdlX2Jsb2NrcyI6ZmFsc2UsImZlYXR1cmVfc2lsZW5jZV9hcHBfZG1zIjpmYWxzZSwiZmVhdHVyZV9zZXRfdHpfYXV0b21hdGljYWxseSI6dHJ1ZSwiZmVhdHVyZV9jb25maXJtX2NsZWFyX2FsbF91bnJlYWRzX3ByZWYiOnRydWUsImZlYXR1cmVfYmxvY2tfbW91bnRzIjp0cnVlLCJmZWF0dXJlX2F0dGFjaG1lbnRzX3YyIjp0cnVlLCJmZWF0dXJlX2Jsb2NrX2tpdF9kb2N1bWVudGF0aW9uIjp0cnVlLCJmZWF0dXJlX2Jsb2NrX2tpdF9leHBhbmRhYmxlX2Jsb2NrIjpmYWxzZSwiZmVhdHVyZV9ncm91cF9ibG9jayI6ZmFsc2UsImZlYXR1cmVfYmxvY2tfa2l0X2RlZXBfbGlua3MiOmZhbHNlLCJmZWF0dXJlX2Jsb2NrX2tpdF9tdWx0aV9zZWxlY3RzIjpmYWxzZSwiZmVhdHVyZV9zaG93X2Jsb2NrX2tpdF9pbl9zaGFyZV9kaWFsb2dzIjpmYWxzZSwiZmVhdHVyZV9ibG9ja19raXRfZXZlbnRfYmxvY2siOmZhbHNlLCJmZWF0dXJlX2Jsb2NrX2tpdF9yZWZhY3RvciI6ZmFsc2UsImZlYXR1cmVfYmxvY2tfa2l0X3Nob3VsZF91c2Vfc2xhY2tfa2l0X3NlbGVjdCI6dHJ1ZSwiZmVhdHVyZV9ibG9ja19raXRfdXNlcl9ibG9jayI6ZmFsc2UsImZlYXR1cmVfYmxvY2tfa2l0X3JhZGlvX2J1dHRvbnMiOmZhbHNlLCJmZWF0dXJlX2Jsb2NrX2tpdF9jaGVja2JveGVzIjpmYWxzZSwiZmVhdHVyZV9ibG9ja19raXRfcmFuZ2VfZGF0ZXBpY2tlciI6ZmFsc2UsImZlYXR1cmVfYWRkX2FwcF9ob21lX3RlYW1fbmFtZSI6ZmFsc2UsImZlYXR1cmVfZGF0ZV90aW1lX3BpY2tlciI6ZmFsc2UsImZlYXR1cmVfYmVhY29uX2pzX2Vycm9ycyI6ZmFsc2UsImZlYXR1cmVfYmVhY29uX2pzX2FkbWluX2Vycm9ycyI6ZmFsc2UsImZlYXR1cmVfZGlhbG9nc192Ml9tb2JpbGUiOnRydWUsImZlYXR1cmVfdXNlcl9hcHBfZGlzYWJsZV9zcGVlZF9idW1wIjp0cnVlLCJmZWF0dXJlX29uZWRyaXZlX3BpY2tlciI6dHJ1ZSwiZmVhdHVyZV9vbmVkcml2ZV9yZWRpcmVjdF91cmkiOnRydWUsImZlYXR1cmVfb25lZHJpdmVfYmV0dGVyX2Vycm9ycyI6dHJ1ZSwiZmVhdHVyZV9vbmVkcml2ZV9sYW5kaW5nX3BhZ2UiOmZhbHNlLCJmZWF0dXJlX29uZWRyaXZlX3VwZGF0ZV91bmZ1cmxfc3VnZ2VzdGlvbnMiOmZhbHNlLCJmZWF0dXJlX2Rpc2FibGVfYm94X3BsdXNfbWVudSI6ZmFsc2UsImZlYXR1cmVfdHJhY3Rvcl9zaGFyZWRfaW52aXRlX2xpbmsiOnRydWUsImZlYXR1cmVfbmV3eHBfMjExOSI6dHJ1ZSwiZmVhdHVyZV90cmFjdG9yX2JhY2t1cF9jaGFubmVsbmFtZV9jb3B5Ijp0cnVlLCJmZWF0dXJlX3NrX3RhYmxlcyI6ZmFsc2UsImZlYXR1cmVfb3Bwb3J0dW5pc3RpY19yZWxvYWRzIjpmYWxzZSwiZmVhdHVyZV9zb25pY19kZWdyYWRlZF9iYW5uZXIiOnRydWUsImZlYXR1cmVfZGVncmFkZWRfc2VuZCI6dHJ1ZSwiZmVhdHVyZV9mbGFubmVsX3hociI6dHJ1ZSwiZmVhdHVyZV9kZXN5bmNfcmVzeW5jIjpmYWxzZSwiZmVhdHVyZV92aXRlc3Nfc2lkZWJhciI6dHJ1ZSwiZmVhdHVyZV9zdHJhbmdlcl9kYW5nZXIiOmZhbHNlLCJmZWF0dXJlX21lc3NhZ2VfaGlzdG9yeV9jZm0iOnRydWUsImZlYXR1cmVfZGVncmFkZWRfcnRtX2Fsd2F5c19mYWlscyI6ZmFsc2UsImZlYXR1cmVfZGVsZXRlX3RlYW1fYW5kX2FwcHMiOnRydWUsImZlYXR1cmVfcGpwZWciOmZhbHNlLCJmZWF0dXJlX3BkZl90aHVtYiI6dHJ1ZSwiZmVhdHVyZV9hcHBzX21hbmFnZV9wZXJtaXNzaW9uc19zY29wZV9jaGFuZ2VzIjp0cnVlLCJmZWF0dXJlX3JlbWluZGVyX2Nyb3NzX3dvcmtzcGFjZSI6dHJ1ZSwiZmVhdHVyZV9zcGVlZHlfYm9vdF9oYW5kbGViYXJzIjpmYWxzZSwiZmVhdHVyZV9zYW1sX293bmVyc19vbmx5Ijp0cnVlLCJmZWF0dXJlX21vZGVybl9kdW5uaW5nX2Jhbm5lcnNfaTE4biI6dHJ1ZSwiZmVhdHVyZV9mbGFubmVsX2Fsd2F5c191c2VfY2FuYXJ5IjpmYWxzZSwiZmVhdHVyZV9zb25pY19yZWRpcmVjdF9vcHRfb3V0IjpmYWxzZSwiZmVhdHVyZV9nbG9iYWxfbmF2IjpmYWxzZSwiZmVhdHVyZV9nbG9iYWxfbmF2X3JvbGxiYWNrIjpmYWxzZSwiZmVhdHVyZV9nbG9iYWxfbmF2X2xheW91dCI6ZmFsc2UsImZlYXR1cmVfY2xhc3NpY19uYXYiOmZhbHNlLCJmZWF0dXJlX25ld19yZWFjdGlvbnMiOnRydWUsImZlYXR1cmVfcGFnZXNfZXhhbXBsZSI6ZmFsc2UsImZlYXR1cmVfc29uaWNfcGlucyI6ZmFsc2UsImZlYXR1cmVfc29uaWNfY2hhbm5lbF9icm93c2VyIjp0cnVlLCJmZWF0dXJlX3NvbmljX3ZpZGVvX3BsYWNlaG9sZGVyIjp0cnVlLCJmZWF0dXJlX2FwcF9kaXJlY3RvcnlfaG9tZV9wYWdlX3JlZGVzaWduIjp0cnVlLCJmZWF0dXJlX2hpZGRlbl93a3NwX3VuZnVybHMiOnRydWUsImZlYXR1cmVfZ3Vlc3Rfd2tzcF91bmZ1cmxzIjpmYWxzZSwiZmVhdHVyZV93b3Jrc3BhY2Vfc2NpbV9tYW5hZ2VtZW50IjpmYWxzZSwiZmVhdHVyZV91bmlmaWVkX21lbWJlciI6ZmFsc2UsImZlYXR1cmVfbmV3X3VuaWZpZWRfbGlzdF9lbnRpdGllcyI6ZmFsc2UsImZlYXR1cmVfdHVybl9tcGRtX25vdGlmc19vbiI6dHJ1ZSwiZmVhdHVyZV9icm93c2VyX2RyYWduZHJvcCI6ZmFsc2UsImZlYXR1cmVfZGVza3RvcF9mb3JjZV9wcm9kdWN0aW9uX2NoYW5uZWwiOmZhbHNlLCJmZWF0dXJlX2Rlc2t0b3BfbG9nc191cGxvYWQiOmZhbHNlLCJmZWF0dXJlX21hY29zX2Rpc2FibGVfaHciOnRydWUsImZlYXR1cmVfZGVza3RvcF9ub3RpZmljYXRpb25zXzIwMTgiOmZhbHNlLCJmZWF0dXJlX2V4Y2VsX29mZmljZV9wcmV2aWV3Ijp0cnVlLCJmZWF0dXJlX29yZ19hd2FyZV9leHRlcm5hbF9zaGFyZWRfY2hhbm5lbHMiOnRydWUsImZlYXR1cmVfZXNjX2Rpc2Nvbm5lY3RfdjJfY2xpZW50Ijp0cnVlLCJmZWF0dXJlX2VzY19kaXNjb25uZWN0X3YyX3JlbGVhc2VfZGVwZW5kZW50X2NvcHkiOnRydWUsImZlYXR1cmVfcXVpbGxfdXBncmFkZSI6dHJ1ZSwiZmVhdHVyZV9hbGx5X3NvdW5kcyI6ZmFsc2UsImZlYXR1cmVfYm90c19ub3RfbWVtYmVycyI6dHJ1ZSwiZmVhdHVyZV93dGFfbW9kYWxfbTExbiI6ZmFsc2UsImZlYXR1cmVfd3RhX3N0b3BfY3JlYXRpb24iOnRydWUsImZlYXR1cmVfbTExbl9jaGFubmVsX2RldGFpbHMiOmZhbHNlLCJmZWF0dXJlX2dyb3VwX3Njb3BlcyI6ZmFsc2UsImZlYXR1cmVfYmxvY2tfZ3Vlc3RfYXBwX2NyZWF0aW9uIjp0cnVlLCJmZWF0dXJlX29hdXRoX2NoYW5uZWxfcGlja2Vyc19mbGFubmVsIjpmYWxzZSwiZmVhdHVyZV93dGFfb3JnX2xldmVsX2FwcHMiOmZhbHNlLCJmZWF0dXJlX2NoYW5uZWxfYWN0aW9ucyI6ZmFsc2UsImZlYXR1cmVfc2hvcnRjdXRzX2J1dHRvbl9vbl9sZWZ0IjpmYWxzZSwiZmVhdHVyZV9jb2xvcmZ1bF9zbGFzaF9jb21tYW5kcyI6ZmFsc2UsImZlYXR1cmVfY2hhbm5lbF9hY3Rpb25zX2NsaWVudCI6ZmFsc2UsImZlYXR1cmVfc2hvcnRjdXRzX3Byb21wdCI6dHJ1ZSwiZmVhdHVyZV9hY2Nlc3NpYmxlX2RpYWxvZ3MiOnRydWUsImZlYXR1cmVfYXBwX2FjdGlvbnNfZ2xvYmFsIjpmYWxzZSwiZmVhdHVyZV9hcHBfYWN0aW9uc19mZV9yZWZhY3RvciI6ZmFsc2UsImZlYXR1cmVfc2hhcmVkX2NoYW5uZWxfZnJlZV90cmlhbF9mbG93Ijp0cnVlLCJmZWF0dXJlX2NhbGxzX2NsaXBib2FyZF9icm9hZGNhc3Rpbmdfb3B0aW4iOnRydWUsImZlYXR1cmVfc2NyZWVuX3NoYXJlX25lZWRzX2Flcm8iOmZhbHNlLCJmZWF0dXJlX3NsaV90cmVuZGluZ19kYXNoYm9hcmQiOmZhbHNlLCJmZWF0dXJlX2kxOG5fc2VsZWN0X2VtcHR5X3N0YXRlX3N0cmluZyI6ZmFsc2UsImZlYXR1cmVfYWNjZXNzaWJsZV9mc19kaWFsb2dzIjp0cnVlLCJmZWF0dXJlX2NoYW5uZWxfYnJvd3Nlcl9kcm9wZG93biI6dHJ1ZSwiZmVhdHVyZV90cmFwX2tiX3dpdGhpbl9mc19tb2RhbHMiOnRydWUsImZlYXR1cmVfZGlhbG9nX3NwZWVkYnVtcCI6dHJ1ZSwiZmVhdHVyZV9tb2Rlcm5faW1hZ2Vfdmlld2VyIjp0cnVlLCJmZWF0dXJlX2Vtb2ppX2J5X2lkIjp0cnVlLCJmZWF0dXJlX3d0YV9ub3RpZmljYXRpb25zIjp0cnVlLCJmZWF0dXJlX21jX21pZ3JhdGlvbl9iYW5uZXIiOnRydWUsImZlYXR1cmVfZmlsZV9jb21tZW50X2RlbGV0ZWRfcnRtX2hhbmRsZXIiOmZhbHNlLCJmZWF0dXJlX2F0dGFjaG1lbnRfdGV4dF9tb3JlIjpmYWxzZSwiZmVhdHVyZV9hcmlhX2FwcGxpY2F0aW9uX21vZGUiOmZhbHNlLCJmZWF0dXJlX21vZGVybl9yZXF1ZXN0X3dvcmtzcGFjZV9kaWFsb2ciOmZhbHNlLCJmZWF0dXJlX21vZGVybl9wcm9maWxlX2ZsZXhwYW5lIjpmYWxzZSwiZmVhdHVyZV9zY2dfY29udmVyc2lvbl9jaGFubmVscyI6dHJ1ZSwiZmVhdHVyZV9yZWR1Y2VfdW5leHBlY3RlZF91bmluc3RhbGxzIjp0cnVlLCJmZWF0dXJlX3NvbmljX3F1aWNrX3N3aXRjaGVyIjpmYWxzZSwiZmVhdHVyZV9pZHBfZ3JvdXBfd2FybmluZyI6ZmFsc2UsImZlYXR1cmVfdHJhY2tfdGltZV9zcGVudCI6dHJ1ZSwiZmVhdHVyZV9hbm5vdW5jZV9vbmx5Ijp0cnVlLCJmZWF0dXJlX2Fubm91bmNlX29ubHlfd2Vic29ja2V0Ijp0cnVlLCJmZWF0dXJlX2Fubm91bmNlX29ubHlfcHJlZl9jaGFuZ2VfbWVzc2FnZSI6dHJ1ZSwiZmVhdHVyZV9hbm5vdW5jZV9vbmx5X3Byb21vIjpmYWxzZSwiZmVhdHVyZV9hdF9tZW50aW9uX2ludml0ZXMiOmZhbHNlLCJmZWF0dXJlX2NoYW5uZWxfaW52aXRlX3Rva2VuaXphdGlvbiI6ZmFsc2UsImZlYXR1cmVfY2hhbm5lbF9pc19uZXdfY3JlYXRlX2VkaXQiOmZhbHNlLCJmZWF0dXJlX2NvbXBvc2VfcHJvdG90eXBlIjpmYWxzZSwiZmVhdHVyZV9pbXBvcnRzX2NhbmNlbCI6ZmFsc2UsImZlYXR1cmVfaW1wb3J0c19jaGFubmVsX3NlcGFyYXRpb24iOmZhbHNlLCJmZWF0dXJlX2V2YWx1ZV8yNjQxX2Rpc2FsbG93X2VuZm9yY2Vfb3Jnd2lkZV9wb2xpY3kiOmZhbHNlLCJmZWF0dXJlX2VtYWlsX3dvcmtvYmplY3RfdWkiOmZhbHNlLCJmZWF0dXJlX2VtYWlsX25vdGlmeSI6ZmFsc2UsImZlYXR1cmVfZW1haWxfcHJpdmF0ZSI6dHJ1ZSwiZmVhdHVyZV9hc3luY191c2Vyc19zZXRfcGhvdG8iOmZhbHNlLCJmZWF0dXJlX2VzY19hZG1pbiI6dHJ1ZSwiZmVhdHVyZV9jdXN0b21pemVkX2RvbWFpbl9jbGFpbWluZyI6dHJ1ZSwiZmVhdHVyZV9vcmdfd2lkZV9tMTFuIjpmYWxzZSwiZmVhdHVyZV9jYWxlbmRhcl9zaW1wbGVfYWdlbmRhX3ZpZXciOmZhbHNlLCJmZWF0dXJlX2FuYWx5dGljc19lbmFibGVfZGl2aXNpb24iOmZhbHNlLCJmZWF0dXJlX3NlYXJjaF9vbl9uYW1lX2FuZF9lbWFpbF9vbmx5Ijp0cnVlLCJmZWF0dXJlX2VudGVycHJpc2VfYW5hbHl0aWNzX2FwcHNfdGFiIjpmYWxzZSwiZmVhdHVyZV9lbnRlcnByaXNlX2FuYWx5dGljc18yMDE5X3ExX3VwZGF0ZSI6dHJ1ZSwiZmVhdHVyZV9pbnNpZ2h0c19hbGxvd19hY2Nlc3NfdG9fYXBwIjpmYWxzZSwiZmVhdHVyZV9leGlzdGluZ19oZWxwX3JlcXVlc3RfYXR0YWNobWVudHMiOnRydWUsImZlYXR1cmVfbWlncmF0aW9uX2JhY2tncm91bmRfY2xpZW50IjpmYWxzZSwiZmVhdHVyZV91bmZ1cmxfbWV0YWRhdGEiOmZhbHNlLCJmZWF0dXJlX3BsdXNfbWVudV9hZGRfYXBwc19saW5rIjpmYWxzZSwiZmVhdHVyZV9yZWNlbnRfZmlsZXNfb21uaXBpY2tlciI6ZmFsc2UsImZlYXR1cmVfZ3JhbnVsYXJfYm90c19kZXZlbG9wZXJfcHJldmlldyI6ZmFsc2UsImZlYXR1cmVfZ3JhbnVsYXJfYm90X3Njb3Blc19HQSI6ZmFsc2UsImZlYXR1cmVfZW1haWxfYnJpZGdlX2dyaWQiOmZhbHNlLCJmZWF0dXJlX3JlbW92ZV9nZHJpdmVfY29uZmlybWF0aW9uIjpmYWxzZSwiZmVhdHVyZV9zdHJpcGVfc2NhIjpmYWxzZSwiZmVhdHVyZV9zZWxmX3NlcnZlX3NlbGVjdCI6dHJ1ZSwiZmVhdHVyZV92YXRfcHJvamVjdF9zYV9zayI6dHJ1ZSwiZmVhdHVyZV92YXRfcHJvamVjdF9zYV9za18yIjp0cnVlLCJmZWF0dXJlX3ZhdF9wcm9qZWN0X3NhX3NrX2NvbGxlY3Rpb24iOnRydWUsImZlYXR1cmVfZW1haWxfYmlsbGluZ19wZW5kaW5nX2V4cGlyeV90cmFuc2xhdGlvbnMiOnRydWUsImZlYXR1cmVfdXBncmFkZV9zbGFja190cmFuc2xhdGlvbnMiOnRydWUsImZlYXR1cmVfcGVyc19zZWFyY2hfbXNnX2xpbWl0X3dhcm5pbmdfaTE4biI6dHJ1ZSwiZmVhdHVyZV9oaWdobGlnaHRfc3RhbmRhcmRfb25fcGxhbnNfcGFnZV9pMThuIjp0cnVlLCJmZWF0dXJlX2dzb19yZW1vdGVfc2Vzc2lvbl93aXBlIjpmYWxzZSwiZmVhdHVyZV9hZG1pbl9tb3ZlX2NoYW5uZWxzX21lc3NhZ2UiOmZhbHNlLCJmZWF0dXJlX25ld3hwX2ppcmFfMjA0MyI6dHJ1ZSwiZmVhdHVyZV9zZWVfbW9yZV9jaGFubmVscyI6ZmFsc2UsImZlYXR1cmVfY3JlYXRvcl9zb25pY191cmwiOmZhbHNlLCJmZWF0dXJlX2ppcmFfbmV3eHBfMjM3MiI6dHJ1ZSwiZmVhdHVyZV9qaXJhX25ld3hwXzE3NTQiOmZhbHNlLCJmZWF0dXJlX3Vuc3VwcG9ydGVkX2Jyb3dzZXJzX2NvbXBvbmVudF90cmFuc2xhdGlvbnMiOmZhbHNlLCJmZWF0dXJlX25ld3hwX2ZlX2ludml0ZV9tb2Rlcm4iOnRydWUsImZlYXR1cmVfYWN0aXZhdGlvbl9tb2Rlcm5fZ2V0X3N0YXJ0ZWQiOmZhbHNlLCJmZWF0dXJlX21vZGVybml6ZV9jaGFubmVsX2NyZWF0ZV9tb2RhbCI6dHJ1ZSwiZmVhdHVyZV9zb25pY19wbGFjZWhvbGRlcl9sYWJlbHMiOmZhbHNlLCJmZWF0dXJlX3NvbmljX2VzY19jcmVhdGlvbiI6ZmFsc2UsImZlYXR1cmVfbmlnaHRzaGFkZSI6ZmFsc2UsImZlYXR1cmVfcGxhdGZvcm1fY2FsbHNfYXBpIjp0cnVlLCJmZWF0dXJlX3RocmVhZGVkX2NhbGxfYmxvY2siOmZhbHNlLCJmZWF0dXJlX2JyaW5nX3BsYW5zX3BhZ2VfdG9fc3NiX3RyYW5zbGF0aW9ucyI6dHJ1ZSwiZmVhdHVyZV9laWRlbnRfMjA5MiI6ZmFsc2UsImZlYXR1cmVfZWlkZW50XzIxNTQiOmZhbHNlLCJmZWF0dXJlX21vYmlsZV9iaW9tZXRyaWNzX3RpbWVvdXQiOnRydWUsImZlYXR1cmVfc29uaWNfY2hhbm5lbF9pbnZpdGVfbW9kYWwiOmZhbHNlLCJmZWF0dXJlX2xpZmVjeWNsZV9sb2dnaW5nX3BsYW5zX3BhZ2UiOnRydWUsImZlYXR1cmVfY2hhbmdlX3B1cnBvc2VfdG9fZGVzY3JpcHRpb24iOmZhbHNlLCJmZWF0dXJlX3BsYXRmb3JtX2FwcF9tYW5hZ2VtZW50X29uX2RlbWFuZF9waWNrZXJzIjp0cnVlLCJmZWF0dXJlX3BsYXRmb3JtX2FwcF9tYW5hZ2VtZW50X29uX2RlbWFuZF9waWNrZXJzX3BoYXNlXzIiOmZhbHNlLCJmZWF0dXJlX3NsYWNrX21lc3NhZ2VfYXR0YWNobWVudF90b29sdGlwIjpmYWxzZSwiZmVhdHVyZV9jaGVja291dF9mdWxsX3NjaGVkdWxlX3NlbGVjdG9yX3RyYW5zbGF0aW9ucyI6dHJ1ZSwiZmVhdHVyZV9tb2Rlcm5fZ2RyaXZlX2NyZWF0ZSI6ZmFsc2UsImZlYXR1cmVfZ2RyaXZlX3Byb21wdF9yZWZhY3RvciI6dHJ1ZSwiZmVhdHVyZV9hcHBfcHJvbXB0c19jb25uZWN0X3JlZmFjdG9yIjpmYWxzZSwiZmVhdHVyZV9uZXd4cF8yNzc4Ijp0cnVlLCJmZWF0dXJlX25ld3hwXzMxMDAiOmZhbHNlLCJmZWF0dXJlX25ld3hwMzEwMF92MSI6dHJ1ZSwiZmVhdHVyZV9zZWFyY2hfZmVlZGJhY2siOmZhbHNlLCJmZWF0dXJlX21vZGVybml6ZV9saW1pdF9tZXRlciI6dHJ1ZSwiZmVhdHVyZV9zaGFyZWRfY2hhbm5lbHNfY3VzdG9tX2Vtb2ppc191cmwiOmZhbHNlLCJmZWF0dXJlX3NoYXJlZF9jaGFubmVsc19jdXN0b21fZW1vamlzX3VybF9jbGllbnQiOmZhbHNlLCJmZWF0dXJlX25ld19jb3B5X2Zvcl9pZGVudGl0eV9iYXNpYyI6ZmFsc2UsImZlYXR1cmVfbmV3eHBfMjc5OCI6ZmFsc2UsImZlYXR1cmVfc29uaWNfbGVhdmVfd29ya3NwYWNlX2RpYWxvZyI6ZmFsc2UsImZlYXR1cmVfY2hhbm5lbF9uYW1pbmdfbm9ybXMiOnRydWUsImZlYXR1cmVfYXBwc19icm93c2VyX2ExMXkiOmZhbHNlLCJmZWF0dXJlX2JldHRlcl9zY19pbnZpdGVzIjpmYWxzZSwiZmVhdHVyZV9iZXR0ZXJfbWFuYWdlX3NjX21vZGFsIjpmYWxzZSwiZmVhdHVyZV9iZXR0ZXJfc2NfaW52aXRlc19hY2NlcHRfZmxvd19hcHAiOmZhbHNlLCJmZWF0dXJlX2JldHRlcl9zY19pbnZpdGVzX3NsYWNrYm90X2NsaWVudCI6ZmFsc2UsImZlYXR1cmVfcGFpZF9vbmJvYXJkaW5nX3BhZ2V1cGRhdGUiOnRydWUsImZlYXR1cmVfZG93bmxvYWRfYWNjZXNzX2xvZ3MiOnRydWUsImZlYXR1cmVfbmV3eHBfMzA5N190cmFuc2xhdGlvbnMiOmZhbHNlLCJmZWF0dXJlX3RyYWNlX3dlYmFwcF9pbml0Ijp0cnVlLCJmZWF0dXJlX25ld3hwXzI4MzIiOnRydWUsImZlYXR1cmVfYXBwX2Jyb3dzZXJfYmV0dGVyX2hlYWRlcl90cmFuc2xhdGlvbnMiOnRydWUsImZlYXR1cmVfYW5ub3VuY2VtZW50X29ubHlfY2hhbm5lbF9jb3B5X2NoYW5nZV90cmFuc2xhdGlvbnMiOnRydWUsImZlYXR1cmVfd29ya2Zsb3dfYm90c19pbl9jbGllbnQiOmZhbHNlLCJmZWF0dXJlX2J1aWxkZXJfaXNfd29ya2Zsb3dfYXBwIjpmYWxzZSwiZmVhdHVyZV9zdHJpcGVfY29tcGxldGVseV9kb3duX2Jhbm5lciI6ZmFsc2UsImZlYXR1cmVfZmVhdF9icm93c2VyX2NvbnRyb2wiOmZhbHNlLCJmZWF0dXJlX25ld3hwXzI4NjJfdHJhbnNsYXRpb25zIjpmYWxzZSwiZmVhdHVyZV9tb3ZlX2NoYW5uZWxzX2NvcHkiOmZhbHNlLCJmZWF0dXJlX21vZGVybl9wbGFuc19wYWdlX3RyYW5zbGF0aW9ucyI6ZmFsc2UsImZlYXR1cmVfcGxhbnNfcGFnZV9xdW90ZSI6ZmFsc2UsImZlYXR1cmVfY2hlY2tvdXR2Ml9kaXNjb3VudF9mb3JfZWR1Y2F0aW9uX2FuZF9ub25wcm9maXQiOmZhbHNlLCJmZWF0dXJlX2RlcHJlY2F0aW9uX2Rhc2hib2FyZHMiOmZhbHNlLCJjbGllbnRfbG9ncyI6eyIwIjp7Im51bWJlcnMiOlswXSwidXNlcl9mYWNpbmciOmZhbHNlfSwiMiI6eyJudW1iZXJzIjpbMl0sInVzZXJfZmFjaW5nIjpmYWxzZX0sIjQiOnsibnVtYmVycyI6WzRdLCJ1c2VyX2ZhY2luZyI6ZmFsc2V9LCI1Ijp7Im51bWJlcnMiOls1XSwidXNlcl9mYWNpbmciOmZhbHNlfSwiMjMiOnsibnVtYmVycyI6WzIzXSwidXNlcl9mYWNpbmciOmZhbHNlfSwic291bmRzIjp7Im5hbWUiOiJzb3VuZHMiLCJudW1iZXJzIjpbMzddfSwiMzciOnsibmFtZSI6InNvdW5kcyIsIm51bWJlcnMiOlszN10sInVzZXJfZmFjaW5nIjp0cnVlfSwiNDciOnsibnVtYmVycyI6WzQ3XSwidXNlcl9mYWNpbmciOmZhbHNlfSwiNDgiOnsibnVtYmVycyI6WzQ4XSwidXNlcl9mYWNpbmciOmZhbHNlfSwiTWVzc2FnZSBIaXN0b3J5Ijp7Im5hbWUiOiJNZXNzYWdlIEhpc3RvcnkiLCJudW1iZXJzIjpbNThdfSwiNTgiOnsibmFtZSI6Ik1lc3NhZ2UgSGlzdG9yeSIsIm51bWJlcnMiOls1OF0sInVzZXJfZmFjaW5nIjp0cnVlfSwiNjciOnsibnVtYmVycyI6WzY3XSwidXNlcl9mYWNpbmciOmZhbHNlfSwiNzIiOnsibnVtYmVycyI6WzcyXSwidXNlcl9mYWNpbmciOmZhbHNlfSwiNzMiOnsibnVtYmVycyI6WzczXSwidXNlcl9mYWNpbmciOmZhbHNlfSwiODIiOnsibnVtYmVycyI6WzgyXSwidXNlcl9mYWNpbmciOmZhbHNlfSwiODgiOnsibnVtYmVycyI6Wzg4XSwidXNlcl9mYWNpbmciOmZhbHNlfSwiOTEiOnsibnVtYmVycyI6WzkxXSwidXNlcl9mYWNpbmciOmZhbHNlfSwiOTMiOnsibnVtYmVycyI6WzkzXSwidXNlcl9mYWNpbmciOmZhbHNlfSwiOTYiOnsibnVtYmVycyI6Wzk2XSwidXNlcl9mYWNpbmciOmZhbHNlfSwiOTkiOnsibnVtYmVycyI6Wzk5XSwidXNlcl9mYWNpbmciOmZhbHNlfSwiQ2hhbm5lbCBNYXJraW5nIChNUykiOnsibmFtZSI6IkNoYW5uZWwgTWFya2luZyAoTVMpIiwibnVtYmVycyI6WzE0MV19LCIxNDEiOnsibmFtZSI6IkNoYW5uZWwgTWFya2luZyAoTVMpIiwibnVtYmVycyI6WzE0MV0sInVzZXJfZmFjaW5nIjp0cnVlfSwiQ2hhbm5lbCBNYXJraW5nIChDbGllbnQpIjp7Im5hbWUiOiJDaGFubmVsIE1hcmtpbmcgKENsaWVudCkiLCJudW1iZXJzIjpbMTQyXX0sIjE0MiI6eyJuYW1lIjoiQ2hhbm5lbCBNYXJraW5nIChDbGllbnQpIiwibnVtYmVycyI6WzE0Ml0sInVzZXJfZmFjaW5nIjp0cnVlfSwiQ2xvc2UgT2xkIElNcyAoQ2xpZW50KSI6eyJuYW1lIjoiQ2xvc2UgT2xkIElNcyAoQ2xpZW50KSIsIm51bWJlcnMiOlsyMjFdfSwiMjIxIjp7Im5hbWUiOiJDbG9zZSBPbGQgSU1zIChDbGllbnQpIiwibnVtYmVycyI6WzIyMV0sInVzZXJfZmFjaW5nIjp0cnVlfSwiMzY1Ijp7Im51bWJlcnMiOlszNjVdLCJ1c2VyX2ZhY2luZyI6ZmFsc2V9LCIzODkiOnsibnVtYmVycyI6WzM4OV0sInVzZXJfZmFjaW5nIjpmYWxzZX0sIjQzOCI6eyJudW1iZXJzIjpbNDM4XSwidXNlcl9mYWNpbmciOmZhbHNlfSwiNDQ0Ijp7Im51bWJlcnMiOls0NDRdLCJ1c2VyX2ZhY2luZyI6ZmFsc2V9LCI0ODEiOnsibnVtYmVycyI6WzQ4MV0sInVzZXJfZmFjaW5nIjpmYWxzZX0sIjQ4OCI6eyJudW1iZXJzIjpbNDg4XSwidXNlcl9mYWNpbmciOmZhbHNlfSwiNTI5Ijp7Im51bWJlcnMiOls1MjldLCJ1c2VyX2ZhY2luZyI6ZmFsc2V9LCI1NTIiOnsibnVtYmVycyI6WzU1Ml0sInVzZXJfZmFjaW5nIjpmYWxzZX0sImRhc2hib2FyZCI6eyJuYW1lIjoiZGFzaGJvYXJkIiwibnVtYmVycyI6WzY2Nl19LCI2NjYiOnsibmFtZSI6ImRhc2hib2FyZCIsIm51bWJlcnMiOls2NjZdLCJ1c2VyX2ZhY2luZyI6ZmFsc2V9LCI2NjciOnsibnVtYmVycyI6WzY2N10sInVzZXJfZmFjaW5nIjpmYWxzZX0sIjc3MyI6eyJudW1iZXJzIjpbNzczXSwidXNlcl9mYWNpbmciOmZhbHNlfSwiNzc3Ijp7Im51bWJlcnMiOls3NzddLCJ1c2VyX2ZhY2luZyI6ZmFsc2V9LCI3OTQiOnsibnVtYmVycyI6Wzc5NF0sInVzZXJfZmFjaW5nIjpmYWxzZX0sIkNsaWVudCBSZXNwb25zaXZlbmVzcyI6eyJuYW1lIjoiQ2xpZW50IFJlc3BvbnNpdmVuZXNzIiwidXNlcl9mYWNpbmciOmZhbHNlLCJudW1iZXJzIjpbODA4XX0sIjgwOCI6eyJuYW1lIjoiQ2xpZW50IFJlc3BvbnNpdmVuZXNzIiwidXNlcl9mYWNpbmciOmZhbHNlLCJudW1iZXJzIjpbODA4XX0sIk1lc3NhZ2UgUGFuZSBTY3JvbGxpbmciOnsibmFtZSI6Ik1lc3NhZ2UgUGFuZSBTY3JvbGxpbmciLCJudW1iZXJzIjpbODg4XX0sIjg4OCI6eyJuYW1lIjoiTWVzc2FnZSBQYW5lIFNjcm9sbGluZyIsIm51bWJlcnMiOls4ODhdLCJ1c2VyX2ZhY2luZyI6dHJ1ZX0sIlVucmVhZCBiYW5uZXIgYW5kIGRpdmlkZXIiOnsibmFtZSI6IlVucmVhZCBiYW5uZXIgYW5kIGRpdmlkZXIiLCJudW1iZXJzIjpbOTk5XX0sIjk5OSI6eyJuYW1lIjoiVW5yZWFkIGJhbm5lciBhbmQgZGl2aWRlciIsIm51bWJlcnMiOls5OTldLCJ1c2VyX2ZhY2luZyI6dHJ1ZX0sIjEwMDAiOnsibnVtYmVycyI6WzEwMDBdLCJ1c2VyX2ZhY2luZyI6ZmFsc2V9LCJEdXBsaWNhdGUgYmFkZ2VzIChkZXNrdG9wIGFwcCBpY29ucykiOnsibmFtZSI6IkR1cGxpY2F0ZSBiYWRnZXMgKGRlc2t0b3AgYXBwIGljb25zKSIsIm51bWJlcnMiOlsxNzAxXX0sIjE3MDEiOnsibmFtZSI6IkR1cGxpY2F0ZSBiYWRnZXMgKGRlc2t0b3AgYXBwIGljb25zKSIsIm51bWJlcnMiOlsxNzAxXSwidXNlcl9mYWNpbmciOnRydWV9LCJNZW1iZXJzIjp7Im5hbWUiOiJNZW1iZXJzIiwibnVtYmVycyI6WzE5NzVdfSwiMTk3NSI6eyJuYW1lIjoiTWVtYmVycyIsIm51bWJlcnMiOlsxOTc1XSwidXNlcl9mYWNpbmciOnRydWV9LCJsYXp5IGxvYWRpbmciOnsibmFtZSI6ImxhenkgbG9hZGluZyIsIm51bWJlcnMiOlsxOTg5XX0sIjE5ODkiOnsibmFtZSI6ImxhenkgbG9hZGluZyIsIm51bWJlcnMiOlsxOTg5XSwidXNlcl9mYWNpbmciOnRydWV9LCJ0aGluX2NoYW5uZWxfbWVtYmVyc2hpcCI6eyJuYW1lIjoidGhpbl9jaGFubmVsX21lbWJlcnNoaXAiLCJudW1iZXJzIjpbMTk5MF19LCIxOTkwIjp7Im5hbWUiOiJ0aGluX2NoYW5uZWxfbWVtYmVyc2hpcCIsIm51bWJlcnMiOlsxOTkwXSwidXNlcl9mYWNpbmciOnRydWV9LCJzdGF0cyI6eyJuYW1lIjoic3RhdHMiLCJudW1iZXJzIjpbMTk5MV19LCIxOTkxIjp7Im5hbWUiOiJzdGF0cyIsIm51bWJlcnMiOlsxOTkxXSwidXNlcl9mYWNpbmciOnRydWV9LCJtcyI6eyJuYW1lIjoibXMiLCJudW1iZXJzIjpbMTk5Nl19LCIxOTk2Ijp7Im5hbWUiOiJtcyIsIm51bWJlcnMiOlsxOTk2XSwidXNlcl9mYWNpbmciOnRydWV9LCJzaGFyZWRfY2hhbm5lbHNfY29ubmVjdGlvbiI6eyJuYW1lIjoic2hhcmVkX2NoYW5uZWxzX2Nvbm5lY3Rpb24iLCJudW1iZXJzIjpbMTk5OV19LCIxOTk5Ijp7Im5hbWUiOiJzaGFyZWRfY2hhbm5lbHNfY29ubmVjdGlvbiIsIm51bWJlcnMiOlsxOTk5XSwidXNlcl9mYWNpbmciOmZhbHNlfSwiZG5kIjp7Im5hbWUiOiJkbmQiLCJudW1iZXJzIjpbMjAwMl19LCIyMDAyIjp7Im5hbWUiOiJkbmQiLCJudW1iZXJzIjpbMjAwMl0sInVzZXJfZmFjaW5nIjp0cnVlfSwiMjAwMyI6eyJudW1iZXJzIjpbMjAwM10sInVzZXJfZmFjaW5nIjpmYWxzZX0sIlRocmVhZHMiOnsibmFtZSI6IlRocmVhZHMiLCJudW1iZXJzIjpbMjAwNF19LCIyMDA0Ijp7Im5hbWUiOiJUaHJlYWRzIiwibnVtYmVycyI6WzIwMDRdLCJ1c2VyX2ZhY2luZyI6dHJ1ZX0sIjIwMDUiOnsibnVtYmVycyI6WzIwMDVdLCJ1c2VyX2ZhY2luZyI6ZmFsc2V9LCJSZWFjdGlvbnMiOnsibmFtZSI6IlJlYWN0aW9ucyIsIm51bWJlcnMiOlsyMDA2XX0sIjIwMDYiOnsibmFtZSI6IlJlYWN0aW9ucyIsIm51bWJlcnMiOlsyMDA2XSwidXNlcl9mYWNpbmciOnRydWV9LCJUU1NTQi5mb2N1c1RhYkFuZFN3aXRjaFRvQ2hhbm5lbCI6eyJuYW1lIjoiVFNTU0IuZm9jdXNUYWJBbmRTd2l0Y2hUb0NoYW5uZWwiLCJudW1iZXJzIjpbMjAwN119LCIyMDA3Ijp7Im5hbWUiOiJUU1NTQi5mb2N1c1RhYkFuZFN3aXRjaFRvQ2hhbm5lbCIsIm51bWJlcnMiOlsyMDA3XSwidXNlcl9mYWNpbmciOmZhbHNlfSwiUHJlc2VuY2UgRGV0ZWN0aW9uIjp7Im5hbWUiOiJQcmVzZW5jZSBEZXRlY3Rpb24iLCJudW1iZXJzIjpbMjAxN119LCIyMDE3Ijp7Im5hbWUiOiJQcmVzZW5jZSBEZXRlY3Rpb24iLCJudW1iZXJzIjpbMjAxN10sInVzZXJfZmFjaW5nIjp0cnVlfSwibWNfc2licyI6eyJuYW1lIjoibWNfc2licyIsIm51bWJlcnMiOls5OTk5XX0sIjk5OTkiOnsibmFtZSI6Im1jX3NpYnMiLCJudW1iZXJzIjpbOTk5OV0sInVzZXJfZmFjaW5nIjpmYWxzZX0sIk1lbWJlciBzZWFyY2hpbmciOnsibmFtZSI6Ik1lbWJlciBzZWFyY2hpbmciLCJudW1iZXJzIjpbOTAyMTFdfSwiOTAyMTEiOnsibmFtZSI6Ik1lbWJlciBzZWFyY2hpbmciLCJudW1iZXJzIjpbOTAyMTFdLCJ1c2VyX2ZhY2luZyI6dHJ1ZX0sIjk4NzY1Ijp7Im51bWJlcnMiOls5ODc2NV0sInVzZXJfZmFjaW5nIjpmYWxzZX0sIjg2NzUzMDkiOnsibnVtYmVycyI6Wzg2NzUzMDldLCJ1c2VyX2ZhY2luZyI6ZmFsc2V9fX07Cglib290X2RhdGEuc3RhcnRfbXMgPSBEYXRlLm5vdygpOwo8L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2Euc2xhY2stZWRnZS5jb20vYnYxLTYtMWIyNWM0NS9yb2xsdXAtY29yZV9yZXF1aXJlZF9saWJzLjRhODE2YThlZDM0NDY3MmY0NDM2Lm1pbi5qcyIgb25sb2FkPSJ3aW5kb3cuX2NkbiA/IF9jZG4ub2sodGhpcywgYXJndW1lbnRzKSA6IG51bGwiIG9uZXJyb3I9IndpbmRvdy5fY2RuID8gX2Nkbi5mYWlsZWQodGhpcywgYXJndW1lbnRzKSA6IG51bGwiIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiPjwvc2NyaXB0PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vYS5zbGFjay1lZGdlLmNvbS9idjEtNi0xYjI1YzQ1L21vZGVybi52ZW5kb3IuNjJjNWQwNDJhODg2YzJlYzFlNjYubWluLmpzIiBvbmxvYWQ9IndpbmRvdy5fY2RuID8gX2Nkbi5vayh0aGlzLCBhcmd1bWVudHMpIDogbnVsbCIgb25lcnJvcj0id2luZG93Ll9jZG4gPyBfY2RuLmZhaWxlZCh0aGlzLCBhcmd1bWVudHMpIDogbnVsbCIgY3Jvc3NvcmlnaW49ImFub255bW91cyI+PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly9hLnNsYWNrLWVkZ2UuY29tL2J2MS02LTFiMjVjNDUvYXBwbGljYXRpb24uNDk5ZDI5ZjI3ODc2NDJhZTU5ZDYubWluLmpzIiBvbmxvYWQ9IndpbmRvdy5fY2RuID8gX2Nkbi5vayh0aGlzLCBhcmd1bWVudHMpIDogbnVsbCIgb25lcnJvcj0id2luZG93Ll9jZG4gPyBfY2RuLmZhaWxlZCh0aGlzLCBhcmd1bWVudHMpIDogbnVsbCIgY3Jvc3NvcmlnaW49ImFub255bW91cyI+PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly9hLnNsYWNrLWVkZ2UuY29tL2J2MS02LTFiMjVjNDUvcm9sbHVwLWNvcmVfcmVxdWlyZWRfdHMuYTk3MDY2M2E2NmUyNjM2NTliYTIubWluLmpzIiBvbmxvYWQ9IndpbmRvdy5fY2RuID8gX2Nkbi5vayh0aGlzLCBhcmd1bWVudHMpIDogbnVsbCIgb25lcnJvcj0id2luZG93Ll9jZG4gPyBfY2RuLmZhaWxlZCh0aGlzLCBhcmd1bWVudHMpIDogbnVsbCIgY3Jvc3NvcmlnaW49ImFub255bW91cyI+PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly9hLnNsYWNrLWVkZ2UuY29tL2J2MS02LTFiMjVjNDUvVFMud2ViLmJkYzk2YzJkN2FhZjRhZGRhYjNjLm1pbi5qcyIgb25sb2FkPSJ3aW5kb3cuX2NkbiA/IF9jZG4ub2sodGhpcywgYXJndW1lbnRzKSA6IG51bGwiIG9uZXJyb3I9IndpbmRvdy5fY2RuID8gX2Nkbi5mYWlsZWQodGhpcywgYXJndW1lbnRzKSA6IG51bGwiIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiPjwvc2NyaXB0PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vYS5zbGFjay1lZGdlLmNvbS9idjEtNi0xYjI1YzQ1L3NpZ25hbHMuYjRhODIyYjE5Y2VhN2U5ZWE4NjQubWluLmpzIiBvbmxvYWQ9IndpbmRvdy5fY2RuID8gX2Nkbi5vayh0aGlzLCBhcmd1bWVudHMpIDogbnVsbCIgb25lcnJvcj0id2luZG93Ll9jZG4gPyBfY2RuLmZhaWxlZCh0aGlzLCBhcmd1bWVudHMpIDogbnVsbCIgY3Jvc3NvcmlnaW49ImFub255bW91cyI+PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly9hLnNsYWNrLWVkZ2UuY29tL2J2MS02LTFiMjVjNDUvcm9sbHVwLWNvcmVfd2ViLjE4OWNmMjk2NDc0NWJhMTY0NDFhLm1pbi5qcyIgb25sb2FkPSJ3aW5kb3cuX2NkbiA/IF9jZG4ub2sodGhpcywgYXJndW1lbnRzKSA6IG51bGwiIG9uZXJyb3I9IndpbmRvdy5fY2RuID8gX2Nkbi5mYWlsZWQodGhpcywgYXJndW1lbnRzKSA6IG51bGwiIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiPjwvc2NyaXB0PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vYS5zbGFjay1lZGdlLmNvbS9idjEtNi0xYjI1YzQ1L3JvbGx1cC1zZWNvbmRhcnlfYV9yZXF1aXJlZC4yZjFjYjFhM2JjNTVhOWEzMjA1OC5taW4uanMiIG9ubG9hZD0id2luZG93Ll9jZG4gPyBfY2RuLm9rKHRoaXMsIGFyZ3VtZW50cykgOiBudWxsIiBvbmVycm9yPSJ3aW5kb3cuX2NkbiA/IF9jZG4uZmFpbGVkKHRoaXMsIGFyZ3VtZW50cykgOiBudWxsIiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIj48L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2Euc2xhY2stZWRnZS5jb20vYnYxLTYtMWIyNWM0NS9yb2xsdXAtc2Vjb25kYXJ5X2JfcmVxdWlyZWQuNzY1OTVkZmE3OThhMjIzYmNjNzQubWluLmpzIiBvbmxvYWQ9IndpbmRvdy5fY2RuID8gX2Nkbi5vayh0aGlzLCBhcmd1bWVudHMpIDogbnVsbCIgb25lcnJvcj0id2luZG93Ll9jZG4gPyBfY2RuLmZhaWxlZCh0aGlzLCBhcmd1bWVudHMpIDogbnVsbCIgY3Jvc3NvcmlnaW49ImFub255bW91cyI+PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPlRTLmJvb3QoYm9vdF9kYXRhKTs8L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2Euc2xhY2stZWRnZS5jb20vYnYxLTYtMWIyNWM0NS9UUy53ZWIuXzQwNC41N2FiZjA4NmFkZDI5NWQwZTY3Zi5taW4uanMiIG9ubG9hZD0id2luZG93Ll9jZG4gPyBfY2RuLm9rKHRoaXMsIGFyZ3VtZW50cykgOiBudWxsIiBvbmVycm9yPSJ3aW5kb3cuX2NkbiA/IF9jZG4uZmFpbGVkKHRoaXMsIGFyZ3VtZW50cykgOiBudWxsIiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIj48L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2Euc2xhY2stZWRnZS5jb20vYnYxLTYtMWIyNWM0NS9zdGlja3lfbmF2LmE0MGNlNWU0MjVjZmQ0MDY5MzBjLm1pbi5qcyIgb25sb2FkPSJ3aW5kb3cuX2NkbiA/IF9jZG4ub2sodGhpcywgYXJndW1lbnRzKSA6IG51bGwiIG9uZXJyb3I9IndpbmRvdy5fY2RuID8gX2Nkbi5mYWlsZWQodGhpcywgYXJndW1lbnRzKSA6IG51bGwiIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiPjwvc2NyaXB0PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vYS5zbGFjay1lZGdlLmNvbS9idjEtNi0xYjI1YzQ1L2Zvb3Rlci5kMGMzZDI5MWNhYzdkZTFlZTczMS5taW4uanMiIG9ubG9hZD0id2luZG93Ll9jZG4gPyBfY2RuLm9rKHRoaXMsIGFyZ3VtZW50cykgOiBudWxsIiBvbmVycm9yPSJ3aW5kb3cuX2NkbiA/IF9jZG4uZmFpbGVkKHRoaXMsIGFyZ3VtZW50cykgOiBudWxsIiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIj48L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ym9vdF9kYXRhLm5vX2xvZ2luID0gdHJ1ZTs8L3NjcmlwdD48c3R5bGU+LmNvbG9yXzlmNjllNzpub3QoLm51Yykge2NvbG9yOiM5RjY5RTc7fS5jb2xvcl80YmJlMmU6bm90KC5udWMpIHtjb2xvcjojNEJCRTJFO30uY29sb3JfZTczOTJkOm5vdCgubnVjKSB7Y29sb3I6I0U3MzkyRDt9LmNvbG9yXzNjOTg5Zjpub3QoLm51Yykge2NvbG9yOiMzQzk4OUY7fS5jb2xvcl82NzRiMWI6bm90KC5udWMpIHtjb2xvcjojNjc0QjFCO30uY29sb3JfZTk2Njk5Om5vdCgubnVjKSB7Y29sb3I6I0U5NjY5OTt9LmNvbG9yX2UwYTcyOTpub3QoLm51Yykge2NvbG9yOiNFMEE3Mjk7fS5jb2xvcl82ODRiNmM6bm90KC5udWMpIHtjb2xvcjojNjg0QjZDO30uY29sb3JfNWI4OWQ1Om5vdCgubnVjKSB7Y29sb3I6IzVCODlENTt9LmNvbG9yXzJiNjgzNjpub3QoLm51Yykge2NvbG9yOiMyQjY4MzY7fS5jb2xvcl85OWE5NDk6bm90KC5udWMpIHtjb2xvcjojOTlBOTQ5O30uY29sb3JfZGYzZGMwOm5vdCgubnVjKSB7Y29sb3I6I0RGM0RDMDt9LmNvbG9yXzRjYzA5MTpub3QoLm51Yykge2NvbG9yOiM0Q0MwOTE7fS5jb2xvcl85YjNiNDU6bm90KC5udWMpIHtjb2xvcjojOUIzQjQ1O30uY29sb3JfZDU4MjQ3Om5vdCgubnVjKSB7Y29sb3I6I0Q1ODI0Nzt9LmNvbG9yX2JiODZiNzpub3QoLm51Yykge2NvbG9yOiNCQjg2Qjc7fS5jb2xvcl81YTQ1OTI6bm90KC5udWMpIHtjb2xvcjojNUE0NTkyO30uY29sb3JfZGIzMTUwOm5vdCgubnVjKSB7Y29sb3I6I0RCMzE1MDt9LmNvbG9yXzIzNWU1Yjpub3QoLm51Yykge2NvbG9yOiMyMzVFNUI7fS5jb2xvcl85ZTM5OTc6bm90KC5udWMpIHtjb2xvcjojOUUzOTk3O30uY29sb3JfNTNiNzU5Om5vdCgubnVjKSB7Y29sb3I6IzUzQjc1OTt9LmNvbG9yX2MzODZkZjpub3QoLm51Yykge2NvbG9yOiNDMzg2REY7fS5jb2xvcl8zODVhODY6bm90KC5udWMpIHtjb2xvcjojMzg1QTg2O30uY29sb3JfYTYzMDI0Om5vdCgubnVjKSB7Y29sb3I6I0E2MzAyNDt9LmNvbG9yXzU4NzBkZDpub3QoLm51Yykge2NvbG9yOiM1ODcwREQ7fS5jb2xvcl9lYTI5Nzc6bm90KC5udWMpIHtjb2xvcjojRUEyOTc3O30uY29sb3JfNTBhMGNmOm5vdCgubnVjKSB7Y29sb3I6IzUwQTBDRjt9LmNvbG9yX2Q1NWFlZjpub3QoLm51Yykge2NvbG9yOiNENTVBRUY7fS5jb2xvcl9kMTcwN2Q6bm90KC5udWMpIHtjb2xvcjojRDE3MDdEO30uY29sb3JfNDM3NjFiOm5vdCgubnVjKSB7Y29sb3I6IzQzNzYxQjt9LmNvbG9yX2UwNmI1Njpub3QoLm51Yykge2NvbG9yOiNFMDZCNTY7fS5jb2xvcl84ZjRhMmI6bm90KC5udWMpIHtjb2xvcjojOEY0QTJCO30uY29sb3JfOTAyZDU5Om5vdCgubnVjKSB7Y29sb3I6IzkwMkQ1OTt9LmNvbG9yX2RlNWYyNDpub3QoLm51Yykge2NvbG9yOiNERTVGMjQ7fS5jb2xvcl9hMmE1ZGM6bm90KC5udWMpIHtjb2xvcjojQTJBNURDO30uY29sb3JfODI3MzI3Om5vdCgubnVjKSB7Y29sb3I6IzgyNzMyNzt9LmNvbG9yXzNjOGM2OTpub3QoLm51Yykge2NvbG9yOiMzQzhDNjk7fS5jb2xvcl84ZDRiODQ6bm90KC5udWMpIHtjb2xvcjojOEQ0Qjg0O30uY29sb3JfODRiMjJmOm5vdCgubnVjKSB7Y29sb3I6Izg0QjIyRjt9LmNvbG9yXzRlYzBkNjpub3QoLm51Yykge2NvbG9yOiM0RUMwRDY7fS5jb2xvcl9lMjNmOTk6bm90KC5udWMpIHtjb2xvcjojRTIzRjk5O30uY29sb3JfZTQ3NWRmOm5vdCgubnVjKSB7Y29sb3I6I0U0NzVERjt9LmNvbG9yXzYxOWE0Zjpub3QoLm51Yykge2NvbG9yOiM2MTlBNEY7fS5jb2xvcl9hNzJmNzk6bm90KC5udWMpIHtjb2xvcjojQTcyRjc5O30uY29sb3JfN2Q0MTRjOm5vdCgubnVjKSB7Y29sb3I6IzdENDE0Qzt9LmNvbG9yX2FiYTcyNzpub3QoLm51Yykge2NvbG9yOiNBQkE3Mjc7fS5jb2xvcl85NjVkMWI6bm90KC5udWMpIHtjb2xvcjojOTY1RDFCO30uY29sb3JfNGQ1ZTI2Om5vdCgubnVjKSB7Y29sb3I6IzRENUUyNjt9LmNvbG9yX2RkODUyNzpub3QoLm51Yykge2NvbG9yOiNERDg1Mjc7fS5jb2xvcl9iZDkzMzY6bm90KC5udWMpIHtjb2xvcjojQkQ5MzM2O30uY29sb3JfZTg1ZDcyOm5vdCgubnVjKSB7Y29sb3I6I0U4NUQ3Mjt9LmNvbG9yX2RjN2RiYjpub3QoLm51Yykge2NvbG9yOiNEQzdEQkI7fS5jb2xvcl9iYzM2NjM6bm90KC5udWMpIHtjb2xvcjojQkMzNjYzO30uY29sb3JfOWQ4ZWVlOm5vdCgubnVjKSB7Y29sb3I6IzlEOEVFRTt9LmNvbG9yXzg0NjliYzpub3QoLm51Yykge2NvbG9yOiM4NDY5QkM7fS5jb2xvcl83Mzc2OWQ6bm90KC5udWMpIHtjb2xvcjojNzM3NjlEO30uY29sb3JfYjE0Y2JjOm5vdCgubnVjKSB7Y29sb3I6I0IxNENCQzt9PC9zdHlsZT4KCjwhLS0gc2xhY2std3d3LWhodm0tbWFpbi1pYWQtdjd2Ny8gMjAxOS0wOS0xMSAxNDowNDo1NC8gdjRmZWEwYzMzM2NkMzQ5YzdhM2VkMzUxZTRiZjkxMjE0MDRlZTgwMDMvIEI6SCAtLT4KCjwvYm9keT48L2h0bWw+ - http_version: - recorded_at: Wed, 11 Sep 2019 21:04:54 GMT - request: method: post uri: https://slack.com/api/chat.postMessage body: encoding: UTF-8 - string: token=&text=Hey%20I%20can%20post%20messages%21&channel=general + string: token=&text=This%20post%20should%20not%20work&channel=invalid-channel headers: Content-Type: - application/x-www-form-urlencoded @@ -84,13 +21,13 @@ http_interactions: Connection: - keep-alive Date: - - Wed, 11 Sep 2019 21:08:39 GMT + - Thu, 12 Sep 2019 06:07:39 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - 6f4ef161-4a7b-48ac-9644-b25d74a6a7ee + - 04a53c34-dbd4-44d5-8c5e-2aba9e3c57ba X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -116,28 +53,26 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-s1xo + - haproxy-www-qj5i X-Cache: - Miss from cloudfront Via: - - 1.1 72f0ac9702110cafbb646d71a297e2c7.cloudfront.net (CloudFront) + - 1.1 d9a3481018b2f1931201627713f68e77.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - SEA19 X-Amz-Cf-Id: - - WTKSvglfestXxP20SJCbAMpsDkzy3RM0CKc07jftXXF91z1MqtGLuQ== + - z127xQfL28PdetohRV_vRMbC3ABqp3cY6bE9RavA-gLwNYPgF6_GoA== body: encoding: UTF-8 - string: '{"ok":true,"channel":"CN8FME7AS","ts":"1568236119.000100","message":{"type":"message","subtype":"bot_message","text":"Hey - I can post messages!","ts":"1568236119.000100","username":"Leaves - Mariya - - API Project","bot_id":"BMW5VR8TV"}}' + string: '{"ok":false,"error":"channel_not_found"}' http_version: - recorded_at: Wed, 11 Sep 2019 21:08:39 GMT + recorded_at: Thu, 12 Sep 2019 06:07:39 GMT - request: method: post uri: https://slack.com/api/chat.postMessage body: encoding: UTF-8 - string: token=&text=This%20post%20should%20not%20work&channel=invalid-channel + string: token=&text=Hey%20I%20can%20post%20messages%21&channel=general headers: Content-Type: - application/x-www-form-urlencoded @@ -153,13 +88,13 @@ http_interactions: Connection: - keep-alive Date: - - Wed, 11 Sep 2019 21:09:20 GMT + - Thu, 12 Sep 2019 06:07:39 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - aa379eaa-c583-4fd2-a513-f5d4a2b36adc + - 8268b544-f2e9-46a1-8104-6c50e7167ab3 X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -185,18 +120,20 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-uw19 + - haproxy-www-u916 X-Cache: - Miss from cloudfront Via: - - 1.1 10b37ec1ede3e33f11dd42b87558cd1f.cloudfront.net (CloudFront) + - 1.1 44c580258abdf211fd3f1cae43c497e9.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - - SEA19-C1 + - SEA19 X-Amz-Cf-Id: - - KN6nutzAn5oQ9Ir0Yefg_5iZM0hZSaf8yndn22JNrYTmcFa48zAzLQ== + - 2iaFRMPmBFLe-7SNXsuriBn36do13jIP6ptosJk2oNWUy8TQUO8jEA== body: encoding: UTF-8 - string: '{"ok":false,"error":"channel_not_found"}' + string: '{"ok":true,"channel":"CN8FME7AS","ts":"1568268459.000100","message":{"type":"message","subtype":"bot_message","text":"Hey + I can post messages!","ts":"1568268459.000100","username":"Leaves - Mariya + - API Project","bot_id":"BMW5VR8TV"}}' http_version: - recorded_at: Wed, 11 Sep 2019 21:09:20 GMT + recorded_at: Thu, 12 Sep 2019 06:07:40 GMT recorded_with: VCR 5.0.0 diff --git a/test/cassettes/user_details.yml b/test/cassettes/user_details.yml index 19dd9abf..7852621a 100644 --- a/test/cassettes/user_details.yml +++ b/test/cassettes/user_details.yml @@ -21,17 +21,17 @@ http_interactions: Content-Type: - application/json; charset=utf-8 Content-Length: - - '1604' + - '1606' Connection: - keep-alive Date: - - Wed, 11 Sep 2019 22:48:33 GMT + - Thu, 12 Sep 2019 06:07:39 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - 34508f83-d7a2-459b-a799-6add05351595 + - 512b2016-5605-4064-bb31-8fc742df2a52 X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -57,15 +57,15 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-fdpw + - haproxy-www-n75o X-Cache: - Miss from cloudfront Via: - - 1.1 174acb08636ac7d9e9a778bbf1bcbc53.cloudfront.net (CloudFront) + - 1.1 ca79756ec49e2babf1b916300304b2fb.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - - SEA19-C1 + - SEA19 X-Amz-Cf-Id: - - pDQNBR4K5smSou0NaY34tQSCGOcJDVg5tab6r36FbBLqZswvWt70dQ== + - epN3GvLtmw9dZPAt71tzdwWRqDfxYCG53wIdsWP3-60qhS48lCA83Q== body: encoding: ASCII-8BIT string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN69AJ2SU","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific @@ -89,7 +89,7 @@ http_interactions: Schuler","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gc6d02aa49cf","image_24":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071410},{"id":"UN69C37BJ","team_id":"TN69AJ2SU","name":"tiffanycee123","deleted":false,"color":"4bbe2e","real_name":"Tiffany Chio","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Tiffany Chio","real_name_normalized":"Tiffany Chio","display_name":"Tiffany Chio","display_name_normalized":"Tiffany - Chio","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge49485fcc1e","image_24":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071504}],"cache_ts":1568242113,"response_metadata":{"next_cursor":""}}' + Chio","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge49485fcc1e","image_24":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071504}],"cache_ts":1568268459,"response_metadata":{"next_cursor":""}}' http_version: - recorded_at: Wed, 11 Sep 2019 22:48:33 GMT + recorded_at: Thu, 12 Sep 2019 06:07:39 GMT recorded_with: VCR 5.0.0 diff --git a/test/user_test.rb b/test/user_test.rb index 272f28da..1406dd8f 100644 --- a/test/user_test.rb +++ b/test/user_test.rb @@ -1,54 +1,65 @@ require_relative 'test_helper' -#equire 'pry' +#require 'pry' describe "User Class" do describe "New instance of Slack::User" do before do VCR.use_cassette("lists_users") do @user = Slack::User.new("UMTG0S5D0", "samantha.collares", "Samantha Collares") - @user_test_list = @user.list + @users = Slack::User.list + #binding.pry end end it "is of the class User" do - expect(@user.class).must_equal (Slack::User) - end - end - - describe "list" do - before do - VCR.use_cassette("lists_users") do - @user = Slack::User.new("UMTG0S5D0", "samantha.collares", "Samantha Collares") - @user_test_list = @user.list - @first_user = @user_test_list[1] - #binding.pry + VCR.use_cassette("lists_the_class") do + expect(@user.class).must_equal (Slack::User) end end - it "lists the users" do - expect(@user_test_list.length).must_equal 8 - expect(@first_user).must_be_kind_of Hash - expect(@first_user["slack_id"]).must_equal "UMTG0S5D0" - expect(@first_user["name"]).must_equal "samantha.collares" - expect(@first_user["real_name"]).must_equal "Samantha Collares" - end - end - - describe "details" do - before do - VCR.use_cassette("user_details") do - @user = Slack::User.new("UMTG0S5D0", "samantha.collares", "Samantha Collares") - @user_test_list = @user.list - @first_user = @user_test_list[1] + # before do + # VCR.use_cassette("lists_users") do + # testing_list = User.self.list + # testing_object = testing_list[1] + # # @user = Slack::User.new( + # # user_basic = ["UMTG0S5D0", "samantha.collares", "Samantha Collares"] + # # @user_test_list = @user.list + # # @first_user = @user_test_list[1] + # end + # end + + it "lists the users" do + VCR.use_cassette("lists_the_users_length") do + expect(@users.length).must_equal 8 + #end end end - it "provides details" do - expect(@user.details).must_equal ({"slack_id"=> "UMTG0S5D0", "name"=> "samantha.collares", "real_name"=> "Samantha Collares" }) - end + it "describes the user" do + VCR.use_cassette("describes_users") do + expect(@user).must_be_kind_of Slack::User + expect(@user.slack_id).must_equal "UMTG0S5D0" + expect(@user.name).must_equal "samantha.collares" + expect(@user.real_name).must_equal "Samantha Collares" + end + end - # it "provides details" do - # expect(@user_test_list.details).must_equal - # end - end # desscribe the class end + # describe "details" do + # before do + # VCR.use_cassette("user_details") do + # @user = Slack::User.new("UMTG0S5D0", "samantha.collares", "Samantha Collares") + # @user_test_list = @user.list + # @first_user = @user_test_list[1] + # end + # end + + # it "provides details" do + # expect(@user.details).must_equal ({"slack_id"=> "UMTG0S5D0", "name"=> "samantha.collares", "real_name"=> "Samantha Collares" }) + # end + + # # it "provides details" do + # # expect(@user_test_list.details).must_equal + # # end + # end # desscribe the class + end end From 4dee563bbfdbaf47ac6ab7c2d95940088a3c4623 Mon Sep 17 00:00:00 2001 From: Mariya Burrows Date: Thu, 12 Sep 2019 16:32:32 -0700 Subject: [PATCH 11/18] added details method --- lib/user.rb | 25 +++++---- test/cassettes/lists_users.yml | 16 +++--- test/cassettes/user_details.yml | 95 --------------------------------- test/user_test.rb | 29 +++++----- 4 files changed, 36 insertions(+), 129 deletions(-) delete mode 100644 test/cassettes/user_details.yml diff --git a/lib/user.rb b/lib/user.rb index efd56cbb..bad91a29 100644 --- a/lib/user.rb +++ b/lib/user.rb @@ -1,14 +1,15 @@ require 'dotenv' require_relative 'recipient' +require "pry" module Slack class User < Recipient - attr_reader :real_name + attr_reader :real_name, :display_name def initialize(slack_id, name, real_name) super(slack_id, name) @real_name = real_name - + @display_name = display_name end def self.list @@ -28,15 +29,21 @@ def self.list end - def details(user) + def details + # users = self.class.list + user_details = {} - identified_user = @users.find do |user| - user == selected_user - end + # identified_user = users.find do |member| + # member == selected_user + # end + + user_details["slack_id"] = self.slack_id + user_details["name"] = self.name + user_details["real_name"] = self.real_name + #user_details["display_name"] = self.display_name + # user_details["email"] = identified_user["email"] - user_details["slack_id"] = identified_user["slack_id"] - user_details["name"] = identified_user["name"] - user_details["real_name"] =i dentified_user["real_name"] + return user_details end #depends on getting the select object? diff --git a/test/cassettes/lists_users.yml b/test/cassettes/lists_users.yml index 69ac6428..34f5b660 100644 --- a/test/cassettes/lists_users.yml +++ b/test/cassettes/lists_users.yml @@ -21,17 +21,17 @@ http_interactions: Content-Type: - application/json; charset=utf-8 Content-Length: - - '1606' + - '1605' Connection: - keep-alive Date: - - Thu, 12 Sep 2019 22:34:58 GMT + - Thu, 12 Sep 2019 23:15:18 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - bd26b131-bf70-414a-aac0-f17a40a080b9 + - 50f2fce6-479f-4211-bb78-608dec81d4bd X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -57,15 +57,15 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-20wj + - haproxy-www-rjc8 X-Cache: - Miss from cloudfront Via: - - 1.1 814362d7589b223cc8927cc821d97136.cloudfront.net (CloudFront) + - 1.1 760139201585481b26f947c5f776103a.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - SEA19-C2 X-Amz-Cf-Id: - - 7F8l1q9657DWoYm9uiH878BJeryj2QnyEEpjX_s53hZQXxbqz9Glhg== + - UThI8FGpR9br84s2DSvBPND3MLDLCJqywPXRixBmrRQqEQt_VW-LAw== body: encoding: ASCII-8BIT string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN69AJ2SU","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific @@ -89,7 +89,7 @@ http_interactions: Schuler","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gc6d02aa49cf","image_24":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071410},{"id":"UN69C37BJ","team_id":"TN69AJ2SU","name":"tiffanycee123","deleted":false,"color":"4bbe2e","real_name":"Tiffany Chio","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Tiffany Chio","real_name_normalized":"Tiffany Chio","display_name":"Tiffany Chio","display_name_normalized":"Tiffany - Chio","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge49485fcc1e","image_24":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071504}],"cache_ts":1568327698,"response_metadata":{"next_cursor":""}}' + Chio","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge49485fcc1e","image_24":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071504}],"cache_ts":1568330118,"response_metadata":{"next_cursor":""}}' http_version: - recorded_at: Thu, 12 Sep 2019 22:34:58 GMT + recorded_at: Thu, 12 Sep 2019 23:15:19 GMT recorded_with: VCR 5.0.0 diff --git a/test/cassettes/user_details.yml b/test/cassettes/user_details.yml deleted file mode 100644 index 7852621a..00000000 --- a/test/cassettes/user_details.yml +++ /dev/null @@ -1,95 +0,0 @@ ---- -http_interactions: -- request: - method: get - uri: https://slack.com/api/users.list?token= - body: - encoding: US-ASCII - string: '' - headers: - Accept-Encoding: - - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 - Accept: - - "*/*" - User-Agent: - - Ruby - response: - status: - code: 200 - message: OK - headers: - Content-Type: - - application/json; charset=utf-8 - Content-Length: - - '1606' - Connection: - - keep-alive - Date: - - Thu, 12 Sep 2019 06:07:39 GMT - Server: - - Apache - X-Content-Type-Options: - - nosniff - X-Slack-Req-Id: - - 512b2016-5605-4064-bb31-8fc742df2a52 - X-Oauth-Scopes: - - identify,channels:read,users:read,chat:write:bot - Expires: - - Mon, 26 Jul 1997 05:00:00 GMT - Cache-Control: - - private, no-cache, no-store, must-revalidate - Access-Control-Expose-Headers: - - x-slack-req-id, retry-after - X-Xss-Protection: - - '0' - X-Accepted-Oauth-Scopes: - - users:read - Vary: - - Accept-Encoding - Pragma: - - no-cache - Access-Control-Allow-Headers: - - slack-route, x-slack-version-ts - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Referrer-Policy: - - no-referrer - Access-Control-Allow-Origin: - - "*" - X-Via: - - haproxy-www-n75o - X-Cache: - - Miss from cloudfront - Via: - - 1.1 ca79756ec49e2babf1b916300304b2fb.cloudfront.net (CloudFront) - X-Amz-Cf-Pop: - - SEA19 - X-Amz-Cf-Id: - - epN3GvLtmw9dZPAt71tzdwWRqDfxYCG53wIdsWP3-60qhS48lCA83Q== - body: - encoding: ASCII-8BIT - string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN69AJ2SU","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific - Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Slackbot","real_name_normalized":"Slackbot","display_name":"Slackbot","display_name_normalized":"Slackbot","fields":null,"status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"sv41d8cd98f0","always_active":true,"first_name":"slackbot","last_name":"","image_24":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_24.png","image_32":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_32.png","image_48":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_48.png","image_72":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_72.png","image_192":"https:\/\/a.slack-edge.com\/80588\/marketing\/img\/avatars\/slackbot\/avatar-slackbot.png","image_512":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":0},{"id":"UMTG0S5D0","team_id":"TN69AJ2SU","name":"samantha.collares","deleted":false,"color":"674b1b","real_name":"Samantha - Collares","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Samantha - Collares","real_name_normalized":"Samantha Collares","display_name":"Samantha - Collares","display_name_normalized":"Samantha Collares","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge444d412eed","image_24":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071698},{"id":"UMUR43REX","team_id":"TN69AJ2SU","name":"sabrina","deleted":false,"color":"e7392d","real_name":"Sabrina - Lowney","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Sabrina - Lowney","real_name_normalized":"Sabrina Lowney","display_name":"Sabrina Lowney","display_name_normalized":"Sabrina - Lowney","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g3826fd588f7","image_24":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071592},{"id":"UMZSUVBED","team_id":"TN69AJ2SU","name":"mariya.burrows","deleted":false,"color":"e96699","real_name":"Mariya - Burrows","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Mariya - Burrows","real_name_normalized":"Mariya Burrows","display_name":"Mariya Burrows","display_name_normalized":"Mariya - Burrows","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g742995f6521","image_24":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071452,"has_2fa":false},{"id":"UN5R273J8","team_id":"TN69AJ2SU","name":"dtingg","deleted":false,"color":"9f69e7","real_name":"Dianna - Tingg","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Dianna - Tingg","real_name_normalized":"Dianna Tingg","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g18e16502755","first_name":"Dianna","last_name":"Tingg","image_24":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":true,"is_owner":true,"is_primary_owner":true,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071477},{"id":"UN5R3N6P6","team_id":"TN69AJ2SU","name":"juliakingreyworks","deleted":false,"color":"3c989f","real_name":"Julia - K","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Julia - K","real_name_normalized":"Julia K","display_name":"Julia K","display_name_normalized":"Julia - K","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g8ae03401380","image_24":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071668},{"id":"UN5R3NYUU","team_id":"TN69AJ2SU","name":"morganlschuler","deleted":false,"color":"e0a729","real_name":"Morgan - Schuler","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Morgan - Schuler","real_name_normalized":"Morgan Schuler","display_name":"Morgan Schuler","display_name_normalized":"Morgan - Schuler","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gc6d02aa49cf","image_24":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071410},{"id":"UN69C37BJ","team_id":"TN69AJ2SU","name":"tiffanycee123","deleted":false,"color":"4bbe2e","real_name":"Tiffany - Chio","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Tiffany - Chio","real_name_normalized":"Tiffany Chio","display_name":"Tiffany Chio","display_name_normalized":"Tiffany - Chio","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge49485fcc1e","image_24":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071504}],"cache_ts":1568268459,"response_metadata":{"next_cursor":""}}' - http_version: - recorded_at: Thu, 12 Sep 2019 06:07:39 GMT -recorded_with: VCR 5.0.0 diff --git a/test/user_test.rb b/test/user_test.rb index 1406dd8f..d22541ec 100644 --- a/test/user_test.rb +++ b/test/user_test.rb @@ -44,22 +44,17 @@ end end - # describe "details" do - # before do - # VCR.use_cassette("user_details") do - # @user = Slack::User.new("UMTG0S5D0", "samantha.collares", "Samantha Collares") - # @user_test_list = @user.list - # @first_user = @user_test_list[1] - # end - # end - - # it "provides details" do - # expect(@user.details).must_equal ({"slack_id"=> "UMTG0S5D0", "name"=> "samantha.collares", "real_name"=> "Samantha Collares" }) - # end - - # # it "provides details" do - # # expect(@user_test_list.details).must_equal - # # end - # end # desscribe the class + describe "details" do + before do + VCR.use_cassette("user_details") do + @user = Slack::User.new("UMTG0S5D0", "samantha.collares", "Samantha Collares") + end + end + + it "provides details" do + # binding.pry + expect(@user.details).must_equal ({"slack_id"=> "UMTG0S5D0", "name"=> "samantha.collares", "real_name"=> "Samantha Collares" }) + end + end end end From 86f64e08dcbf37936677504828e40d5f8ef50f04 Mon Sep 17 00:00:00 2001 From: Mariya Burrows Date: Thu, 12 Sep 2019 20:03:04 -0700 Subject: [PATCH 12/18] updated complete (but un-refactored) Slack CLI --- lib/channel.rb | 40 ++++++++----- lib/slack.rb | 124 ++++++++++++++++++++++++++++++++--------- lib/user.rb | 17 +++--- lib/workspace.rb | 40 ++++++++----- mariya_slack_tryout.rb | 5 +- 5 files changed, 158 insertions(+), 68 deletions(-) diff --git a/lib/channel.rb b/lib/channel.rb index fd701b72..d5834ac3 100644 --- a/lib/channel.rb +++ b/lib/channel.rb @@ -3,35 +3,45 @@ module Slack class Channel < Recipient + attr_reader :topic, :members - attr_reader :topic, :member_count - - def initialize(slack_id, name, topic, member_count) + def initialize(slack_id, name, topic, members) super(slack_id, name) @topic = topic - @member_count = member_count - end - - def details - # channel_id - # name - # topic - # member_count + @members = members end - - def list + def self.list url = "https://slack.com/api/channels.list" query_parameters = { token: ENV["SLACK_TOKEN"] } - channel_objects = Recipient.get(url, query_parameters) + channel_list = [] channel_objects["channels"].each do |channel| - channel_list << channel["name"] + channel_basic = self.new(channel["id"], channel["name"], channel["topic"], channel["members"]) + #member["display_name"], member["email"] add back in later + channel_list << channel_basic end return channel_list + end + + def send_msg(message) + Recipient.send_msg(message, @slack_id) + end + + def details + channel_details = {} + + + channel_details["slack_id"] = self.slack_id + channel_details["name"] = self.name + channel_details["topic"] = self.topic + channel_details["members"] = self.members + + + return channel_details end diff --git a/lib/slack.rb b/lib/slack.rb index 53748159..bf15ee5f 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -1,44 +1,116 @@ #!/usr/bin/env ruby +require_relative "user" +require_relative "channel" +require_relative 'workspace' +require 'dotenv' +Dotenv.load +# require_relative "channel" def main + workspace = Slack::Workspace.new + user_choice = nil until user_choice == "quit" puts "Welcome to the Ada Slack CLI!" - # TODO project - puts "What would you like to do?" - puts "1) List users\n2)List channels" - user_choice = gets.chomp + user_choice = prompt( + "What would you like to do?", + ["List users", "List channels"] + ) if user_choice == "1" + list = Slack::User.list - puts user.list - #call upon list of users from user.list - #provide this numerical list to the user - #they'll select from the list - workspace.select_user + list.each do |member_object| + puts "slack id: #{member_object.slack_id}" + puts "name: #{member_object.name}" + puts "real name: #{member_object.real_name}\n" + end + + search_choice = prompt( + "Do you want to find a user by:", + ["Slack id", "User name"] + ) + + if search_choice == "1" + puts "please enter that person's slack id: " + slack_id = gets.chomp + workspace.select_user_slack_id(slack_id: slack_id) + elsif search_choice == "2" + puts "please enter that person's user_name: " + user_name = gets.chomp + workspace.select_user_username(user_name: user_name) + end + + communication_choice = prompt( + "Do you want to:", + ["See this user's details", "Send them a message?"] + ) - puts "Do you want to:" - puts "1) See details\n 2) Send a message to the user" + if communication_choice == "1" + workspace.show_details + elsif communication_choice == "2" + puts "Please enter a message: " + message = gets.chomp + workspace.send_message(message) + end - # Based on user input, either call user.details or workspace.send_message + elsif user_choice == "2" + list = Slack::Channel.list - user_choice = gets.chomp - if user_choice == "2" - print "Write your message:> " - user_choice = gets.chomp + list.each do |member_object| + puts "slack id: #{member_object.slack_id}" + puts "name: #{member_object.name}" + puts "topic: #{member_object.topic}" + puts "member_count: #{member_object.members}" end - elsif user_choice == "2" - puts "Do you want to:" - puts "1) See details\n 2) Send a message to the channel" - user_choice = gets.chomp - if user_choice == "2" - print "Write your message:> " - user_choice = gets.chomp + + search_choice = prompt( + "Do you want to find a channel by:", + ["Slack id", "Channel name"] + ) + + if search_choice == "1" + puts "please enter that channel's slack id: " + slack_id = gets.chomp + workspace.select_channel_slack_id(slack_id: slack_id) + elsif search_choice == "2" + puts "please enter the name of that channel: " + user_name = gets.chomp + workspace.select_channel_username(user_name: user_name) + end + + communication_choice = prompt( + "Do you want to:", + ["See this channel's details", "Send a message to the channel?"] + ) + + if communication_choice == "1" + workspace.show_details + elsif communication_choice == "2" + puts "Please enter a message: " + message = gets.chomp + workspace.send_message(message) end - else + + + puts "Thank you for using the Ada Slack CLI" end - - puts "Thank you for using the Ada Slack CLI" end + +end + +def prompt(message, options) + puts message + options.each_with_index do |option, index| + puts "#{index + 1}. #{option}" + end + input = gets.chomp end -main if __FILE__ == $PROGRAM_NAME \ No newline at end of file + + +main + + + +main if __FILE__ == $SLACK \ No newline at end of file diff --git a/lib/user.rb b/lib/user.rb index bad91a29..d0bbbae4 100644 --- a/lib/user.rb +++ b/lib/user.rb @@ -1,6 +1,5 @@ require 'dotenv' require_relative 'recipient' -require "pry" module Slack class User < Recipient @@ -9,7 +8,7 @@ class User < Recipient def initialize(slack_id, name, real_name) super(slack_id, name) @real_name = real_name - @display_name = display_name + #@display_name = display_name end def self.list @@ -22,12 +21,17 @@ def self.list user_list = [] user_objects["members"].each do |member| # @users << member - user_basic = self.new(member["slack_id"], member["name"], member["real_name"]) + user_basic = self.new(member["id"], member["name"], member["real_name"]) + #member["display_name"], member["email"] add back in later user_list << user_basic end return user_list end + def send_msg(message) + Recipient.send_msg(message, @slack_id) + end + def details # users = self.class.list @@ -41,17 +45,10 @@ def details user_details["name"] = self.name user_details["real_name"] = self.real_name #user_details["display_name"] = self.display_name - # user_details["email"] = identified_user["email"] return user_details end - #depends on getting the select object? - #? - # id - # user name - # real name - end end \ No newline at end of file diff --git a/lib/workspace.rb b/lib/workspace.rb index a61aa90b..f1202e21 100644 --- a/lib/workspace.rb +++ b/lib/workspace.rb @@ -6,31 +6,41 @@ class Workspace attr_reader :users, :channels, :selected - def initialize(users, channels, selected) + def initialize @users = User.list - @channels = channels - @selected = selected + @channels = Channel.list + @selected = nil end - def select_user(user_name: nil, slack_id: nil) - - #returns the user object that goes with passed in user_name? - - # error when no user exists - + def select_user_slack_id(slack_id: nil) + user_object = @users.find { |user| user.slack_id == slack_id } + @selected = user_object unless user_object.nil? end - def select_channel(user_name: nil, slack_id: nil) - #returns the user object that goes with passed in user_name? - - # error when no user exists - + def select_user_username(user_name: nil) + user_object = @users.find { |user| user.name == user_name } + @selected = user_object unless user_object.nil? end + def select_channel_slack_id(slack_id: nil) + channel_object = @channels.find { |channel| channel.slack_id == slack_id } + @selected = channel_object unless channel_object.nil? + end + + def select_channel_username(user_name: nil) + channel_object = @channels.find { |channel| channel.name == user_name } + @selected = channel_object unless channel_object.nil? + end + + def show_details + @selected.details.each do |detail, value| + puts "#{detail}: #{value}" + end end - def send_message + def send_message(message) + @selected.send_msg(message) end end diff --git a/mariya_slack_tryout.rb b/mariya_slack_tryout.rb index ce108fcb..57bbdd53 100644 --- a/mariya_slack_tryout.rb +++ b/mariya_slack_tryout.rb @@ -5,8 +5,9 @@ def main #@channel = Slack::Channel.new("CMUR2JTNX", "random", {"value"=>"", "creator"=>"", "last_set"=>0}, 7) - @user_sam = Slack::User.new("UMTG0S5D0", "samantha.collares", "Samantha Collares") - @user_list = @user_sam.list + # @user_sam = Slack::User.new("UMTG0S5D0", "samantha.collares", "Samantha Collares") + # @user_list = @user_sam.list + main_workspace = Slack::Workspace.new() #binding.pry #binding.pry From e22c696a6afd9cf833fb1f8fb9b58f04fd15bff9 Mon Sep 17 00:00:00 2001 From: Mariya Burrows Date: Thu, 12 Sep 2019 22:25:02 -0700 Subject: [PATCH 13/18] updated channel test --- test/cassettes/lists_channels.yml | 14 +++++------ test/cassettes/lists_users.yml | 14 +++++------ test/cassettes/slack-posts.yml | 40 +++++++++++++++---------------- test/channel_test.rb | 8 +++++-- 4 files changed, 40 insertions(+), 36 deletions(-) diff --git a/test/cassettes/lists_channels.yml b/test/cassettes/lists_channels.yml index 601ba70f..64ecf6d4 100644 --- a/test/cassettes/lists_channels.yml +++ b/test/cassettes/lists_channels.yml @@ -25,13 +25,13 @@ http_interactions: Connection: - keep-alive Date: - - Thu, 12 Sep 2019 06:07:40 GMT + - Fri, 13 Sep 2019 04:09:45 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - 7c038270-1731-4b2b-a74f-b4ef4e9dc063 + - 40ea07b9-093c-4435-a454-e342dc85fde0 X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -57,15 +57,15 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-wzn6 + - haproxy-www-1a8v X-Cache: - Miss from cloudfront Via: - - 1.1 3403c96e1b1db500ff6526f1a7bc6813.cloudfront.net (CloudFront) + - 1.1 64f86ae1c24221f3a2e4d653d6dbc416.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - - SEA19 + - SEA19-C2 X-Amz-Cf-Id: - - s3EwlsmLLeCNCGlqdTTAC7plOKN3YTFhx1ShBOXBRYQwHLzcrLKzKw== + - Zi7slqYGWvO7QHrufIKMXhQfiJmSnfctlywZ3-Lklv-XGmMzBnlYzw== body: encoding: ASCII-8BIT string: '{"ok":true,"channels":[{"id":"CMUR2JTNX","name":"random","is_channel":true,"created":1568071183,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UN5R273J8","name_normalized":"random","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTG0S5D0","UMUR43REX","UMZSUVBED","UN5R273J8","UN5R3N6P6","UN5R3NYUU","UN69C37BJ"],"topic":{"value":"Non-work @@ -80,5 +80,5 @@ http_interactions: channel is for workspace-wide communication and announcements. All members are in this channel.","creator":"UN5R273J8","last_set":1568071183},"previous_names":[],"num_members":7}],"response_metadata":{"next_cursor":""}}' http_version: - recorded_at: Thu, 12 Sep 2019 06:07:40 GMT + recorded_at: Fri, 13 Sep 2019 04:09:45 GMT recorded_with: VCR 5.0.0 diff --git a/test/cassettes/lists_users.yml b/test/cassettes/lists_users.yml index 34f5b660..67a9fec3 100644 --- a/test/cassettes/lists_users.yml +++ b/test/cassettes/lists_users.yml @@ -25,13 +25,13 @@ http_interactions: Connection: - keep-alive Date: - - Thu, 12 Sep 2019 23:15:18 GMT + - Fri, 13 Sep 2019 04:02:17 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - 50f2fce6-479f-4211-bb78-608dec81d4bd + - 22167133-c6b3-4c22-8d76-b6d91398c777 X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -57,15 +57,15 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-rjc8 + - haproxy-www-0guu X-Cache: - Miss from cloudfront Via: - - 1.1 760139201585481b26f947c5f776103a.cloudfront.net (CloudFront) + - 1.1 591683988172c7980c4ebb318cbf18a9.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - SEA19-C2 X-Amz-Cf-Id: - - UThI8FGpR9br84s2DSvBPND3MLDLCJqywPXRixBmrRQqEQt_VW-LAw== + - ZCvm1OACi6lsfAlUTktyt95cY53o0itpgX9Qee4rovPp0WJMg3iPVQ== body: encoding: ASCII-8BIT string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN69AJ2SU","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific @@ -89,7 +89,7 @@ http_interactions: Schuler","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gc6d02aa49cf","image_24":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071410},{"id":"UN69C37BJ","team_id":"TN69AJ2SU","name":"tiffanycee123","deleted":false,"color":"4bbe2e","real_name":"Tiffany Chio","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Tiffany Chio","real_name_normalized":"Tiffany Chio","display_name":"Tiffany Chio","display_name_normalized":"Tiffany - Chio","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge49485fcc1e","image_24":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071504}],"cache_ts":1568330118,"response_metadata":{"next_cursor":""}}' + Chio","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge49485fcc1e","image_24":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071504}],"cache_ts":1568347337,"response_metadata":{"next_cursor":""}}' http_version: - recorded_at: Thu, 12 Sep 2019 23:15:19 GMT + recorded_at: Fri, 13 Sep 2019 04:02:17 GMT recorded_with: VCR 5.0.0 diff --git a/test/cassettes/slack-posts.yml b/test/cassettes/slack-posts.yml index ecc1ff39..4a86f255 100644 --- a/test/cassettes/slack-posts.yml +++ b/test/cassettes/slack-posts.yml @@ -5,7 +5,7 @@ http_interactions: uri: https://slack.com/api/chat.postMessage body: encoding: UTF-8 - string: token=&text=This%20post%20should%20not%20work&channel=invalid-channel + string: token=&text=Hey%20I%20can%20post%20messages%21&channel=general headers: Content-Type: - application/x-www-form-urlencoded @@ -21,13 +21,13 @@ http_interactions: Connection: - keep-alive Date: - - Thu, 12 Sep 2019 06:07:39 GMT + - Fri, 13 Sep 2019 04:02:17 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - 04a53c34-dbd4-44d5-8c5e-2aba9e3c57ba + - '014649a3-1b94-4c39-af16-fb5f52d99ee5' X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -53,26 +53,28 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-qj5i + - haproxy-www-fyfw X-Cache: - Miss from cloudfront Via: - - 1.1 d9a3481018b2f1931201627713f68e77.cloudfront.net (CloudFront) + - 1.1 570075675953459325e00b7bcd171df3.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - - SEA19 + - SEA19-C2 X-Amz-Cf-Id: - - z127xQfL28PdetohRV_vRMbC3ABqp3cY6bE9RavA-gLwNYPgF6_GoA== + - ep4NcaeGB8KQzW97DSSF-Gg3crTz7S-kVfzeHTuHEBL-FTY0xzyw-g== body: encoding: UTF-8 - string: '{"ok":false,"error":"channel_not_found"}' + string: '{"ok":true,"channel":"CN8FME7AS","ts":"1568347337.000200","message":{"type":"message","subtype":"bot_message","text":"Hey + I can post messages!","ts":"1568347337.000200","username":"Leaves - Mariya + - API Project","bot_id":"BMW5VR8TV"}}' http_version: - recorded_at: Thu, 12 Sep 2019 06:07:39 GMT + recorded_at: Fri, 13 Sep 2019 04:02:17 GMT - request: method: post uri: https://slack.com/api/chat.postMessage body: encoding: UTF-8 - string: token=&text=Hey%20I%20can%20post%20messages%21&channel=general + string: token=&text=This%20post%20should%20not%20work&channel=invalid-channel headers: Content-Type: - application/x-www-form-urlencoded @@ -88,13 +90,13 @@ http_interactions: Connection: - keep-alive Date: - - Thu, 12 Sep 2019 06:07:39 GMT + - Fri, 13 Sep 2019 04:02:18 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - 8268b544-f2e9-46a1-8104-6c50e7167ab3 + - 682f937d-f3ee-4421-92f1-95db431283dc X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -120,20 +122,18 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-u916 + - haproxy-www-1a8v X-Cache: - Miss from cloudfront Via: - - 1.1 44c580258abdf211fd3f1cae43c497e9.cloudfront.net (CloudFront) + - 1.1 7e87179efaa9e3c316bd3d3a74cfded8.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - - SEA19 + - SEA19-C2 X-Amz-Cf-Id: - - 2iaFRMPmBFLe-7SNXsuriBn36do13jIP6ptosJk2oNWUy8TQUO8jEA== + - HGtOMOukbyQgw-fKyDK851oufJVysaNYdNMwtdWKyffczAL4zo9-iw== body: encoding: UTF-8 - string: '{"ok":true,"channel":"CN8FME7AS","ts":"1568268459.000100","message":{"type":"message","subtype":"bot_message","text":"Hey - I can post messages!","ts":"1568268459.000100","username":"Leaves - Mariya - - API Project","bot_id":"BMW5VR8TV"}}' + string: '{"ok":false,"error":"channel_not_found"}' http_version: - recorded_at: Thu, 12 Sep 2019 06:07:40 GMT + recorded_at: Fri, 13 Sep 2019 04:02:18 GMT recorded_with: VCR 5.0.0 diff --git a/test/channel_test.rb b/test/channel_test.rb index f702c8b7..2bfddfbe 100644 --- a/test/channel_test.rb +++ b/test/channel_test.rb @@ -5,7 +5,7 @@ before do VCR.use_cassette("lists_channels") do @channel = Slack::Channel.new("CMUR2JTNX", "random", {"value"=>"", "creator"=>"", "last_set"=>0}, 7) - @test_list = @channel.list + @list = Slack::Channel.list end end @@ -14,7 +14,11 @@ end it "lists the channels" do - expect(@test_list).must_equal ["random", "turkey", "slack-cli", "general"] + expect(@list.length).must_equal 4 + expect(@list).must_be_kind_of Array + expect(@list[0]).must_be_kind_of Slack::Channel + expect(@list[0].name).must_equal "random" + #["random", "turkey", "slack-cli", "general"] end # it "provides details" do From efd32454f64643dff9d94bc5067bcfddc65148e9 Mon Sep 17 00:00:00 2001 From: Mariya Burrows Date: Fri, 13 Sep 2019 15:58:11 -0700 Subject: [PATCH 14/18] Added tests to all files --- lib/recipient.rb | 5 - lib/slack.rb | 7 +- lib/user.rb | 7 - lib/workspace.rb | 2 +- test/cassettes/details.yml | 244 ++++++++++++++++++++++++++++++ test/cassettes/info.yml | 244 ++++++++++++++++++++++++++++++ test/cassettes/lists_channels.yml | 14 +- test/cassettes/lists_users.yml | 18 +-- test/cassettes/new_workspace.yml | 176 +++++++++++++++++++++ test/cassettes/prompt_method.yml | 176 +++++++++++++++++++++ test/cassettes/select.yml | 176 +++++++++++++++++++++ test/cassettes/slack-posts.yml | 103 ++++++++++--- test/channel_test.rb | 25 ++- test/recipient_test.rb | 29 ++-- test/test_helper.rb | 4 + test/user_test.rb | 18 +-- test/workspace_test.rb | 102 ++++++++++++- 17 files changed, 1272 insertions(+), 78 deletions(-) create mode 100644 test/cassettes/details.yml create mode 100644 test/cassettes/info.yml create mode 100644 test/cassettes/new_workspace.yml create mode 100644 test/cassettes/prompt_method.yml create mode 100644 test/cassettes/select.yml diff --git a/lib/recipient.rb b/lib/recipient.rb index 5b31380d..fca7cdd4 100644 --- a/lib/recipient.rb +++ b/lib/recipient.rb @@ -11,11 +11,6 @@ def initialize(slack_id, name) @name = name end - # pass down methods that will send messages - # pass down: make a request to API (get) - # raise error if API is down or nil -- maybe do in another class? - # list all the users or channels - def self.send_msg(message, channel) # BASE_URL = "https://slack.com/api/chat.postMessage" response = HTTParty.post( diff --git a/lib/slack.rb b/lib/slack.rb index bf15ee5f..58c3295c 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -9,8 +9,9 @@ def main workspace = Slack::Workspace.new user_choice = nil - until user_choice == "quit" - puts "Welcome to the Ada Slack CLI!" + + until input == "quit" + puts "Welcome to the Ada Slack CLI! Put quit to exit the program" user_choice = prompt( "What would you like to do?", @@ -96,7 +97,7 @@ def main puts "Thank you for using the Ada Slack CLI" end end - + exit end def prompt(message, options) diff --git a/lib/user.rb b/lib/user.rb index d0bbbae4..7c12b1bb 100644 --- a/lib/user.rb +++ b/lib/user.rb @@ -34,17 +34,10 @@ def send_msg(message) def details - # users = self.class.list - user_details = {} - # identified_user = users.find do |member| - # member == selected_user - # end - user_details["slack_id"] = self.slack_id user_details["name"] = self.name user_details["real_name"] = self.real_name - #user_details["display_name"] = self.display_name return user_details end diff --git a/lib/workspace.rb b/lib/workspace.rb index f1202e21..69025a8f 100644 --- a/lib/workspace.rb +++ b/lib/workspace.rb @@ -40,7 +40,7 @@ def show_details end def send_message(message) - @selected.send_msg(message) + return @selected.send_msg(message) end end diff --git a/test/cassettes/details.yml b/test/cassettes/details.yml new file mode 100644 index 00000000..c40c19b4 --- /dev/null +++ b/test/cassettes/details.yml @@ -0,0 +1,244 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/users.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '1604' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 22:12:41 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 0f40644a-3253-4726-8f85-19b0d4dfb672 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - users:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-pvfg + X-Cache: + - Miss from cloudfront + Via: + - 1.1 92e604c539993adca02dc86bcca48800.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - 7B83_esenS3kyisldb3G8IqwkWIsaWbXmoBR-We1i8f_weWVPoJ9ww== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN69AJ2SU","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Slackbot","real_name_normalized":"Slackbot","display_name":"Slackbot","display_name_normalized":"Slackbot","fields":null,"status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"sv41d8cd98f0","always_active":true,"first_name":"slackbot","last_name":"","image_24":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_24.png","image_32":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_32.png","image_48":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_48.png","image_72":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_72.png","image_192":"https:\/\/a.slack-edge.com\/80588\/marketing\/img\/avatars\/slackbot\/avatar-slackbot.png","image_512":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":0},{"id":"UMTG0S5D0","team_id":"TN69AJ2SU","name":"samantha.collares","deleted":false,"color":"674b1b","real_name":"Samantha + Collares","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Samantha + Collares","real_name_normalized":"Samantha Collares","display_name":"Samantha + Collares","display_name_normalized":"Samantha Collares","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge444d412eed","image_24":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071698},{"id":"UMUR43REX","team_id":"TN69AJ2SU","name":"sabrina","deleted":false,"color":"e7392d","real_name":"Sabrina + Lowney","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Sabrina + Lowney","real_name_normalized":"Sabrina Lowney","display_name":"Sabrina Lowney","display_name_normalized":"Sabrina + Lowney","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g3826fd588f7","image_24":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071592},{"id":"UMZSUVBED","team_id":"TN69AJ2SU","name":"mariya.burrows","deleted":false,"color":"e96699","real_name":"Mariya + Burrows","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Mariya + Burrows","real_name_normalized":"Mariya Burrows","display_name":"Mariya Burrows","display_name_normalized":"Mariya + Burrows","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g742995f6521","image_24":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071452,"has_2fa":false},{"id":"UN5R273J8","team_id":"TN69AJ2SU","name":"dtingg","deleted":false,"color":"9f69e7","real_name":"Dianna + Tingg","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Dianna + Tingg","real_name_normalized":"Dianna Tingg","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g18e16502755","first_name":"Dianna","last_name":"Tingg","image_24":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":true,"is_owner":true,"is_primary_owner":true,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071477},{"id":"UN5R3N6P6","team_id":"TN69AJ2SU","name":"juliakingreyworks","deleted":false,"color":"3c989f","real_name":"Julia + K","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Julia + K","real_name_normalized":"Julia K","display_name":"Julia K","display_name_normalized":"Julia + K","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g8ae03401380","image_24":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071668},{"id":"UN5R3NYUU","team_id":"TN69AJ2SU","name":"morganlschuler","deleted":false,"color":"e0a729","real_name":"Morgan + Schuler","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Morgan + Schuler","real_name_normalized":"Morgan Schuler","display_name":"Morgan Schuler","display_name_normalized":"Morgan + Schuler","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gc6d02aa49cf","image_24":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071410},{"id":"UN69C37BJ","team_id":"TN69AJ2SU","name":"tiffanycee123","deleted":false,"color":"4bbe2e","real_name":"Tiffany + Chio","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Tiffany + Chio","real_name_normalized":"Tiffany Chio","display_name":"Tiffany Chio","display_name_normalized":"Tiffany + Chio","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge49485fcc1e","image_24":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071504}],"cache_ts":1568412761,"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 22:12:41 GMT +- request: + method: get + uri: https://slack.com/api/channels.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '717' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 22:12:41 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - d9d9e5c9-2708-427e-8039-fd33a00558af + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - channels:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-90c1 + X-Cache: + - Miss from cloudfront + Via: + - 1.1 7de3eef800cf24f49094394d8b5e8d1a.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - 0z7MbTnTUMjc70UtHcNNgi_v_QARRzF5ZF2Mnlsc1xrRWZohwdEdhQ== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CMUR2JTNX","name":"random","is_channel":true,"created":1568071183,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UN5R273J8","name_normalized":"random","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTG0S5D0","UMUR43REX","UMZSUVBED","UN5R273J8","UN5R3N6P6","UN5R3NYUU","UN69C37BJ"],"topic":{"value":"Non-work + banter and water cooler conversation","creator":"UN5R273J8","last_set":1568071183},"purpose":{"value":"A + place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber + you''d prefer to keep out of more focused work-related channels.","creator":"UN5R273J8","last_set":1568071183},"previous_names":[],"num_members":7},{"id":"CN6A88SJZ","name":"turkey","is_channel":true,"created":1568073346,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMUR43REX","name_normalized":"turkey","is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":["UMUR43REX","UN5R273J8","UN69C37BJ"],"topic":{"value":"To + collect images of turkeys and information about turkeys","creator":"UN5R273J8","last_set":1568232705},"purpose":{"value":"to + collect images of turkeys and information about turkeys","creator":"UMUR43REX","last_set":1568073347},"previous_names":[],"num_members":3},{"id":"CN85BSBQF","name":"slack-cli","is_channel":true,"created":1568071183,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UN5R273J8","name_normalized":"slack-cli","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTG0S5D0","UMUR43REX","UMZSUVBED","UN5R273J8","UN5R3N6P6","UN5R3NYUU","UN69C37BJ"],"topic":{"value":"Posts + about the Slack CLI project","creator":"UN5R273J8","last_set":1568232665},"purpose":{"value":"Posts + about the Slack CLI project","creator":"UN5R273J8","last_set":1568232660},"previous_names":[],"num_members":7},{"id":"CN8FME7AS","name":"general","is_channel":true,"created":1568071183,"is_archived":false,"is_general":true,"unlinked":0,"creator":"UN5R273J8","name_normalized":"general","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTG0S5D0","UMUR43REX","UMZSUVBED","UN5R273J8","UN5R3N6P6","UN5R3NYUU","UN69C37BJ"],"topic":{"value":"Company-wide + announcements and work-based matters","creator":"UN5R273J8","last_set":1568071183},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UN5R273J8","last_set":1568071183},"previous_names":[],"num_members":7}],"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 22:12:41 GMT +- request: + method: post + uri: https://slack.com/api/chat.postMessage + body: + encoding: UTF-8 + string: token=&text=hi%21&channel=CMUR2JTNX + headers: + Content-Type: + - application/x-www-form-urlencoded + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Transfer-Encoding: + - chunked + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 22:12:41 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - dac41550-c29b-4909-bece-ca5373e996f8 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - chat:write:bot + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-5nvv + X-Cache: + - Miss from cloudfront + Via: + - 1.1 1399f6d923ba00ad00816f6a9e531b7c.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - mKb41Z9s7xUt20q90p-LFlEzDYbzp7aXmGnXfYkmYDyUxbb_AeicNA== + body: + encoding: UTF-8 + string: '{"ok":true,"channel":"CMUR2JTNX","ts":"1568412761.000200","message":{"type":"message","subtype":"bot_message","text":"hi!","ts":"1568412761.000200","username":"Leaves + - Mariya - API Project","bot_id":"BMW5VR8TV"}}' + http_version: + recorded_at: Fri, 13 Sep 2019 22:12:41 GMT +recorded_with: VCR 5.0.0 diff --git a/test/cassettes/info.yml b/test/cassettes/info.yml new file mode 100644 index 00000000..a9af6db8 --- /dev/null +++ b/test/cassettes/info.yml @@ -0,0 +1,244 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/users.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '1604' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 22:12:41 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - a1356ac4-4e8e-45e1-a140-3d9ffed69d25 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - users:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-neww + X-Cache: + - Miss from cloudfront + Via: + - 1.1 05c281b7186067b6c66ca266cdeda2f8.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - GyO3Cu_iWmsqSNwTYf8fUUeDezdoubOLmwTiuHRcy1BHY8K-LvlmLg== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN69AJ2SU","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Slackbot","real_name_normalized":"Slackbot","display_name":"Slackbot","display_name_normalized":"Slackbot","fields":null,"status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"sv41d8cd98f0","always_active":true,"first_name":"slackbot","last_name":"","image_24":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_24.png","image_32":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_32.png","image_48":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_48.png","image_72":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_72.png","image_192":"https:\/\/a.slack-edge.com\/80588\/marketing\/img\/avatars\/slackbot\/avatar-slackbot.png","image_512":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":0},{"id":"UMTG0S5D0","team_id":"TN69AJ2SU","name":"samantha.collares","deleted":false,"color":"674b1b","real_name":"Samantha + Collares","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Samantha + Collares","real_name_normalized":"Samantha Collares","display_name":"Samantha + Collares","display_name_normalized":"Samantha Collares","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge444d412eed","image_24":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071698},{"id":"UMUR43REX","team_id":"TN69AJ2SU","name":"sabrina","deleted":false,"color":"e7392d","real_name":"Sabrina + Lowney","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Sabrina + Lowney","real_name_normalized":"Sabrina Lowney","display_name":"Sabrina Lowney","display_name_normalized":"Sabrina + Lowney","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g3826fd588f7","image_24":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071592},{"id":"UMZSUVBED","team_id":"TN69AJ2SU","name":"mariya.burrows","deleted":false,"color":"e96699","real_name":"Mariya + Burrows","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Mariya + Burrows","real_name_normalized":"Mariya Burrows","display_name":"Mariya Burrows","display_name_normalized":"Mariya + Burrows","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g742995f6521","image_24":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071452,"has_2fa":false},{"id":"UN5R273J8","team_id":"TN69AJ2SU","name":"dtingg","deleted":false,"color":"9f69e7","real_name":"Dianna + Tingg","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Dianna + Tingg","real_name_normalized":"Dianna Tingg","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g18e16502755","first_name":"Dianna","last_name":"Tingg","image_24":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":true,"is_owner":true,"is_primary_owner":true,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071477},{"id":"UN5R3N6P6","team_id":"TN69AJ2SU","name":"juliakingreyworks","deleted":false,"color":"3c989f","real_name":"Julia + K","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Julia + K","real_name_normalized":"Julia K","display_name":"Julia K","display_name_normalized":"Julia + K","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g8ae03401380","image_24":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071668},{"id":"UN5R3NYUU","team_id":"TN69AJ2SU","name":"morganlschuler","deleted":false,"color":"e0a729","real_name":"Morgan + Schuler","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Morgan + Schuler","real_name_normalized":"Morgan Schuler","display_name":"Morgan Schuler","display_name_normalized":"Morgan + Schuler","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gc6d02aa49cf","image_24":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071410},{"id":"UN69C37BJ","team_id":"TN69AJ2SU","name":"tiffanycee123","deleted":false,"color":"4bbe2e","real_name":"Tiffany + Chio","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Tiffany + Chio","real_name_normalized":"Tiffany Chio","display_name":"Tiffany Chio","display_name_normalized":"Tiffany + Chio","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge49485fcc1e","image_24":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071504}],"cache_ts":1568412761,"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 22:12:41 GMT +- request: + method: get + uri: https://slack.com/api/channels.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '717' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 22:12:42 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - b127e8cd-e6ec-4ae7-a55a-c2b9369e937b + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - channels:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-xvg4 + X-Cache: + - Miss from cloudfront + Via: + - 1.1 490c6b39f412c738a30c226f07db749c.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - 4BSp-38K5AwjemXrNR0ZM8_W3-PGq6pG1ZZ5f4wWSF0wKGSm6fqMvQ== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CMUR2JTNX","name":"random","is_channel":true,"created":1568071183,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UN5R273J8","name_normalized":"random","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTG0S5D0","UMUR43REX","UMZSUVBED","UN5R273J8","UN5R3N6P6","UN5R3NYUU","UN69C37BJ"],"topic":{"value":"Non-work + banter and water cooler conversation","creator":"UN5R273J8","last_set":1568071183},"purpose":{"value":"A + place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber + you''d prefer to keep out of more focused work-related channels.","creator":"UN5R273J8","last_set":1568071183},"previous_names":[],"num_members":7},{"id":"CN6A88SJZ","name":"turkey","is_channel":true,"created":1568073346,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMUR43REX","name_normalized":"turkey","is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":["UMUR43REX","UN5R273J8","UN69C37BJ"],"topic":{"value":"To + collect images of turkeys and information about turkeys","creator":"UN5R273J8","last_set":1568232705},"purpose":{"value":"to + collect images of turkeys and information about turkeys","creator":"UMUR43REX","last_set":1568073347},"previous_names":[],"num_members":3},{"id":"CN85BSBQF","name":"slack-cli","is_channel":true,"created":1568071183,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UN5R273J8","name_normalized":"slack-cli","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTG0S5D0","UMUR43REX","UMZSUVBED","UN5R273J8","UN5R3N6P6","UN5R3NYUU","UN69C37BJ"],"topic":{"value":"Posts + about the Slack CLI project","creator":"UN5R273J8","last_set":1568232665},"purpose":{"value":"Posts + about the Slack CLI project","creator":"UN5R273J8","last_set":1568232660},"previous_names":[],"num_members":7},{"id":"CN8FME7AS","name":"general","is_channel":true,"created":1568071183,"is_archived":false,"is_general":true,"unlinked":0,"creator":"UN5R273J8","name_normalized":"general","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTG0S5D0","UMUR43REX","UMZSUVBED","UN5R273J8","UN5R3N6P6","UN5R3NYUU","UN69C37BJ"],"topic":{"value":"Company-wide + announcements and work-based matters","creator":"UN5R273J8","last_set":1568071183},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UN5R273J8","last_set":1568071183},"previous_names":[],"num_members":7}],"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 22:12:42 GMT +- request: + method: post + uri: https://slack.com/api/chat.postMessage + body: + encoding: UTF-8 + string: token=&text=hi%21&channel=UMTG0S5D0 + headers: + Content-Type: + - application/x-www-form-urlencoded + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Transfer-Encoding: + - chunked + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 22:12:42 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - cfc1c8a0-7e5a-4e6d-a84e-e30d15b8257e + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - chat:write:bot + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-hdxt + X-Cache: + - Miss from cloudfront + Via: + - 1.1 05c281b7186067b6c66ca266cdeda2f8.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - xHAzm05UNx2RUGW7opwesce9-tYsMe52KfniQRPeADzvU-xaP4fPgQ== + body: + encoding: UTF-8 + string: '{"ok":true,"channel":"DN5R3NJF6","ts":"1568412762.000100","message":{"type":"message","subtype":"bot_message","text":"hi!","ts":"1568412762.000100","username":"Leaves + - Mariya - API Project","bot_id":"BMW5VR8TV"}}' + http_version: + recorded_at: Fri, 13 Sep 2019 22:12:42 GMT +recorded_with: VCR 5.0.0 diff --git a/test/cassettes/lists_channels.yml b/test/cassettes/lists_channels.yml index 64ecf6d4..4ebdc95e 100644 --- a/test/cassettes/lists_channels.yml +++ b/test/cassettes/lists_channels.yml @@ -25,13 +25,13 @@ http_interactions: Connection: - keep-alive Date: - - Fri, 13 Sep 2019 04:09:45 GMT + - Fri, 13 Sep 2019 22:12:42 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - 40ea07b9-093c-4435-a454-e342dc85fde0 + - a28620fc-05a6-4b22-9fe6-1f87412a4165 X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -57,15 +57,15 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-1a8v + - haproxy-www-shlo X-Cache: - Miss from cloudfront Via: - - 1.1 64f86ae1c24221f3a2e4d653d6dbc416.cloudfront.net (CloudFront) + - 1.1 a65ed239b1dc93560d93932663ec96bd.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - - SEA19-C2 + - HIO51-C1 X-Amz-Cf-Id: - - Zi7slqYGWvO7QHrufIKMXhQfiJmSnfctlywZ3-Lklv-XGmMzBnlYzw== + - P8g4YWH3I1rRhRd7sXP-BRqxmCpIqZSW78F0mA8fYZPeIcLwahgMkQ== body: encoding: ASCII-8BIT string: '{"ok":true,"channels":[{"id":"CMUR2JTNX","name":"random","is_channel":true,"created":1568071183,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UN5R273J8","name_normalized":"random","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTG0S5D0","UMUR43REX","UMZSUVBED","UN5R273J8","UN5R3N6P6","UN5R3NYUU","UN69C37BJ"],"topic":{"value":"Non-work @@ -80,5 +80,5 @@ http_interactions: channel is for workspace-wide communication and announcements. All members are in this channel.","creator":"UN5R273J8","last_set":1568071183},"previous_names":[],"num_members":7}],"response_metadata":{"next_cursor":""}}' http_version: - recorded_at: Fri, 13 Sep 2019 04:09:45 GMT + recorded_at: Fri, 13 Sep 2019 22:12:42 GMT recorded_with: VCR 5.0.0 diff --git a/test/cassettes/lists_users.yml b/test/cassettes/lists_users.yml index 67a9fec3..a8258d35 100644 --- a/test/cassettes/lists_users.yml +++ b/test/cassettes/lists_users.yml @@ -21,17 +21,17 @@ http_interactions: Content-Type: - application/json; charset=utf-8 Content-Length: - - '1605' + - '1604' Connection: - keep-alive Date: - - Fri, 13 Sep 2019 04:02:17 GMT + - Fri, 13 Sep 2019 22:12:42 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - 22167133-c6b3-4c22-8d76-b6d91398c777 + - 4c49cba7-8dfb-4bf8-9375-e37ad0346e8c X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -57,15 +57,15 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-0guu + - haproxy-www-z6bk X-Cache: - Miss from cloudfront Via: - - 1.1 591683988172c7980c4ebb318cbf18a9.cloudfront.net (CloudFront) + - 1.1 ac69e760019b6a5dd323cb8c0aa440ef.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - - SEA19-C2 + - HIO51-C1 X-Amz-Cf-Id: - - ZCvm1OACi6lsfAlUTktyt95cY53o0itpgX9Qee4rovPp0WJMg3iPVQ== + - FnWHmBGxwbka7k2c3fXlj-638nCVbUge4fQJgbQgZjlxVoSUaxXYMA== body: encoding: ASCII-8BIT string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN69AJ2SU","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific @@ -89,7 +89,7 @@ http_interactions: Schuler","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gc6d02aa49cf","image_24":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071410},{"id":"UN69C37BJ","team_id":"TN69AJ2SU","name":"tiffanycee123","deleted":false,"color":"4bbe2e","real_name":"Tiffany Chio","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Tiffany Chio","real_name_normalized":"Tiffany Chio","display_name":"Tiffany Chio","display_name_normalized":"Tiffany - Chio","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge49485fcc1e","image_24":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071504}],"cache_ts":1568347337,"response_metadata":{"next_cursor":""}}' + Chio","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge49485fcc1e","image_24":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071504}],"cache_ts":1568412762,"response_metadata":{"next_cursor":""}}' http_version: - recorded_at: Fri, 13 Sep 2019 04:02:17 GMT + recorded_at: Fri, 13 Sep 2019 22:12:42 GMT recorded_with: VCR 5.0.0 diff --git a/test/cassettes/new_workspace.yml b/test/cassettes/new_workspace.yml new file mode 100644 index 00000000..3fa3480c --- /dev/null +++ b/test/cassettes/new_workspace.yml @@ -0,0 +1,176 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/users.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '1605' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 22:12:40 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - d430ddbe-2944-4498-8342-81acce4d90db + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - users:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-lzki + X-Cache: + - Miss from cloudfront + Via: + - 1.1 3cc149abcbd8cb50553c09666247bcfa.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - 98buTKIz4BI1UrwERcFbD6ZuGlxjvKM6zDNAgpdq6Tbtqjey7377aw== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN69AJ2SU","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Slackbot","real_name_normalized":"Slackbot","display_name":"Slackbot","display_name_normalized":"Slackbot","fields":null,"status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"sv41d8cd98f0","always_active":true,"first_name":"slackbot","last_name":"","image_24":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_24.png","image_32":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_32.png","image_48":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_48.png","image_72":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_72.png","image_192":"https:\/\/a.slack-edge.com\/80588\/marketing\/img\/avatars\/slackbot\/avatar-slackbot.png","image_512":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":0},{"id":"UMTG0S5D0","team_id":"TN69AJ2SU","name":"samantha.collares","deleted":false,"color":"674b1b","real_name":"Samantha + Collares","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Samantha + Collares","real_name_normalized":"Samantha Collares","display_name":"Samantha + Collares","display_name_normalized":"Samantha Collares","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge444d412eed","image_24":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071698},{"id":"UMUR43REX","team_id":"TN69AJ2SU","name":"sabrina","deleted":false,"color":"e7392d","real_name":"Sabrina + Lowney","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Sabrina + Lowney","real_name_normalized":"Sabrina Lowney","display_name":"Sabrina Lowney","display_name_normalized":"Sabrina + Lowney","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g3826fd588f7","image_24":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071592},{"id":"UMZSUVBED","team_id":"TN69AJ2SU","name":"mariya.burrows","deleted":false,"color":"e96699","real_name":"Mariya + Burrows","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Mariya + Burrows","real_name_normalized":"Mariya Burrows","display_name":"Mariya Burrows","display_name_normalized":"Mariya + Burrows","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g742995f6521","image_24":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071452,"has_2fa":false},{"id":"UN5R273J8","team_id":"TN69AJ2SU","name":"dtingg","deleted":false,"color":"9f69e7","real_name":"Dianna + Tingg","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Dianna + Tingg","real_name_normalized":"Dianna Tingg","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g18e16502755","first_name":"Dianna","last_name":"Tingg","image_24":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":true,"is_owner":true,"is_primary_owner":true,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071477},{"id":"UN5R3N6P6","team_id":"TN69AJ2SU","name":"juliakingreyworks","deleted":false,"color":"3c989f","real_name":"Julia + K","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Julia + K","real_name_normalized":"Julia K","display_name":"Julia K","display_name_normalized":"Julia + K","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g8ae03401380","image_24":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071668},{"id":"UN5R3NYUU","team_id":"TN69AJ2SU","name":"morganlschuler","deleted":false,"color":"e0a729","real_name":"Morgan + Schuler","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Morgan + Schuler","real_name_normalized":"Morgan Schuler","display_name":"Morgan Schuler","display_name_normalized":"Morgan + Schuler","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gc6d02aa49cf","image_24":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071410},{"id":"UN69C37BJ","team_id":"TN69AJ2SU","name":"tiffanycee123","deleted":false,"color":"4bbe2e","real_name":"Tiffany + Chio","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Tiffany + Chio","real_name_normalized":"Tiffany Chio","display_name":"Tiffany Chio","display_name_normalized":"Tiffany + Chio","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge49485fcc1e","image_24":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071504}],"cache_ts":1568412760,"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 22:12:40 GMT +- request: + method: get + uri: https://slack.com/api/channels.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '717' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 22:12:40 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 5d76c473-b949-4233-a44c-5bae6f83f598 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - channels:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-lqa3 + X-Cache: + - Miss from cloudfront + Via: + - 1.1 6bd725b6233f3b787d5f5373be153d66.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - q-Xq-UyHBL2sI-HT_pX2LE62j1OReJDtQXmlk83zcDXssqun7UVtdA== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CMUR2JTNX","name":"random","is_channel":true,"created":1568071183,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UN5R273J8","name_normalized":"random","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTG0S5D0","UMUR43REX","UMZSUVBED","UN5R273J8","UN5R3N6P6","UN5R3NYUU","UN69C37BJ"],"topic":{"value":"Non-work + banter and water cooler conversation","creator":"UN5R273J8","last_set":1568071183},"purpose":{"value":"A + place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber + you''d prefer to keep out of more focused work-related channels.","creator":"UN5R273J8","last_set":1568071183},"previous_names":[],"num_members":7},{"id":"CN6A88SJZ","name":"turkey","is_channel":true,"created":1568073346,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMUR43REX","name_normalized":"turkey","is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":["UMUR43REX","UN5R273J8","UN69C37BJ"],"topic":{"value":"To + collect images of turkeys and information about turkeys","creator":"UN5R273J8","last_set":1568232705},"purpose":{"value":"to + collect images of turkeys and information about turkeys","creator":"UMUR43REX","last_set":1568073347},"previous_names":[],"num_members":3},{"id":"CN85BSBQF","name":"slack-cli","is_channel":true,"created":1568071183,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UN5R273J8","name_normalized":"slack-cli","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTG0S5D0","UMUR43REX","UMZSUVBED","UN5R273J8","UN5R3N6P6","UN5R3NYUU","UN69C37BJ"],"topic":{"value":"Posts + about the Slack CLI project","creator":"UN5R273J8","last_set":1568232665},"purpose":{"value":"Posts + about the Slack CLI project","creator":"UN5R273J8","last_set":1568232660},"previous_names":[],"num_members":7},{"id":"CN8FME7AS","name":"general","is_channel":true,"created":1568071183,"is_archived":false,"is_general":true,"unlinked":0,"creator":"UN5R273J8","name_normalized":"general","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTG0S5D0","UMUR43REX","UMZSUVBED","UN5R273J8","UN5R3N6P6","UN5R3NYUU","UN69C37BJ"],"topic":{"value":"Company-wide + announcements and work-based matters","creator":"UN5R273J8","last_set":1568071183},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UN5R273J8","last_set":1568071183},"previous_names":[],"num_members":7}],"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 22:12:40 GMT +recorded_with: VCR 5.0.0 diff --git a/test/cassettes/prompt_method.yml b/test/cassettes/prompt_method.yml new file mode 100644 index 00000000..0295fdd0 --- /dev/null +++ b/test/cassettes/prompt_method.yml @@ -0,0 +1,176 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/users.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '1605' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 22:21:03 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 1e861218-c454-41eb-9fb6-b347d413c57b + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - users:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-hdxt + X-Cache: + - Miss from cloudfront + Via: + - 1.1 6ca7826fb0f4c565b1af9c7737725c49.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C1 + X-Amz-Cf-Id: + - NHifa5bEu-agfSomGqzU0EIPVV6rNCwt1CIXse1aM1V6ZK3efqUHDw== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN69AJ2SU","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Slackbot","real_name_normalized":"Slackbot","display_name":"Slackbot","display_name_normalized":"Slackbot","fields":null,"status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"sv41d8cd98f0","always_active":true,"first_name":"slackbot","last_name":"","image_24":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_24.png","image_32":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_32.png","image_48":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_48.png","image_72":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_72.png","image_192":"https:\/\/a.slack-edge.com\/80588\/marketing\/img\/avatars\/slackbot\/avatar-slackbot.png","image_512":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":0},{"id":"UMTG0S5D0","team_id":"TN69AJ2SU","name":"samantha.collares","deleted":false,"color":"674b1b","real_name":"Samantha + Collares","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Samantha + Collares","real_name_normalized":"Samantha Collares","display_name":"Samantha + Collares","display_name_normalized":"Samantha Collares","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge444d412eed","image_24":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071698},{"id":"UMUR43REX","team_id":"TN69AJ2SU","name":"sabrina","deleted":false,"color":"e7392d","real_name":"Sabrina + Lowney","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Sabrina + Lowney","real_name_normalized":"Sabrina Lowney","display_name":"Sabrina Lowney","display_name_normalized":"Sabrina + Lowney","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g3826fd588f7","image_24":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071592},{"id":"UMZSUVBED","team_id":"TN69AJ2SU","name":"mariya.burrows","deleted":false,"color":"e96699","real_name":"Mariya + Burrows","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Mariya + Burrows","real_name_normalized":"Mariya Burrows","display_name":"Mariya Burrows","display_name_normalized":"Mariya + Burrows","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g742995f6521","image_24":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071452,"has_2fa":false},{"id":"UN5R273J8","team_id":"TN69AJ2SU","name":"dtingg","deleted":false,"color":"9f69e7","real_name":"Dianna + Tingg","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Dianna + Tingg","real_name_normalized":"Dianna Tingg","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g18e16502755","first_name":"Dianna","last_name":"Tingg","image_24":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":true,"is_owner":true,"is_primary_owner":true,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071477},{"id":"UN5R3N6P6","team_id":"TN69AJ2SU","name":"juliakingreyworks","deleted":false,"color":"3c989f","real_name":"Julia + K","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Julia + K","real_name_normalized":"Julia K","display_name":"Julia K","display_name_normalized":"Julia + K","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g8ae03401380","image_24":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071668},{"id":"UN5R3NYUU","team_id":"TN69AJ2SU","name":"morganlschuler","deleted":false,"color":"e0a729","real_name":"Morgan + Schuler","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Morgan + Schuler","real_name_normalized":"Morgan Schuler","display_name":"Morgan Schuler","display_name_normalized":"Morgan + Schuler","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gc6d02aa49cf","image_24":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071410},{"id":"UN69C37BJ","team_id":"TN69AJ2SU","name":"tiffanycee123","deleted":false,"color":"4bbe2e","real_name":"Tiffany + Chio","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Tiffany + Chio","real_name_normalized":"Tiffany Chio","display_name":"Tiffany Chio","display_name_normalized":"Tiffany + Chio","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge49485fcc1e","image_24":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071504}],"cache_ts":1568413263,"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 22:21:03 GMT +- request: + method: get + uri: https://slack.com/api/channels.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '717' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 22:21:04 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - eaa9b3cc-813d-4708-b865-427fc84e4cb6 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - channels:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-3caj + X-Cache: + - Miss from cloudfront + Via: + - 1.1 deaaf0548506de20925615eb51a7ea7f.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C1 + X-Amz-Cf-Id: + - JAi3O6D7PITRA3EsoVFU9UsVoz2VtFQRjNXQwwHqI6WFSk0gJyGdgQ== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CMUR2JTNX","name":"random","is_channel":true,"created":1568071183,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UN5R273J8","name_normalized":"random","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTG0S5D0","UMUR43REX","UMZSUVBED","UN5R273J8","UN5R3N6P6","UN5R3NYUU","UN69C37BJ"],"topic":{"value":"Non-work + banter and water cooler conversation","creator":"UN5R273J8","last_set":1568071183},"purpose":{"value":"A + place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber + you''d prefer to keep out of more focused work-related channels.","creator":"UN5R273J8","last_set":1568071183},"previous_names":[],"num_members":7},{"id":"CN6A88SJZ","name":"turkey","is_channel":true,"created":1568073346,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMUR43REX","name_normalized":"turkey","is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":["UMUR43REX","UN5R273J8","UN69C37BJ"],"topic":{"value":"To + collect images of turkeys and information about turkeys","creator":"UN5R273J8","last_set":1568232705},"purpose":{"value":"to + collect images of turkeys and information about turkeys","creator":"UMUR43REX","last_set":1568073347},"previous_names":[],"num_members":3},{"id":"CN85BSBQF","name":"slack-cli","is_channel":true,"created":1568071183,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UN5R273J8","name_normalized":"slack-cli","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTG0S5D0","UMUR43REX","UMZSUVBED","UN5R273J8","UN5R3N6P6","UN5R3NYUU","UN69C37BJ"],"topic":{"value":"Posts + about the Slack CLI project","creator":"UN5R273J8","last_set":1568232665},"purpose":{"value":"Posts + about the Slack CLI project","creator":"UN5R273J8","last_set":1568232660},"previous_names":[],"num_members":7},{"id":"CN8FME7AS","name":"general","is_channel":true,"created":1568071183,"is_archived":false,"is_general":true,"unlinked":0,"creator":"UN5R273J8","name_normalized":"general","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTG0S5D0","UMUR43REX","UMZSUVBED","UN5R273J8","UN5R3N6P6","UN5R3NYUU","UN69C37BJ"],"topic":{"value":"Company-wide + announcements and work-based matters","creator":"UN5R273J8","last_set":1568071183},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UN5R273J8","last_set":1568071183},"previous_names":[],"num_members":7}],"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 22:21:04 GMT +recorded_with: VCR 5.0.0 diff --git a/test/cassettes/select.yml b/test/cassettes/select.yml new file mode 100644 index 00000000..b1e5e5e2 --- /dev/null +++ b/test/cassettes/select.yml @@ -0,0 +1,176 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/users.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '1604' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 22:12:41 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - f8d8b199-8eca-4d11-b2e0-83a53075ec7e + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - users:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-vnia + X-Cache: + - Miss from cloudfront + Via: + - 1.1 79f18dd6382f7347397cfbd42c438a75.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - UQ2rDer3dq_-JThQwjp9oQWuOFIkYaQ6TU2-w7SxwcUvU2u04CW5VA== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN69AJ2SU","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Slackbot","real_name_normalized":"Slackbot","display_name":"Slackbot","display_name_normalized":"Slackbot","fields":null,"status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"sv41d8cd98f0","always_active":true,"first_name":"slackbot","last_name":"","image_24":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_24.png","image_32":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_32.png","image_48":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_48.png","image_72":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_72.png","image_192":"https:\/\/a.slack-edge.com\/80588\/marketing\/img\/avatars\/slackbot\/avatar-slackbot.png","image_512":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":0},{"id":"UMTG0S5D0","team_id":"TN69AJ2SU","name":"samantha.collares","deleted":false,"color":"674b1b","real_name":"Samantha + Collares","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Samantha + Collares","real_name_normalized":"Samantha Collares","display_name":"Samantha + Collares","display_name_normalized":"Samantha Collares","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge444d412eed","image_24":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071698},{"id":"UMUR43REX","team_id":"TN69AJ2SU","name":"sabrina","deleted":false,"color":"e7392d","real_name":"Sabrina + Lowney","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Sabrina + Lowney","real_name_normalized":"Sabrina Lowney","display_name":"Sabrina Lowney","display_name_normalized":"Sabrina + Lowney","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g3826fd588f7","image_24":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071592},{"id":"UMZSUVBED","team_id":"TN69AJ2SU","name":"mariya.burrows","deleted":false,"color":"e96699","real_name":"Mariya + Burrows","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Mariya + Burrows","real_name_normalized":"Mariya Burrows","display_name":"Mariya Burrows","display_name_normalized":"Mariya + Burrows","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g742995f6521","image_24":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071452,"has_2fa":false},{"id":"UN5R273J8","team_id":"TN69AJ2SU","name":"dtingg","deleted":false,"color":"9f69e7","real_name":"Dianna + Tingg","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Dianna + Tingg","real_name_normalized":"Dianna Tingg","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g18e16502755","first_name":"Dianna","last_name":"Tingg","image_24":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":true,"is_owner":true,"is_primary_owner":true,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071477},{"id":"UN5R3N6P6","team_id":"TN69AJ2SU","name":"juliakingreyworks","deleted":false,"color":"3c989f","real_name":"Julia + K","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Julia + K","real_name_normalized":"Julia K","display_name":"Julia K","display_name_normalized":"Julia + K","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g8ae03401380","image_24":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071668},{"id":"UN5R3NYUU","team_id":"TN69AJ2SU","name":"morganlschuler","deleted":false,"color":"e0a729","real_name":"Morgan + Schuler","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Morgan + Schuler","real_name_normalized":"Morgan Schuler","display_name":"Morgan Schuler","display_name_normalized":"Morgan + Schuler","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gc6d02aa49cf","image_24":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071410},{"id":"UN69C37BJ","team_id":"TN69AJ2SU","name":"tiffanycee123","deleted":false,"color":"4bbe2e","real_name":"Tiffany + Chio","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Tiffany + Chio","real_name_normalized":"Tiffany Chio","display_name":"Tiffany Chio","display_name_normalized":"Tiffany + Chio","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge49485fcc1e","image_24":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071504}],"cache_ts":1568412761,"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 22:12:41 GMT +- request: + method: get + uri: https://slack.com/api/channels.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '717' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 22:12:41 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 6ea8a3b1-a004-419b-afa8-37c7e7be6b06 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - channels:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-zrg4 + X-Cache: + - Miss from cloudfront + Via: + - 1.1 047c77cddf7ec99dc42ee0ce44304395.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - cVswTroGQdsguLRuGH9kfklbQyEXVLzD99Yp6YcB81_5XO7_6jwr_g== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CMUR2JTNX","name":"random","is_channel":true,"created":1568071183,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UN5R273J8","name_normalized":"random","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTG0S5D0","UMUR43REX","UMZSUVBED","UN5R273J8","UN5R3N6P6","UN5R3NYUU","UN69C37BJ"],"topic":{"value":"Non-work + banter and water cooler conversation","creator":"UN5R273J8","last_set":1568071183},"purpose":{"value":"A + place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber + you''d prefer to keep out of more focused work-related channels.","creator":"UN5R273J8","last_set":1568071183},"previous_names":[],"num_members":7},{"id":"CN6A88SJZ","name":"turkey","is_channel":true,"created":1568073346,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMUR43REX","name_normalized":"turkey","is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":["UMUR43REX","UN5R273J8","UN69C37BJ"],"topic":{"value":"To + collect images of turkeys and information about turkeys","creator":"UN5R273J8","last_set":1568232705},"purpose":{"value":"to + collect images of turkeys and information about turkeys","creator":"UMUR43REX","last_set":1568073347},"previous_names":[],"num_members":3},{"id":"CN85BSBQF","name":"slack-cli","is_channel":true,"created":1568071183,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UN5R273J8","name_normalized":"slack-cli","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTG0S5D0","UMUR43REX","UMZSUVBED","UN5R273J8","UN5R3N6P6","UN5R3NYUU","UN69C37BJ"],"topic":{"value":"Posts + about the Slack CLI project","creator":"UN5R273J8","last_set":1568232665},"purpose":{"value":"Posts + about the Slack CLI project","creator":"UN5R273J8","last_set":1568232660},"previous_names":[],"num_members":7},{"id":"CN8FME7AS","name":"general","is_channel":true,"created":1568071183,"is_archived":false,"is_general":true,"unlinked":0,"creator":"UN5R273J8","name_normalized":"general","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTG0S5D0","UMUR43REX","UMZSUVBED","UN5R273J8","UN5R3N6P6","UN5R3NYUU","UN69C37BJ"],"topic":{"value":"Company-wide + announcements and work-based matters","creator":"UN5R273J8","last_set":1568071183},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UN5R273J8","last_set":1568071183},"previous_names":[],"num_members":7}],"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 22:12:41 GMT +recorded_with: VCR 5.0.0 diff --git a/test/cassettes/slack-posts.yml b/test/cassettes/slack-posts.yml index 4a86f255..352b2275 100644 --- a/test/cassettes/slack-posts.yml +++ b/test/cassettes/slack-posts.yml @@ -1,5 +1,74 @@ --- http_interactions: +- request: + method: post + uri: https://slack.com/api/chat.postMessage + body: + encoding: UTF-8 + string: token=&text=Hey%20I%20can%20post%20messages%21&channel=UN5R3NYUU + headers: + Content-Type: + - application/x-www-form-urlencoded + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Transfer-Encoding: + - chunked + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 22:12:40 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - cb81c2c1-ced4-4531-b431-adabe602189e + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - chat:write:bot + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-1ir4 + X-Cache: + - Miss from cloudfront + Via: + - 1.1 202c6c81b156ef839c9523323064951d.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - YEb19ZVlRkWai9KqLEDmv3S4I0V1qMZ0kdajZjb00aJEsmCXHVSO9g== + body: + encoding: UTF-8 + string: '{"ok":true,"channel":"DN69K4UH3","ts":"1568412760.000100","message":{"type":"message","subtype":"bot_message","text":"Hey + I can post messages!","ts":"1568412760.000100","username":"Leaves - Mariya + - API Project","bot_id":"BMW5VR8TV"}}' + http_version: + recorded_at: Fri, 13 Sep 2019 22:12:40 GMT - request: method: post uri: https://slack.com/api/chat.postMessage @@ -21,13 +90,13 @@ http_interactions: Connection: - keep-alive Date: - - Fri, 13 Sep 2019 04:02:17 GMT + - Fri, 13 Sep 2019 22:12:40 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - '014649a3-1b94-4c39-af16-fb5f52d99ee5' + - 397ba8fa-7005-4397-a0e3-3331bbb863aa X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -53,28 +122,28 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-fyfw + - haproxy-www-asnz X-Cache: - Miss from cloudfront Via: - - 1.1 570075675953459325e00b7bcd171df3.cloudfront.net (CloudFront) + - 1.1 3cc149abcbd8cb50553c09666247bcfa.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - - SEA19-C2 + - HIO51-C1 X-Amz-Cf-Id: - - ep4NcaeGB8KQzW97DSSF-Gg3crTz7S-kVfzeHTuHEBL-FTY0xzyw-g== + - 07deNe0bDgHyYNhlMBd88l8Tw5--iQHkDhjnrB_w4gqqHbIrdXU1oQ== body: encoding: UTF-8 - string: '{"ok":true,"channel":"CN8FME7AS","ts":"1568347337.000200","message":{"type":"message","subtype":"bot_message","text":"Hey - I can post messages!","ts":"1568347337.000200","username":"Leaves - Mariya + string: '{"ok":true,"channel":"CN8FME7AS","ts":"1568412760.000600","message":{"type":"message","subtype":"bot_message","text":"Hey + I can post messages!","ts":"1568412760.000600","username":"Leaves - Mariya - API Project","bot_id":"BMW5VR8TV"}}' http_version: - recorded_at: Fri, 13 Sep 2019 04:02:17 GMT + recorded_at: Fri, 13 Sep 2019 22:12:40 GMT - request: method: post uri: https://slack.com/api/chat.postMessage body: encoding: UTF-8 - string: token=&text=This%20post%20should%20not%20work&channel=invalid-channel + string: token=&text=This%20post%20should%20not%20work&channel=invalid headers: Content-Type: - application/x-www-form-urlencoded @@ -90,13 +159,13 @@ http_interactions: Connection: - keep-alive Date: - - Fri, 13 Sep 2019 04:02:18 GMT + - Fri, 13 Sep 2019 22:12:40 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - 682f937d-f3ee-4421-92f1-95db431283dc + - 31ffd42b-f547-4e8f-a3bf-95d202df982d X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -122,18 +191,18 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-1a8v + - haproxy-www-o786 X-Cache: - Miss from cloudfront Via: - - 1.1 7e87179efaa9e3c316bd3d3a74cfded8.cloudfront.net (CloudFront) + - 1.1 c3d327d7fba3cf3679ba86e6faf3a795.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - - SEA19-C2 + - HIO51-C1 X-Amz-Cf-Id: - - HGtOMOukbyQgw-fKyDK851oufJVysaNYdNMwtdWKyffczAL4zo9-iw== + - byMO_RJXtgmrR9RMvtYQKHtH-4cxujHYnFfL86AqppwHZzj_NCCH0w== body: encoding: UTF-8 string: '{"ok":false,"error":"channel_not_found"}' http_version: - recorded_at: Fri, 13 Sep 2019 04:02:18 GMT + recorded_at: Fri, 13 Sep 2019 22:12:40 GMT recorded_with: VCR 5.0.0 diff --git a/test/channel_test.rb b/test/channel_test.rb index 2bfddfbe..a352ba48 100644 --- a/test/channel_test.rb +++ b/test/channel_test.rb @@ -13,16 +13,31 @@ expect(@channel.class).must_equal (Slack::Channel) end + it "has a topic" do + expect(@channel.topic).must_equal ({"value"=>"", "creator"=>"", "last_set"=>0}) + end + it "lists the channels" do expect(@list.length).must_equal 4 expect(@list).must_be_kind_of Array expect(@list[0]).must_be_kind_of Slack::Channel expect(@list[0].name).must_equal "random" - #["random", "turkey", "slack-cli", "general"] end - - # it "provides details" do - # expect(@test_list.details).must_equal - # end + end + + describe "details" do + before do + VCR.use_cassette("lists_channels") do + @channel = Slack::Channel.new("CMUR2JTNX", "random", {"value"=>"", "creator"=>"", "last_set"=>0}, 7) + end + + it "returns a hash" do + expect(@channel.details).must_be_kind_of Hash + end + + it "has a slack_id" do + expect(@channel.details["slack_id"]).must_equal "CMUR2JTNX" + end + end end end \ No newline at end of file diff --git a/test/recipient_test.rb b/test/recipient_test.rb index e7f676a4..db11bcc9 100644 --- a/test/recipient_test.rb +++ b/test/recipient_test.rb @@ -2,21 +2,30 @@ describe Slack do describe "Recipient class" do - it "can send a valid message" do + + it "can send a valid message to the channel" do VCR.use_cassette("slack-posts") do response = Slack::Recipient.send_msg("Hey I can post messages!", "general") expect(response).must_equal true end end - end - - it "will raise an error when given an invalid channel" do - VCR.use_cassette("slack-posts") do - exception = expect { - Slack::Recipient.send_msg("This post should not work", "invalid-channel") - }.must_raise Slack::SlackApiError - - expect(exception.message).must_equal 'Error when posting This post should not work to invalid-channel, error: channel_not_found' + + + it "will raise an error when given an invalid channel" do + VCR.use_cassette("slack-posts") do + exception = expect { + Slack::Recipient.send_msg("This post should not work", "invalid") + }.must_raise Slack::SlackApiError + + expect(exception.message).must_equal 'Error when posting This post should not work to invalid, error: channel_not_found' + end + end + + it "can send a valid message to the user" do + VCR.use_cassette("slack-posts") do + response = Slack::Recipient.send_msg("Hey I can post messages!", "UN5R3NYUU") + expect(response).must_equal true + end end end end \ No newline at end of file diff --git a/test/test_helper.rb b/test/test_helper.rb index af1b7998..18108ca0 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -16,6 +16,10 @@ require_relative "../lib/recipient" require_relative "../lib/channel" require_relative "../lib/user" +require_relative "../lib/workspace" +# require_relative "../lib/slack" + + Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new diff --git a/test/user_test.rb b/test/user_test.rb index d22541ec..bbc7c551 100644 --- a/test/user_test.rb +++ b/test/user_test.rb @@ -17,16 +17,9 @@ end end - # before do - # VCR.use_cassette("lists_users") do - # testing_list = User.self.list - # testing_object = testing_list[1] - # # @user = Slack::User.new( - # # user_basic = ["UMTG0S5D0", "samantha.collares", "Samantha Collares"] - # # @user_test_list = @user.list - # # @first_user = @user_test_list[1] - # end - # end + it "has a name" do + expect(@user.name).must_equal "samantha.collares" + end it "lists the users" do VCR.use_cassette("lists_the_users_length") do @@ -51,8 +44,11 @@ end end + it "returns a hash" do + expect(@user.details).must_be_kind_of Hash + end + it "provides details" do - # binding.pry expect(@user.details).must_equal ({"slack_id"=> "UMTG0S5D0", "name"=> "samantha.collares", "real_name"=> "Samantha Collares" }) end end diff --git a/test/workspace_test.rb b/test/workspace_test.rb index c43b35d6..983a79ca 100644 --- a/test/workspace_test.rb +++ b/test/workspace_test.rb @@ -3,8 +3,104 @@ describe "Workspace class" do describe "New instance of Slack::Workspace" do before do - VCR.cassette() do + VCR.use_cassette("new_workspace") do + @workspace = Slack::Workspace.new end end - end -end \ No newline at end of file + + it "is of the class Slack::Workspace" do + expect(@workspace.class).must_equal (Slack::Workspace) + end + + it "has users" do + expect(@workspace.users.length).must_equal 8 + end + end #end of first block + + describe "selects target" do + before do + VCR.use_cassette("select") do + @workspace = Slack::Workspace.new + @user_slack_id = "UMTG0S5D0" + @user_user_name = "samantha.collares" + @channel_slack_id = "CMUR2JTNX" + @channel_user_name = "random" + end + end + + it "selects user by slack_id" do + expect(@workspace.select_user_slack_id(slack_id: @user_slack_id)).must_be_kind_of Slack::User + end + + it "selects user by user_name" do + expect(@workspace.select_user_username(user_name: @user_user_name)).must_be_kind_of Slack::User + end + + it "selects channel by slack_id" do + expect(@workspace.select_channel_slack_id(slack_id: @channel_slack_id)).must_be_kind_of Slack::Channel + end + + it "selects user by user_name" do + expect(@workspace.select_channel_username(user_name: @channel_user_name)).must_be_kind_of Slack::Channel + end + end #select target + + describe "show details" do + before do + VCR.use_cassette("details") do + @workspace = Slack::Workspace.new + @workspace.select_user_slack_id(slack_id: "UN5R3NYUU") + end + end + + it "shows user details" do + expect(@workspace.show_details).must_be_kind_of Hash + end + end #show detals + + describe "send a message" do + it "sends a message to the channel" do + VCR.use_cassette("details") do + @workspace = Slack::Workspace.new + @workspace.select_channel_slack_id(slack_id: "CMUR2JTNX") + @response = @workspace.send_message("hi!") + end + + expect(@response).must_equal true + end + + it "sends a message to the channel" do + VCR.use_cassette("details") do + @workspace = Slack::Workspace.new + @workspace.select_channel_slack_id(slack_id: "HASFHAS") + end + + expect{ + @workspace.send_message("hi!")}.must_raise StandardError + end + + it "sends a message to the user" do + VCR.use_cassette("info") do + @workspace = Slack::Workspace.new + @workspace.select_user_slack_id(slack_id: "UMTG0S5D0") + @response = @workspace.send_message("hi!") + end + + expect(@response).must_equal true + end + + it "sends a message to the channel" do + VCR.use_cassette("info") do + @workspace = Slack::Workspace.new + @workspace.select_user_slack_id(slack_id: "HASFHAS") + end + + expect{ + @workspace.send_message("hi!")}.must_raise StandardError + end + + + + end # send message + + end #overall \ No newline at end of file From 0f4f4d28918a01fcbd01e36f6e30947361d38739 Mon Sep 17 00:00:00 2001 From: Mariya Burrows Date: Fri, 13 Sep 2019 20:30:25 -0700 Subject: [PATCH 15/18] updated tests. fixed infinite loop inside of slack.rb --- .DS_Store | Bin 0 -> 6148 bytes .gitignore | 2 + lib/channel.rb | 13 ++- lib/slack.rb | 94 +++++++++++----- lib/user.rb | 12 +- test/cassettes/details.yml | 48 ++++---- test/cassettes/info.yml | 48 ++++---- test/cassettes/lists_channels.yml | 14 +-- test/cassettes/lists_users.yml | 18 +-- test/cassettes/new_workspace.yml | 30 ++--- test/cassettes/prompt_method.yml | 176 ------------------------------ test/cassettes/select.yml | 32 +++--- test/cassettes/slack-posts.yml | 58 +++++----- test/channel_test.rb | 8 +- test/user_test.rb | 82 +++++++------- 15 files changed, 252 insertions(+), 383 deletions(-) create mode 100644 .DS_Store delete mode 100644 test/cassettes/prompt_method.yml diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..1ad899dbcdc748036dd701eacb0ec11e243703d4 GIT binary patch literal 6148 zcmeHKyJ`bL3>+mc4$`I(2Sbbi#2M3J zT*oXyY@Q(Y!ZDE|1kgGlC+ZoQs7@HV6)|Fx!@~RZ=JlH_u58Z)4k@C?#6Xc7@{2$qaAbO f?f5y0vab1>=e=-D3_9~cC+cUwb&*MdzgFN1-fR_w literal 0 HcmV?d00001 diff --git a/.gitignore b/.gitignore index 8d6a243f..9bda1410 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,8 @@ # Used by dotenv library to load environment variables. # .env +coverage + ## Specific to RubyMotion: .dat* .repl_history diff --git a/lib/channel.rb b/lib/channel.rb index d5834ac3..8353dbe5 100644 --- a/lib/channel.rb +++ b/lib/channel.rb @@ -3,12 +3,14 @@ module Slack class Channel < Recipient - attr_reader :topic, :members + attr_reader :topic, :members, :creator, :privacy_status - def initialize(slack_id, name, topic, members) + def initialize(slack_id, name, topic, members, creator, privacy_status) super(slack_id, name) @topic = topic @members = members + @creator = creator + @privacy_status = privacy_status end def self.list @@ -20,8 +22,7 @@ def self.list channel_list = [] channel_objects["channels"].each do |channel| - channel_basic = self.new(channel["id"], channel["name"], channel["topic"], channel["members"]) - #member["display_name"], member["email"] add back in later + channel_basic = self.new(channel["id"], channel["name"], channel["topic"], channel["members"].length, channel["creator"], channel["is_private"]) channel_list << channel_basic end return channel_list @@ -34,12 +35,12 @@ def send_msg(message) def details channel_details = {} - channel_details["slack_id"] = self.slack_id channel_details["name"] = self.name channel_details["topic"] = self.topic channel_details["members"] = self.members - + channel_details["creator"] = self.creator + channel_details["privacy_status"] = self.privacy_status return channel_details end diff --git a/lib/slack.rb b/lib/slack.rb index 58c3295c..cefc858b 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -10,43 +10,50 @@ def main workspace = Slack::Workspace.new user_choice = nil - until input == "quit" + until user_choice == "3" puts "Welcome to the Ada Slack CLI! Put quit to exit the program" + # user can list users, chanels, or quit user_choice = prompt( - "What would you like to do?", - ["List users", "List channels"] + "\nWhat would you like to do?", + ["List users", "List channels", "Quit"] ) + # path for list users if user_choice == "1" list = Slack::User.list - - list.each do |member_object| - puts "slack id: #{member_object.slack_id}" - puts "name: #{member_object.name}" - puts "real name: #{member_object.real_name}\n" - end + print_user_list(list) search_choice = prompt( - "Do you want to find a user by:", + "\nDo you want to find a user by:", ["Slack id", "User name"] ) + # user decides how they want to look up recipient if search_choice == "1" - puts "please enter that person's slack id: " - slack_id = gets.chomp + puts "\nPlease enter that person's slack id: " + slack_id = validate(gets.chomp) workspace.select_user_slack_id(slack_id: slack_id) elsif search_choice == "2" - puts "please enter that person's user_name: " - user_name = gets.chomp - workspace.select_user_username(user_name: user_name) + puts "\nPlease enter the person's user name:" + user_name = validate(gets.chomp) + response = workspace.select_user_username(user_name: user_name) + while response.nil? + puts "Couldn't find user :(" + print "Please make a valid selection: > " + user_name = validate(gets.chomp) + response = workspace.select_user_username(user_name: user_name) + end end + # prompts the user after recipient has been selected + # built in helper methods to validate inputs communication_choice = prompt( "Do you want to:", - ["See this user's details", "Send them a message?"] + ["See this user's details", "Send them a message"] ) + # sends messages or shows details for selected client if communication_choice == "1" workspace.show_details elsif communication_choice == "2" @@ -55,31 +62,29 @@ def main workspace.send_message(message) end + # path for lists channels elsif user_choice == "2" list = Slack::Channel.list - - list.each do |member_object| - puts "slack id: #{member_object.slack_id}" - puts "name: #{member_object.name}" - puts "topic: #{member_object.topic}" - puts "member_count: #{member_object.members}" - end + print_channel_list(list) search_choice = prompt( - "Do you want to find a channel by:", + "\nDo you want to find a channel by:", ["Slack id", "Channel name"] ) + # user decides how to look up channel if search_choice == "1" - puts "please enter that channel's slack id: " - slack_id = gets.chomp + print "\nPlease enter that channel's slack id: > " + slack_id = validate(gets.chomp) workspace.select_channel_slack_id(slack_id: slack_id) elsif search_choice == "2" - puts "please enter the name of that channel: " - user_name = gets.chomp + print "\nPlease enter the name of that channel: > " + user_name = validate(gets.chomp) workspace.select_channel_username(user_name: user_name) end + # prompts user for selection + # built in validate methods with helper methods communication_choice = prompt( "Do you want to:", ["See this channel's details", "Send a message to the channel?"] @@ -88,7 +93,7 @@ def main if communication_choice == "1" workspace.show_details elsif communication_choice == "2" - puts "Please enter a message: " + print "Please enter a message: > " message = gets.chomp workspace.send_message(message) end @@ -106,9 +111,40 @@ def prompt(message, options) puts "#{index + 1}. #{option}" end input = gets.chomp + + until input.to_i <= options.length && input.to_i > 0 + print "Invalid selection. > " + input = gets.chomp + end + return input end +def print_user_list(list) + list.each do |member_object| + puts + puts "slack id: #{member_object.slack_id}" + puts "name: #{member_object.name}" + puts "real name: #{member_object.real_name}\n" + end +end +def print_channel_list(list) + list.each do |member_object| + puts + puts "slack id: #{member_object.slack_id}" + puts "name: #{member_object.name}" + puts "topic: #{member_object.topic}" + puts "member_count: #{member_object.members}" + end +end + +def validate(input) + while input.empty? || input.nil? + print "please make a valid selection: >" + input = gets.chomp + end + return input +end main diff --git a/lib/user.rb b/lib/user.rb index 7c12b1bb..ffcb6e2c 100644 --- a/lib/user.rb +++ b/lib/user.rb @@ -3,12 +3,13 @@ module Slack class User < Recipient - attr_reader :real_name, :display_name + attr_reader :real_name, :display_name, :time_zone - def initialize(slack_id, name, real_name) + def initialize(slack_id, name, real_name, display_name, time_zone) super(slack_id, name) @real_name = real_name - #@display_name = display_name + @display_name = display_name + @time_zone = time_zone end def self.list @@ -21,8 +22,7 @@ def self.list user_list = [] user_objects["members"].each do |member| # @users << member - user_basic = self.new(member["id"], member["name"], member["real_name"]) - #member["display_name"], member["email"] add back in later + user_basic = self.new(member["id"], member["name"], member["real_name"], member["profile"]["display_name"], member["tz"]) user_list << user_basic end return user_list @@ -38,6 +38,8 @@ def details user_details["slack_id"] = self.slack_id user_details["name"] = self.name user_details["real_name"] = self.real_name + user_details["display_name"] = self.display_name + user_details["time_zone"] = self.time_zone return user_details end diff --git a/test/cassettes/details.yml b/test/cassettes/details.yml index c40c19b4..9182a008 100644 --- a/test/cassettes/details.yml +++ b/test/cassettes/details.yml @@ -21,17 +21,17 @@ http_interactions: Content-Type: - application/json; charset=utf-8 Content-Length: - - '1604' + - '1605' Connection: - keep-alive Date: - - Fri, 13 Sep 2019 22:12:41 GMT + - Sat, 14 Sep 2019 03:27:30 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - 0f40644a-3253-4726-8f85-19b0d4dfb672 + - 6662713d-62cf-473a-901c-1d31209cdff1 X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -57,15 +57,15 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-pvfg + - haproxy-www-n75o X-Cache: - Miss from cloudfront Via: - - 1.1 92e604c539993adca02dc86bcca48800.cloudfront.net (CloudFront) + - 1.1 68807936c056006818525c5da31d108e.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - - HIO51-C1 + - SEA19 X-Amz-Cf-Id: - - 7B83_esenS3kyisldb3G8IqwkWIsaWbXmoBR-We1i8f_weWVPoJ9ww== + - OPjCld4xxv5t7H0RFT-Tl3ULCuoHvIp_FfFDogn2L6r3ljIcz3SHwA== body: encoding: ASCII-8BIT string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN69AJ2SU","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific @@ -89,9 +89,9 @@ http_interactions: Schuler","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gc6d02aa49cf","image_24":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071410},{"id":"UN69C37BJ","team_id":"TN69AJ2SU","name":"tiffanycee123","deleted":false,"color":"4bbe2e","real_name":"Tiffany Chio","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Tiffany Chio","real_name_normalized":"Tiffany Chio","display_name":"Tiffany Chio","display_name_normalized":"Tiffany - Chio","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge49485fcc1e","image_24":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071504}],"cache_ts":1568412761,"response_metadata":{"next_cursor":""}}' + Chio","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge49485fcc1e","image_24":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071504}],"cache_ts":1568431650,"response_metadata":{"next_cursor":""}}' http_version: - recorded_at: Fri, 13 Sep 2019 22:12:41 GMT + recorded_at: Sat, 14 Sep 2019 03:27:30 GMT - request: method: get uri: https://slack.com/api/channels.list?token= @@ -117,13 +117,13 @@ http_interactions: Connection: - keep-alive Date: - - Fri, 13 Sep 2019 22:12:41 GMT + - Sat, 14 Sep 2019 03:27:30 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - d9d9e5c9-2708-427e-8039-fd33a00558af + - 36f3bc44-72ab-4956-992f-7be99bfef211 X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -149,15 +149,15 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-90c1 + - haproxy-www-pvfg X-Cache: - Miss from cloudfront Via: - - 1.1 7de3eef800cf24f49094394d8b5e8d1a.cloudfront.net (CloudFront) + - 1.1 7aedac78d939212abc281241e82d26a7.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - - HIO51-C1 + - SEA19 X-Amz-Cf-Id: - - 0z7MbTnTUMjc70UtHcNNgi_v_QARRzF5ZF2Mnlsc1xrRWZohwdEdhQ== + - 2JoDYf7OcXG0Q8E8XfT27pMkGO4mDXZ35nvm73-AUxz9oR-6IoEueA== body: encoding: ASCII-8BIT string: '{"ok":true,"channels":[{"id":"CMUR2JTNX","name":"random","is_channel":true,"created":1568071183,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UN5R273J8","name_normalized":"random","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTG0S5D0","UMUR43REX","UMZSUVBED","UN5R273J8","UN5R3N6P6","UN5R3NYUU","UN69C37BJ"],"topic":{"value":"Non-work @@ -172,7 +172,7 @@ http_interactions: channel is for workspace-wide communication and announcements. All members are in this channel.","creator":"UN5R273J8","last_set":1568071183},"previous_names":[],"num_members":7}],"response_metadata":{"next_cursor":""}}' http_version: - recorded_at: Fri, 13 Sep 2019 22:12:41 GMT + recorded_at: Sat, 14 Sep 2019 03:27:30 GMT - request: method: post uri: https://slack.com/api/chat.postMessage @@ -194,13 +194,13 @@ http_interactions: Connection: - keep-alive Date: - - Fri, 13 Sep 2019 22:12:41 GMT + - Sat, 14 Sep 2019 03:27:31 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - dac41550-c29b-4909-bece-ca5373e996f8 + - 6adaa727-5bc2-4c70-83cb-fc622b6549d2 X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -226,19 +226,19 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-5nvv + - haproxy-www-kftm X-Cache: - Miss from cloudfront Via: - - 1.1 1399f6d923ba00ad00816f6a9e531b7c.cloudfront.net (CloudFront) + - 1.1 a2a7227d0a99f50bffb8ba79de64ab0f.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - - HIO51-C1 + - SEA19 X-Amz-Cf-Id: - - mKb41Z9s7xUt20q90p-LFlEzDYbzp7aXmGnXfYkmYDyUxbb_AeicNA== + - FUYRpJWwqGnvB3NmG_3UwIwg98qe7jspSD2CJ8PLkcXPawaczXBjPw== body: encoding: UTF-8 - string: '{"ok":true,"channel":"CMUR2JTNX","ts":"1568412761.000200","message":{"type":"message","subtype":"bot_message","text":"hi!","ts":"1568412761.000200","username":"Leaves + string: '{"ok":true,"channel":"CMUR2JTNX","ts":"1568431651.000100","message":{"type":"message","subtype":"bot_message","text":"hi!","ts":"1568431651.000100","username":"Leaves - Mariya - API Project","bot_id":"BMW5VR8TV"}}' http_version: - recorded_at: Fri, 13 Sep 2019 22:12:41 GMT + recorded_at: Sat, 14 Sep 2019 03:27:31 GMT recorded_with: VCR 5.0.0 diff --git a/test/cassettes/info.yml b/test/cassettes/info.yml index a9af6db8..fa1ef4e3 100644 --- a/test/cassettes/info.yml +++ b/test/cassettes/info.yml @@ -21,17 +21,17 @@ http_interactions: Content-Type: - application/json; charset=utf-8 Content-Length: - - '1604' + - '1605' Connection: - keep-alive Date: - - Fri, 13 Sep 2019 22:12:41 GMT + - Sat, 14 Sep 2019 03:27:30 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - a1356ac4-4e8e-45e1-a140-3d9ffed69d25 + - 490b8c3f-b000-42ed-8d91-051d8e91f64f X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -57,15 +57,15 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-neww + - haproxy-www-te4j X-Cache: - Miss from cloudfront Via: - - 1.1 05c281b7186067b6c66ca266cdeda2f8.cloudfront.net (CloudFront) + - 1.1 58b224f0fcba4846d5699ecad6c6829f.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - - HIO51-C1 + - SEA19 X-Amz-Cf-Id: - - GyO3Cu_iWmsqSNwTYf8fUUeDezdoubOLmwTiuHRcy1BHY8K-LvlmLg== + - hBgZEoTwpN702ruPjZAguxVnp13GIbSATvR3XnZH9l48o9h7Gg-QoQ== body: encoding: ASCII-8BIT string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN69AJ2SU","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific @@ -89,9 +89,9 @@ http_interactions: Schuler","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gc6d02aa49cf","image_24":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071410},{"id":"UN69C37BJ","team_id":"TN69AJ2SU","name":"tiffanycee123","deleted":false,"color":"4bbe2e","real_name":"Tiffany Chio","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Tiffany Chio","real_name_normalized":"Tiffany Chio","display_name":"Tiffany Chio","display_name_normalized":"Tiffany - Chio","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge49485fcc1e","image_24":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071504}],"cache_ts":1568412761,"response_metadata":{"next_cursor":""}}' + Chio","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge49485fcc1e","image_24":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071504}],"cache_ts":1568431650,"response_metadata":{"next_cursor":""}}' http_version: - recorded_at: Fri, 13 Sep 2019 22:12:41 GMT + recorded_at: Sat, 14 Sep 2019 03:27:30 GMT - request: method: get uri: https://slack.com/api/channels.list?token= @@ -117,13 +117,13 @@ http_interactions: Connection: - keep-alive Date: - - Fri, 13 Sep 2019 22:12:42 GMT + - Sat, 14 Sep 2019 03:27:30 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - b127e8cd-e6ec-4ae7-a55a-c2b9369e937b + - b55ab256-8394-49d9-b529-188ef884e42e X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -149,15 +149,15 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-xvg4 + - haproxy-www-6jb6 X-Cache: - Miss from cloudfront Via: - - 1.1 490c6b39f412c738a30c226f07db749c.cloudfront.net (CloudFront) + - 1.1 5d89a565ccf3467bf90667ebfc36953c.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - - HIO51-C1 + - SEA19 X-Amz-Cf-Id: - - 4BSp-38K5AwjemXrNR0ZM8_W3-PGq6pG1ZZ5f4wWSF0wKGSm6fqMvQ== + - VvKr8cLGimJpaIUWMX8aRgbvaACtxIWthmadM1AvTIA_9n6MiqGBuA== body: encoding: ASCII-8BIT string: '{"ok":true,"channels":[{"id":"CMUR2JTNX","name":"random","is_channel":true,"created":1568071183,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UN5R273J8","name_normalized":"random","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTG0S5D0","UMUR43REX","UMZSUVBED","UN5R273J8","UN5R3N6P6","UN5R3NYUU","UN69C37BJ"],"topic":{"value":"Non-work @@ -172,7 +172,7 @@ http_interactions: channel is for workspace-wide communication and announcements. All members are in this channel.","creator":"UN5R273J8","last_set":1568071183},"previous_names":[],"num_members":7}],"response_metadata":{"next_cursor":""}}' http_version: - recorded_at: Fri, 13 Sep 2019 22:12:42 GMT + recorded_at: Sat, 14 Sep 2019 03:27:30 GMT - request: method: post uri: https://slack.com/api/chat.postMessage @@ -194,13 +194,13 @@ http_interactions: Connection: - keep-alive Date: - - Fri, 13 Sep 2019 22:12:42 GMT + - Sat, 14 Sep 2019 03:27:30 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - cfc1c8a0-7e5a-4e6d-a84e-e30d15b8257e + - c5d7d85e-1bd9-4ba7-ac12-ec06b88e8a94 X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -226,19 +226,19 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-hdxt + - haproxy-www-o27m X-Cache: - Miss from cloudfront Via: - - 1.1 05c281b7186067b6c66ca266cdeda2f8.cloudfront.net (CloudFront) + - 1.1 d9a3481018b2f1931201627713f68e77.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - - HIO51-C1 + - SEA19 X-Amz-Cf-Id: - - xHAzm05UNx2RUGW7opwesce9-tYsMe52KfniQRPeADzvU-xaP4fPgQ== + - _bMyHjRULd7Lt28b4PPq-hKSwitXXet8fNsKmJ1u2Mrm9WsEZHRVbg== body: encoding: UTF-8 - string: '{"ok":true,"channel":"DN5R3NJF6","ts":"1568412762.000100","message":{"type":"message","subtype":"bot_message","text":"hi!","ts":"1568412762.000100","username":"Leaves + string: '{"ok":true,"channel":"DN5R3NJF6","ts":"1568431650.000100","message":{"type":"message","subtype":"bot_message","text":"hi!","ts":"1568431650.000100","username":"Leaves - Mariya - API Project","bot_id":"BMW5VR8TV"}}' http_version: - recorded_at: Fri, 13 Sep 2019 22:12:42 GMT + recorded_at: Sat, 14 Sep 2019 03:27:30 GMT recorded_with: VCR 5.0.0 diff --git a/test/cassettes/lists_channels.yml b/test/cassettes/lists_channels.yml index 4ebdc95e..b57b85f4 100644 --- a/test/cassettes/lists_channels.yml +++ b/test/cassettes/lists_channels.yml @@ -25,13 +25,13 @@ http_interactions: Connection: - keep-alive Date: - - Fri, 13 Sep 2019 22:12:42 GMT + - Sat, 14 Sep 2019 03:27:31 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - a28620fc-05a6-4b22-9fe6-1f87412a4165 + - 1faa47e8-7a07-4454-a55e-cac33d4fc484 X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -57,15 +57,15 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-shlo + - haproxy-www-vdbk X-Cache: - Miss from cloudfront Via: - - 1.1 a65ed239b1dc93560d93932663ec96bd.cloudfront.net (CloudFront) + - 1.1 5afc8eca980390e71a86518c6f90001a.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - - HIO51-C1 + - SEA19 X-Amz-Cf-Id: - - P8g4YWH3I1rRhRd7sXP-BRqxmCpIqZSW78F0mA8fYZPeIcLwahgMkQ== + - 77NQu1gznqqDi7yRSKHIxml-Sd-7v_OfpuepEqBqTb9r1DDTHLeIuA== body: encoding: ASCII-8BIT string: '{"ok":true,"channels":[{"id":"CMUR2JTNX","name":"random","is_channel":true,"created":1568071183,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UN5R273J8","name_normalized":"random","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTG0S5D0","UMUR43REX","UMZSUVBED","UN5R273J8","UN5R3N6P6","UN5R3NYUU","UN69C37BJ"],"topic":{"value":"Non-work @@ -80,5 +80,5 @@ http_interactions: channel is for workspace-wide communication and announcements. All members are in this channel.","creator":"UN5R273J8","last_set":1568071183},"previous_names":[],"num_members":7}],"response_metadata":{"next_cursor":""}}' http_version: - recorded_at: Fri, 13 Sep 2019 22:12:42 GMT + recorded_at: Sat, 14 Sep 2019 03:27:31 GMT recorded_with: VCR 5.0.0 diff --git a/test/cassettes/lists_users.yml b/test/cassettes/lists_users.yml index a8258d35..ec9da892 100644 --- a/test/cassettes/lists_users.yml +++ b/test/cassettes/lists_users.yml @@ -21,17 +21,17 @@ http_interactions: Content-Type: - application/json; charset=utf-8 Content-Length: - - '1604' + - '1605' Connection: - keep-alive Date: - - Fri, 13 Sep 2019 22:12:42 GMT + - Sat, 14 Sep 2019 03:27:31 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - 4c49cba7-8dfb-4bf8-9375-e37ad0346e8c + - 4eea4339-6bfc-437e-a7d2-abad0992d66f X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -57,15 +57,15 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-z6bk + - haproxy-www-nkso X-Cache: - Miss from cloudfront Via: - - 1.1 ac69e760019b6a5dd323cb8c0aa440ef.cloudfront.net (CloudFront) + - 1.1 fa751ee53e2bf18781ae98b293ff9375.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - - HIO51-C1 + - SEA19 X-Amz-Cf-Id: - - FnWHmBGxwbka7k2c3fXlj-638nCVbUge4fQJgbQgZjlxVoSUaxXYMA== + - Ha8eeQ5hnzIMuN_YDH4g1W6Nwo1gys2K-pVb31aL-K2O-hP9Uk-RaQ== body: encoding: ASCII-8BIT string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN69AJ2SU","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific @@ -89,7 +89,7 @@ http_interactions: Schuler","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gc6d02aa49cf","image_24":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071410},{"id":"UN69C37BJ","team_id":"TN69AJ2SU","name":"tiffanycee123","deleted":false,"color":"4bbe2e","real_name":"Tiffany Chio","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Tiffany Chio","real_name_normalized":"Tiffany Chio","display_name":"Tiffany Chio","display_name_normalized":"Tiffany - Chio","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge49485fcc1e","image_24":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071504}],"cache_ts":1568412762,"response_metadata":{"next_cursor":""}}' + Chio","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge49485fcc1e","image_24":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071504}],"cache_ts":1568431651,"response_metadata":{"next_cursor":""}}' http_version: - recorded_at: Fri, 13 Sep 2019 22:12:42 GMT + recorded_at: Sat, 14 Sep 2019 03:27:31 GMT recorded_with: VCR 5.0.0 diff --git a/test/cassettes/new_workspace.yml b/test/cassettes/new_workspace.yml index 3fa3480c..525748ad 100644 --- a/test/cassettes/new_workspace.yml +++ b/test/cassettes/new_workspace.yml @@ -25,13 +25,13 @@ http_interactions: Connection: - keep-alive Date: - - Fri, 13 Sep 2019 22:12:40 GMT + - Sat, 14 Sep 2019 03:27:31 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - d430ddbe-2944-4498-8342-81acce4d90db + - 61e1b6d9-bf39-41d0-97e6-7ff6f55e2822 X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -57,15 +57,15 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-lzki + - haproxy-www-1bev X-Cache: - Miss from cloudfront Via: - - 1.1 3cc149abcbd8cb50553c09666247bcfa.cloudfront.net (CloudFront) + - 1.1 36fbf419b5fa237613e1567ab33d3698.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - - HIO51-C1 + - SEA19 X-Amz-Cf-Id: - - 98buTKIz4BI1UrwERcFbD6ZuGlxjvKM6zDNAgpdq6Tbtqjey7377aw== + - MDoqM-g6-q-XfS9cD58ZB4cxAkR9KQyLRm6ggqXPs0tmCiPJC2tTKg== body: encoding: ASCII-8BIT string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN69AJ2SU","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific @@ -89,9 +89,9 @@ http_interactions: Schuler","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gc6d02aa49cf","image_24":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071410},{"id":"UN69C37BJ","team_id":"TN69AJ2SU","name":"tiffanycee123","deleted":false,"color":"4bbe2e","real_name":"Tiffany Chio","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Tiffany Chio","real_name_normalized":"Tiffany Chio","display_name":"Tiffany Chio","display_name_normalized":"Tiffany - Chio","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge49485fcc1e","image_24":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071504}],"cache_ts":1568412760,"response_metadata":{"next_cursor":""}}' + Chio","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge49485fcc1e","image_24":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071504}],"cache_ts":1568431651,"response_metadata":{"next_cursor":""}}' http_version: - recorded_at: Fri, 13 Sep 2019 22:12:40 GMT + recorded_at: Sat, 14 Sep 2019 03:27:31 GMT - request: method: get uri: https://slack.com/api/channels.list?token= @@ -117,13 +117,13 @@ http_interactions: Connection: - keep-alive Date: - - Fri, 13 Sep 2019 22:12:40 GMT + - Sat, 14 Sep 2019 03:27:31 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - 5d76c473-b949-4233-a44c-5bae6f83f598 + - 70640ce9-4369-43b3-a51c-50685a186a92 X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -149,15 +149,15 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-lqa3 + - haproxy-www-0guu X-Cache: - Miss from cloudfront Via: - - 1.1 6bd725b6233f3b787d5f5373be153d66.cloudfront.net (CloudFront) + - 1.1 36fbf419b5fa237613e1567ab33d3698.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - - HIO51-C1 + - SEA19 X-Amz-Cf-Id: - - q-Xq-UyHBL2sI-HT_pX2LE62j1OReJDtQXmlk83zcDXssqun7UVtdA== + - BQtipbE8hp3cPaAqD_NPRBH4U3yxPx83NDBFIDPh9Gz9Hky8s7pXgw== body: encoding: ASCII-8BIT string: '{"ok":true,"channels":[{"id":"CMUR2JTNX","name":"random","is_channel":true,"created":1568071183,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UN5R273J8","name_normalized":"random","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTG0S5D0","UMUR43REX","UMZSUVBED","UN5R273J8","UN5R3N6P6","UN5R3NYUU","UN69C37BJ"],"topic":{"value":"Non-work @@ -172,5 +172,5 @@ http_interactions: channel is for workspace-wide communication and announcements. All members are in this channel.","creator":"UN5R273J8","last_set":1568071183},"previous_names":[],"num_members":7}],"response_metadata":{"next_cursor":""}}' http_version: - recorded_at: Fri, 13 Sep 2019 22:12:40 GMT + recorded_at: Sat, 14 Sep 2019 03:27:31 GMT recorded_with: VCR 5.0.0 diff --git a/test/cassettes/prompt_method.yml b/test/cassettes/prompt_method.yml deleted file mode 100644 index 0295fdd0..00000000 --- a/test/cassettes/prompt_method.yml +++ /dev/null @@ -1,176 +0,0 @@ ---- -http_interactions: -- request: - method: get - uri: https://slack.com/api/users.list?token= - body: - encoding: US-ASCII - string: '' - headers: - Accept-Encoding: - - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 - Accept: - - "*/*" - User-Agent: - - Ruby - response: - status: - code: 200 - message: OK - headers: - Content-Type: - - application/json; charset=utf-8 - Content-Length: - - '1605' - Connection: - - keep-alive - Date: - - Fri, 13 Sep 2019 22:21:03 GMT - Server: - - Apache - X-Content-Type-Options: - - nosniff - X-Slack-Req-Id: - - 1e861218-c454-41eb-9fb6-b347d413c57b - X-Oauth-Scopes: - - identify,channels:read,users:read,chat:write:bot - Expires: - - Mon, 26 Jul 1997 05:00:00 GMT - Cache-Control: - - private, no-cache, no-store, must-revalidate - Access-Control-Expose-Headers: - - x-slack-req-id, retry-after - X-Xss-Protection: - - '0' - X-Accepted-Oauth-Scopes: - - users:read - Vary: - - Accept-Encoding - Pragma: - - no-cache - Access-Control-Allow-Headers: - - slack-route, x-slack-version-ts - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Referrer-Policy: - - no-referrer - Access-Control-Allow-Origin: - - "*" - X-Via: - - haproxy-www-hdxt - X-Cache: - - Miss from cloudfront - Via: - - 1.1 6ca7826fb0f4c565b1af9c7737725c49.cloudfront.net (CloudFront) - X-Amz-Cf-Pop: - - SEA19-C1 - X-Amz-Cf-Id: - - NHifa5bEu-agfSomGqzU0EIPVV6rNCwt1CIXse1aM1V6ZK3efqUHDw== - body: - encoding: ASCII-8BIT - string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN69AJ2SU","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific - Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Slackbot","real_name_normalized":"Slackbot","display_name":"Slackbot","display_name_normalized":"Slackbot","fields":null,"status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"sv41d8cd98f0","always_active":true,"first_name":"slackbot","last_name":"","image_24":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_24.png","image_32":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_32.png","image_48":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_48.png","image_72":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_72.png","image_192":"https:\/\/a.slack-edge.com\/80588\/marketing\/img\/avatars\/slackbot\/avatar-slackbot.png","image_512":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":0},{"id":"UMTG0S5D0","team_id":"TN69AJ2SU","name":"samantha.collares","deleted":false,"color":"674b1b","real_name":"Samantha - Collares","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Samantha - Collares","real_name_normalized":"Samantha Collares","display_name":"Samantha - Collares","display_name_normalized":"Samantha Collares","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge444d412eed","image_24":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071698},{"id":"UMUR43REX","team_id":"TN69AJ2SU","name":"sabrina","deleted":false,"color":"e7392d","real_name":"Sabrina - Lowney","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Sabrina - Lowney","real_name_normalized":"Sabrina Lowney","display_name":"Sabrina Lowney","display_name_normalized":"Sabrina - Lowney","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g3826fd588f7","image_24":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071592},{"id":"UMZSUVBED","team_id":"TN69AJ2SU","name":"mariya.burrows","deleted":false,"color":"e96699","real_name":"Mariya - Burrows","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Mariya - Burrows","real_name_normalized":"Mariya Burrows","display_name":"Mariya Burrows","display_name_normalized":"Mariya - Burrows","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g742995f6521","image_24":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071452,"has_2fa":false},{"id":"UN5R273J8","team_id":"TN69AJ2SU","name":"dtingg","deleted":false,"color":"9f69e7","real_name":"Dianna - Tingg","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Dianna - Tingg","real_name_normalized":"Dianna Tingg","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g18e16502755","first_name":"Dianna","last_name":"Tingg","image_24":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":true,"is_owner":true,"is_primary_owner":true,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071477},{"id":"UN5R3N6P6","team_id":"TN69AJ2SU","name":"juliakingreyworks","deleted":false,"color":"3c989f","real_name":"Julia - K","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Julia - K","real_name_normalized":"Julia K","display_name":"Julia K","display_name_normalized":"Julia - K","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g8ae03401380","image_24":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071668},{"id":"UN5R3NYUU","team_id":"TN69AJ2SU","name":"morganlschuler","deleted":false,"color":"e0a729","real_name":"Morgan - Schuler","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Morgan - Schuler","real_name_normalized":"Morgan Schuler","display_name":"Morgan Schuler","display_name_normalized":"Morgan - Schuler","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gc6d02aa49cf","image_24":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071410},{"id":"UN69C37BJ","team_id":"TN69AJ2SU","name":"tiffanycee123","deleted":false,"color":"4bbe2e","real_name":"Tiffany - Chio","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Tiffany - Chio","real_name_normalized":"Tiffany Chio","display_name":"Tiffany Chio","display_name_normalized":"Tiffany - Chio","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge49485fcc1e","image_24":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071504}],"cache_ts":1568413263,"response_metadata":{"next_cursor":""}}' - http_version: - recorded_at: Fri, 13 Sep 2019 22:21:03 GMT -- request: - method: get - uri: https://slack.com/api/channels.list?token= - body: - encoding: US-ASCII - string: '' - headers: - Accept-Encoding: - - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 - Accept: - - "*/*" - User-Agent: - - Ruby - response: - status: - code: 200 - message: OK - headers: - Content-Type: - - application/json; charset=utf-8 - Content-Length: - - '717' - Connection: - - keep-alive - Date: - - Fri, 13 Sep 2019 22:21:04 GMT - Server: - - Apache - X-Content-Type-Options: - - nosniff - X-Slack-Req-Id: - - eaa9b3cc-813d-4708-b865-427fc84e4cb6 - X-Oauth-Scopes: - - identify,channels:read,users:read,chat:write:bot - Expires: - - Mon, 26 Jul 1997 05:00:00 GMT - Cache-Control: - - private, no-cache, no-store, must-revalidate - Access-Control-Expose-Headers: - - x-slack-req-id, retry-after - X-Xss-Protection: - - '0' - X-Accepted-Oauth-Scopes: - - channels:read - Vary: - - Accept-Encoding - Pragma: - - no-cache - Access-Control-Allow-Headers: - - slack-route, x-slack-version-ts - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Referrer-Policy: - - no-referrer - Access-Control-Allow-Origin: - - "*" - X-Via: - - haproxy-www-3caj - X-Cache: - - Miss from cloudfront - Via: - - 1.1 deaaf0548506de20925615eb51a7ea7f.cloudfront.net (CloudFront) - X-Amz-Cf-Pop: - - SEA19-C1 - X-Amz-Cf-Id: - - JAi3O6D7PITRA3EsoVFU9UsVoz2VtFQRjNXQwwHqI6WFSk0gJyGdgQ== - body: - encoding: ASCII-8BIT - string: '{"ok":true,"channels":[{"id":"CMUR2JTNX","name":"random","is_channel":true,"created":1568071183,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UN5R273J8","name_normalized":"random","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTG0S5D0","UMUR43REX","UMZSUVBED","UN5R273J8","UN5R3N6P6","UN5R3NYUU","UN69C37BJ"],"topic":{"value":"Non-work - banter and water cooler conversation","creator":"UN5R273J8","last_set":1568071183},"purpose":{"value":"A - place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber - you''d prefer to keep out of more focused work-related channels.","creator":"UN5R273J8","last_set":1568071183},"previous_names":[],"num_members":7},{"id":"CN6A88SJZ","name":"turkey","is_channel":true,"created":1568073346,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMUR43REX","name_normalized":"turkey","is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":["UMUR43REX","UN5R273J8","UN69C37BJ"],"topic":{"value":"To - collect images of turkeys and information about turkeys","creator":"UN5R273J8","last_set":1568232705},"purpose":{"value":"to - collect images of turkeys and information about turkeys","creator":"UMUR43REX","last_set":1568073347},"previous_names":[],"num_members":3},{"id":"CN85BSBQF","name":"slack-cli","is_channel":true,"created":1568071183,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UN5R273J8","name_normalized":"slack-cli","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTG0S5D0","UMUR43REX","UMZSUVBED","UN5R273J8","UN5R3N6P6","UN5R3NYUU","UN69C37BJ"],"topic":{"value":"Posts - about the Slack CLI project","creator":"UN5R273J8","last_set":1568232665},"purpose":{"value":"Posts - about the Slack CLI project","creator":"UN5R273J8","last_set":1568232660},"previous_names":[],"num_members":7},{"id":"CN8FME7AS","name":"general","is_channel":true,"created":1568071183,"is_archived":false,"is_general":true,"unlinked":0,"creator":"UN5R273J8","name_normalized":"general","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTG0S5D0","UMUR43REX","UMZSUVBED","UN5R273J8","UN5R3N6P6","UN5R3NYUU","UN69C37BJ"],"topic":{"value":"Company-wide - announcements and work-based matters","creator":"UN5R273J8","last_set":1568071183},"purpose":{"value":"This - channel is for workspace-wide communication and announcements. All members - are in this channel.","creator":"UN5R273J8","last_set":1568071183},"previous_names":[],"num_members":7}],"response_metadata":{"next_cursor":""}}' - http_version: - recorded_at: Fri, 13 Sep 2019 22:21:04 GMT -recorded_with: VCR 5.0.0 diff --git a/test/cassettes/select.yml b/test/cassettes/select.yml index b1e5e5e2..0ffa5313 100644 --- a/test/cassettes/select.yml +++ b/test/cassettes/select.yml @@ -21,17 +21,17 @@ http_interactions: Content-Type: - application/json; charset=utf-8 Content-Length: - - '1604' + - '1605' Connection: - keep-alive Date: - - Fri, 13 Sep 2019 22:12:41 GMT + - Sat, 14 Sep 2019 03:27:32 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - f8d8b199-8eca-4d11-b2e0-83a53075ec7e + - 8f12b860-7d3e-4c08-8ec8-7b71a6690bab X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -57,15 +57,15 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-vnia + - haproxy-www-cviw X-Cache: - Miss from cloudfront Via: - - 1.1 79f18dd6382f7347397cfbd42c438a75.cloudfront.net (CloudFront) + - 1.1 39f9e0f028321e95b5ebd1cd55661fd6.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - - HIO51-C1 + - SEA19 X-Amz-Cf-Id: - - UQ2rDer3dq_-JThQwjp9oQWuOFIkYaQ6TU2-w7SxwcUvU2u04CW5VA== + - RTBVBZHkshgJrFfAnYM7tAN3SVw5d8H-v2MszgOdnTBg6IAem2MdAg== body: encoding: ASCII-8BIT string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN69AJ2SU","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific @@ -89,9 +89,9 @@ http_interactions: Schuler","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gc6d02aa49cf","image_24":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071410},{"id":"UN69C37BJ","team_id":"TN69AJ2SU","name":"tiffanycee123","deleted":false,"color":"4bbe2e","real_name":"Tiffany Chio","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Tiffany Chio","real_name_normalized":"Tiffany Chio","display_name":"Tiffany Chio","display_name_normalized":"Tiffany - Chio","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge49485fcc1e","image_24":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071504}],"cache_ts":1568412761,"response_metadata":{"next_cursor":""}}' + Chio","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge49485fcc1e","image_24":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568071504}],"cache_ts":1568431652,"response_metadata":{"next_cursor":""}}' http_version: - recorded_at: Fri, 13 Sep 2019 22:12:41 GMT + recorded_at: Sat, 14 Sep 2019 03:27:32 GMT - request: method: get uri: https://slack.com/api/channels.list?token= @@ -117,13 +117,13 @@ http_interactions: Connection: - keep-alive Date: - - Fri, 13 Sep 2019 22:12:41 GMT + - Sat, 14 Sep 2019 03:27:32 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - 6ea8a3b1-a004-419b-afa8-37c7e7be6b06 + - 7f4dfd66-c393-4261-b630-54bbbf116b64 X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -149,15 +149,15 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-zrg4 + - haproxy-www-lzki X-Cache: - Miss from cloudfront Via: - - 1.1 047c77cddf7ec99dc42ee0ce44304395.cloudfront.net (CloudFront) + - 1.1 36fbf419b5fa237613e1567ab33d3698.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - - HIO51-C1 + - SEA19 X-Amz-Cf-Id: - - cVswTroGQdsguLRuGH9kfklbQyEXVLzD99Yp6YcB81_5XO7_6jwr_g== + - xulUTJ1NKBmqoXApwc1I-6aKXp6x_wGw2efRKz27U3QDuRxxOiFDfA== body: encoding: ASCII-8BIT string: '{"ok":true,"channels":[{"id":"CMUR2JTNX","name":"random","is_channel":true,"created":1568071183,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UN5R273J8","name_normalized":"random","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTG0S5D0","UMUR43REX","UMZSUVBED","UN5R273J8","UN5R3N6P6","UN5R3NYUU","UN69C37BJ"],"topic":{"value":"Non-work @@ -172,5 +172,5 @@ http_interactions: channel is for workspace-wide communication and announcements. All members are in this channel.","creator":"UN5R273J8","last_set":1568071183},"previous_names":[],"num_members":7}],"response_metadata":{"next_cursor":""}}' http_version: - recorded_at: Fri, 13 Sep 2019 22:12:41 GMT + recorded_at: Sat, 14 Sep 2019 03:27:32 GMT recorded_with: VCR 5.0.0 diff --git a/test/cassettes/slack-posts.yml b/test/cassettes/slack-posts.yml index 352b2275..f1a147fb 100644 --- a/test/cassettes/slack-posts.yml +++ b/test/cassettes/slack-posts.yml @@ -5,7 +5,7 @@ http_interactions: uri: https://slack.com/api/chat.postMessage body: encoding: UTF-8 - string: token=&text=Hey%20I%20can%20post%20messages%21&channel=UN5R3NYUU + string: token=&text=Hey%20I%20can%20post%20messages%21&channel=general headers: Content-Type: - application/x-www-form-urlencoded @@ -21,13 +21,13 @@ http_interactions: Connection: - keep-alive Date: - - Fri, 13 Sep 2019 22:12:40 GMT + - Sat, 14 Sep 2019 03:27:32 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - cb81c2c1-ced4-4531-b431-adabe602189e + - 99fcc0c4-b20a-4023-b1b0-6da9b53a16ab X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -53,28 +53,28 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-1ir4 + - haproxy-www-0t0n X-Cache: - Miss from cloudfront Via: - - 1.1 202c6c81b156ef839c9523323064951d.cloudfront.net (CloudFront) + - 1.1 400e19a7f70282e0817451f6606ca8f9.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - - HIO51-C1 + - SEA19 X-Amz-Cf-Id: - - YEb19ZVlRkWai9KqLEDmv3S4I0V1qMZ0kdajZjb00aJEsmCXHVSO9g== + - rLOo1oye0nz4KICIgiPiHsp4Q6CX9j_9mzV8Hzpy0g_GlFM1Vxzm9Q== body: encoding: UTF-8 - string: '{"ok":true,"channel":"DN69K4UH3","ts":"1568412760.000100","message":{"type":"message","subtype":"bot_message","text":"Hey - I can post messages!","ts":"1568412760.000100","username":"Leaves - Mariya + string: '{"ok":true,"channel":"CN8FME7AS","ts":"1568431652.000100","message":{"type":"message","subtype":"bot_message","text":"Hey + I can post messages!","ts":"1568431652.000100","username":"Leaves - Mariya - API Project","bot_id":"BMW5VR8TV"}}' http_version: - recorded_at: Fri, 13 Sep 2019 22:12:40 GMT + recorded_at: Sat, 14 Sep 2019 03:27:32 GMT - request: method: post uri: https://slack.com/api/chat.postMessage body: encoding: UTF-8 - string: token=&text=Hey%20I%20can%20post%20messages%21&channel=general + string: token=&text=This%20post%20should%20not%20work&channel=invalid headers: Content-Type: - application/x-www-form-urlencoded @@ -90,13 +90,13 @@ http_interactions: Connection: - keep-alive Date: - - Fri, 13 Sep 2019 22:12:40 GMT + - Sat, 14 Sep 2019 03:27:32 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - 397ba8fa-7005-4397-a0e3-3331bbb863aa + - f3cd144d-a8b6-4c98-bcd6-8fb9c475e209 X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -126,24 +126,22 @@ http_interactions: X-Cache: - Miss from cloudfront Via: - - 1.1 3cc149abcbd8cb50553c09666247bcfa.cloudfront.net (CloudFront) + - 1.1 a8a06e035420932f2808c2efee52f455.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - - HIO51-C1 + - SEA19 X-Amz-Cf-Id: - - 07deNe0bDgHyYNhlMBd88l8Tw5--iQHkDhjnrB_w4gqqHbIrdXU1oQ== + - RvhV_CAYB-jG-3K_z0qo2tfxSKqWa32jC3L2tDetOYgRBlysScOLrQ== body: encoding: UTF-8 - string: '{"ok":true,"channel":"CN8FME7AS","ts":"1568412760.000600","message":{"type":"message","subtype":"bot_message","text":"Hey - I can post messages!","ts":"1568412760.000600","username":"Leaves - Mariya - - API Project","bot_id":"BMW5VR8TV"}}' + string: '{"ok":false,"error":"channel_not_found"}' http_version: - recorded_at: Fri, 13 Sep 2019 22:12:40 GMT + recorded_at: Sat, 14 Sep 2019 03:27:32 GMT - request: method: post uri: https://slack.com/api/chat.postMessage body: encoding: UTF-8 - string: token=&text=This%20post%20should%20not%20work&channel=invalid + string: token=&text=Hey%20I%20can%20post%20messages%21&channel=UN5R3NYUU headers: Content-Type: - application/x-www-form-urlencoded @@ -159,13 +157,13 @@ http_interactions: Connection: - keep-alive Date: - - Fri, 13 Sep 2019 22:12:40 GMT + - Sat, 14 Sep 2019 03:27:32 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - 31ffd42b-f547-4e8f-a3bf-95d202df982d + - 0eb9b6d3-9c61-402a-80b1-2402b64892c4 X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -191,18 +189,20 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-o786 + - haproxy-www-e5lk X-Cache: - Miss from cloudfront Via: - - 1.1 c3d327d7fba3cf3679ba86e6faf3a795.cloudfront.net (CloudFront) + - 1.1 3403c96e1b1db500ff6526f1a7bc6813.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - - HIO51-C1 + - SEA19 X-Amz-Cf-Id: - - byMO_RJXtgmrR9RMvtYQKHtH-4cxujHYnFfL86AqppwHZzj_NCCH0w== + - uBarDga2Wbpf-44iBqUx2vUvOGQPcH-LZJpUl1pFUC9XQ96ZVSLCHA== body: encoding: UTF-8 - string: '{"ok":false,"error":"channel_not_found"}' + string: '{"ok":true,"channel":"DN69K4UH3","ts":"1568431652.000100","message":{"type":"message","subtype":"bot_message","text":"Hey + I can post messages!","ts":"1568431652.000100","username":"Leaves - Mariya + - API Project","bot_id":"BMW5VR8TV"}}' http_version: - recorded_at: Fri, 13 Sep 2019 22:12:40 GMT + recorded_at: Sat, 14 Sep 2019 03:27:32 GMT recorded_with: VCR 5.0.0 diff --git a/test/channel_test.rb b/test/channel_test.rb index a352ba48..f3c3ae8d 100644 --- a/test/channel_test.rb +++ b/test/channel_test.rb @@ -4,7 +4,7 @@ describe "New instance of Slack::Channel" do before do VCR.use_cassette("lists_channels") do - @channel = Slack::Channel.new("CMUR2JTNX", "random", {"value"=>"", "creator"=>"", "last_set"=>0}, 7) + @channel = Slack::Channel.new("CMUR2JTNX", "random", {"value"=>"", "creator"=>"", "last_set"=>0}, 7, "UN5R273J8", false) @list = Slack::Channel.list end end @@ -17,6 +17,10 @@ expect(@channel.topic).must_equal ({"value"=>"", "creator"=>"", "last_set"=>0}) end + it "lists member count" do + expect(@channel.members).must_equal 7 + end + it "lists the channels" do expect(@list.length).must_equal 4 expect(@list).must_be_kind_of Array @@ -28,7 +32,7 @@ describe "details" do before do VCR.use_cassette("lists_channels") do - @channel = Slack::Channel.new("CMUR2JTNX", "random", {"value"=>"", "creator"=>"", "last_set"=>0}, 7) + @channel = Slack::Channel.new("CMUR2JTNX", "random", {"value"=>"", "creator"=>"", "last_set"=>0}, 7, "UN5R273J8", false) end it "returns a hash" do diff --git a/test/user_test.rb b/test/user_test.rb index bbc7c551..b81eb80a 100644 --- a/test/user_test.rb +++ b/test/user_test.rb @@ -5,52 +5,52 @@ describe "New instance of Slack::User" do before do VCR.use_cassette("lists_users") do - @user = Slack::User.new("UMTG0S5D0", "samantha.collares", "Samantha Collares") - @users = Slack::User.list - #binding.pry - end - end - - it "is of the class User" do - VCR.use_cassette("lists_the_class") do - expect(@user.class).must_equal (Slack::User) - end - end - - it "has a name" do - expect(@user.name).must_equal "samantha.collares" - end - - it "lists the users" do - VCR.use_cassette("lists_the_users_length") do - expect(@users.length).must_equal 8 - #end - end - end - - it "describes the user" do - VCR.use_cassette("describes_users") do - expect(@user).must_be_kind_of Slack::User - expect(@user.slack_id).must_equal "UMTG0S5D0" - expect(@user.name).must_equal "samantha.collares" - expect(@user.real_name).must_equal "Samantha Collares" + @user = Slack::User.new("UMTG0S5D0", "samantha.collares", "Samantha Collares", + "Samantha Collares", "America\/Los_Angeles") + @users = Slack::User.list + end end - end - - describe "details" do - before do - VCR.use_cassette("user_details") do - @user = Slack::User.new("UMTG0S5D0", "samantha.collares", "Samantha Collares") + + it "is of the class User" do + VCR.use_cassette("lists_the_class") do + expect(@user.class).must_equal (Slack::User) end end - it "returns a hash" do - expect(@user.details).must_be_kind_of Hash + it "lists the users" do + VCR.use_cassette("lists_the_users_length") do + expect(@users.length).must_equal 8 + #end + end end - it "provides details" do - expect(@user.details).must_equal ({"slack_id"=> "UMTG0S5D0", "name"=> "samantha.collares", "real_name"=> "Samantha Collares" }) + it "describes the user" do + VCR.use_cassette("describes_users") do + expect(@user).must_be_kind_of Slack::User + expect(@user.slack_id).must_equal "UMTG0S5D0" + expect(@user.name).must_equal "samantha.collares" + expect(@user.real_name).must_equal "Samantha Collares" + expect(@user.display_name).must_equal "Samantha Collares" + expect(@user.time_zone).must_equal "America\/Los_Angeles" + end + end + + describe "details" do + before do + VCR.use_cassette("user_details") do + @user = Slack::User.new("UMTG0S5D0", "samantha.collares", "Samantha Collares", + "Samantha Collares", "America\/Los_Angeles") + end + end + + it "returns a hash" do + expect(@user.details).must_be_kind_of Hash + end + + it "provides details" do + expect(@user.details).must_equal ({"slack_id"=> "UMTG0S5D0", "name"=> "samantha.collares", "real_name"=> "Samantha Collares", "display_name"=> "Samantha Collares", "time_zone"=> "America\/Los_Angeles" }) + end + end end end - end -end + \ No newline at end of file From 6482cd2302f5b5865e3e2e529d1e1285b74e8761 Mon Sep 17 00:00:00 2001 From: Mariya Burrows Date: Fri, 13 Sep 2019 20:31:57 -0700 Subject: [PATCH 16/18] deleted unused file --- mariya_slack_tryout.rb | 45 ------------------------------------------ 1 file changed, 45 deletions(-) delete mode 100644 mariya_slack_tryout.rb diff --git a/mariya_slack_tryout.rb b/mariya_slack_tryout.rb deleted file mode 100644 index 57bbdd53..00000000 --- a/mariya_slack_tryout.rb +++ /dev/null @@ -1,45 +0,0 @@ -require 'dotenv' -Dotenv.load -require_relative 'lib/user' -#this file equivilent must be in the main with .env - -def main - #@channel = Slack::Channel.new("CMUR2JTNX", "random", {"value"=>"", "creator"=>"", "last_set"=>0}, 7) - # @user_sam = Slack::User.new("UMTG0S5D0", "samantha.collares", "Samantha Collares") - # @user_list = @user_sam.list - main_workspace = Slack::Workspace.new() - - #binding.pry - #binding.pry - #@workspace = Slack::Workspace.new - - puts "Welcome to the Ada Slack CLI!" - puts "Here are your options: " - user_action_options = ["list users", "list channels", "select user", "select channel", "show details", "send message"] - - i = 1 - user_action_options.each do |option| - puts "#{i}. #{option}" - i += 1 - end - - puts "What would you like to do? > " - user_choice = gets.chomp - - if user_choice == "1" - #binding.pry - puts @user_list - #binding.pry - puts "\nPlease select a user:" - user_choice = gets.chomp - #make find part user validation helper method? - selected_user_object_id = @user_list.find { |user| user.value?(user_choice) } - puts selected_user_object_id["slack_id"] - end -end - -puts "Thank you for using the Ada Slack CLI" - -main - -main if __FILE__ == $MARIYA_SLACK_TRYOUT \ No newline at end of file From b78d0ad2413403822f37ec0ac6979141ce14856f Mon Sep 17 00:00:00 2001 From: Mariya Burrows Date: Fri, 13 Sep 2019 20:44:26 -0700 Subject: [PATCH 17/18] added formating in slack.rb --- lib/slack.rb | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/slack.rb b/lib/slack.rb index cefc858b..5ef8fbf6 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -11,7 +11,7 @@ def main user_choice = nil until user_choice == "3" - puts "Welcome to the Ada Slack CLI! Put quit to exit the program" + puts "\nWelcome to the Ada Slack CLI! Put quit to exit the program" # user can list users, chanels, or quit user_choice = prompt( @@ -55,6 +55,7 @@ def main # sends messages or shows details for selected client if communication_choice == "1" + puts "\n---DETAILS---" workspace.show_details elsif communication_choice == "2" puts "Please enter a message: " @@ -91,9 +92,10 @@ def main ) if communication_choice == "1" + puts "\n---DETAILS---" workspace.show_details elsif communication_choice == "2" - print "Please enter a message: > " + "\nPlease enter a message: > " message = gets.chomp workspace.send_message(message) end @@ -106,6 +108,7 @@ def main end def prompt(message, options) + puts puts message options.each_with_index do |option, index| puts "#{index + 1}. #{option}" From 5768e56c5bf676739a9478923ea0b0c2e95cdfe9 Mon Sep 17 00:00:00 2001 From: Mariya Burrows Date: Fri, 13 Sep 2019 21:17:39 -0700 Subject: [PATCH 18/18] removed extra file --- lib/slack_env_test.rb | 67 ------------------------------------------- 1 file changed, 67 deletions(-) delete mode 100644 lib/slack_env_test.rb diff --git a/lib/slack_env_test.rb b/lib/slack_env_test.rb deleted file mode 100644 index 8d02ab18..00000000 --- a/lib/slack_env_test.rb +++ /dev/null @@ -1,67 +0,0 @@ - -require 'dotenv' -Dotenv.load -require 'awesome_print' -require 'httparty' -require_relative 'user' - - -url = "https://slack.com/api/users.list" -query_parameters = { - token: ENV["SLACK_TOKEN"] -} -user_objects = HTTParty.get(url, query: query_parameters) - -user = Slack::User.new("UMTG0S5D0", "samantha.collares", "Samantha Collares") - -user_list = user.list -p user_list.length - -# user_objects["members"].each do |member| -# p "The id is: #{member["id"]}" -# p "The name is: #{member["name"]}" -# end - -# p user_objects -# p user_objects.class -# p user_objects["members"][1]["id"] -# p user_objects["members"][1]["real_name"] -# p user_objects["members"][1]["name"] -# p - -# user_list = [] -# user_objects["members"].each do |user| -# user_list << member["name"]["real_name"] -# end -# return user_list - - - -# url = "https://slack.com/api/channels.list" - -# KEY = ENV["SLACK_TOKEN"] -# query_parameters = { -# token: KEY -# } - - - -# channel_objects = HTTParty.get(url, query: query_parameters) -# p channel_objects.class - -#ap response.class -# ["channels"][0]["name"] - -# response["channels"].each do |object| -# puts object["name"] -# end - - -#p channel_objects["channels"] - -# channel_list = [] -# channel_objects["channels"].each do |channel| -# channel_list << channel["name"] -# end - -# puts channel_list \ No newline at end of file