forked from External/greenlight
Merge v2.7-alpha (#1951)
* Fix wrong conditional (reported by LGTM) (#1477)
Signed-off-by: Stefan Weil <sw@weilnetz.de>
Co-authored-by: Ahmad Farhat <ahmad.af.farhat@gmail.com>
* Bump rack from 2.2.2 to 2.2.3 (#1839)
Bumps [rack](https://github.com/rack/rack) from 2.2.2 to 2.2.3.
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rack/rack/compare/v2.2.2...2.2.3)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* [FIX] Unable to edit long recording names #1776 (#1780)
* Allow to set a filter for LDAP authentication
* [FIX] Unable to edit long recording names #1776
Co-authored-by: François Ménabé <francois.menabe@unistra.fr>
Co-authored-by: farhatahmad <ahmad.af.farhat@gmail.com>
* Desgin for Manage Users Tabs (#1777)
* Update _subtitle.html.erb
* Update _manage_users_tags.html.erb
* Update admins.scss
* Update _primary_themes.scss
* Update _manage_users_tags.html.erb
* Minor style changes to manage users (#1845)
* Maintenance banner moved to admin site (#1775)
* initial
* finish
* travis fixes
* travis again
* not required
* Co-authored-by: Tobias Fiebig <t.fiebig@tudelft.nl> (#1296)
Co-authored-by: Ahmad Farhat <ahmad.af.farhat@gmail.com>
* Enhance Room OpenGraph Metadata (#1601)
* Revert "Enhance Room OpenGraph Metadata (#1601)" (#1852)
This reverts commit 3b007c233a
.
* GRN2-xx: Tab title now displays the current page name (#1853)
* Tab title now displays the current page name
* Added page title for the rest of the pages
* Split Site Settings into 3 different tabs (#1858)
* Split Site Settings into 3 different tabs
* Fix copyright
* Added redirect to correct tab
* Make sure settings are displaying when they should
* Update en.yml (#1857)
* Build images for alpha branches (#1867)
* Upgraded jquery to latest version (#1896)
* Added favicon tag (#1898)
* Fixed XSS issue with role name (#1899)
* Update path for coloring redirect (#1908)
* Added a fourth section to the room uid (#1910)
* Fixed issue with insecure room sharing removal (#1914)
* Fixes typo (#1917)
Fixes typo: successfully was written incorrect.
* Fixed order of rooms in server rooms (#1915)
* Change default room sort to latest activity (#1919)
* GRN2-xx: Small changes/improvements to the recording settings (#1851)
* Small changes/improvements to the recording settings
* Replaced room warning with info flash
* Added global setting to enable/disable the recording consent feature
* Replace Legal with Terms (#1931)
* Added a more friendly OpenGraph description when invited to join a room (#1932)
* Fixed issue causing maintenance banner not to hide correctly (#1933)
* Hide recording menu and recording list when it is disabled (#1935)
* Hide recording menu and recording list when it is disabled
* Hide recording list when disabled
* GRN2-xx: Added an auto-refresh after 2 mins while waiting for room to start (#1947)
* Added an auto-refresh after 2 mins while waiting for room to start
* Fixed random issue with test case
* GRN2-xx: Added ability to preupload presentations to rooms (#1895)
* Added ability to preupload presentations to rooms (#1868)
* Added setting to site settings and allowed admins to change the presentation
* Added AWS S3 and GCS Storage ENV variables
* Added check to ensure file extension is correct
* Added icon to remove presentation
* Added testcases for preupload
* Add nginx redirect to solve issue with relative root
* Record title, instead of room name, in the popup (#1924)
* Update _public_recording_row.html.erb
* Update _recording_row.html.erb
Co-authored-by: Stefan Weil <sw@weilnetz.de>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: beckerr-rzht <beckerr@hochschule-trier.de>
Co-authored-by: François Ménabé <francois.menabe@unistra.fr>
Co-authored-by: MrKeksi <mrkeksi@users.noreply.github.com>
Co-authored-by: yanosz <yanosz@users.noreply.github.com>
Co-authored-by: Moritz Schlarb <moschlar@metalabs.de>
Co-authored-by: chronikum <34622984+chronikum@users.noreply.github.com>
Co-authored-by: Mitsutaka Sato <miztaka@honestyworks.jp>
Co-authored-by: hiroshisuga <45039819+hiroshisuga@users.noreply.github.com>
This commit is contained in:
@ -290,12 +290,12 @@ describe AdminsController, type: :controller do
|
||||
@request.session[:user_id] = @admin.id
|
||||
fake_image_url = "example.com"
|
||||
|
||||
post :update_settings, params: { setting: "Branding Image", value: fake_image_url }
|
||||
post :update_settings, params: { setting: "Branding Image", value: fake_image_url, tab: "appearance" }
|
||||
|
||||
feature = Setting.find_by(provider: "provider1").features.find_by(name: "Branding Image")
|
||||
|
||||
expect(feature[:value]).to eq(fake_image_url)
|
||||
expect(response).to redirect_to(admin_site_settings_path)
|
||||
expect(response).to redirect_to(admin_site_settings_path(tab: "appearance"))
|
||||
end
|
||||
end
|
||||
|
||||
@ -307,12 +307,12 @@ describe AdminsController, type: :controller do
|
||||
@request.session[:user_id] = @admin.id
|
||||
fake_url = "example.com"
|
||||
|
||||
post :update_settings, params: { setting: "Legal URL", value: fake_url }
|
||||
post :update_settings, params: { setting: "Legal URL", value: fake_url, tab: "administration" }
|
||||
|
||||
feature = Setting.find_by(provider: "provider1").features.find_by(name: "Legal URL")
|
||||
|
||||
expect(feature[:value]).to eq(fake_url)
|
||||
expect(response).to redirect_to(admin_site_settings_path)
|
||||
expect(response).to redirect_to(admin_site_settings_path(tab: "administration"))
|
||||
end
|
||||
end
|
||||
|
||||
@ -324,12 +324,12 @@ describe AdminsController, type: :controller do
|
||||
@request.session[:user_id] = @admin.id
|
||||
fake_url = "example.com"
|
||||
|
||||
post :update_settings, params: { setting: "Privacy Policy URL", value: fake_url }
|
||||
post :update_settings, params: { setting: "Privacy Policy URL", value: fake_url, tab: "administration" }
|
||||
|
||||
feature = Setting.find_by(provider: "provider1").features.find_by(name: "Privacy Policy URL")
|
||||
|
||||
expect(feature[:value]).to eq(fake_url)
|
||||
expect(response).to redirect_to(admin_site_settings_path)
|
||||
expect(response).to redirect_to(admin_site_settings_path(tab: "administration"))
|
||||
end
|
||||
end
|
||||
|
||||
@ -346,7 +346,7 @@ describe AdminsController, type: :controller do
|
||||
feature = Setting.find_by(provider: "provider1").features.find_by(name: "Primary Color")
|
||||
|
||||
expect(feature[:value]).to eq(primary_color)
|
||||
expect(response).to redirect_to(admin_site_settings_path)
|
||||
expect(response).to redirect_to(admin_site_settings_path(tab: "appearance"))
|
||||
end
|
||||
|
||||
it "changes the primary-lighten on the page" do
|
||||
@ -356,12 +356,12 @@ describe AdminsController, type: :controller do
|
||||
@request.session[:user_id] = @admin.id
|
||||
primary_color = Faker::Color.hex_color
|
||||
|
||||
post :update_settings, params: { setting: "Primary Color Lighten", value: primary_color }
|
||||
post :update_settings, params: { setting: "Primary Color Lighten", value: primary_color, tab: "appearance" }
|
||||
|
||||
feature = Setting.find_by(provider: "provider1").features.find_by(name: "Primary Color Lighten")
|
||||
|
||||
expect(feature[:value]).to eq(primary_color)
|
||||
expect(response).to redirect_to(admin_site_settings_path)
|
||||
expect(response).to redirect_to(admin_site_settings_path(tab: "appearance"))
|
||||
end
|
||||
|
||||
it "changes the primary-darken on the page" do
|
||||
@ -371,12 +371,12 @@ describe AdminsController, type: :controller do
|
||||
@request.session[:user_id] = @admin.id
|
||||
primary_color = Faker::Color.hex_color
|
||||
|
||||
post :update_settings, params: { setting: "Primary Color Darken", value: primary_color }
|
||||
post :update_settings, params: { setting: "Primary Color Darken", value: primary_color, tab: "appearance" }
|
||||
|
||||
feature = Setting.find_by(provider: "provider1").features.find_by(name: "Primary Color Darken")
|
||||
|
||||
expect(feature[:value]).to eq(primary_color)
|
||||
expect(response).to redirect_to(admin_site_settings_path)
|
||||
expect(response).to redirect_to(admin_site_settings_path(tab: "appearance"))
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -396,7 +396,7 @@ describe AdminsController, type: :controller do
|
||||
|
||||
expect(feature[:value]).to eq(Rails.configuration.registration_methods[:invite])
|
||||
expect(flash[:success]).to be_present
|
||||
expect(response).to redirect_to(admin_site_settings_path)
|
||||
expect(response).to redirect_to(admin_site_settings_path(tab: "settings"))
|
||||
end
|
||||
|
||||
it "does not allow the user to change to invite if emails are off" do
|
||||
@ -409,7 +409,7 @@ describe AdminsController, type: :controller do
|
||||
post :registration_method, params: { value: "invite" }
|
||||
|
||||
expect(flash[:alert]).to be_present
|
||||
expect(response).to redirect_to(admin_site_settings_path)
|
||||
expect(response).to redirect_to(admin_site_settings_path(tab: "settings"))
|
||||
end
|
||||
end
|
||||
|
||||
@ -425,7 +425,7 @@ describe AdminsController, type: :controller do
|
||||
feature = Setting.find_by(provider: "provider1").features.find_by(name: "Room Authentication")
|
||||
|
||||
expect(feature[:value]).to eq("true")
|
||||
expect(response).to redirect_to(admin_site_settings_path)
|
||||
expect(response).to redirect_to(admin_site_settings_path(tab: "settings"))
|
||||
end
|
||||
end
|
||||
|
||||
@ -441,7 +441,7 @@ describe AdminsController, type: :controller do
|
||||
feature = Setting.find_by(provider: "provider1").features.find_by(name: "Room Limit")
|
||||
|
||||
expect(feature[:value]).to eq("5")
|
||||
expect(response).to redirect_to(admin_site_settings_path)
|
||||
expect(response).to redirect_to(admin_site_settings_path(tab: "settings"))
|
||||
end
|
||||
end
|
||||
|
||||
@ -457,7 +457,25 @@ describe AdminsController, type: :controller do
|
||||
feature = Setting.find_by(provider: "provider1").features.find_by(name: "Default Recording Visibility")
|
||||
|
||||
expect(feature[:value]).to eq("public")
|
||||
expect(response).to redirect_to(admin_site_settings_path)
|
||||
expect(response).to redirect_to(admin_site_settings_path(tab: "settings"))
|
||||
end
|
||||
end
|
||||
|
||||
context "POST #maintenance_banner" do
|
||||
it "displays a banner with the maintenance string" do
|
||||
allow(Rails.configuration).to receive(:loadbalanced_configuration).and_return(true)
|
||||
allow_any_instance_of(User).to receive(:greenlight_account?).and_return(true)
|
||||
|
||||
@request.session[:user_id] = @admin.id
|
||||
fake_banner_string = "Maintenance work at 2 pm"
|
||||
|
||||
post :update_settings, params: { setting: "Maintenance Banner", value: fake_banner_string, tab: "administration" }
|
||||
|
||||
feature = Setting.find_by(provider: "provider1").features.find_by(name: "Maintenance Banner")
|
||||
|
||||
expect(flash[:success]).to be_present
|
||||
expect(feature[:value]).to eq(fake_banner_string)
|
||||
expect(response).to redirect_to(admin_site_settings_path(tab: "administration"))
|
||||
end
|
||||
end
|
||||
|
||||
@ -473,7 +491,7 @@ describe AdminsController, type: :controller do
|
||||
feature = Setting.find_by(provider: "provider1").features.find_by(name: "Shared Access")
|
||||
|
||||
expect(feature[:value]).to eq("false")
|
||||
expect(response).to redirect_to(admin_site_settings_path)
|
||||
expect(response).to redirect_to(admin_site_settings_path(tab: "settings"))
|
||||
end
|
||||
end
|
||||
|
||||
@ -537,7 +555,7 @@ describe AdminsController, type: :controller do
|
||||
feature = Setting.find_by(provider: "provider1").features.find_by(name: "Shared Access")
|
||||
|
||||
expect(feature[:value]).to eq("false")
|
||||
expect(response).to redirect_to(admin_site_settings_path)
|
||||
expect(response).to redirect_to(admin_site_settings_path(tab: "settings"))
|
||||
end
|
||||
|
||||
it "doesn't allow a user with the incorrect permission to edit site settings" do
|
||||
|
@ -185,7 +185,7 @@ describe RoomsController, type: :controller do
|
||||
room_params = { name: name, "mute_on_join": "1",
|
||||
"require_moderator_approval": "1", "anyone_can_start": "1", "all_join_moderator": "1" }
|
||||
json_room_settings = "{\"muteOnStart\":true,\"requireModeratorApproval\":true," \
|
||||
"\"anyoneCanStart\":true,\"joinModerator\":true}"
|
||||
"\"anyoneCanStart\":true,\"joinModerator\":true,\"recording\":false}"
|
||||
|
||||
post :create, params: { room: room_params }
|
||||
|
||||
@ -202,8 +202,10 @@ describe RoomsController, type: :controller do
|
||||
@owner.main_room.update_attribute(:room_settings, { "muteOnStart": true, "requireModeratorApproval": true,
|
||||
"anyoneCanStart": true, "joinModerator": true }.to_json)
|
||||
|
||||
json_room_settings = "{\"muteOnStart\":true,\"requireModeratorApproval\":true," \
|
||||
"\"anyoneCanStart\":true,\"joinModerator\":true}"
|
||||
json_room_settings = { "anyoneCanStart" => true,
|
||||
"joinModerator" => true,
|
||||
"muteOnStart" => true,
|
||||
"requireModeratorApproval" => true }
|
||||
|
||||
get :room_settings, params: { room_uid: @owner.main_room }, format: :json
|
||||
|
||||
@ -571,7 +573,7 @@ describe RoomsController, type: :controller do
|
||||
|
||||
it "properly updates room name through the room settings modal and redirects to current page" do
|
||||
@request.session[:user_id] = @user.id
|
||||
name = Faker::Games::Pokemon.name
|
||||
name = Faker::Name.first_name
|
||||
|
||||
room_params = { room_uid: @secondary_room.uid, room: { "name": name } }
|
||||
|
||||
@ -583,9 +585,9 @@ describe RoomsController, type: :controller do
|
||||
it "properly updates room settings through the room settings modal and redirects to current page" do
|
||||
@request.session[:user_id] = @user.id
|
||||
|
||||
room_params = { "mute_on_join": "1", "name": @secondary_room.name }
|
||||
room_params = { "mute_on_join": "1", "name": @secondary_room.name, "recording": "1" }
|
||||
formatted_room_params = "{\"muteOnStart\":true,\"requireModeratorApproval\":false," \
|
||||
"\"anyoneCanStart\":false,\"joinModerator\":false}" # JSON string format
|
||||
"\"anyoneCanStart\":false,\"joinModerator\":false,\"recording\":true}" # JSON string format
|
||||
|
||||
expect { post :update_settings, params: { room_uid: @secondary_room.uid, room: room_params } }
|
||||
.to change { @secondary_room.reload.room_settings }
|
||||
@ -608,7 +610,7 @@ describe RoomsController, type: :controller do
|
||||
|
||||
room_params = { "mute_on_join": "1", "name": @secondary_room.name }
|
||||
formatted_room_params = "{\"muteOnStart\":true,\"requireModeratorApproval\":false," \
|
||||
"\"anyoneCanStart\":false,\"joinModerator\":false}" # JSON string format
|
||||
"\"anyoneCanStart\":false,\"joinModerator\":false,\"recording\":false}" # JSON string format
|
||||
|
||||
expect { post :update_settings, params: { room_uid: @secondary_room.uid, room: room_params } }
|
||||
.to change { @secondary_room.reload.room_settings }
|
||||
@ -814,4 +816,107 @@ describe RoomsController, type: :controller do
|
||||
expect(response).to redirect_to root_path
|
||||
end
|
||||
end
|
||||
|
||||
describe "POST #preupload_presentation" do
|
||||
before do
|
||||
@user = create(:user)
|
||||
@file = fixture_file_upload('files/sample.pdf', 'application/pdf')
|
||||
@invalid_file = fixture_file_upload('files/invalid.jpg', 'image/jpg')
|
||||
allow(Rails.configuration).to receive(:preupload_presentation_default).and_return("true")
|
||||
end
|
||||
|
||||
it "adds a presentation to the room" do
|
||||
@request.session[:user_id] = @user.id
|
||||
|
||||
post :preupload_presentation, params: { room_uid: @user.main_room, room: { presentation: @file } }
|
||||
|
||||
expect(@user.main_room.presentation.attached?).to be true
|
||||
expect(flash[:success]).to be_present
|
||||
expect(response).to redirect_to @user.main_room
|
||||
end
|
||||
|
||||
it "rejects file types that are not allowed" do
|
||||
@request.session[:user_id] = @user.id
|
||||
|
||||
post :preupload_presentation, params: { room_uid: @user.main_room, room: { presentation: @invalid_file } }
|
||||
|
||||
expect(@user.main_room.presentation.attached?).to be false
|
||||
expect(flash[:alert]).to be_present
|
||||
expect(response).to redirect_to @user.main_room
|
||||
end
|
||||
|
||||
it "allows admins to add a presentation to the room" do
|
||||
allow_any_instance_of(User).to receive(:admin_of?).and_return(true)
|
||||
@admin = create(:user)
|
||||
@admin.set_role :admin
|
||||
@request.session[:user_id] = @admin.id
|
||||
|
||||
post :preupload_presentation, params: { room_uid: @user.main_room, room: { presentation: @file } }
|
||||
|
||||
expect(@user.main_room.presentation.attached?).to be true
|
||||
expect(flash[:success]).to be_present
|
||||
expect(response).to redirect_to @user.main_room
|
||||
end
|
||||
|
||||
it "redirects to root path if not admin of current user" do
|
||||
allow_any_instance_of(User).to receive(:admin_of?).and_return(false)
|
||||
@admin = create(:user)
|
||||
@admin.set_role :admin
|
||||
@request.session[:user_id] = @admin.id
|
||||
|
||||
post :preupload_presentation, params: { room_uid: @user.main_room, room: { presentation: @file } }
|
||||
|
||||
expect(response).to redirect_to(root_path)
|
||||
end
|
||||
end
|
||||
|
||||
describe "POST #remove_presentation" do
|
||||
before do
|
||||
@user = create(:user)
|
||||
@user.main_room.presentation.attach(fixture_file_upload('files/sample.pdf', 'application/pdf'))
|
||||
allow(Rails.configuration).to receive(:shared_access_default).and_return("true")
|
||||
end
|
||||
|
||||
it "removes a presentation from a room" do
|
||||
@request.session[:user_id] = @user.id
|
||||
|
||||
expect(@user.main_room.presentation.attached?).to be true
|
||||
|
||||
post :remove_presentation, params: { room_uid: @user.main_room }
|
||||
|
||||
@user.main_room.reload
|
||||
|
||||
expect(@user.main_room.presentation.attached?).to be false
|
||||
expect(flash[:success]).to be_present
|
||||
expect(response).to redirect_to @user.main_room
|
||||
end
|
||||
|
||||
it "allows admins to remove a presentation from a room" do
|
||||
allow_any_instance_of(User).to receive(:admin_of?).and_return(true)
|
||||
@admin = create(:user)
|
||||
@admin.set_role :admin
|
||||
@request.session[:user_id] = @admin.id
|
||||
|
||||
expect(@user.main_room.presentation.attached?).to be true
|
||||
|
||||
post :remove_presentation, params: { room_uid: @user.main_room }
|
||||
|
||||
@user.main_room.reload
|
||||
|
||||
expect(@user.main_room.presentation.attached?).to be false
|
||||
expect(flash[:success]).to be_present
|
||||
expect(response).to redirect_to @user.main_room
|
||||
end
|
||||
|
||||
it "redirects to root path if not admin of current user" do
|
||||
allow_any_instance_of(User).to receive(:admin_of?).and_return(false)
|
||||
@admin = create(:user)
|
||||
@admin.set_role :admin
|
||||
@request.session[:user_id] = @admin.id
|
||||
|
||||
post :preupload_presentation, params: { room_uid: @user.main_room, room: { presentation: @file } }
|
||||
|
||||
expect(response).to redirect_to(root_path)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
BIN
spec/fixtures/files/invalid.jpg
vendored
Normal file
BIN
spec/fixtures/files/invalid.jpg
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 100 KiB |
198
spec/fixtures/files/sample.pdf
vendored
Normal file
198
spec/fixtures/files/sample.pdf
vendored
Normal file
@ -0,0 +1,198 @@
|
||||
%PDF-1.3
|
||||
%<25><><EFBFBD><EFBFBD>
|
||||
|
||||
1 0 obj
|
||||
<<
|
||||
/Type /Catalog
|
||||
/Outlines 2 0 R
|
||||
/Pages 3 0 R
|
||||
>>
|
||||
endobj
|
||||
|
||||
2 0 obj
|
||||
<<
|
||||
/Type /Outlines
|
||||
/Count 0
|
||||
>>
|
||||
endobj
|
||||
|
||||
3 0 obj
|
||||
<<
|
||||
/Type /Pages
|
||||
/Count 2
|
||||
/Kids [ 4 0 R 6 0 R ]
|
||||
>>
|
||||
endobj
|
||||
|
||||
4 0 obj
|
||||
<<
|
||||
/Type /Page
|
||||
/Parent 3 0 R
|
||||
/Resources <<
|
||||
/Font <<
|
||||
/F1 9 0 R
|
||||
>>
|
||||
/ProcSet 8 0 R
|
||||
>>
|
||||
/MediaBox [0 0 612.0000 792.0000]
|
||||
/Contents 5 0 R
|
||||
>>
|
||||
endobj
|
||||
|
||||
5 0 obj
|
||||
<< /Length 1074 >>
|
||||
stream
|
||||
2 J
|
||||
BT
|
||||
0 0 0 rg
|
||||
/F1 0027 Tf
|
||||
57.3750 722.2800 Td
|
||||
( A Simple PDF File ) Tj
|
||||
ET
|
||||
BT
|
||||
/F1 0010 Tf
|
||||
69.2500 688.6080 Td
|
||||
( This is a small demonstration .pdf file - ) Tj
|
||||
ET
|
||||
BT
|
||||
/F1 0010 Tf
|
||||
69.2500 664.7040 Td
|
||||
( just for use in the Virtual Mechanics tutorials. More text. And more ) Tj
|
||||
ET
|
||||
BT
|
||||
/F1 0010 Tf
|
||||
69.2500 652.7520 Td
|
||||
( text. And more text. And more text. And more text. ) Tj
|
||||
ET
|
||||
BT
|
||||
/F1 0010 Tf
|
||||
69.2500 628.8480 Td
|
||||
( And more text. And more text. And more text. And more text. And more ) Tj
|
||||
ET
|
||||
BT
|
||||
/F1 0010 Tf
|
||||
69.2500 616.8960 Td
|
||||
( text. And more text. Boring, zzzzz. And more text. And more text. And ) Tj
|
||||
ET
|
||||
BT
|
||||
/F1 0010 Tf
|
||||
69.2500 604.9440 Td
|
||||
( more text. And more text. And more text. And more text. And more text. ) Tj
|
||||
ET
|
||||
BT
|
||||
/F1 0010 Tf
|
||||
69.2500 592.9920 Td
|
||||
( And more text. And more text. ) Tj
|
||||
ET
|
||||
BT
|
||||
/F1 0010 Tf
|
||||
69.2500 569.0880 Td
|
||||
( And more text. And more text. And more text. And more text. And more ) Tj
|
||||
ET
|
||||
BT
|
||||
/F1 0010 Tf
|
||||
69.2500 557.1360 Td
|
||||
( text. And more text. And more text. Even more. Continued on page 2 ...) Tj
|
||||
ET
|
||||
endstream
|
||||
endobj
|
||||
|
||||
6 0 obj
|
||||
<<
|
||||
/Type /Page
|
||||
/Parent 3 0 R
|
||||
/Resources <<
|
||||
/Font <<
|
||||
/F1 9 0 R
|
||||
>>
|
||||
/ProcSet 8 0 R
|
||||
>>
|
||||
/MediaBox [0 0 612.0000 792.0000]
|
||||
/Contents 7 0 R
|
||||
>>
|
||||
endobj
|
||||
|
||||
7 0 obj
|
||||
<< /Length 676 >>
|
||||
stream
|
||||
2 J
|
||||
BT
|
||||
0 0 0 rg
|
||||
/F1 0027 Tf
|
||||
57.3750 722.2800 Td
|
||||
( Simple PDF File 2 ) Tj
|
||||
ET
|
||||
BT
|
||||
/F1 0010 Tf
|
||||
69.2500 688.6080 Td
|
||||
( ...continued from page 1. Yet more text. And more text. And more text. ) Tj
|
||||
ET
|
||||
BT
|
||||
/F1 0010 Tf
|
||||
69.2500 676.6560 Td
|
||||
( And more text. And more text. And more text. And more text. And more ) Tj
|
||||
ET
|
||||
BT
|
||||
/F1 0010 Tf
|
||||
69.2500 664.7040 Td
|
||||
( text. Oh, how boring typing this stuff. But not as boring as watching ) Tj
|
||||
ET
|
||||
BT
|
||||
/F1 0010 Tf
|
||||
69.2500 652.7520 Td
|
||||
( paint dry. And more text. And more text. And more text. And more text. ) Tj
|
||||
ET
|
||||
BT
|
||||
/F1 0010 Tf
|
||||
69.2500 640.8000 Td
|
||||
( Boring. More, a little more text. The end, and just as well. ) Tj
|
||||
ET
|
||||
endstream
|
||||
endobj
|
||||
|
||||
8 0 obj
|
||||
[/PDF /Text]
|
||||
endobj
|
||||
|
||||
9 0 obj
|
||||
<<
|
||||
/Type /Font
|
||||
/Subtype /Type1
|
||||
/Name /F1
|
||||
/BaseFont /Helvetica
|
||||
/Encoding /WinAnsiEncoding
|
||||
>>
|
||||
endobj
|
||||
|
||||
10 0 obj
|
||||
<<
|
||||
/Creator (Rave \(http://www.nevrona.com/rave\))
|
||||
/Producer (Nevrona Designs)
|
||||
/CreationDate (D:20060301072826)
|
||||
>>
|
||||
endobj
|
||||
|
||||
xref
|
||||
0 11
|
||||
0000000000 65535 f
|
||||
0000000019 00000 n
|
||||
0000000093 00000 n
|
||||
0000000147 00000 n
|
||||
0000000222 00000 n
|
||||
0000000390 00000 n
|
||||
0000001522 00000 n
|
||||
0000001690 00000 n
|
||||
0000002423 00000 n
|
||||
0000002456 00000 n
|
||||
0000002574 00000 n
|
||||
|
||||
trailer
|
||||
<<
|
||||
/Size 11
|
||||
/Root 1 0 R
|
||||
/Info 10 0 R
|
||||
>>
|
||||
|
||||
startxref
|
||||
2714
|
||||
%%EOF
|
Reference in New Issue
Block a user