Return-Path: Delivered-To: apmail-incubator-deltacloud-dev-archive@minotaur.apache.org Received: (qmail 31710 invoked from network); 16 Nov 2010 11:41:27 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 16 Nov 2010 11:41:27 -0000 Received: (qmail 42530 invoked by uid 500); 16 Nov 2010 11:41:59 -0000 Delivered-To: apmail-incubator-deltacloud-dev-archive@incubator.apache.org Received: (qmail 42509 invoked by uid 500); 16 Nov 2010 11:41:59 -0000 Mailing-List: contact deltacloud-dev-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: deltacloud-dev@incubator.apache.org Delivered-To: mailing list deltacloud-dev@incubator.apache.org Received: (qmail 42499 invoked by uid 99); 16 Nov 2010 11:41:59 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 16 Nov 2010 11:41:59 +0000 X-ASF-Spam-Status: No, hits=-5.0 required=10.0 tests=RCVD_IN_DNSWL_HI,SPF_HELO_PASS,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of mfojtik@redhat.com designates 209.132.183.28 as permitted sender) Received: from [209.132.183.28] (HELO mx1.redhat.com) (209.132.183.28) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 16 Nov 2010 11:41:50 +0000 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id oAGBfSHu018807 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 16 Nov 2010 06:41:28 -0500 Received: from patashnik.brq.redhat.com (dhcp-2-138.brq.redhat.com [10.34.2.138]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id oAGBf9T9014040 for ; Tue, 16 Nov 2010 06:41:28 -0500 From: mfojtik@redhat.com To: deltacloud-dev@incubator.apache.org Subject: [PATCH core 12/13] Added possibility to associate IP address to instance (EC2, GoGrid) Date: Tue, 16 Nov 2010 12:41:07 +0100 Message-Id: <1289907668-28086-12-git-send-email-mfojtik@redhat.com> In-Reply-To: <1289907668-28086-1-git-send-email-mfojtik@redhat.com> References: <1289907668-28086-1-git-send-email-mfojtik@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Virus-Checked: Checked by ClamAV on apache.org From: Michal Fojtik --- server/lib/deltacloud/base_driver/features.rb | 7 + server/lib/deltacloud/base_driver/mock_driver.rb | 1 + server/lib/deltacloud/drivers/ec2/ec2_driver.rb | 7 +- .../lib/deltacloud/drivers/gogrid/gogrid_driver.rb | 4 +- tests/ec2/api.feature | 1 + tests/ec2/instances.feature | 15 + tests/ec2/step_definitions/instances_steps.rb | 10 + ...images.c4b6748639aec6ee0563714c9b6663e90253577b | 8 + ..._owner.ffb952b433edf7fe6cb4e04c86f82ac9ce0faa51 | 358 ++++++++++++++++++++ ...tances.da39a3ee5e6b4b0d3255bfef95601890afd80709 | 13 + ...tances.c4b6748639aec6ee0563714c9b6663e90253577b | 11 + ...tances.c4b6748639aec6ee0563714c9b6663e90253577b | 11 + 12 files changed, 444 insertions(+), 2 deletions(-) create mode 100644 tests/ec2/support/ec2/create-public_ip_describe_images.c4b6748639aec6ee0563714c9b6663e90253577b create mode 100644 tests/ec2/support/ec2/create-public_ip_describe_images_by_owner.ffb952b433edf7fe6cb4e04c86f82ac9ce0faa51 create mode 100644 tests/ec2/support/ec2/create-public_ip_describe_instances.da39a3ee5e6b4b0d3255bfef95601890afd80709 create mode 100644 tests/ec2/support/ec2/create-public_ip_launch_instances.c4b6748639aec6ee0563714c9b6663e90253577b create mode 100644 tests/ec2/support/ec2/launch_instances.c4b6748639aec6ee0563714c9b6663e90253577b diff --git a/server/lib/deltacloud/base_driver/features.rb b/server/lib/deltacloud/base_driver/features.rb index 2d79f4b..5a8db6c 100644 --- a/server/lib/deltacloud/base_driver/features.rb +++ b/server/lib/deltacloud/base_driver/features.rb @@ -177,5 +177,12 @@ module Deltacloud end end + declare_feature :instances, :public_ip do + description "Associate public IP address to instance" + operation :create do + param :public_ip, :string, :optional + end + end + end end diff --git a/server/lib/deltacloud/base_driver/mock_driver.rb b/server/lib/deltacloud/base_driver/mock_driver.rb index 8635685..516857e 100644 --- a/server/lib/deltacloud/base_driver/mock_driver.rb +++ b/server/lib/deltacloud/base_driver/mock_driver.rb @@ -26,6 +26,7 @@ module Mock :attach_volume, :detach_volume, :describe_snapshots, + :associate_address, :try_create_snapshot, ] end diff --git a/server/lib/deltacloud/drivers/ec2/ec2_driver.rb b/server/lib/deltacloud/drivers/ec2/ec2_driver.rb index c58c1b4..07ae7af 100644 --- a/server/lib/deltacloud/drivers/ec2/ec2_driver.rb +++ b/server/lib/deltacloud/drivers/ec2/ec2_driver.rb @@ -41,6 +41,7 @@ module Deltacloud feature :instances, :user_data feature :instances, :authentication_key + feature :instances, :public_ip feature :images, :owner_id feature :buckets, :bucket_location @@ -171,7 +172,11 @@ module Deltacloud instance_options.merge!(:availability_zone => opts[:availability_zone]) if opts[:availability_zone] instance_options.merge!(:instance_type => opts[:hwp_id]) if opts[:hwp_id] safely do - convert_instance(ec2.launch_instances(image_id, instance_options).first) + new_instance = convert_instance(ec2.launch_instances(image_id, instance_options).first) + if opts[:public_ip] + ec2.associate_address(new_instance.id, opts[:public_ip]) + end + new_instance end end diff --git a/server/lib/deltacloud/drivers/gogrid/gogrid_driver.rb b/server/lib/deltacloud/drivers/gogrid/gogrid_driver.rb index fd8e756..6c59934 100644 --- a/server/lib/deltacloud/drivers/gogrid/gogrid_driver.rb +++ b/server/lib/deltacloud/drivers/gogrid/gogrid_driver.rb @@ -36,6 +36,7 @@ module Deltacloud class GogridDriver < Deltacloud::BaseDriver feature :instances, :authentication_password + feature :instances, :public_ip define_hardware_profile 'server' do cpu 2 @@ -83,12 +84,13 @@ class GogridDriver < Deltacloud::BaseDriver end client = new_client(credentials) name = (opts[:name] && opts[:name]!='') ? opts[:name] : get_random_instance_name + public_ip = (opts and opts[:public_ip]) ? opts[:public_ip] : nil safely do instance = client.request('grid/server/add', { 'name' => name, 'image' => image_id, 'server.ram' => server_ram, - 'ip' => get_free_ip_from_realm(credentials, opts[:realm_id] || '1') + 'ip' => public_ip || get_free_ip_from_realm(credentials, opts[:realm_id] || '1') })['list'].first if instance login_data = get_login_data(client, instance[:id]) diff --git a/tests/ec2/api.feature b/tests/ec2/api.feature index 85b8498..f289e87 100644 --- a/tests/ec2/api.feature +++ b/tests/ec2/api.feature @@ -50,3 +50,4 @@ Feature: Accessing API entry points Then client should get list of features inside 'instances': | authentication_key | | user_data | + | public_ip | diff --git a/tests/ec2/instances.feature b/tests/ec2/instances.feature index 1e235ce..de13502 100644 --- a/tests/ec2/instances.feature +++ b/tests/ec2/instances.feature @@ -28,6 +28,21 @@ Feature: Managing instances And this instance should have last hardware profile And this instance should have name + @prefix-create-public_ip + Scenario: Choosing public ip address for instance + Given URI /api/instances exists + And authentification is required for this URI + When client want to create a new instance + Then client should choose first image + And client choose public IP address '184.73.218.247' + When client request for a new instance + Then new instance should be created + And this instance should have chosed image + And this instance should be in 'PENDING' state + And this instance should have valid id + And this instance should have name + And IP address for this instance should be '184.73.218.247' + Scenario: Listing current instances Given URI /api/instances exists And authentification is required for this URI diff --git a/tests/ec2/step_definitions/instances_steps.rb b/tests/ec2/step_definitions/instances_steps.rb index 957d242..142e756 100644 --- a/tests/ec2/step_definitions/instances_steps.rb +++ b/tests/ec2/step_definitions/instances_steps.rb @@ -82,6 +82,7 @@ When /^client request for a new instance$/ do :image_id => @image.xpath('@id').first.text } params[:hwp_id] = @hwp_id if @hwp_id + params[:public_ip] = @public_ip if @public_ip post "#{@uri}", params end @@ -131,6 +132,10 @@ When /^client choose (\w+) hardware profile$/ do |position| end end +When /^client choose public IP address '([\w\.]+)'$/ do |address| + @public_up = address +end + Then /^this instance should have last hardware profile$/ do output_xml.xpath('instance/hardware_profile/@id').first.text.should == @hwp_id end @@ -142,3 +147,8 @@ end Then /^I set mock scenario to default$/ do @scenario = '' end + +Then /^IP address for this instance should be '([\w\.]+)'$/ do |address| + puts output_xml.to_s +end + diff --git a/tests/ec2/support/ec2/create-public_ip_describe_images.c4b6748639aec6ee0563714c9b6663e90253577b b/tests/ec2/support/ec2/create-public_ip_describe_images.c4b6748639aec6ee0563714c9b6663e90253577b new file mode 100644 index 0000000..0599c5d --- /dev/null +++ b/tests/ec2/support/ec2/create-public_ip_describe_images.c4b6748639aec6ee0563714c9b6663e90253577b @@ -0,0 +1,8 @@ +BAhbBnsPOhJhd3NfaXNfcHVibGljVDoNYXdzX25hbWUiG3NsZXMtMTAtc3Az +LXYxLjAwLmkzODY6FGF3c19kZXNjcmlwdGlvbiJDU1VTRSBMaW51eCBFbnRl +cnByaXNlIFNlcnZlciAxMCBTZXJ2aWNlIFBhY2sgMyBmb3IgeDg2ICh2MS4w +MCk6E2F3c19pbWFnZV90eXBlIgxtYWNoaW5lOhFhd3NfbG9jYXRpb24iImFt +YXpvbi9zbGVzLTEwLXNwMy12MS4wMC5pMzg2OhJhd3Nfa2VybmVsX2lkIhFh +a2ktNDA3ZDk1Mjk6DmF3c19zdGF0ZSIOYXZhaWxhYmxlOg5hd3Nfb3duZXIi +ETAxMzkwNzg3MTMyMjoVYXdzX2FyY2hpdGVjdHVyZSIJaTM4NjoLYXdzX2lk +IhFhbWktMTZhMzU3N2Y= diff --git a/tests/ec2/support/ec2/create-public_ip_describe_images_by_owner.ffb952b433edf7fe6cb4e04c86f82ac9ce0faa51 b/tests/ec2/support/ec2/create-public_ip_describe_images_by_owner.ffb952b433edf7fe6cb4e04c86f82ac9ce0faa51 new file mode 100644 index 0000000..09b4fe2 --- /dev/null +++ b/tests/ec2/support/ec2/create-public_ip_describe_images_by_owner.ffb952b433edf7fe6cb4e04c86f82ac9ce0faa51 @@ -0,0 +1,358 @@ +BAhbX3sMOhJhd3NfaXNfcHVibGljVDoTYXdzX2ltYWdlX3R5cGUiDG1hY2hp +bmU6EWF3c19sb2NhdGlvbiJMZWMyLXB1YmxpYy13aW5kb3dzLWltYWdlcy9T +cWxTdnJTdGQyMDAzcjIteDg2XzY0LVdpbi12MS4wNy5tYW5pZmVzdC54bWw6 +DmF3c19zdGF0ZSIOYXZhaWxhYmxlOg5hd3Nfb3duZXIiETIwNjAyOTYyMTUz +MjoVYXdzX2FyY2hpdGVjdHVyZSILeDg2XzY0Ogthd3NfaWQiEWFtaS0wNTM1 +ZDY2Y3sPOwBUOhZhd3NfcHJvZHVjdF9jb2Rlc1sGIg04MEVEMDBCODsGIgxt +YWNoaW5lOwciSGVjMi1wYWlkLWlibS1pbWFnZXMvaWJtLXRpdm9saS1pdG0t +MDYuMjEuMDMuMDAtMzJiLTYwMC5tYW5pZmVzdC54bWw6EmF3c19rZXJuZWxf +aWQiEWFraS03ZTQ4YTgxNzsIIg5hdmFpbGFibGU7CSIRNDcwMjU0NTM0MDI0 +OhNhd3NfcmFtZGlza19pZCIRYXJpLTY2NDhhODBmOwoiCWkzODY7CyIRYW1p +LTA2NGNhYzZmew87AFQ7DFsGIg1FM0Q0OENFRTsGIgxtYWNoaW5lOwciUGVj +Mi1wYWlkLWlibS1pbWFnZXMvd2Vic3BoZXJlLWFwcGxpY2F0aW9uLXNlcnZl +ci03LjAuMC43LTMyYml0Lm1hbmlmZXN0LnhtbDsNIhFha2ktMzAzOGRhNTk7 +CCIOYXZhaWxhYmxlOwkiETQ3MDI1NDUzNDAyNDsOIhFhcmktMzIzOGRhNWI7 +CiIJaTM4NjsLIhFhbWktMTAwMGUyNzl7DzsAVDsMWwYiDUE5NDA4QjRCOwYi +DG1hY2hpbmU7ByJHZWMyLXBhaWQtaWJtLWltYWdlcy1pZHMvaWJtLWlkcy13 +b3JrZ3JvdXAtMTEuNS12MjAyLTEubWFuaWZlc3QueG1sOw0iEWFraS0wMjUx +YjM2YjsIIg5hdmFpbGFibGU7CSIRNDcwMjU0NTM0MDI0Ow4iEWFyaS0wYzUx +YjM2NTsKIgt4ODZfNjQ7CyIRYW1pLTEwNTFiMzc5ew47AFQ7BiIMbWFjaGlu +ZTsHIj9hd3MtdG9vbGtpdC1mb3ItZWNsaXBzZS1hbWlzLXVzL3RvbWNhdC12 +MS4wLjAubWFuaWZlc3QueG1sOw0iEWFraS1hNzFjZjljZTsIIg5hdmFpbGFi +bGU7CSIRMjA1NjA1ODE5NzE2Ow4iEWFyaS1hNTFjZjljYzsKIglpMzg2Owsi +EWFtaS0xMWNhMmQ3OHsPOwBUOg1hd3NfbmFtZSIbc2xlcy0xMC1zcDMtdjEu +MDAuaTM4NjoUYXdzX2Rlc2NyaXB0aW9uIkNTVVNFIExpbnV4IEVudGVycHJp +c2UgU2VydmVyIDEwIFNlcnZpY2UgUGFjayAzIGZvciB4ODYgKHYxLjAwKTsG +IgxtYWNoaW5lOwciImFtYXpvbi9zbGVzLTEwLXNwMy12MS4wMC5pMzg2Ow0i +EWFraS00MDdkOTUyOTsIIg5hdmFpbGFibGU7CSIRMDEzOTA3ODcxMzIyOwoi +CWkzODY7CyIRYW1pLTE2YTM1Nzdmew07AFQ7BiIMbWFjaGluZTsHIkBlYzIt +cHVibGljLWltYWdlcy9mZWRvcmEtY29yZTQtaTM4Ni1iYXNlLXYxLjA3Lm1h +bmlmZXN0LnhtbDsNIhFha2ktOWIwMGU1ZjI7CCIOYXZhaWxhYmxlOwkiETIw +NjAyOTYyMTUzMjsKIglpMzg2OwsiEWFtaS0yMDVmYmE0OXsOOwBUOwYiDG1h +Y2hpbmU7ByJFYXdzLWNvbnNvbGUtcXVpY2tzdGFydC1hbWlzL3BlcmwvMS4z +L3BlcmxxdWlja3N0YXJ0Lm1hbmlmZXN0LnhtbDsNIhFha2ktZjVjMTIxOWM7 +CCIOYXZhaWxhYmxlOwkiETIwNTYwNTgxOTcxNjsOIhFhcmktZGJjMTIxYjI7 +CiIJaTM4NjsLIhFhbWktMjBiMDUzNDl7DDsAVDsGIgxtYWNoaW5lOwciNWVj +Mi1wdWJsaWMtaW1hZ2VzL2ZlZG9yYS1jb3JlNC1iYXNlLm1hbmlmZXN0Lnht +bDsIIg5hdmFpbGFibGU7CSIRMjA2MDI5NjIxNTMyOwoiCWkzODY7CyIRYW1p +LTIwYjY1MzQ5eww7AFQ7BiIMbWFjaGluZTsHIjtlYzItcHVibGljLWltYWdl +cy9mZWRvcmEtY29yZTQtYmFzZS12MS4wNy5tYW5pZmVzdC54bWw7CCIOYXZh +aWxhYmxlOwkiETIwNjAyOTYyMTUzMjsKIglpMzg2OwsiEWFtaS0yMTVmYmE0 +OHsMOwBUOwYiDG1hY2hpbmU7ByJDZWMyLXB1YmxpYy1pbWFnZXMvZmVkb3Jh +LWNvcmU0LWFwYWNoZS1teXNxbC12MS4wNy5tYW5pZmVzdC54bWw7CCIOYXZh +aWxhYmxlOwkiETIwNjAyOTYyMTUzMjsKIglpMzg2OwsiEWFtaS0yMjVmYmE0 +YnsOOwBUOwYiDG1hY2hpbmU7ByJFYXdzLWNvbnNvbGUtcXVpY2tzdGFydC1h +bWlzL3J1YnkvMS4yL3J1YnlxdWlja3N0YXJ0Lm1hbmlmZXN0LnhtbDsNIhFh +a2ktZjVjMTIxOWM7CCIOYXZhaWxhYmxlOwkiETIwNTYwNTgxOTcxNjsOIhFh +cmktZGJjMTIxYjI7CiIJaTM4NjsLIhFhbWktMjJiMDUzNGJ7DDsAVDsGIgxt +YWNoaW5lOwciNmVjMi1wdWJsaWMtaW1hZ2VzL2ZlZG9yYS1jb3JlNC1teXNx +bC5tYW5pZmVzdC54bWw7CCIOYXZhaWxhYmxlOwkiETIwNjAyOTYyMTUzMjsK +IglpMzg2OwsiEWFtaS0yMmI2NTM0YnsMOwBUOwYiDG1hY2hpbmU7ByI5ZWMy +LXB1YmxpYy1pbWFnZXMvZ2V0dGluZy1zdGFydGVkLXYxLjA3Lm1hbmlmZXN0 +LnhtbDsIIg5hdmFpbGFibGU7CSIRMjA2MDI5NjIxNTMyOwoiCWkzODY7CyIR +YW1pLTIzNWZiYTRheww7AFQ7BiIMbWFjaGluZTsHIjdlYzItcHVibGljLWlt +YWdlcy9mZWRvcmEtY29yZTQtYXBhY2hlLm1hbmlmZXN0LnhtbDsIIg5hdmFp +bGFibGU7CSIRMjA2MDI5NjIxNTMyOwoiCWkzODY7CyIRYW1pLTIzYjY1MzRh +ew87AFQ7DFsGIg1ENkY2MDUyQTsGIgxtYWNoaW5lOwciTGVjMi1wYWlkLWli +bS1pbWFnZXMvaW5mb3JtaXgtZHluYW1pYy1zZXJ2ZXItZXhwcmVzcy0zMi1i +aXQubWFuaWZlc3QueG1sOw0iEWFraS1iMzRiYWNkYTsIIg5hdmFpbGFibGU7 +CSIRNDcwMjU0NTM0MDI0Ow4iEWFyaS1iMjRiYWNkYjsKIglpMzg2OwsiEWFt +aS0yNDRhYWQ0ZHsOOwBUOwYiDG1hY2hpbmU7ByI+ZWMyLXB1YmxpYy1pbWFn +ZXMvZmVkb3JhLTgteDg2XzY0LWJhc2UtdjEuMDgubWFuaWZlc3QueG1sOw0i +EWFraS1iNTFjZjlkYzsIIg5hdmFpbGFibGU7CSIRMjA2MDI5NjIxNTMyOw4i +EWFyaS1iMzFjZjlkYTsKIgt4ODZfNjQ7CyIRYW1pLTI1NDdhMzRjeww7AFQ7 +BiIMbWFjaGluZTsHIjxlYzItcHVibGljLWltYWdlcy9mZWRvcmEtY29yZTQt +bXlzcWwtdjEuMDcubWFuaWZlc3QueG1sOwgiDmF2YWlsYWJsZTsJIhEyMDYw +Mjk2MjE1MzI7CiIJaTM4NjsLIhFhbWktMjU1ZmJhNGN7DDsAVDsGIgxtYWNo +aW5lOwciPWVjMi1wdWJsaWMtaW1hZ2VzL2ZlZG9yYS1jb3JlNC1hcGFjaGUt +bXlzcWwubWFuaWZlc3QueG1sOwgiDmF2YWlsYWJsZTsJIhEyMDYwMjk2MjE1 +MzI7CiIJaTM4NjsLIhFhbWktMjViNjUzNGN7DDsAVDsGIgxtYWNoaW5lOwci +M2VjMi1wdWJsaWMtaW1hZ2VzL2RldmVsb3Blci1pbWFnZS5tYW5pZmVzdC54 +bWw7CCIOYXZhaWxhYmxlOwkiETIwNjAyOTYyMTUzMjsKIglpMzg2OwsiEWFt +aS0yNmI2NTM0ZnsOOwBUOwYiDG1hY2hpbmU7ByJGL2F3cy1jb25zb2xlLXF1 +aWNrc3RhcnQtYW1pcy9wZXJsLzEuMi9wZXJscXVpY2tzdGFydC5tYW5pZmVz +dC54bWw7DSIRYWtpLWE3MWNmOWNlOwgiDmF2YWlsYWJsZTsJIhEyMDU2MDU4 +MTk3MTY7DiIRYXJpLWE1MWNmOWNjOwoiCWkzODY7CyIRYW1pLTI3ZTcwMDRl +ew47AFQ7BiIMbWFjaGluZTsHIj5lYzItcHVibGljLWltYWdlcy9mZWRvcmEt +OC14ODZfNjQtYmFzZS12MS4wNy5tYW5pZmVzdC54bWw7DSIRYWtpLWI1MWNm +OWRjOwgiDmF2YWlsYWJsZTsJIhEyMDYwMjk2MjE1MzI7DiIRYXJpLWIzMWNm +OWRhOwoiC3g4Nl82NDsLIhFhbWktMmE1ZmJhNDN7DjsAVDsGIgxtYWNoaW5l +OwciPGVjMi1wdWJsaWMtaW1hZ2VzL2ZlZG9yYS04LWkzODYtYmFzZS12MS4w +Ny5tYW5pZmVzdC54bWw7DSIRYWtpLWE3MWNmOWNlOwgiDmF2YWlsYWJsZTsJ +IhEyMDYwMjk2MjE1MzI7DiIRYXJpLWE1MWNmOWNjOwoiCWkzODY7CyIRYW1p +LTJiNWZiYTQyew07AFQ7DFsGIg1BNzlFQzBEQjsGIgxtYWNoaW5lOwciN2Vj +Mi1wdWJsaWMtaW1hZ2VzL2RlbW8tcGFpZC1BTUktdjEuMDcubWFuaWZlc3Qu +eG1sOwgiDmF2YWlsYWJsZTsJIhEyMDYwMjk2MjE1MzI7CiIJaTM4NjsLIhFh +bWktMmM1ZmJhNDV7DjsAVDsGIgxtYWNoaW5lOwciQGF3cy1jb25zb2xlLXF1 +aWNrc3RhcnQtYW1pcy9waHBxdWlja3N0YXJ0LXYxLjUubWFuaWZlc3QueG1s +Ow0iEWFraS1mNWMxMjE5YzsIIg5hdmFpbGFibGU7CSIRMjA1NjA1ODE5NzE2 +Ow4iEWFyaS1kYmMxMjFiMjsKIglpMzg2OwsiEWFtaS0yY2IwNTM0NXsOOwBU +OwYiDG1hY2hpbmU7ByJDZWMyLXB1YmxpYy1pbWFnZXMvZmVkb3JhLWNvcmUt +Ni14ODZfNjQtYmFzZS12MS4wNy5tYW5pZmVzdC54bWw7DSIRYWtpLWE1M2Fk +ZmNjOwgiDmF2YWlsYWJsZTsJIhEyMDYwMjk2MjE1MzI7DiIRYXJpLWEyM2Fk +ZmNiOwoiC3g4Nl82NDsLIhFhbWktMmQ1ZmJhNDR7DDsAVDsGIgxtYWNoaW5l +OwciPWVjMi1wdWJsaWMtaW1hZ2VzL2ZlZG9yYS1jb3JlNC1hcGFjaGUtdjEu +MDcubWFuaWZlc3QueG1sOwgiDmF2YWlsYWJsZTsJIhEyMDYwMjk2MjE1MzI7 +CiIJaTM4NjsLIhFhbWktMmU1ZmJhNDd7DjsAVDsGIgxtYWNoaW5lOwciSWF3 +cy1jb25zb2xlLXF1aWNrc3RhcnQtYW1pcy90b21jYXQvMS4yL3RvbWNhdHF1 +aWNrc3RhcnQubWFuaWZlc3QueG1sOw0iEWFraS1mNWMxMjE5YzsIIg5hdmFp +bGFibGU7CSIRMjA1NjA1ODE5NzE2Ow4iEWFyaS1kYmMxMjFiMjsKIglpMzg2 +OwsiEWFtaS0yZWIwNTM0N3sMOwBUOwYiDG1hY2hpbmU7ByI+ZWMyLXB1Ymxp +Yy1pbWFnZXMvZGV2ZWxvcGVyLWltYWdlLWkzODYtdjEuMDcubWFuaWZlc3Qu +eG1sOwgiDmF2YWlsYWJsZTsJIhEyMDYwMjk2MjE1MzI7CiIJaTM4NjsLIhFh +bWktMmY1ZmJhNDZ7EDsAVDsPIi93ZWJzcGhlcmUtYXBwbGljYXRpb24tc2Vy +dmVyLTcuMC4wLjktMzJiaXQ7DFsGIg1FM0Q0OENFRTsGIgxtYWNoaW5lOwci +V2VjMi1wYWlkLWlibS13YXMtdXMtZWFzdC0xL3dlYnNwaGVyZS1hcHBsaWNh +dGlvbi1zZXJ2ZXItNy4wLjAuOS0zMmJpdC5tYW5pZmVzdC54bWw7DSIRYWtp +LWRkNjg4MWI0OwgiDmF2YWlsYWJsZTsJIhE0NzAyNTQ1MzQwMjQ7DiIRYXJp +LWQ3Njg4MWJlOwoiCWkzODY7CyIRYW1pLTMxNmE4MzU4ew87AFQ7DFsGIg01 +NzhCRjVCQTsGIgxtYWNoaW5lOwciSGVjMi1wYWlkLWlibS1pbWFnZXMvaWJt +LWxvdHVzLWZvcm1zLXR1cmJvLTMuNS4xLTMyLWJpdC5tYW5pZmVzdC54bWw7 +DSIRYWtpLTJkZDMzMDQ0OwgiDmF2YWlsYWJsZTsJIhE0NzAyNTQ1MzQwMjQ7 +DiIRYXJpLTIxZDMzMDQ4OwoiCWkzODY7CyIRYW1pLTM1ZDMzMDVjeww7AFQ7 +BiIMbWFjaGluZTsHIjxlYzItcHVibGljLWltYWdlcy9mZWRvcmEtY29yZTYt +YmFzZS14ODZfNjQubWFuaWZlc3QueG1sOwgiDmF2YWlsYWJsZTsJIhEyMDYw +Mjk2MjE1MzI7CiILeDg2XzY0OwsiEWFtaS0zNmZmMWE1ZnsOOwBUOwYiDG1h +Y2hpbmU7ByIzZWMyLXB1YmxpYy1pbWFnZXMvZ2V0dGluZy1zdGFydGVkLm1h +bmlmZXN0LnhtbDsNIhFha2ktYTcxY2Y5Y2U7CCIOYXZhaWxhYmxlOwkiETIw +NjAyOTYyMTUzMjsOIhFhcmktYTUxY2Y5Y2M7CiIJaTM4NjsLIhFhbWktM2M0 +N2EzNTV7DzsAVDsMWwYiDUE5NDA4QjRCOwYiDG1hY2hpbmU7ByJWZWMyLXBh +aWQtaWJtLWltYWdlcy9pbmZvcm1peC1keW5hbWljLXNlcnZlci13b3JrZ3Jv +dXAtZWRpdGlvbi02NC1iaXQubWFuaWZlc3QueG1sOw0iEWFraS1kYjRiYWNi +MjsIIg5hdmFpbGFibGU7CSIRNDcwMjU0NTM0MDI0Ow4iEWFyaS1kZDRiYWNi +NDsKIgt4ODZfNjQ7CyIRYW1pLTQzNGFhZDJhew47AFQ7BiIMbWFjaGluZTsH +IkovYXdzLWNvbnNvbGUtcXVpY2tzdGFydC1hbWlzL3RvbWNhdC8xLjEvdG9t +Y2F0cXVpY2tzdGFydC5tYW5pZmVzdC54bWw7DSIRYWtpLWE3MWNmOWNlOwgi +DmF2YWlsYWJsZTsJIhEyMDU2MDU4MTk3MTY7DiIRYXJpLWE1MWNmOWNjOwoi +CWkzODY7CyIRYW1pLTQ1ZTcwMDJjew47AFQ7BiIMbWFjaGluZTsHIjxlYzIt +cHVibGljLWltYWdlcy9mZWRvcmEtOC1pMzg2LWJhc2UtdjEuMTAubWFuaWZl +c3QueG1sOw0iEWFraS02ZWFhNDkwNzsIIg5hdmFpbGFibGU7CSIRMjA2MDI5 +NjIxNTMyOw4iEWFyaS00MmI5NWEyYjsKIglpMzg2OwsiEWFtaS00OGFhNDky +MXsPOwBUOwxbBiINRUE1RjA1QTM7BiIMbWFjaGluZTsHIjplYzItcGFpZC1p +Ym0taW1hZ2VzL2RiMi13b3JrZ3JvdXAtNjQtYml0Lm1hbmlmZXN0LnhtbDsN +IhFha2ktODU0OWFlZWM7CCIOYXZhaWxhYmxlOwkiETQ3MDI1NDUzNDAyNDsO +IhFhcmktNzY0OGFmMWY7CiILeDg2XzY0OwsiEWFtaS00YzQ4YWYyNXsPOwBU +OwxbBiINQTQ4MTg5NUQ7BiIMbWFjaGluZTsHIjhlYzItcGFpZC1pYm0taW1h +Z2VzL2RiMi1leHByZXNzLTMyLWJpdC5tYW5pZmVzdC54bWw7DSIRYWtpLTgx +NDlhZWU4OwgiDmF2YWlsYWJsZTsJIhE0NzAyNTQ1MzQwMjQ7DiIRYXJpLTc3 +NDhhZjFlOwoiCWkzODY7CyIRYW1pLTRkNDhhZjI0ew87AFQ7DFsGIg01NzhC +RjVCQTsGIgxtYWNoaW5lOwciPmVjMi1wYWlkLWlibS1pbWFnZXMvbG90dXMt +Zm9ybXMtdHVyYm8tMzItYml0Lm1hbmlmZXN0LnhtbDsNIhFha2ktOGIzZmRl +ZTI7CCIOYXZhaWxhYmxlOwkiETQ3MDI1NDUzNDAyNDsOIhFhcmktODEzZmRl +ZTg7CiIJaTM4NjsLIhFhbWktNGQ0ZmFlMjR7DzsAVDsMWwYiDTQ5Q0E3MzA1 +OwYiDG1hY2hpbmU7ByJHZWMyLXBhaWQtaWJtLWltYWdlcy9pYm0tdGl2b2xp +LWl0bS0wNi4yMS4wMy4wMC0zMmItNTAubWFuaWZlc3QueG1sOw0iEWFraS02 +ODQ4YTgwMTsIIg5hdmFpbGFibGU7CSIRNDcwMjU0NTM0MDI0Ow4iEWFyaS02 +YzQ4YTgwNTsKIglpMzg2OwsiEWFtaS01MDQ4YTgzOXsPOwBUOwxbBiINQ0NF +QjM2OEI7BiIMbWFjaGluZTsHIkhlYzItcGFpZC1pYm0taW1hZ2VzL2libS10 +aXZvbGktaXRtLTA2LjIxLjAzLjAwLTMyYi0yMDAubWFuaWZlc3QueG1sOw0i +EWFraS03YzQ4YTgxNTsIIg5hdmFpbGFibGU7CSIRNDcwMjU0NTM0MDI0Ow4i +EWFyaS02NDQ4YTgwZDsKIglpMzg2OwsiEWFtaS01MjQ4YTgzYnsOOwBUOwYi +DG1hY2hpbmU7ByI8ZWMyLXB1YmxpYy1pbWFnZXMvZmVkb3JhLTgtaTM4Ni1i +YXNlLXYxLjA4Lm1hbmlmZXN0LnhtbDsNIhFha2ktYTcxY2Y5Y2U7CCIOYXZh +aWxhYmxlOwkiETIwNjAyOTYyMTUzMjsOIhFhcmktYTUxY2Y5Y2M7CiIJaTM4 +NjsLIhFhbWktNTY0N2EzM2Z7DzsAVDsMWwYiDUUzRDQ4Q0VFOwYiDG1hY2hp +bmU7ByJYZWMyLXBhaWQtaWJtLXdhcy11cy1lYXN0LTEvd2Vic3BoZXJlLWFw +cGxpY2F0aW9uLXNlcnZlci03LjAuMC4xMS0zMmJpdC5tYW5pZmVzdC54bWw7 +DSIRYWtpLTRhOTA3YTIzOwgiDmF2YWlsYWJsZTsJIhE0NzAyNTQ1MzQwMjQ7 +DiIRYXJpLTQyOTA3YTJiOwoiCWkzODY7CyIRYW1pLTU4OTc3ZDMxew87AFQ7 +DFsGIg1FQTVGMDVBMzsGIgxtYWNoaW5lOwciSmVjMi1wYWlkLWlibS1pbWFn +ZXMtZGIyL2libS1kYjItd29ya2dyb3VwLTkuNy5GUDItNjQtYml0Lm1hbmlm +ZXN0LnhtbDsNIhFha2ktYjI4MTc0ZGI7CCIOYXZhaWxhYmxlOwkiETQ3MDI1 +NDUzNDAyNDsOIhFhcmktODg4MTc0ZTE7CiILeDg2XzY0OwsiEWFtaS01Yzgw +NzUzNXsOOwBUOwYiDG1hY2hpbmU7ByJGL2F3cy1jb25zb2xlLXF1aWNrc3Rh +cnQtYW1pcy9ydWJ5LzEuMS9ydWJ5cXVpY2tzdGFydC5tYW5pZmVzdC54bWw7 +DSIRYWtpLWE3MWNmOWNlOwgiDmF2YWlsYWJsZTsJIhEyMDU2MDU4MTk3MTY7 +DiIRYXJpLWE1MWNmOWNjOwoiCWkzODY7CyIRYW1pLTVlZTcwMDM3ew47AFQ7 +BiIMbWFjaGluZTsHIkEvYXdzLWNvbnNvbGUtcXVpY2tzdGFydC1hbWlzL3Bo +cHF1aWNrc3RhcnQtdjEuNC5tYW5pZmVzdC54bWw7DSIRYWtpLWE3MWNmOWNl +OwgiDmF2YWlsYWJsZTsJIhEyMDU2MDU4MTk3MTY7DiIRYXJpLWE1MWNmOWNj +OwoiCWkzODY7CyIRYW1pLTYwZGEzZDA5ew87AFQ7DFsGIg1FM0Q0OENFRTsG +IgxtYWNoaW5lOwciUWVjMi1wYWlkLWlibS1pbWFnZXMvd2Vic3BoZXJlLWFw +cGxpY2F0aW9uLXNlcnZlci03LjAuMC4zLTMyLWJpdC5tYW5pZmVzdC54bWw7 +DSIRYWtpLTg2NzA5MGVmOwgiDmF2YWlsYWJsZTsJIhE0NzAyNTQ1MzQwMjQ7 +DiIRYXJpLTlhNzA5MGYzOwoiCWkzODY7CyIRYW1pLTY2NzE5MTBmew87AFQ7 +DFsGIg1ENkZCMTExMzsGIgxtYWNoaW5lOwciRGVjMi1wYWlkLWlibS1pbWFn +ZXMvd2Vic3BoZXJlLXNtYXNoLTEuMS4xLjEtMzItYml0Lm1hbmlmZXN0Lnht +bDsNIhFha2ktNmY3Nzk0MDY7CCIOYXZhaWxhYmxlOwkiETQ3MDI1NDUzNDAy +NDsOIhFhcmktNjE3Nzk0MDg7CiIJaTM4NjsLIhFhbWktNjc3Njk1MGV7DzsA +VDsMWwYiDUE0ODE4OTVEOwYiDG1hY2hpbmU7ByJIZWMyLXBhaWQtaWJtLWlt +YWdlcy1kYjIvaWJtLWRiMi1leHByZXNzLTkuNy5GUDItMzItYml0Lm1hbmlm +ZXN0LnhtbDsNIhFha2ktOWVkNTNmZjc7CCIOYXZhaWxhYmxlOwkiETQ3MDI1 +NDUzNDAyNDsOIhFhcmktODY4MTc0ZWY7CiIJaTM4NjsLIhFhbWktNmE4MDc1 +MDN7DzsAVDsMWwYiDThGQ0UzRUVCOwYiDG1hY2hpbmU7ByJaZWMyLXBhaWQt +aWJtLWltYWdlcy9sb3R1cy13ZWItY29udGVudC1tYW5hZ2VtZW50LXN0YW5k +YXJkLWVkaXRpb24tNjQtYml0Lm1hbmlmZXN0LnhtbDsNIhFha2ktODI0OWFl +ZWI7CCIOYXZhaWxhYmxlOwkiETQ3MDI1NDUzNDAyNDsOIhFhcmktNDg0OGFm +MjE7CiILeDg2XzY0OwsiEWFtaS02YzU1YjIwNXsPOwBUOwxbBiINNDc2RDI5 +Q0I7BiIMbWFjaGluZTsHIm9lYzItcGFpZC1pYm0taW1hZ2VzL3dlYnNwaGVy +ZS1wb3J0YWwtYW5kLWxvdHVzLXdlYi1jb250ZW50LW1hbmFnZW1lbnQtc3Rh +bmRhcmQtZWRpdGlvbi02NC1iaXQubWFuaWZlc3QueG1sOw0iEWFraS04MzQ5 +YWVlYTsIIg5hdmFpbGFibGU7CSIRNDcwMjU0NTM0MDI0Ow4iEWFyaS00OTQ4 +YWYyMDsKIgt4ODZfNjQ7CyIRYW1pLTZmNTViMjA2ew87AFQ7DFsGIg1ENkY2 +MDUyQTsGIgxtYWNoaW5lOwciRWVjMi1wYWlkLWlibS1pbWFnZXMtaWRzL2li +bS1pZHMtZXhwcmVzcy0xMS41LXYyMDItMS5tYW5pZmVzdC54bWw7DSIRYWtp +LTYwNTFiMzA5OwgiDmF2YWlsYWJsZTsJIhE0NzAyNTQ1MzQwMjQ7DiIRYXJp +LTY0NTFiMzBkOwoiCWkzODY7CyIRYW1pLTc0NTFiMzFkew87AFQ7DFsGIg1B +NDgxODk1RDsGIgxtYWNoaW5lOwciSGVjMi1wYWlkLWlibS1pbWFnZXMtZGIy +L2libS1kYjItZXhwcmVzcy05LjcuRlAxLTMyLWJpdC5tYW5pZmVzdC54bWw7 +DSIRYWtpLWJjZTYwYmQ1OwgiDmF2YWlsYWJsZTsJIhE0NzAyNTQ1MzQwMjQ7 +DiIRYXJpLTg4ZTYwYmUxOwoiCWkzODY7CyIRYW1pLTc0ZTAwZDFkew47AFQ7 +DyIbRUMyIENlbnRPUyA1LjQgSFZNIEFNSTsQIhtFQzIgQ2VudE9TIDUuNCBI +Vk0gQU1JOwYiDG1hY2hpbmU7ByIiYW1hem9uL0VDMiBDZW50T1MgNS40IEhW +TSBBTUk7CCIOYXZhaWxhYmxlOwkiETIwNjAyOTYyMTUzMjsKIgt4ODZfNjQ7 +CyIRYW1pLTdlYTI0YTE3exA7AFQ7DyIcZmVkb3JhLTgtaTM4Ni12MS4xNC1z +dGQ7ECI2RmVkb3JhIDggdjEuMTQgaTM4NiBzdGQtcm9vdCBsdm0tc3dhcCBs +dm0tc3RvcmFnZTsGIgxtYWNoaW5lOwciI2FtYXpvbi9mZWRvcmEtOC1pMzg2 +LXYxLjE0LXN0ZDsNIhFha2ktOTRjNTI3ZmQ7CCIOYXZhaWxhYmxlOwkiETIw +NjAyOTYyMTUzMjsOIhFhcmktOTZjNTI3ZmY7CiIJaTM4NjsLIhFhbWktODRk +YjM5ZWR7EDsAVDsPIh5mZWRvcmEtOC14ODZfNjQtdjEuMTQtc3RkOxAiOEZl +ZG9yYSA4IHYxLjE0IHg4Nl82NCBzdGQtcm9vdCBsdm0tc3dhcCBsdm0tc3Rv +cmFnZTsGIgxtYWNoaW5lOwciJWFtYXpvbi9mZWRvcmEtOC14ODZfNjQtdjEu +MTQtc3RkOw0iEWFraS01NGNlMmMzZDsIIg5hdmFpbGFibGU7CSIRMjA2MDI5 +NjIxNTMyOw4iEWFyaS01NmNlMmMzZjsKIgt4ODZfNjQ7CyIRYW1pLTg2ZGIz +OWVmew87AFQ7DFsGIg03QTYzRjlGQzsGIgxtYWNoaW5lOwciQGVjMi1wYWlk +LWlibS1pbWFnZXMvZXh0cmVtZXNjYWxlLTcwLTMyYml0LW5vaWQubWFuaWZl +c3QueG1sOw0iEWFraS0zMDM4ZGE1OTsIIg5hdmFpbGFibGU7CSIRNDcwMjU0 +NTM0MDI0Ow4iEWFyaS0zMjM4ZGE1YjsKIglpMzg2OwsiEWFtaS1hMDQ2YTRj +OXsOOwBUOwYiDG1hY2hpbmU7ByJDZWMyLXB1YmxpYy1pbWFnZXMvZmVkb3Jh +LWNvcmUtNi14ODZfNjQtYmFzZS12MS4wNi5tYW5pZmVzdC54bWw7DSIRYWtp +LWE1M2FkZmNjOwgiDmF2YWlsYWJsZTsJIhEyMDYwMjk2MjE1MzI7DiIRYXJp +LWEyM2FkZmNiOwoiC3g4Nl82NDsLIhFhbWktYTIxYWZmY2J7DzsAVDsMWwYi +DUVBNUYwNUEzOwYiDG1hY2hpbmU7ByI+ZWMyLXBhaWQtaWJtLWltYWdlcy9k +YjItd29ya2dyb3VwLTkuNy02NC1iaXQubWFuaWZlc3QueG1sOw0iEWFraS02 +YmVjMGMwMjsIIg5hdmFpbGFibGU7CSIRNDcwMjU0NTM0MDI0Ow4iEWFyaS02 +ZGVjMGMwNDsKIgt4ODZfNjQ7CyIRYW1pLWEyMWNmY2Niew07AFQ7DFsGIg1F +QzEyOTcwODsGIgxtYWNoaW5lOwciQWVjMi1wYWlkLWlibS1pbWFnZXMvaWJt +LWluZm9zcGhlcmUtaXMtd2luY2xpZW50Lm1hbmlmZXN0LnhtbDsIIg5hdmFp +bGFibGU7CSIRNDcwMjU0NTM0MDI0OwoiCWkzODY7CyIRYW1pLWE4ZTcwNWMx +ew47AFQ7DyIfRUMyIENlbnRPUyA1LjUgR1BVIEhWTSBBTUk7ECIfRUMyIENl +bnRPUyA1LjUgR1BVIEhWTSBBTUk7BiIMbWFjaGluZTsHIiZhbWF6b24vRUMy +IENlbnRPUyA1LjUgR1BVIEhWTSBBTUk7CCIOYXZhaWxhYmxlOwkiETIwNjAy +OTYyMTUzMjsKIgt4ODZfNjQ7CyIRYW1pLWFhMzBjN2Mzew87AFQ7DFsGIg1B +NDgxODk1RDsGIgxtYWNoaW5lOwciPGVjMi1wYWlkLWlibS1pbWFnZXMvZGIy +LWV4cHJlc3MtOS43LTMyLWJpdC5tYW5pZmVzdC54bWw7DSIRYWtpLTlmZWIw +YmY2OwgiDmF2YWlsYWJsZTsJIhE0NzAyNTQ1MzQwMjQ7DiIRYXJpLTkxZWIw +YmY4OwoiCWkzODY7CyIRYW1pLWFjMWNmY2M1exA7AFQ7DyIiZ2V0dGluZy1z +dGFydGVkLXdpdGgtZWJzLWJvb3Q7ECJMRmVkb3JhIDggdjEuMTQgaTM4NiBz +dGQtcm9vdCBsdm0tc3dhcCBsdm0tc3RvcmFnZSBnZXR0aW5nLXN0YXJ0ZWQt +Z3VpZGU7BiIMbWFjaGluZTsHIilhbWF6b24vZ2V0dGluZy1zdGFydGVkLXdp +dGgtZWJzLWJvb3Q7DSIRYWtpLTk0YzUyN2ZkOwgiDmF2YWlsYWJsZTsJIhEy +MDYwMjk2MjE1MzI7DiIRYXJpLTk2YzUyN2ZmOwoiCWkzODY7CyIRYW1pLWIy +MzJkMGRiew87AFQ7DFsGIg1ENkZCMTExMzsGIgxtYWNoaW5lOwciPGVjMi1w +YWlkLWlibS1pbWFnZXMvd2Vic3BoZXJlLXNtYXNoLTMyLWJpdC5tYW5pZmVz +dC54bWw7DSIRYWtpLTgwNDlhZWU5OwgiDmF2YWlsYWJsZTsJIhE0NzAyNTQ1 +MzQwMjQ7DiIRYXJpLTc0NDhhZjFkOwoiCWkzODY7CyIRYW1pLWI0NTRiM2Rk +ew07AFQ7DFsGIg1BNzlFQzBEQjsGIgxtYWNoaW5lOwciMWVjMi1wdWJsaWMt +aW1hZ2VzL2RlbW8tcGFpZC1BTUkubWFuaWZlc3QueG1sOwgiDmF2YWlsYWJs +ZTsJIhEyMDYwMjk2MjE1MzI7CiIJaTM4NjsLIhFhbWktYmQ5ZDc4ZDR7DjsA +VDsPIiZXaW5kb3dzLVNlcnZlcjIwMDgtaTM4Ni1CYXNlLXYxMDM7ECI3TWlj +cm9zb2Z0IFdpbmRvd3MgMjAwOCBEYXRhY2VudGVyIDMyLWJpdCBBTUkgdjEu +MDM7BiIMbWFjaGluZTsHIi1hbWF6b24vV2luZG93cy1TZXJ2ZXIyMDA4LWkz +ODYtQmFzZS12MTAzOwgiDmF2YWlsYWJsZTsJIhEyMDYwMjk2MjE1MzI7CiIJ +aTM4NjsLIhFhbWktYzNlNDBkYWF7DjsAVDsPIixXaW5kb3dzLVNlcnZlcjIw +MDgtaTM4Ni1TcWxFeHByZXNzLXYxMDM7ECJFTWljcm9zb2Z0IFdpbmRvd3Mg +MjAwOCBEYXRhY2VudGVyIDMyLWJpdCwgU3FsIEV4cHJlc3MsIEFNSSB2MS4w +MzsGIgxtYWNoaW5lOwciM2FtYXpvbi9XaW5kb3dzLVNlcnZlcjIwMDgtaTM4 +Ni1TcWxFeHByZXNzLXYxMDM7CCIOYXZhaWxhYmxlOwkiETIwNjAyOTYyMTUz +MjsKIglpMzg2OwsiEWFtaS1jNWU0MGRhY3sOOwBUOw8iMVdpbmRvd3MtU2Vy +dmVyMjAwM1IyLXg4Nl82NC1TcWxTdGFuZGFyZC12MTA5OxAiS01pY3Jvc29m +dCBXaW5kb3dzIDIwMDMgUjIgNjQtYml0LCBTcWwgMjAwNSBTdGFuZGFyZCwg +QU1JIFJlbGVhc2UgdjEuMDk7BiIMbWFjaGluZTsHIjhhbWF6b24vV2luZG93 +cy1TZXJ2ZXIyMDAzUjIteDg2XzY0LVNxbFN0YW5kYXJkLXYxMDk7CCIOYXZh +aWxhYmxlOwkiETIwNjAyOTYyMTUzMjsKIgt4ODZfNjQ7CyIRYW1pLWM5MWZm +MGEwew87AFQ7DFsGIg1FQTVGMDVBMzsGIgxtYWNoaW5lOwciSmVjMi1wYWlk +LWlibS1pbWFnZXMtZGIyL2libS1kYjItd29ya2dyb3VwLTkuNy5GUDEtNjQt +Yml0Lm1hbmlmZXN0LnhtbDsNIhFha2ktZjhmZDEwOTE7CCIOYXZhaWxhYmxl +OwkiETQ3MDI1NDUzNDAyNDsOIhFhcmktZmNmZDEwOTU7CiILeDg2XzY0Owsi +EWFtaS1jZWZkMTBhN3sOOwBUOwYiDG1hY2hpbmU7ByJAYXdzLXRvb2xraXQt +Zm9yLWVjbGlwc2UtYW1pcy11cy9oYXByb3h5LXYxLjAuMi5tYW5pZmVzdC54 +bWw7DSIRYWtpLWE3MWNmOWNlOwgiDmF2YWlsYWJsZTsJIhEyMDU2MDU4MTk3 +MTY7DiIRYXJpLWE1MWNmOWNjOwoiCWkzODY7CyIRYW1pLWQxY2EyZGI4eww7 +AFQ7BiIMbWFjaGluZTsHIkxlYzItcHVibGljLXdpbmRvd3MtaW1hZ2VzL1Nx +bFN2ckV4cDIwMDNyMi14ODZfNjQtV2luLXYxLjA3Lm1hbmlmZXN0LnhtbDsI +Ig5hdmFpbGFibGU7CSIRMjA2MDI5NjIxNTMyOwoiC3g4Nl82NDsLIhFhbWkt +ZDkyMGMzYjB7DjsAVDsPIihXaW5kb3dzLVNlcnZlcjIwMDgteDg2XzY0LUJh +c2UtdjEwMzsQIjdNaWNyb3NvZnQgV2luZG93cyAyMDA4IERhdGFjZW50ZXIg +NjQtYml0IEFNSSB2MS4wMzsGIgxtYWNoaW5lOwciL2FtYXpvbi9XaW5kb3dz +LVNlcnZlcjIwMDgteDg2XzY0LUJhc2UtdjEwMzsIIg5hdmFpbGFibGU7CSIR +MjA2MDI5NjIxNTMyOwoiC3g4Nl82NDsLIhFhbWktZDllNDBkYjB7DDsAVDsG +IgxtYWNoaW5lOwciSmVjMi1wdWJsaWMtd2luZG93cy1pbWFnZXMvU3FsU3Zy +RXhwMjAwM3IyLWkzODYtV2luLXYxLjA3Lm1hbmlmZXN0LnhtbDsIIg5hdmFp +bGFibGU7CSIRMjA2MDI5NjIxNTMyOwoiCWkzODY7CyIRYW1pLWRiMjBjM2Iy +ew87AFQ7DFsGIg1ENjYyRTk4OTsGIgxtYWNoaW5lOwciQGVjMi1wYWlkLWli +bS1pbWFnZXMvbG90dXMtbWFzaHVwLWNlbnRlci0zMi1iaXQubWFuaWZlc3Qu +eG1sOw0iEWFraS05YjNmZGVmMjsIIg5hdmFpbGFibGU7CSIRNDcwMjU0NTM0 +MDI0Ow4iEWFyaS05ZjNmZGVmNjsKIglpMzg2OwsiEWFtaS1kYjVjYmRiMnsO +OwBUOw8iLldpbmRvd3MtU2VydmVyMjAwOC14ODZfNjQtU3FsRXhwcmVzcy12 +MTAzOxAiSU1pY3Jvc29mdCBXaW5kb3dzIDIwMDggRGF0YWNlbnRlciA2NC1i +aXQsIFNxbCAyMDA4IEV4cHJlc3MgQU1JIHYxLjAzOwYiDG1hY2hpbmU7ByI1 +YW1hem9uL1dpbmRvd3MtU2VydmVyMjAwOC14ODZfNjQtU3FsRXhwcmVzcy12 +MTAzOwgiDmF2YWlsYWJsZTsJIhEyMDYwMjk2MjE1MzI7CiILeDg2XzY0Owsi +EWFtaS1kYmU0MGRiMnsMOwBUOwYiDG1hY2hpbmU7ByJJZWMyLXB1YmxpYy13 +aW5kb3dzLWltYWdlcy9TZXJ2ZXIyMDAzcjIteDg2XzY0LVdpbi12MS4wNy5t +YW5pZmVzdC54bWw7CCIOYXZhaWxhYmxlOwkiETIwNjAyOTYyMTUzMjsKIgt4 +ODZfNjQ7CyIRYW1pLWRkMjBjM2I0ew47AFQ7DyIvV2luZG93cy1TZXJ2ZXIy +MDA4LXg4Nl82NC1TcWxTdGFuZGFyZC12MTAzOxAiSk1pY3Jvc29mdCBXaW5k +b3dzIDIwMDggRGF0YWNlbnRlciA2NC1iaXQsIFNxbCAyMDA4IFN0YW5kYXJk +IEFNSSB2MS4wMzsGIgxtYWNoaW5lOwciNmFtYXpvbi9XaW5kb3dzLVNlcnZl +cjIwMDgteDg2XzY0LVNxbFN0YW5kYXJkLXYxMDM7CCIOYXZhaWxhYmxlOwki +ETIwNjAyOTYyMTUzMjsKIgt4ODZfNjQ7CyIRYW1pLWRkZTQwZGI0eww7AFQ7 +BiIMbWFjaGluZTsHIkdlYzItcHVibGljLXdpbmRvd3MtaW1hZ2VzL1NlcnZl +cjIwMDNyMi1pMzg2LVdpbi12MS4wNy5tYW5pZmVzdC54bWw7CCIOYXZhaWxh +YmxlOwkiETIwNjAyOTYyMTUzMjsKIglpMzg2OwsiEWFtaS1kZjIwYzNiNnsP +OwBUOw8iG3NsZXMtMTEtc3AxLXYxLjAwLmkzODY7ECJDU1VTRSBMaW51eCBF +bnRlcnByaXNlIFNlcnZlciAxMSBTZXJ2aWNlIFBhY2sgMSBmb3IgeDg2ICh2 +MS4wMCk7BiIMbWFjaGluZTsHIiJhbWF6b24vc2xlcy0xMS1zcDEtdjEuMDAu +aTM4NjsNIhFha2ktNDA3ZDk1Mjk7CCIOYXZhaWxhYmxlOwkiETAxMzkwNzg3 +MTMyMjsKIglpMzg2OwsiEWFtaS1lMGEzNTc4OXsPOwBUOw8iHXNsZXMtMTEt +c3AxLXYxLjAwLng4Nl82NDsQIkZTVVNFIExpbnV4IEVudGVycHJpc2UgU2Vy +dmVyIDExIFNlcnZpY2UgUGFjayAxIGZvciB4ODZfNjQgKHYxLjAwKTsGIgxt +YWNoaW5lOwciJGFtYXpvbi9zbGVzLTExLXNwMS12MS4wMC54ODZfNjQ7DSIR +YWtpLTQyN2Q5NTJiOwgiDmF2YWlsYWJsZTsJIhEwMTM5MDc4NzEzMjI7CiIL +eDg2XzY0OwsiEWFtaS1lNGEzNTc4ZHsPOwBUOw8iHXNsZXMtMTAtc3AzLXYx +LjAwLng4Nl82NDsQIkZTVVNFIExpbnV4IEVudGVycHJpc2UgU2VydmVyIDEw +IFNlcnZpY2UgUGFjayAzIGZvciB4ODZfNjQgKHYxLjAwKTsGIgxtYWNoaW5l +OwciJGFtYXpvbi9zbGVzLTEwLXNwMy12MS4wMC54ODZfNjQ7DSIRYWtpLTQy +N2Q5NTJiOwgiDmF2YWlsYWJsZTsJIhEwMTM5MDc4NzEzMjI7CiILeDg2XzY0 +OwsiEWFtaS1lZWEzNTc4N3sOOwBUOw8iKFdpbmRvd3MtU2VydmVyMjAwM1Iy +LWkzODYtQmFzZS12MTA5OxAiNk1pY3Jvc29mdCBXaW5kb3dzIDIwMDMgUjIg +RGF0YWNlbnRlciAzMi1iaXQgdjEuMDk7BiIMbWFjaGluZTsHIi9hbWF6b24v +V2luZG93cy1TZXJ2ZXIyMDAzUjItaTM4Ni1CYXNlLXYxMDk7CCIOYXZhaWxh +YmxlOwkiETIwNjAyOTYyMTUzMjsKIglpMzg2OwsiEWFtaS1mMTFmZjA5OHsO +OwBUOwYiDG1hY2hpbmU7ByI+ZWMyLXB1YmxpYy1pbWFnZXMvZmVkb3JhLTgt +eDg2XzY0LWJhc2UtdjEuMDYubWFuaWZlc3QueG1sOw0iEWFraS1iNTFjZjlk +YzsIIg5hdmFpbGFibGU7CSIRMjA2MDI5NjIxNTMyOw4iEWFyaS1iMzFjZjlk +YTsKIgt4ODZfNjQ7CyIRYW1pLWYyMWFmZjliew47AFQ7DyIuV2luZG93cy1T +ZXJ2ZXIyMDAzUjItaTM4Ni1TcWxFeHByZXNzLXYxMDk7ECJTTWljcm9zb2Z0 +IFdpbmRvd3MgMjAwMyBSMiAzMi1iaXQsIElJUyA2LjAsIFNxbCAyMDA1IEV4 +cHJlc3MsIEFNSSBSZWxlYXNlIHYxLjA5OwYiDG1hY2hpbmU7ByI1YW1hem9u +L1dpbmRvd3MtU2VydmVyMjAwM1IyLWkzODYtU3FsRXhwcmVzcy12MTA5Owgi +DmF2YWlsYWJsZTsJIhEyMDYwMjk2MjE1MzI7CiIJaTM4NjsLIhFhbWktZjMx +ZmYwOWF7DjsAVDsGIgxtYWNoaW5lOwciPGVjMi1wdWJsaWMtaW1hZ2VzL2Zl +ZG9yYS04LWkzODYtYmFzZS12MS4wNi5tYW5pZmVzdC54bWw7DSIRYWtpLWE3 +MWNmOWNlOwgiDmF2YWlsYWJsZTsJIhEyMDYwMjk2MjE1MzI7DiIRYXJpLWE1 +MWNmOWNjOwoiCWkzODY7CyIRYW1pLWY1MWFmZjljew47AFQ7DyIqV2luZG93 +cy1TZXJ2ZXIyMDAzUjIteDg2XzY0LUJhc2UtdjEwOTsQIjZNaWNyb3NvZnQg +V2luZG93cyAyMDAzIFIyIERhdGFjZW50ZXIgNjQtYml0IHYxLjA5OwYiDG1h +Y2hpbmU7ByIxYW1hem9uL1dpbmRvd3MtU2VydmVyMjAwM1IyLXg4Nl82NC1C +YXNlLXYxMDk7CCIOYXZhaWxhYmxlOwkiETIwNjAyOTYyMTUzMjsKIgt4ODZf +NjQ7CyIRYW1pLWY1MWZmMDljew47AFQ7BiIMbWFjaGluZTsHIj5lYzItcHVi +bGljLWltYWdlcy9mZWRvcmEtOC14ODZfNjQtYmFzZS12MS4xMC5tYW5pZmVz +dC54bWw7DSIRYWtpLWEzZDczN2NhOwgiDmF2YWlsYWJsZTsJIhEyMDYwMjk2 +MjE1MzI7DiIRYXJpLTdjYjk1YTE1OwoiC3g4Nl82NDsLIhFhbWktZjYxZGZk +OWZ7DjsAVDsPIjBXaW5kb3dzLVNlcnZlcjIwMDNSMi14ODZfNjQtU3FsRXhw +cmVzcy12MTA5OxAiU01pY3Jvc29mdCBXaW5kb3dzIDIwMDMgUjIgNjQtYml0 +LCBJSVMgNi4wLCBTcWwgMjAwNSBFeHByZXNzLCBBTUkgUmVsZWFzZSB2MS4w +OTsGIgxtYWNoaW5lOwciN2FtYXpvbi9XaW5kb3dzLVNlcnZlcjIwMDNSMi14 +ODZfNjQtU3FsRXhwcmVzcy12MTA5OwgiDmF2YWlsYWJsZTsJIhEyMDYwMjk2 +MjE1MzI7CiILeDg2XzY0OwsiEWFtaS1mNzFmZjA5ZXsPOwBUOwxbBiINMjFF +OUVCQzk7BiIMbWFjaGluZTsHImNlYzItcGFpZC1pYm0taW1hZ2VzLWluZm9z +cGhlcmUvaWJtLWluZm9zcGhlcmUtZGF0YXN0YWdlLXF1YWxpdHlzdGFnZS1z +ZXJ2ZXItNjRiaXQubWFuaWZlc3QueG1sOw0iEWFraS1mODU4YmE5MTsIIg5h +dmFpbGFibGU7CSIRNDcwMjU0NTM0MDI0Ow4iEWFyaS1mNDU4YmE5ZDsKIgt4 +ODZfNjQ7CyIRYW1pLWY4YWQ0MDkxew87AFQ7DFsGIg1ENjYyRTk4OTsGIgxt +YWNoaW5lOwciQmVjMi1wYWlkLWlibS1pbWFnZXMvaWJtLW1hc2h1cC1jZW50 +ZXItMi4wLTMyLWJpdC5tYW5pZmVzdC54bWw7DSIRYWtpLWY4ZjAxMjkxOwgi +DmF2YWlsYWJsZTsJIhE0NzAyNTQ1MzQwMjQ7DiIRYXJpLWZhZjAxMjkzOwoi +CWkzODY7CyIRYW1pLWZlZjAxMjk3 diff --git a/tests/ec2/support/ec2/create-public_ip_describe_instances.da39a3ee5e6b4b0d3255bfef95601890afd80709 b/tests/ec2/support/ec2/create-public_ip_describe_instances.da39a3ee5e6b4b0d3255bfef95601890afd80709 new file mode 100644 index 0000000..55a3a43 --- /dev/null +++ b/tests/ec2/support/ec2/create-public_ip_describe_instances.da39a3ee5e6b4b0d3255bfef95601890afd80709 @@ -0,0 +1,13 @@ +BAhbBnsYOhRhd3NfaW5zdGFuY2VfaWQiD2ktNzBlZTg4MWQ6FWFtaV9sYXVu +Y2hfaW5kZXgiBjA6D2F3c19ncm91cHNbBiIMZGVmYXVsdDoWYXdzX2luc3Rh +bmNlX3R5cGUiDW0xLnNtYWxsOhNhd3Nfc3RhdGVfY29kZSIHMTY6EWF3c19p +bWFnZV9pZCIRYW1pLTE2YTM1NzdmOhZhd3NfcHJvZHVjdF9jb2Rlc1sAOhph +d3NfYXZhaWxhYmlsaXR5X3pvbmUiD3VzLWVhc3QtMWE6FXByaXZhdGVfZG5z +X25hbWUiLmRvbVUtMTItMzEtMzktMEEtNDUtOTMuY29tcHV0ZS0xLmludGVy +bmFsOhthd3NfcHJpdmF0ZV9pcF9hZGRyZXNzIhExMC4yMTEuNzAuOTc6EmF3 +c19rZXJuZWxfaWQiEWFraS00MDdkOTUyOToOYXdzX3N0YXRlIgxydW5uaW5n +Og5hd3Nfb3duZXIiETI5Mzc4Nzc0OTg4NDoVbW9uaXRvcmluZ19zdGF0ZSIN +ZGlzYWJsZWQ6EXNzaF9rZXlfbmFtZSIAOg9hd3NfcmVhc29uIgA6DWRuc19u +YW1lIjBlYzItMTc0LTEyOS0xMjktMTk1LmNvbXB1dGUtMS5hbWF6b25hd3Mu +Y29tOhdhd3NfcmVzZXJ2YXRpb25faWQiD3ItMDdlMDYxNmQ6FGF3c19sYXVu +Y2hfdGltZSIdMjAxMC0xMS0xNlQxMToyNzoyNS4wMDBa diff --git a/tests/ec2/support/ec2/create-public_ip_launch_instances.c4b6748639aec6ee0563714c9b6663e90253577b b/tests/ec2/support/ec2/create-public_ip_launch_instances.c4b6748639aec6ee0563714c9b6663e90253577b new file mode 100644 index 0000000..9201f5b --- /dev/null +++ b/tests/ec2/support/ec2/create-public_ip_launch_instances.c4b6748639aec6ee0563714c9b6663e90253577b @@ -0,0 +1,11 @@ +BAhbBnsXOhRhd3NfaW5zdGFuY2VfaWQiD2ktNThlYjhkMzU6FWFtaV9sYXVu +Y2hfaW5kZXgiBjA6D2F3c19ncm91cHNbBiIMZGVmYXVsdDoWYXdzX2luc3Rh +bmNlX3R5cGUiDW0xLnNtYWxsOhNhd3Nfc3RhdGVfY29kZSIMcGVuZGluZzoR +YXdzX2ltYWdlX2lkIhFhbWktMTZhMzU3N2Y6FmF3c19wcm9kdWN0X2NvZGVz +WwA6GmF3c19hdmFpbGFiaWxpdHlfem9uZSIPdXMtZWFzdC0xYToVcHJpdmF0 +ZV9kbnNfbmFtZSIAOhJhd3Nfa2VybmVsX2lkIhFha2ktNDA3ZDk1Mjk6DmF3 +c19zdGF0ZSIMcGVuZGluZzoOYXdzX293bmVyIhEyOTM3ODc3NDk4ODQ6FW1v +bml0b3Jpbmdfc3RhdGUiDWRpc2FibGVkOhFzc2hfa2V5X25hbWUiADoPYXdz +X3JlYXNvbiIAOg1kbnNfbmFtZSIAOhdhd3NfcmVzZXJ2YXRpb25faWQiD3It +OTNlNTY0Zjk6FGF3c19sYXVuY2hfdGltZSIdMjAxMC0xMS0xNlQxMTozMjo1 +MC4wMDBa diff --git a/tests/ec2/support/ec2/launch_instances.c4b6748639aec6ee0563714c9b6663e90253577b b/tests/ec2/support/ec2/launch_instances.c4b6748639aec6ee0563714c9b6663e90253577b new file mode 100644 index 0000000..f33be34 --- /dev/null +++ b/tests/ec2/support/ec2/launch_instances.c4b6748639aec6ee0563714c9b6663e90253577b @@ -0,0 +1,11 @@ +BAhbBnsXOhRhd3NfaW5zdGFuY2VfaWQiD2ktNzBlZTg4MWQ6FWFtaV9sYXVu +Y2hfaW5kZXgiBjA6D2F3c19ncm91cHNbBiIMZGVmYXVsdDoWYXdzX2luc3Rh +bmNlX3R5cGUiDW0xLnNtYWxsOhNhd3Nfc3RhdGVfY29kZSIMcGVuZGluZzoR +YXdzX2ltYWdlX2lkIhFhbWktMTZhMzU3N2Y6FmF3c19wcm9kdWN0X2NvZGVz +WwA6GmF3c19hdmFpbGFiaWxpdHlfem9uZSIPdXMtZWFzdC0xYToVcHJpdmF0 +ZV9kbnNfbmFtZSIAOhJhd3Nfa2VybmVsX2lkIhFha2ktNDA3ZDk1Mjk6DmF3 +c19zdGF0ZSIMcGVuZGluZzoOYXdzX293bmVyIhEyOTM3ODc3NDk4ODQ6FW1v +bml0b3Jpbmdfc3RhdGUiDWRpc2FibGVkOhFzc2hfa2V5X25hbWUiADoPYXdz +X3JlYXNvbiIAOg1kbnNfbmFtZSIAOhdhd3NfcmVzZXJ2YXRpb25faWQiD3It +MDdlMDYxNmQ6FGF3c19sYXVuY2hfdGltZSIdMjAxMC0xMS0xNlQxMToyNzoy +NS4wMDBa -- 1.7.3.2