From 0b5ea87f1147b12e586a60aa772425952bc07761 Mon Sep 17 00:00:00 2001 From: william Date: Thu, 8 Aug 2013 17:01:56 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E5=8A=A0=E5=85=A5=E4=BA=86=E5=AF=B9?= =?UTF-8?q?=E8=B5=9E=E5=8A=9F=E8=83=BD=E6=A8=A1=E5=9D=97=EF=BC=8C=E5=90=8C?= =?UTF-8?q?=E6=97=B6=E9=A2=84=E7=95=99=E4=BA=86=E8=B8=A9=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=EF=BC=8C=E4=BD=86=E6=9A=82=E6=97=B6=E4=B8=8D=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gemfile | 1 + Gemfile.lock | 4 + app/assets/javascripts/praise_tread.js | 2 + .../javascripts/rateable/jRating.js.erb | 225 ++++++++++++++++++ .../javascripts/rateable/rateable.js.erb | 25 ++ app/assets/stylesheets/praise_tread.css | 4 + app/controllers/application_controller.rb | 3 + app/controllers/praise_tread_controller.rb | 68 ++++++ app/helpers/application_helper.rb | 8 +- app/helpers/praise_tread_helper.rb | 23 ++ app/models/praise_tread.rb | 4 + app/models/praise_tread_cache.rb | 11 + app/models/user.rb | 2 +- app/views/layouts/base_users.html.erb | 9 + app/views/praise_tread/_praise.html.erb | 0 app/views/praise_tread/_praise_tread.html.erb | 17 ++ app/views/praise_tread/_tread.html.erb | 0 app/views/praise_tread/praise_minus.js.erb | 3 + app/views/praise_tread/praise_plus.js.erb | 3 + app/views/praise_tread/tread_minus.js.erb | 0 config/initializers/seems_rateable.rb | 4 + config/routes.rb | 12 +- ...30806083151_create_seems_rateable_rates.rb | 18 ++ ...52_create_seems_rateable_cached_ratings.rb | 17 ++ .../20130807021235_create_praise_treads.rb | 15 ++ ...130807021309_create_praise_tread_caches.rb | 16 ++ db/schema.rb | 41 +++- lib/plugins/seems_rateable-master/.gitignore | 21 ++ lib/plugins/seems_rateable-master/Gemfile | 23 ++ lib/plugins/seems_rateable-master/MIT-LICENSE | 20 ++ lib/plugins/seems_rateable-master/README.md | 111 +++++++++ lib/plugins/seems_rateable-master/Rakefile | 32 +++ .../images/seems_rateable/bg_jRatingInfos.png | Bin 0 -> 572 bytes .../assets/images/seems_rateable/small.png | Bin 0 -> 427 bytes .../assets/images/seems_rateable/stars.png | Bin 0 -> 1018 bytes .../javascripts/seems_rateable/application.js | 15 ++ .../seems_rateable/application.css | 62 +++++ .../seems_rateable/application_controller.rb | 4 + .../seems_rateable/ratings_controller.rb | 17 ++ .../seems_rateable/application_helper.rb | 4 + .../helpers/seems_rateable/ratings_helper.rb | 4 + .../models/seems_rateable/cached_rating.rb | 5 + .../app/models/seems_rateable/rate.rb | 6 + .../seems_rateable/application.html.erb | 14 ++ lib/plugins/seems_rateable-master/bin/rails | 8 + .../seems_rateable-master/config/routes.rb | 3 + .../install/install_generator.rb | 39 +++ .../templates/cached_ratings_migration.rb | 17 ++ .../install/templates/initializer.rb | 4 + .../install/templates/jRating.js.erb | 225 ++++++++++++++++++ .../install/templates/rateable.js.erb | 25 ++ .../install/templates/rates_migration.rb | 18 ++ .../lib/seems_rateable.rb | 14 ++ .../lib/seems_rateable/engine.rb | 17 ++ .../lib/seems_rateable/errors.rb | 21 ++ .../lib/seems_rateable/helpers.rb | 27 +++ .../lib/seems_rateable/model.rb | 111 +++++++++ .../lib/seems_rateable/routes.rb | 7 + .../lib/seems_rateable/version.rb | 3 + .../lib/tasks/seems_rateable_tasks.rake | 4 + .../seems_rateable.gemspec | 25 ++ public/images/praise.png | Bin 0 -> 3103 bytes public/images/tread.png | Bin 0 -> 3001 bytes 63 files changed, 1430 insertions(+), 11 deletions(-) create mode 100644 app/assets/javascripts/praise_tread.js create mode 100644 app/assets/javascripts/rateable/jRating.js.erb create mode 100644 app/assets/javascripts/rateable/rateable.js.erb create mode 100644 app/assets/stylesheets/praise_tread.css create mode 100644 app/controllers/praise_tread_controller.rb create mode 100644 app/helpers/praise_tread_helper.rb create mode 100644 app/models/praise_tread.rb create mode 100644 app/models/praise_tread_cache.rb create mode 100644 app/views/praise_tread/_praise.html.erb create mode 100644 app/views/praise_tread/_praise_tread.html.erb create mode 100644 app/views/praise_tread/_tread.html.erb create mode 100644 app/views/praise_tread/praise_minus.js.erb create mode 100644 app/views/praise_tread/praise_plus.js.erb create mode 100644 app/views/praise_tread/tread_minus.js.erb create mode 100644 config/initializers/seems_rateable.rb create mode 100644 db/migrate/20130806083151_create_seems_rateable_rates.rb create mode 100644 db/migrate/20130806083152_create_seems_rateable_cached_ratings.rb create mode 100644 db/migrate/20130807021235_create_praise_treads.rb create mode 100644 db/migrate/20130807021309_create_praise_tread_caches.rb create mode 100644 lib/plugins/seems_rateable-master/.gitignore create mode 100644 lib/plugins/seems_rateable-master/Gemfile create mode 100644 lib/plugins/seems_rateable-master/MIT-LICENSE create mode 100644 lib/plugins/seems_rateable-master/README.md create mode 100644 lib/plugins/seems_rateable-master/Rakefile create mode 100644 lib/plugins/seems_rateable-master/app/assets/images/seems_rateable/bg_jRatingInfos.png create mode 100644 lib/plugins/seems_rateable-master/app/assets/images/seems_rateable/small.png create mode 100644 lib/plugins/seems_rateable-master/app/assets/images/seems_rateable/stars.png create mode 100644 lib/plugins/seems_rateable-master/app/assets/javascripts/seems_rateable/application.js create mode 100644 lib/plugins/seems_rateable-master/app/assets/stylesheets/seems_rateable/application.css create mode 100644 lib/plugins/seems_rateable-master/app/controllers/seems_rateable/application_controller.rb create mode 100644 lib/plugins/seems_rateable-master/app/controllers/seems_rateable/ratings_controller.rb create mode 100644 lib/plugins/seems_rateable-master/app/helpers/seems_rateable/application_helper.rb create mode 100644 lib/plugins/seems_rateable-master/app/helpers/seems_rateable/ratings_helper.rb create mode 100644 lib/plugins/seems_rateable-master/app/models/seems_rateable/cached_rating.rb create mode 100644 lib/plugins/seems_rateable-master/app/models/seems_rateable/rate.rb create mode 100644 lib/plugins/seems_rateable-master/app/views/layouts/seems_rateable/application.html.erb create mode 100644 lib/plugins/seems_rateable-master/bin/rails create mode 100644 lib/plugins/seems_rateable-master/config/routes.rb create mode 100644 lib/plugins/seems_rateable-master/lib/generators/seems_rateable/install/install_generator.rb create mode 100644 lib/plugins/seems_rateable-master/lib/generators/seems_rateable/install/templates/cached_ratings_migration.rb create mode 100644 lib/plugins/seems_rateable-master/lib/generators/seems_rateable/install/templates/initializer.rb create mode 100644 lib/plugins/seems_rateable-master/lib/generators/seems_rateable/install/templates/jRating.js.erb create mode 100644 lib/plugins/seems_rateable-master/lib/generators/seems_rateable/install/templates/rateable.js.erb create mode 100644 lib/plugins/seems_rateable-master/lib/generators/seems_rateable/install/templates/rates_migration.rb create mode 100644 lib/plugins/seems_rateable-master/lib/seems_rateable.rb create mode 100644 lib/plugins/seems_rateable-master/lib/seems_rateable/engine.rb create mode 100644 lib/plugins/seems_rateable-master/lib/seems_rateable/errors.rb create mode 100644 lib/plugins/seems_rateable-master/lib/seems_rateable/helpers.rb create mode 100644 lib/plugins/seems_rateable-master/lib/seems_rateable/model.rb create mode 100644 lib/plugins/seems_rateable-master/lib/seems_rateable/routes.rb create mode 100644 lib/plugins/seems_rateable-master/lib/seems_rateable/version.rb create mode 100644 lib/plugins/seems_rateable-master/lib/tasks/seems_rateable_tasks.rake create mode 100644 lib/plugins/seems_rateable-master/seems_rateable.gemspec create mode 100644 public/images/praise.png create mode 100644 public/images/tread.png diff --git a/Gemfile b/Gemfile index 261b71b7d..f4decb75c 100644 --- a/Gemfile +++ b/Gemfile @@ -7,6 +7,7 @@ gem "coderay", "~> 1.0.6" gem "fastercsv", "~> 1.5.0", :platforms => [:mri_18, :mingw_18, :jruby] gem "builder", "3.0.0" gem 'acts-as-taggable-on' +gem 'seems_rateable' # Optional gem for LDAP authentication group :ldap do gem "net-ldap", "~> 0.3.1" diff --git a/Gemfile.lock b/Gemfile.lock index 99f29e915..aa29558c5 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -98,6 +98,9 @@ GEM rmagick (2.13.2) ruby-openid (2.1.8) rubyzip (0.9.9) + seems_rateable (1.0.9) + jquery-rails + rails selenium-webdriver (2.33.0) childprocess (>= 0.2.5) multi_json (~> 1.0) @@ -150,6 +153,7 @@ DEPENDENCIES rdoc (>= 2.4.2) rmagick (>= 2.0.0) ruby-openid (~> 2.1.4) + seems_rateable shoulda (~> 3.3.2) sqlite3 yard diff --git a/app/assets/javascripts/praise_tread.js b/app/assets/javascripts/praise_tread.js new file mode 100644 index 000000000..dee720fac --- /dev/null +++ b/app/assets/javascripts/praise_tread.js @@ -0,0 +1,2 @@ +// Place all the behaviors and hooks related to the matching controller here. +// All this logic will automatically be available in application.js. diff --git a/app/assets/javascripts/rateable/jRating.js.erb b/app/assets/javascripts/rateable/jRating.js.erb new file mode 100644 index 000000000..4f43a4f97 --- /dev/null +++ b/app/assets/javascripts/rateable/jRating.js.erb @@ -0,0 +1,225 @@ +/************************************************************************ +************************************************************************* +@Name : jRating - jQuery Plugin +@Revison : 3.0 +@Date : 28/01/2013 +@Author: ALPIXEL - (www.myjqueryplugins.com - www.alpixel.fr) +@License : Open Source - MIT License : http://www.opensource.org/licenses/mit-license.php + +************************************************************************** +*************************************************************************/ +(function($) { + $.fn.jRating = function(op) { + var defaults = { + /** String vars **/ + bigStarsPath : '<%= image_path "seems_rateable/stars.png" %>', // path of the icon stars.png + smallStarsPath : '<%= image_path "seems_rateable/small.png" %>', // path of the icon small.png + path : '<%= SeemsRateable::Engine.routes.url_helpers.ratings_path %>', + type : 'big', // can be set to 'small' or 'big' + + /** Boolean vars **/ + step:false, // if true, mouseover binded star by star, + isDisabled:false, + showRateInfo: false, + canRateAgain : false, + + /** Integer vars **/ + length:5, // number of star to display + decimalLength : 0, // number of decimals.. Max 3, but you can complete the function 'getNote' + rateMax : 20, // maximal rate - integer from 0 to 9999 (or more) + rateInfosX : -45, // relative position in X axis of the info box when mouseover + rateInfosY : 5, // relative position in Y axis of the info box when mouseover + nbRates : 1, + + /** Functions **/ + onSuccess : null, + onError : null + }; + + if(this.length>0) + return this.each(function() { + /*vars*/ + var opts = $.extend(defaults, op), + newWidth = 0, + starWidth = 0, + starHeight = 0, + bgPath = '', + hasRated = false, + globalWidth = 0, + nbOfRates = opts.nbRates; + + if($(this).hasClass('jDisabled') || opts.isDisabled) + var jDisabled = true; + else + var jDisabled = false; + + getStarWidth(); + $(this).height(starHeight); + + + + var average = parseFloat($(this).attr('data-average')), // get the average of all rates + idBox = parseInt($(this).attr('data-id')), // get the id of the box + kls = $(this).attr('data-kls'), + dimension = $(this).attr('data-dimension'), + widthRatingContainer = starWidth*opts.length, // Width of the Container + widthColor = average/opts.rateMax*widthRatingContainer, // Width of the color Container + quotient = + $('
', + { + 'class' : 'jRatingColor', + css:{ + width:widthColor + } + }).appendTo($(this)), + + average = + $('
', + { + 'class' : 'jRatingAverage', + css:{ + width:0, + top:- starHeight + } + }).appendTo($(this)), + + jstar = + $('
', + { + 'class' : 'jStar', + css:{ + width:widthRatingContainer, + height:starHeight, + top:- (starHeight*2), + background: 'url('+bgPath+') repeat-x' + } + }).appendTo($(this)); + + $(this).css({width: widthRatingContainer,overflow:'hidden',zIndex:1,position:'relative'}); + + if(!jDisabled) + $(this).unbind().bind({ + mouseenter : function(e){ + var realOffsetLeft = findRealLeft(this); + var relativeX = e.pageX - realOffsetLeft; + if (opts.showRateInfo) + var tooltip = + $('

',{ + 'class' : 'jRatingInfos', + html : getNote(relativeX)+' / '+opts.rateMax+'', + css : { + top: (e.pageY + opts.rateInfosY), + left: (e.pageX + opts.rateInfosX) + } + }).appendTo('body').show(); + }, + mouseover : function(e){ + $(this).css('cursor','pointer'); + }, + mouseout : function(){ + $(this).css('cursor','default'); + if(hasRated) average.width(globalWidth); + else average.width(0); + }, + mousemove : function(e){ + var realOffsetLeft = findRealLeft(this); + var relativeX = e.pageX - realOffsetLeft; + if(opts.step) newWidth = Math.floor(relativeX/starWidth)*starWidth + starWidth; + else newWidth = relativeX; + average.width(newWidth); + if (opts.showRateInfo) + $("p.jRatingInfos") + .css({ + left: (e.pageX + opts.rateInfosX) + }) + .html(getNote(newWidth) +' / '+opts.rateMax+''); + }, + mouseleave : function(){ + $("p.jRatingInfos").remove(); + }, + click : function(e){ + var element = this; + + /*set vars*/ + hasRated = true; + globalWidth = newWidth; + nbOfRates--; + + if(!opts.canRateAgain || parseInt(nbOfRates) <= 0) $(this).unbind().css('cursor','default').addClass('jDisabled'); + + if (opts.showRateInfo) $("p.jRatingInfos").fadeOut('fast',function(){$(this).remove();}); + e.preventDefault(); + var rate = getNote(newWidth); + average.width(newWidth); + + + $.post(defaults.path, + { + idBox : idBox, + rate : rate, + kls : kls, + dimension : dimension + /** action : 'rating' **/ + }, + function(data) { + if(!data.error) + { + /** Here you can display an alert box, + or use the jNotify Plugin :) http://www.myqjqueryplugins.com/jNotify + exemple : */ + if(opts.onSuccess) opts.onSuccess( element, rate ); + } + else + { + + /** Here you can display an alert box, + or use the jNotify Plugin :) http://www.myqjqueryplugins.com/jNotify + exemple : */ + if(opts.onError) opts.onError( element, rate ); + } + }, + 'json' + ); + } + }); + + function getNote(relativeX) { + var noteBrut = parseFloat((relativeX*100/widthRatingContainer)*opts.rateMax/100); + switch(opts.decimalLength) { + case 1 : + var note = Math.round(noteBrut*10)/10; + break; + case 2 : + var note = Math.round(noteBrut*100)/100; + break; + case 3 : + var note = Math.round(noteBrut*1000)/1000; + break; + default : + var note = Math.round(noteBrut*1)/1; + } + return note; + }; + + function getStarWidth(){ + switch(opts.type) { + case 'small' : + starWidth = 12; // width of the picture small.png + starHeight = 10; // height of the picture small.png + bgPath = opts.smallStarsPath; + break; + default : + starWidth = 23; // width of the picture stars.png + starHeight = 20; // height of the picture stars.png + bgPath = opts.bigStarsPath; + } + }; + + function findRealLeft(obj) { + if( !obj ) return 0; + return obj.offsetLeft + findRealLeft( obj.offsetParent ); + }; + }); + + } +})(jQuery); diff --git a/app/assets/javascripts/rateable/rateable.js.erb b/app/assets/javascripts/rateable/rateable.js.erb new file mode 100644 index 000000000..da6cc3097 --- /dev/null +++ b/app/assets/javascripts/rateable/rateable.js.erb @@ -0,0 +1,25 @@ +$(document).ready(function(){ + $(".rateable").jRating({ + //default options displayed below -> + + rateMax: 5, //Maximal rate + length : 5, //Number of stars + //decimalLength : 0, //Number of decimals in the rate + //type : 'big', //Big or small + //step : true, //If set to true, filling of the stars is done star by star (step by step). + //isDisabled: false, //Set true to display static rating + //showRateInfo:false, //Rate info panel, set true to display + //rateInfosX : 45, //In pixel - Absolute left position of the information box during mousemove. + //rateInfosY : 5, //In pixel - Absolute top position of the information box during mousemove. + path : '<%= SeemsRateable::Engine.routes.url_helpers.ratings_path %>', + onSuccess : function(element, rate){ + //something like -> + //alert('success'); + $('Thanks for rating!').insertAfter(element) + }, + onError : function(element, rate) { + $('You have already rated!').insertAfter(element) + } + }); + +}); diff --git a/app/assets/stylesheets/praise_tread.css b/app/assets/stylesheets/praise_tread.css new file mode 100644 index 000000000..afad32db0 --- /dev/null +++ b/app/assets/stylesheets/praise_tread.css @@ -0,0 +1,4 @@ +/* + Place all the styles related to the matching controller here. + They will automatically be included in application.css. +*/ diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 2a4b5fb53..f57983e30 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -95,6 +95,9 @@ class ApplicationController < ActionController::Base # Returns the current user or nil if no user is logged in # and starts a session if needed + def current_user + find_current_user + end def find_current_user user = nil unless api_request? diff --git a/app/controllers/praise_tread_controller.rb b/app/controllers/praise_tread_controller.rb new file mode 100644 index 000000000..528011102 --- /dev/null +++ b/app/controllers/praise_tread_controller.rb @@ -0,0 +1,68 @@ +class PraiseTreadController < ApplicationController + + def praise_plus + @obj = nil + if request.get? + @obj = params[:obj] # 传的是对象,最后变成id了 + + #首先创建或更新praise_tread 表 + @pt = PraiseTread.find_by_user_id_and_praise_tread_object_id(User.current.id,@obj) + @pt = @pt.nil? ? PraiseTread.new : @pt + + @pt.user_id = User.current.id + @pt.praise_tread_object_id = @obj.to_i + @pt.praise_tread_object_type = User.find_by_id(@obj).class.name.underscore + @pt.praise_or_tread = 1 + @pt.save + + #再创建或更新praise_tread_cache表 + @ptc = PraiseTreadCache.find_by_object_id(@obj) + @ptc = @ptc.nil? ? PraiseTreadCache.new : @ptc + @ptc.object_id = @obj.to_i + @ptc.object_type = User.find_by_id(@obj).class.name.underscore + @ptc.plus(1) + @ptc.save + end + @obj = User.find_by_id(@obj) + respond_to do |format| + format.html + format.js + end + end + + def praise_minus + @obj = nil + if request.get? + @obj = params[:obj] # 传的是对象,最后变成id了 + + #首先更新praise_tread 表 删除关注记录 + @pt = PraiseTread.find_by_user_id_and_praise_tread_object_id_and_praise_tread_object_type(User.current.id,@obj,"user") + @pt.delete + + #再更新praise_tread_cache表 使相应的记录减1 当为0时删除 + @ptc = PraiseTreadCache.find_by_object_id(@obj) + @ptc.minus(1) + if @ptc.praise_num == 0 + @ptc.delete + end + + end + @obj = User.find_by_id(@obj) + respond_to do |format| + format.html + format.js + end + end + + def tread_plus + + end + + def tread_minus + respond_to do |format| + format.html + format.js + end + end + +end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 8d14e63f7..9935b577d 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -26,12 +26,8 @@ module ApplicationHelper include GravatarHelper::PublicMethods include Redmine::Pagination::Helper include AvatarHelper - - ### added by william - include ActsAsTaggableOn::TagsHelper - # include WatchersHelper - - + include PraiseTreadHelper + extend Forwardable def_delegators :wiki_helper, :wikitoolbar_for, :heads_for_wiki_formatter diff --git a/app/helpers/praise_tread_helper.rb b/app/helpers/praise_tread_helper.rb new file mode 100644 index 000000000..9b2eba969 --- /dev/null +++ b/app/helpers/praise_tread_helper.rb @@ -0,0 +1,23 @@ +module PraiseTreadHelper + #added by william + def is_praise_or_tread(object,user_id) + @obj_type = object.class.name.underscore + @obj_id = object.id + @is_praise = PraiseTread.find_by_sql("select * from praise_treads where user_id=#{user_id} and " + + "praise_tread_object_type='#{@obj_type}' and praise_tread_object_id=#{@obj_id} ") + return @is_praise + end + #end + + def get_praise_num(object) + @obj_type = object.class.name.underscore + @obj_id = object.id + @record = PraiseTreadCache.find_by_object_id_and_object_type(@obj_id,@obj_type) + if @record + return @record.praise_num + else + return 0 + end + end + +end diff --git a/app/models/praise_tread.rb b/app/models/praise_tread.rb new file mode 100644 index 000000000..901a31660 --- /dev/null +++ b/app/models/praise_tread.rb @@ -0,0 +1,4 @@ +class PraiseTread < ActiveRecord::Base + attr_accessible :user_id,:praise_tread_object_id,:praise_tread_object_type,:praise_or_tread + +end diff --git a/app/models/praise_tread_cache.rb b/app/models/praise_tread_cache.rb new file mode 100644 index 000000000..330e197cf --- /dev/null +++ b/app/models/praise_tread_cache.rb @@ -0,0 +1,11 @@ +class PraiseTreadCache < ActiveRecord::Base + attr_accessible :object_id,:object_type,:praise_num,:tread_num + + def plus(num) + self.update_attribute(:praise_num, self.praise_num.to_i + num) + end + + def minus(num) + self.update_attribute(:praise_num, self.praise_num.to_i - num) + end +end diff --git a/app/models/user.rb b/app/models/user.rb index 6e720c06d..8050082a8 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -103,7 +103,7 @@ class User < Principal acts_as_customizable ############################added by william acts_as_taggable - + seems_rateable ############################# added by liuping 关注 acts_as_watchable diff --git a/app/views/layouts/base_users.html.erb b/app/views/layouts/base_users.html.erb index 985fdc909..f6abf5e6b 100644 --- a/app/views/layouts/base_users.html.erb +++ b/app/views/layouts/base_users.html.erb @@ -9,7 +9,11 @@ <%= favicon %> <%= stylesheet_link_tag 'jquery/jquery-ui-1.9.2', 'application', :media => 'all' %> <%= stylesheet_link_tag 'rtl', :media => 'all' if l(:direction) == 'rtl' %> + + <%= seems_rateable_stylesheet %> + <%= javascript_heads %> + <%= heads_for_theme %> <%= call_hook :view_layouts_base_html_head %> @@ -44,6 +48,11 @@ + +

+ <%= render :partial => "/praise_tread/praise_tread",:locals => {:obj => @user,:show_flag => false,:user_id => User.current.id}%> +
+
<%= l(:label_user_watcher) %> (<%= User.watched_by(@user.id).count %>)   <%= l(:label_user_fans) %> (<%= @user.watcher_users.count %>) diff --git a/app/views/praise_tread/_praise.html.erb b/app/views/praise_tread/_praise.html.erb new file mode 100644 index 000000000..e69de29bb diff --git a/app/views/praise_tread/_praise_tread.html.erb b/app/views/praise_tread/_praise_tread.html.erb new file mode 100644 index 000000000..c579df7fc --- /dev/null +++ b/app/views/praise_tread/_praise_tread.html.erb @@ -0,0 +1,17 @@ +
+ <% if is_praise_or_tread(obj,user_id).size > 0 %> + <%= image_tag("/images/praise.png") %> + <%= link_to "取消贊",:controller=>"praise_tread",:action=>"praise_minus",:remote=>true,:obj => obj %> + (<%= get_praise_num(obj)%>) + <% else %> + <%= image_tag("/images/tread.png") %> + <%= link_to "贊",:controller=>"praise_tread",:action=>"praise_plus",:remote=>true,:obj => obj %> + (<%= get_praise_num(obj)%>) + <% end %> +
+<% if show_flag %> +
+ <%= link_to image_tag("/images/tread.png"),:controller=>"praise_tread", + :action=>"tread_minus",:remote=>true,:obj => obj %>踩 +
+<% end %> diff --git a/app/views/praise_tread/_tread.html.erb b/app/views/praise_tread/_tread.html.erb new file mode 100644 index 000000000..e69de29bb diff --git a/app/views/praise_tread/praise_minus.js.erb b/app/views/praise_tread/praise_minus.js.erb new file mode 100644 index 000000000..74f7d6bfe --- /dev/null +++ b/app/views/praise_tread/praise_minus.js.erb @@ -0,0 +1,3 @@ +$('#praise_tread').html('<%= j( +render :partial => "/praise_tread/praise_tread",:locals => {:obj => @obj,:show_flag => false,:user_id => User.current.id} +)%>'); diff --git a/app/views/praise_tread/praise_plus.js.erb b/app/views/praise_tread/praise_plus.js.erb new file mode 100644 index 000000000..74f7d6bfe --- /dev/null +++ b/app/views/praise_tread/praise_plus.js.erb @@ -0,0 +1,3 @@ +$('#praise_tread').html('<%= j( +render :partial => "/praise_tread/praise_tread",:locals => {:obj => @obj,:show_flag => false,:user_id => User.current.id} +)%>'); diff --git a/app/views/praise_tread/tread_minus.js.erb b/app/views/praise_tread/tread_minus.js.erb new file mode 100644 index 000000000..e69de29bb diff --git a/config/initializers/seems_rateable.rb b/config/initializers/seems_rateable.rb new file mode 100644 index 000000000..2391948fa --- /dev/null +++ b/config/initializers/seems_rateable.rb @@ -0,0 +1,4 @@ +#SeemsRateable engine Initializer + +#Configure owner class of the given ratings +SeemsRateable::Engine.config.owner_class = "User" diff --git a/config/routes.rb b/config/routes.rb index 59189de89..d43a594fa 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -17,11 +17,13 @@ RedmineApp::Application.routes.draw do resources :shares - - + get "tags/index" get "tags/show" + get "praise_tread/praise_plus" + get "praise_tread/praise_minus" + get "praise_tread/tread_minus" root :to => 'welcome#index', :as => 'home' @@ -95,7 +97,7 @@ RedmineApp::Application.routes.draw do match 'users/:id/memberships/:membership_id', :to => 'users#edit_membership', :via => :put, :as => 'user_membership' match 'users/:id/memberships/:membership_id', :to => 'users#destroy_membership', :via => :delete match 'users/:id/memberships', :to => 'users#edit_membership', :via => :post, :as => 'user_memberships' - ################# added by william + ################# added by william match 'users/tag_save', :to => 'users#tag_save', :via => :post, :as => 'tag' post 'watchers/watch', :to => 'watchers#watch', :as => 'watch' @@ -422,8 +424,12 @@ RedmineApp::Application.routes.draw do match 'bids/:id', :controller => 'bids', :action => 'show', :as => 'respond' + + ########### added by liuping match 'tags/add_tag',:to => 'tags#add_tag',:as=>"add_tag" match 'tags/delete_tag',:to => 'tags#delete_tag',:as=>"add_tag" + match 'parise_tread/praise_plus',:to => 'parise_tread#praise_plus',:as=>"praise" + match 'parise_tread/tread_minus',:to => 'parise_tread#tread_minus',:as=>"tread" end diff --git a/db/migrate/20130806083151_create_seems_rateable_rates.rb b/db/migrate/20130806083151_create_seems_rateable_rates.rb new file mode 100644 index 000000000..40303f11c --- /dev/null +++ b/db/migrate/20130806083151_create_seems_rateable_rates.rb @@ -0,0 +1,18 @@ +class CreateSeemsRateableRates < ActiveRecord::Migration + def self.up + create_table :seems_rateable_rates do |t| + t.belongs_to :rater + t.belongs_to :rateable, :polymorphic => true + t.float :stars, :null => false + t.integer :rater_id, :limit => 8 + t.integer :rateable_id + t.string :rateable_type + t.string :dimension + t.timestamps + end + end + + def self.down + drop_table :rates + end +end diff --git a/db/migrate/20130806083152_create_seems_rateable_cached_ratings.rb b/db/migrate/20130806083152_create_seems_rateable_cached_ratings.rb new file mode 100644 index 000000000..1b91bdadc --- /dev/null +++ b/db/migrate/20130806083152_create_seems_rateable_cached_ratings.rb @@ -0,0 +1,17 @@ +class CreateSeemsRateableCachedRatings < ActiveRecord::Migration + def self.up + create_table :seems_rateable_cached_ratings do |t| + t.belongs_to :cacheable, :polymorphic => true + t.float :avg, :null => false + t.integer :cnt, :null => false + t.string :dimension + t.integer :cacheable_id, :limit => 8 + t.string :cacheable_type + t.timestamps + end + end + + def self.down + drop_table :cached_ratings + end +end diff --git a/db/migrate/20130807021235_create_praise_treads.rb b/db/migrate/20130807021235_create_praise_treads.rb new file mode 100644 index 000000000..a30c11520 --- /dev/null +++ b/db/migrate/20130807021235_create_praise_treads.rb @@ -0,0 +1,15 @@ +class CreatePraiseTreads < ActiveRecord::Migration + def self.up + create_table :praise_treads do |t| + t.column :user_id,:integer,:null => false + t.column :praise_tread_object_id,:integer + t.column :praise_tread_object_type,:string + t.column :praise_or_tread,:integer + t.timestamps + end + end + + def self.down + drop_table :praise_treads + end +end diff --git a/db/migrate/20130807021309_create_praise_tread_caches.rb b/db/migrate/20130807021309_create_praise_tread_caches.rb new file mode 100644 index 000000000..423286f45 --- /dev/null +++ b/db/migrate/20130807021309_create_praise_tread_caches.rb @@ -0,0 +1,16 @@ +class CreatePraiseTreadCaches < ActiveRecord::Migration + def self.up + create_table :praise_tread_caches do |t| + t.column :object_id,:integer,:null => false + t.column :object_type,:string + t.column :praise_num,:integer + t.column :tread_num,:integer + + t.timestamps + end + end + + def self.down + drop_table :praise_tread_caches + end +end diff --git a/db/schema.rb b/db/schema.rb index 34ef17bd4..b0cf92655 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20130805131602) do +ActiveRecord::Schema.define(:version => 20130807021309) do create_table "a_user_watchers", :force => true do |t| t.string "name" @@ -432,6 +432,24 @@ ActiveRecord::Schema.define(:version => 20130805131602) do t.string "salt", :null => false end + create_table "praise_tread_caches", :force => true do |t| + t.integer "object_id", :null => false + t.string "object_type" + t.integer "praise_num" + t.integer "tread_num" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "praise_treads", :force => true do |t| + t.integer "user_id", :null => false + t.integer "praise_tread_object_id" + t.string "praise_tread_object_type" + t.integer "praise_or_tread" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + create_table "project_tags", :force => true do |t| t.integer "project_id" t.integer "tag_id" @@ -507,6 +525,26 @@ ActiveRecord::Schema.define(:version => 20130805131602) do t.string "issues_visibility", :limit => 30, :default => "default", :null => false end + create_table "seems_rateable_cached_ratings", :force => true do |t| + t.integer "cacheable_id", :limit => 8 + t.string "cacheable_type" + t.float "avg", :null => false + t.integer "cnt", :null => false + t.string "dimension" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "seems_rateable_rates", :force => true do |t| + t.integer "rater_id", :limit => 8 + t.integer "rateable_id" + t.string "rateable_type" + t.float "stars", :null => false + t.string "dimension" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + create_table "settings", :force => true do |t| t.string "name", :default => "", :null => false t.text "value" @@ -522,6 +560,7 @@ ActiveRecord::Schema.define(:version => 20130805131602) do t.string "url" t.datetime "created_at", :null => false t.datetime "updated_at", :null => false + t.integer "project_id" end create_table "students", :force => true do |t| diff --git a/lib/plugins/seems_rateable-master/.gitignore b/lib/plugins/seems_rateable-master/.gitignore new file mode 100644 index 000000000..f372f8d4f --- /dev/null +++ b/lib/plugins/seems_rateable-master/.gitignore @@ -0,0 +1,21 @@ +*.gem +*.rbc +.bundle +.config +.yardoc +Gemfile.lock +InstalledFiles +_yardoc +coverage +doc/ +lib/bundler/man +pkg +rdoc +spec/reports +test/tmp +test/version_tmp +tmp +.project +.rvmrc +spec +test diff --git a/lib/plugins/seems_rateable-master/Gemfile b/lib/plugins/seems_rateable-master/Gemfile new file mode 100644 index 000000000..a1025271a --- /dev/null +++ b/lib/plugins/seems_rateable-master/Gemfile @@ -0,0 +1,23 @@ +source "https://rubygems.org" + +# Declare your gem's dependencies in seems_rateable.gemspec. +# Bundler will treat runtime dependencies like base dependencies, and +# development dependencies will be added by default to the :development group. +gemspec + +# Declare any dependencies that are still in development here instead of in +# your gemspec. These might include edge Rails or gems from your path or +# Git. Remember to move these dependencies to your gemspec before releasing +# your gem to rubygems.org. + +# To use debugger +# gem 'debugger' + + +group :development do + gem 'sqlite3' + gem 'jquery-rails' + gem 'twitter-bootstrap-rails' + gem 'sorcery' +end + diff --git a/lib/plugins/seems_rateable-master/MIT-LICENSE b/lib/plugins/seems_rateable-master/MIT-LICENSE new file mode 100644 index 000000000..5146945d9 --- /dev/null +++ b/lib/plugins/seems_rateable-master/MIT-LICENSE @@ -0,0 +1,20 @@ +Copyright 2013 YOURNAME + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/lib/plugins/seems_rateable-master/README.md b/lib/plugins/seems_rateable-master/README.md new file mode 100644 index 000000000..3e78d0250 --- /dev/null +++ b/lib/plugins/seems_rateable-master/README.md @@ -0,0 +1,111 @@ +# SeemsRateable + +Star rating gem for Rails application using jQuery plugin jRating + +## Demo + +Demo application, requires to sign up before rating + +## Instructions + +### Installation + +Add this line to your application's Gemfile: + + gem 'seems_rateable' + +And then execute: + + $ bundle + +Or install it yourself as: + + $ gem install seems_rateable + +### Generation + + $ rails generate seems_rateable:install + +Generator creates migration files, javascript files and initializer + +### Prepare + +Require javascript files by adding this line to application.js + + #application.js + //= require_directory ./rateable + +Add seems_rateable to routes.rb file + +Include stylesheet adding <%= seems_rateable_stylesheet %> to your layout header + +Also make sure you have an existing current_user helper method + +Don't forget to run + + $ rake db:migrate + +To prepare model add seems_rateable to your rateable model file. You can also pass a hash of options to +customize the functionality + +
    +
  • :dimensionsArray of dimensions e.g :dimensions => [:quality, :quantity]
  • +
  • :allow_updateAllowing user to re-rate his own ratings, default set to false e.g :allow_update=> true
  • +
+ + class Post < ActiveRecord::Base + seems_rateable :allow_update => true, :dimensions => [:quality, :length] + end + +To access object's rates use rates method, to get dimension rates pass an argument eg : + + @object.rates + @object.rates(:quality) + @object.rates(:quantity) + +This also applies to cached average rating e.g + + @object.average + @object.average(:quality) + @object.average(:quantity) + +And to object's raters e.g + + @object.raters + @object.raters(:quality) + @object.raters(:quantity) + +To track user's given ratings add seems_rateable_rater to your rater model. +If your rater class is not "User"(e.g "Client" or "Customer") change configuration in initializer generated by this engine. +Now you can access user's ratings by @user.ratings_given + +### Usage + +To display star rating use helper method rating_for in your view + + #index.html.erb + + rating_for @post + + rating_for @post, :dimension => :quality, :class => 'post', :id => 'list' + + rating_for @post, :static => true + +You can specify these options : +
    +
  • :dimensionThe dimension of the object
  • +
  • :staticSet to true to display static star rating, default false
  • +
  • :classClass of the div, default set to 'rateable'
  • +
  • :idID of the div e.g :id => "info", default nil
  • +
+ +To edit the javascript options locate rateable.js file in /app/assets/javascripts/rateable/. +The javascript options are explained directly in the file + +## Contributing + +1. Fork it +2. Create your feature branch (`git checkout -b my-new-feature`) +3. Commit your changes (`git commit -am 'Add some feature'`) +4. Push to the branch (`git push origin my-new-feature`) +5. Create new Pull Request diff --git a/lib/plugins/seems_rateable-master/Rakefile b/lib/plugins/seems_rateable-master/Rakefile new file mode 100644 index 000000000..c2ef03737 --- /dev/null +++ b/lib/plugins/seems_rateable-master/Rakefile @@ -0,0 +1,32 @@ +begin + require 'bundler/setup' +rescue LoadError + puts 'You must `gem install bundler` and `bundle install` to run rake tasks' +end + +require 'rdoc/task' + +RDoc::Task.new(:rdoc) do |rdoc| + rdoc.rdoc_dir = 'rdoc' + rdoc.title = 'SeemsRateable' + rdoc.options << '--line-numbers' + rdoc.rdoc_files.include('README.rdoc') + rdoc.rdoc_files.include('lib/**/*.rb') +end + +APP_RAKEFILE = File.expand_path("../spec/dummy/Rakefile", __FILE__) +load 'rails/tasks/engine.rake' +Bundler::GemHelper.install_tasks + +APP_RAKEFILE = File.expand_path("../spec/dummy/Rakefile", __FILE__) +load 'rails/tasks/engine.rake' + +Dir[File.join(File.dirname(__FILE__), 'tasks/**/*.rake')].each {|f| load f } +require 'rspec/core' +require 'rspec/core/rake_task' + +task :default => :spec + + + + diff --git a/lib/plugins/seems_rateable-master/app/assets/images/seems_rateable/bg_jRatingInfos.png b/lib/plugins/seems_rateable-master/app/assets/images/seems_rateable/bg_jRatingInfos.png new file mode 100644 index 0000000000000000000000000000000000000000..af5bf556e15c884bc24c0ab00537123d373bbcc9 GIT binary patch literal 572 zcmV-C0>k}@P)V!IyWhyxINQN4+b0cZ8;>G@@1HMkvg zce~v)5k0ukBUEc;t(9r%=82o%)PBEzW#-ZNee4$xhXYkr1yWbm>2#vS&w{4YX-{kY zXpG6T{!M=~yc-r}S<>ulM(g#O+#+aQSy`4*r_-UjuKlR$YO5%tV)MJ9`S;v|Zf-Ar7!Jz)q)Zz>W|5 z?AaV(GpIy^O`fmfplXJ)qtX_Gc%MO5w~LuWhY{7 zFKL94MxvG#zCLGj$k_~K#}l@7J{{5sA^N3BBe0P~Hgf5WV1taSZ0i$=l1So}jp!Fo z+4juWM?XR%D!Q_L^h1j^(FRHK@_+z41#ChZNuEYHbp7DjNjw`5H7Ooy@WMBpXE*0Y zIA<46n83R| zHOo0aU28g3NBL_ap8eurclA-hC)PLWUpbaRcbdp3*ocB+SQLkB+eWNX45a&|L zu&Sy#RGvCc7gK8W5i+F^S+rcLv1N5mEXz8!ZTo=Lb(JMact4pO?rDw2V8Ve6ytM1` zF2*=0isT`V<2y(=!p%U?uP;RU$ocL$A;bZ$%4@Bal;yh+VmKO&Z$US!i0iuhj9J$Z z7mP6iL=7pWswnc_U@*LCP1xTsm=H?Afe;N`fMmlQ3|cb4c1!;WbuB|HM>?Bi4 zQQNc?)dFe-Ef-bQX@N~}3lhHoY1iCvv!Ag`?hpcQxR?;)el&EOMn_dx$D(xoP}4Mt z+kDtfZO8U8kK3jj+e9O6M>>i9`kd#y@AEw8B>@IAz-TlY-wA?{&@}BcX28J?vdDGa zt#bLvubZ3YUnr%`Hwhl>?CktFKK?eNC{m|ZtNrxGz>klu)p~vJZ$;5E+3aw-RQjig zN-D1n4msR%x%9)t#JK2rj7TYwa=B5uwYBwa`1!TKbzQ&BF#et_D@n*s7>2OvbVh5n z4%Q9BSh@(D^xfilUcJ}rRc+he?{>S}&1Q4kvbvS2sdp5P6Xd?9Se7u3V;QAV+19kw zXfm11$+Db_Mx#S;(=gBTnRD>{{r&GD*b2|Hrteb|3oKPlu*swxjlx+5`U}$K_<2bgf>$Td-%3sNunVG3`T0p~}%gc9e&CY%x zh@z~7{Icwc9AY>DF5sU#6VVT?kJ$?ar!-(Vj-iIpY(IMRL@X3OzA1|0_bUMEm zi+8?RSeTatK}us&5}+~;;V|(?*i!?Y4pivj*8~-YX}0wT5B>9$VHC07)VQ#sI%;fa&9zVg{!%jz>&2j22y9zUu?{tLK4VvZAW0AI;BS z`C?x8NhA_;16?9qZ8Roo^E@X!vmQCGp#K~W*jBXd<1TDy4g~HvPDc6TbJmG}Z{X9~224yb7FuF<@Dij@uUc9GNnH5O^KKXdgU%x^1Bvf<7Zhqp=JQ zR6-lZ<1&vuHE{m!h2Td=<{?@uDstP^YQ4U@Tj_y-(R@B%K!(o4hiktH0@*+VlW+?! z$+Cn!M|wJ)zBuznqrPWZjpo|gV|Qd^;&MJea}^su1kYUP^=vk~h=z8*R4Ntk-Mhb$ zN=aSU<*Q?3WB(71=4Ey|CiOfaKQ}iwuW9NCL{m_96;_O%2tcW$C`xX6dOCf0IJ~*K ox_XyoyAI+m1Q(vi`&WPg02xTa4XYF-ng9R*07*qoM6N<$g5Sm5VgLXD literal 0 HcmV?d00001 diff --git a/lib/plugins/seems_rateable-master/app/assets/javascripts/seems_rateable/application.js b/lib/plugins/seems_rateable-master/app/assets/javascripts/seems_rateable/application.js new file mode 100644 index 000000000..806c8cc06 --- /dev/null +++ b/lib/plugins/seems_rateable-master/app/assets/javascripts/seems_rateable/application.js @@ -0,0 +1,15 @@ +// This is a manifest file that'll be compiled into application.js, which will include all the files +// listed below. +// +// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts, +// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path. +// +// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the +// compiled file. +// +// Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details +// about supported directives. + +//= require_tree . + + diff --git a/lib/plugins/seems_rateable-master/app/assets/stylesheets/seems_rateable/application.css b/lib/plugins/seems_rateable-master/app/assets/stylesheets/seems_rateable/application.css new file mode 100644 index 000000000..64099e546 --- /dev/null +++ b/lib/plugins/seems_rateable-master/app/assets/stylesheets/seems_rateable/application.css @@ -0,0 +1,62 @@ +/* + * This is a manifest file that'll be compiled into application.css, which will include all the files + * listed below. + * + * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets, + * or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path. + * + * You're free to add application-wide styles to this file and they'll appear at the top of the + * compiled file, but it's generally better to create a new file per style scope. + * + *= require_self + *= require_tree . + */ + +/*********************/ +/** jRating CSS **/ +/*********************/ + +/**Div containing the color of the stars */ + + +.jRatingAverage { + background-color:#f62929; + position:relative; + top:0; + left:0; + z-index:2; + height:100%; +} +.jRatingColor { + background-color:#FFD400; /* bgcolor of the stars*/ + position:relative; + top:0; + left:0; + z-index:2; + height:100%; +} + +/** Div containing the stars **/ +.jStar { + position:relative; + left:0; + z-index:3; +} + +/** P containing the rate informations **/ +p.jRatingInfos { + position: absolute; + z-index:9999; + background: transparent url('bg_jRatingInfos.png') no-repeat; + color: #CACACA; + display: none; + width: 91px; + height: 29px; + font-size:16px; + text-align:center; + padding-top:5px; +} +p.jRatingInfos span.maxRate { + color:#c9c9c9; + font-size:14px; +} diff --git a/lib/plugins/seems_rateable-master/app/controllers/seems_rateable/application_controller.rb b/lib/plugins/seems_rateable-master/app/controllers/seems_rateable/application_controller.rb new file mode 100644 index 000000000..cd94242dd --- /dev/null +++ b/lib/plugins/seems_rateable-master/app/controllers/seems_rateable/application_controller.rb @@ -0,0 +1,4 @@ +module SeemsRateable + class ApplicationController < ActionController::Base + end +end diff --git a/lib/plugins/seems_rateable-master/app/controllers/seems_rateable/ratings_controller.rb b/lib/plugins/seems_rateable-master/app/controllers/seems_rateable/ratings_controller.rb new file mode 100644 index 000000000..afc47d5ef --- /dev/null +++ b/lib/plugins/seems_rateable-master/app/controllers/seems_rateable/ratings_controller.rb @@ -0,0 +1,17 @@ +require_dependency "seems_rateable/application_controller" + +module SeemsRateable + class RatingsController < ::ApplicationController + def create + raise NoCurrentUserInstanceError unless current_user + + obj = params[:kls].classify.constantize.find(params[:idBox]) + begin + obj.rate(params[:rate].to_i, current_user.id, params[:dimension]) + render :json => true + rescue Errors::AlreadyRatedError + render :json => {:error => true} + end + end + end +end diff --git a/lib/plugins/seems_rateable-master/app/helpers/seems_rateable/application_helper.rb b/lib/plugins/seems_rateable-master/app/helpers/seems_rateable/application_helper.rb new file mode 100644 index 000000000..596eeb4c9 --- /dev/null +++ b/lib/plugins/seems_rateable-master/app/helpers/seems_rateable/application_helper.rb @@ -0,0 +1,4 @@ +module SeemsRateable + module ApplicationHelper + end +end diff --git a/lib/plugins/seems_rateable-master/app/helpers/seems_rateable/ratings_helper.rb b/lib/plugins/seems_rateable-master/app/helpers/seems_rateable/ratings_helper.rb new file mode 100644 index 000000000..91c7411c4 --- /dev/null +++ b/lib/plugins/seems_rateable-master/app/helpers/seems_rateable/ratings_helper.rb @@ -0,0 +1,4 @@ +module SeemsRateable + module RatingsHelper + end +end diff --git a/lib/plugins/seems_rateable-master/app/models/seems_rateable/cached_rating.rb b/lib/plugins/seems_rateable-master/app/models/seems_rateable/cached_rating.rb new file mode 100644 index 000000000..fa56e7d44 --- /dev/null +++ b/lib/plugins/seems_rateable-master/app/models/seems_rateable/cached_rating.rb @@ -0,0 +1,5 @@ +module SeemsRateable + class CachedRating < ActiveRecord::Base + belongs_to :cacheable, :polymorphic => true + end +end diff --git a/lib/plugins/seems_rateable-master/app/models/seems_rateable/rate.rb b/lib/plugins/seems_rateable-master/app/models/seems_rateable/rate.rb new file mode 100644 index 000000000..f9db806a3 --- /dev/null +++ b/lib/plugins/seems_rateable-master/app/models/seems_rateable/rate.rb @@ -0,0 +1,6 @@ +module SeemsRateable + class Rate < ActiveRecord::Base + belongs_to :rater, :class_name => SeemsRateable::Engine.config.owner_class + belongs_to :rateable, :polymorphic => true + end +end diff --git a/lib/plugins/seems_rateable-master/app/views/layouts/seems_rateable/application.html.erb b/lib/plugins/seems_rateable-master/app/views/layouts/seems_rateable/application.html.erb new file mode 100644 index 000000000..3c63ba433 --- /dev/null +++ b/lib/plugins/seems_rateable-master/app/views/layouts/seems_rateable/application.html.erb @@ -0,0 +1,14 @@ + + + + SeemsRateable + <%= stylesheet_link_tag "seems_rateable/application", media: "all" %> + <%= javascript_include_tag "seems_rateable/application" %> + <%= csrf_meta_tags %> + + + +<%= yield %> + + + diff --git a/lib/plugins/seems_rateable-master/bin/rails b/lib/plugins/seems_rateable-master/bin/rails new file mode 100644 index 000000000..773450b9c --- /dev/null +++ b/lib/plugins/seems_rateable-master/bin/rails @@ -0,0 +1,8 @@ +#!/usr/bin/env ruby1.9.1 +# This command will automatically be run when you run "rails" with Rails 4 gems installed from the root of your application. + +ENGINE_ROOT = File.expand_path('../..', __FILE__) +ENGINE_PATH = File.expand_path('../../lib/seems_rateable/engine', __FILE__) + +require 'rails/all' +require 'rails/engine/commands' diff --git a/lib/plugins/seems_rateable-master/config/routes.rb b/lib/plugins/seems_rateable-master/config/routes.rb new file mode 100644 index 000000000..4191f5460 --- /dev/null +++ b/lib/plugins/seems_rateable-master/config/routes.rb @@ -0,0 +1,3 @@ +SeemsRateable::Engine.routes.draw do + resources :ratings, :only => :create +end diff --git a/lib/plugins/seems_rateable-master/lib/generators/seems_rateable/install/install_generator.rb b/lib/plugins/seems_rateable-master/lib/generators/seems_rateable/install/install_generator.rb new file mode 100644 index 000000000..9a3aac0a5 --- /dev/null +++ b/lib/plugins/seems_rateable-master/lib/generators/seems_rateable/install/install_generator.rb @@ -0,0 +1,39 @@ +require 'rails/generators/migration' +require 'fileutils' + +module SeemsRateable + module Generators + class InstallGenerator < ::Rails::Generators::Base + include Rails::Generators::Migration + source_root File.expand_path('../templates', __FILE__) + + def self.next_migration_number(path) + unless @prev_migration_nr + @prev_migration_nr = Time.now.utc.strftime("%Y%m%d%H%M%S").to_i + else + @prev_migration_nr += 1 + end + @prev_migration_nr.to_s + end + + desc "generating migration files" + def copy_migrations + migration_template "rates_migration.rb", "db/migrate/create_seems_rateable_rates.rb" + migration_template "cached_ratings_migration.rb", "db/migrate/create_seems_rateable_cached_ratings.rb" + end + + desc "generating initializer" + def copy_initializer + template "initializer.rb", "config/initializers/seems_rateable.rb" + end + + desc "generating javascript files" + def copy_javascript_asset + Dir.mkdir "app/assets/javascripts/rateable" unless File.directory?("app/assets/javascripts/rateable") + copy_file "rateable.js.erb", "app/assets/javascripts/rateable/rateable.js.erb" unless File.exists?("app/assets/javascripts/rateable/rateable.js.erb") + copy_file "jRating.js.erb", "app/assets/javascripts/rateable/jRating.js.erb" unless File.exists?("app/assets/javascripts/rateable/jRating.js.erb") + end + + end + end +end diff --git a/lib/plugins/seems_rateable-master/lib/generators/seems_rateable/install/templates/cached_ratings_migration.rb b/lib/plugins/seems_rateable-master/lib/generators/seems_rateable/install/templates/cached_ratings_migration.rb new file mode 100644 index 000000000..1b91bdadc --- /dev/null +++ b/lib/plugins/seems_rateable-master/lib/generators/seems_rateable/install/templates/cached_ratings_migration.rb @@ -0,0 +1,17 @@ +class CreateSeemsRateableCachedRatings < ActiveRecord::Migration + def self.up + create_table :seems_rateable_cached_ratings do |t| + t.belongs_to :cacheable, :polymorphic => true + t.float :avg, :null => false + t.integer :cnt, :null => false + t.string :dimension + t.integer :cacheable_id, :limit => 8 + t.string :cacheable_type + t.timestamps + end + end + + def self.down + drop_table :cached_ratings + end +end diff --git a/lib/plugins/seems_rateable-master/lib/generators/seems_rateable/install/templates/initializer.rb b/lib/plugins/seems_rateable-master/lib/generators/seems_rateable/install/templates/initializer.rb new file mode 100644 index 000000000..2391948fa --- /dev/null +++ b/lib/plugins/seems_rateable-master/lib/generators/seems_rateable/install/templates/initializer.rb @@ -0,0 +1,4 @@ +#SeemsRateable engine Initializer + +#Configure owner class of the given ratings +SeemsRateable::Engine.config.owner_class = "User" diff --git a/lib/plugins/seems_rateable-master/lib/generators/seems_rateable/install/templates/jRating.js.erb b/lib/plugins/seems_rateable-master/lib/generators/seems_rateable/install/templates/jRating.js.erb new file mode 100644 index 000000000..4f43a4f97 --- /dev/null +++ b/lib/plugins/seems_rateable-master/lib/generators/seems_rateable/install/templates/jRating.js.erb @@ -0,0 +1,225 @@ +/************************************************************************ +************************************************************************* +@Name : jRating - jQuery Plugin +@Revison : 3.0 +@Date : 28/01/2013 +@Author: ALPIXEL - (www.myjqueryplugins.com - www.alpixel.fr) +@License : Open Source - MIT License : http://www.opensource.org/licenses/mit-license.php + +************************************************************************** +*************************************************************************/ +(function($) { + $.fn.jRating = function(op) { + var defaults = { + /** String vars **/ + bigStarsPath : '<%= image_path "seems_rateable/stars.png" %>', // path of the icon stars.png + smallStarsPath : '<%= image_path "seems_rateable/small.png" %>', // path of the icon small.png + path : '<%= SeemsRateable::Engine.routes.url_helpers.ratings_path %>', + type : 'big', // can be set to 'small' or 'big' + + /** Boolean vars **/ + step:false, // if true, mouseover binded star by star, + isDisabled:false, + showRateInfo: false, + canRateAgain : false, + + /** Integer vars **/ + length:5, // number of star to display + decimalLength : 0, // number of decimals.. Max 3, but you can complete the function 'getNote' + rateMax : 20, // maximal rate - integer from 0 to 9999 (or more) + rateInfosX : -45, // relative position in X axis of the info box when mouseover + rateInfosY : 5, // relative position in Y axis of the info box when mouseover + nbRates : 1, + + /** Functions **/ + onSuccess : null, + onError : null + }; + + if(this.length>0) + return this.each(function() { + /*vars*/ + var opts = $.extend(defaults, op), + newWidth = 0, + starWidth = 0, + starHeight = 0, + bgPath = '', + hasRated = false, + globalWidth = 0, + nbOfRates = opts.nbRates; + + if($(this).hasClass('jDisabled') || opts.isDisabled) + var jDisabled = true; + else + var jDisabled = false; + + getStarWidth(); + $(this).height(starHeight); + + + + var average = parseFloat($(this).attr('data-average')), // get the average of all rates + idBox = parseInt($(this).attr('data-id')), // get the id of the box + kls = $(this).attr('data-kls'), + dimension = $(this).attr('data-dimension'), + widthRatingContainer = starWidth*opts.length, // Width of the Container + widthColor = average/opts.rateMax*widthRatingContainer, // Width of the color Container + quotient = + $('
', + { + 'class' : 'jRatingColor', + css:{ + width:widthColor + } + }).appendTo($(this)), + + average = + $('
', + { + 'class' : 'jRatingAverage', + css:{ + width:0, + top:- starHeight + } + }).appendTo($(this)), + + jstar = + $('
', + { + 'class' : 'jStar', + css:{ + width:widthRatingContainer, + height:starHeight, + top:- (starHeight*2), + background: 'url('+bgPath+') repeat-x' + } + }).appendTo($(this)); + + $(this).css({width: widthRatingContainer,overflow:'hidden',zIndex:1,position:'relative'}); + + if(!jDisabled) + $(this).unbind().bind({ + mouseenter : function(e){ + var realOffsetLeft = findRealLeft(this); + var relativeX = e.pageX - realOffsetLeft; + if (opts.showRateInfo) + var tooltip = + $('

',{ + 'class' : 'jRatingInfos', + html : getNote(relativeX)+' / '+opts.rateMax+'', + css : { + top: (e.pageY + opts.rateInfosY), + left: (e.pageX + opts.rateInfosX) + } + }).appendTo('body').show(); + }, + mouseover : function(e){ + $(this).css('cursor','pointer'); + }, + mouseout : function(){ + $(this).css('cursor','default'); + if(hasRated) average.width(globalWidth); + else average.width(0); + }, + mousemove : function(e){ + var realOffsetLeft = findRealLeft(this); + var relativeX = e.pageX - realOffsetLeft; + if(opts.step) newWidth = Math.floor(relativeX/starWidth)*starWidth + starWidth; + else newWidth = relativeX; + average.width(newWidth); + if (opts.showRateInfo) + $("p.jRatingInfos") + .css({ + left: (e.pageX + opts.rateInfosX) + }) + .html(getNote(newWidth) +' / '+opts.rateMax+''); + }, + mouseleave : function(){ + $("p.jRatingInfos").remove(); + }, + click : function(e){ + var element = this; + + /*set vars*/ + hasRated = true; + globalWidth = newWidth; + nbOfRates--; + + if(!opts.canRateAgain || parseInt(nbOfRates) <= 0) $(this).unbind().css('cursor','default').addClass('jDisabled'); + + if (opts.showRateInfo) $("p.jRatingInfos").fadeOut('fast',function(){$(this).remove();}); + e.preventDefault(); + var rate = getNote(newWidth); + average.width(newWidth); + + + $.post(defaults.path, + { + idBox : idBox, + rate : rate, + kls : kls, + dimension : dimension + /** action : 'rating' **/ + }, + function(data) { + if(!data.error) + { + /** Here you can display an alert box, + or use the jNotify Plugin :) http://www.myqjqueryplugins.com/jNotify + exemple : */ + if(opts.onSuccess) opts.onSuccess( element, rate ); + } + else + { + + /** Here you can display an alert box, + or use the jNotify Plugin :) http://www.myqjqueryplugins.com/jNotify + exemple : */ + if(opts.onError) opts.onError( element, rate ); + } + }, + 'json' + ); + } + }); + + function getNote(relativeX) { + var noteBrut = parseFloat((relativeX*100/widthRatingContainer)*opts.rateMax/100); + switch(opts.decimalLength) { + case 1 : + var note = Math.round(noteBrut*10)/10; + break; + case 2 : + var note = Math.round(noteBrut*100)/100; + break; + case 3 : + var note = Math.round(noteBrut*1000)/1000; + break; + default : + var note = Math.round(noteBrut*1)/1; + } + return note; + }; + + function getStarWidth(){ + switch(opts.type) { + case 'small' : + starWidth = 12; // width of the picture small.png + starHeight = 10; // height of the picture small.png + bgPath = opts.smallStarsPath; + break; + default : + starWidth = 23; // width of the picture stars.png + starHeight = 20; // height of the picture stars.png + bgPath = opts.bigStarsPath; + } + }; + + function findRealLeft(obj) { + if( !obj ) return 0; + return obj.offsetLeft + findRealLeft( obj.offsetParent ); + }; + }); + + } +})(jQuery); diff --git a/lib/plugins/seems_rateable-master/lib/generators/seems_rateable/install/templates/rateable.js.erb b/lib/plugins/seems_rateable-master/lib/generators/seems_rateable/install/templates/rateable.js.erb new file mode 100644 index 000000000..da6cc3097 --- /dev/null +++ b/lib/plugins/seems_rateable-master/lib/generators/seems_rateable/install/templates/rateable.js.erb @@ -0,0 +1,25 @@ +$(document).ready(function(){ + $(".rateable").jRating({ + //default options displayed below -> + + rateMax: 5, //Maximal rate + length : 5, //Number of stars + //decimalLength : 0, //Number of decimals in the rate + //type : 'big', //Big or small + //step : true, //If set to true, filling of the stars is done star by star (step by step). + //isDisabled: false, //Set true to display static rating + //showRateInfo:false, //Rate info panel, set true to display + //rateInfosX : 45, //In pixel - Absolute left position of the information box during mousemove. + //rateInfosY : 5, //In pixel - Absolute top position of the information box during mousemove. + path : '<%= SeemsRateable::Engine.routes.url_helpers.ratings_path %>', + onSuccess : function(element, rate){ + //something like -> + //alert('success'); + $('Thanks for rating!').insertAfter(element) + }, + onError : function(element, rate) { + $('You have already rated!').insertAfter(element) + } + }); + +}); diff --git a/lib/plugins/seems_rateable-master/lib/generators/seems_rateable/install/templates/rates_migration.rb b/lib/plugins/seems_rateable-master/lib/generators/seems_rateable/install/templates/rates_migration.rb new file mode 100644 index 000000000..40303f11c --- /dev/null +++ b/lib/plugins/seems_rateable-master/lib/generators/seems_rateable/install/templates/rates_migration.rb @@ -0,0 +1,18 @@ +class CreateSeemsRateableRates < ActiveRecord::Migration + def self.up + create_table :seems_rateable_rates do |t| + t.belongs_to :rater + t.belongs_to :rateable, :polymorphic => true + t.float :stars, :null => false + t.integer :rater_id, :limit => 8 + t.integer :rateable_id + t.string :rateable_type + t.string :dimension + t.timestamps + end + end + + def self.down + drop_table :rates + end +end diff --git a/lib/plugins/seems_rateable-master/lib/seems_rateable.rb b/lib/plugins/seems_rateable-master/lib/seems_rateable.rb new file mode 100644 index 000000000..5f84a8b8c --- /dev/null +++ b/lib/plugins/seems_rateable-master/lib/seems_rateable.rb @@ -0,0 +1,14 @@ +begin + require 'rails' +rescue LoadError +end + +require "seems_rateable/engine" +require "seems_rateable/errors" +require "seems_rateable/helpers" +require "seems_rateable/model" +require "seems_rateable/routes" +require "seems_rateable/version" + +module SeemsRateable +end diff --git a/lib/plugins/seems_rateable-master/lib/seems_rateable/engine.rb b/lib/plugins/seems_rateable-master/lib/seems_rateable/engine.rb new file mode 100644 index 000000000..185d6f9d9 --- /dev/null +++ b/lib/plugins/seems_rateable-master/lib/seems_rateable/engine.rb @@ -0,0 +1,17 @@ +module SeemsRateable + class Engine < ::Rails::Engine + isolate_namespace SeemsRateable + + config.generators do |g| + g.test_framework :rspec, :fixture => false + g.fixture_replacement :factory_girl, :dir => 'spec/factories' + end + + initializer :seems_rateable do + ActiveRecord::Base.send :include, SeemsRateable::Model + ActionView::Base.send :include, SeemsRateable::Helpers + ActionDispatch::Routing::Mapper.send :include, SeemsRateable::Routes + end + + end +end diff --git a/lib/plugins/seems_rateable-master/lib/seems_rateable/errors.rb b/lib/plugins/seems_rateable-master/lib/seems_rateable/errors.rb new file mode 100644 index 000000000..8a83059ba --- /dev/null +++ b/lib/plugins/seems_rateable-master/lib/seems_rateable/errors.rb @@ -0,0 +1,21 @@ +module SeemsRateable + module Errors + class InvalidRateableObjectError < StandardError + def to_s + "Stated object is not rateable. Add 'seems_rateable' to your object's class model." + end + end + + class NoCurrentUserInstanceError < StandardError + def to_s + "User instance current_user is not available." + end + end + + class AlreadyRatedError < StandardError + def to_s + "User has already rated an object." + end + end + end +end diff --git a/lib/plugins/seems_rateable-master/lib/seems_rateable/helpers.rb b/lib/plugins/seems_rateable-master/lib/seems_rateable/helpers.rb new file mode 100644 index 000000000..399f06fd8 --- /dev/null +++ b/lib/plugins/seems_rateable-master/lib/seems_rateable/helpers.rb @@ -0,0 +1,27 @@ +module SeemsRateable + module Helpers + def rating_for(obj, opts={}) + raise Errors::InvalidRateableObjectError unless obj.class.respond_to?(:rateable?) + + options = { + :dimension => nil, + :static => false, + :class => 'rateable', + :id => nil + }.update(opts) + + content_tag :div, "", "data-average" => obj.average(options[:dimension]) ? obj.average(options[:dimension]).avg : 0, :id => options[:id], + :class => "#{options[:class]}#{jdisabled?(options[:static])}", + "data-id" => obj.id, "data-kls" => obj.class.name, "data-dimension" => options[:dimension] + end + + def seems_rateable_stylesheet + stylesheet_link_tag "seems_rateable/application", media: "all", "data-turbolinks-track" => true + end + + private + def jdisabled?(option) + " jDisabled" if option || !current_user + end + end +end diff --git a/lib/plugins/seems_rateable-master/lib/seems_rateable/model.rb b/lib/plugins/seems_rateable-master/lib/seems_rateable/model.rb new file mode 100644 index 000000000..fa1b7af11 --- /dev/null +++ b/lib/plugins/seems_rateable-master/lib/seems_rateable/model.rb @@ -0,0 +1,111 @@ +require 'active_support/concern' +module SeemsRateable + module Model + extend ActiveSupport::Concern + + def rate(stars, user_id, dimension=nil) + if !has_rated?(user_id, dimension) + self.rates.create do |r| + r.stars = stars + r.rater_id = user_id + end + update_overall_average_rating(stars, dimension) + elsif has_rated?(user_id, dimension) && can_update? + update_users_rating(stars, user_id, dimension) + else + raise Errors::AlreadyRatedError + end + end + + def update_overall_average_rating(stars, dimension=nil) + if average(dimension).nil? + CachedRating.create do |r| + r.avg = stars + r.dimension = dimension + r.cacheable_id = self.id + r.cacheable_type = self.class.name + r.cnt = 1 + end + else + r = average(dimension) + r.avg = (r.avg * r.cnt + stars) / (r.cnt+1) + r.cnt += 1 + r.save! + end + end + + def update_users_rating(stars, user_id, dimension=nil) + obj = rates(dimension).where(:rater_id => user_id).first + current_record = average(dimension) + current_record.avg = (current_record.avg*current_record.cnt - obj.stars + stars) / (current_record.cnt) + current_record.save! + obj.stars = stars + obj.save! + end + + + def average(dimension=nil) + if dimension.nil? + self.send "rate_average_without_dimension" + else + self.send "#{dimension}_average" + end + end + + def rates(dimension=nil) + if dimension.nil? + self.send "rates_without_dimension" + else + self.send "#{dimension}_rates" + end + end + + def raters(dimension=nil) + if dimension.nil? + self.send "raters_without_dimension" + else + self.send "#{dimension}_raters" + end + end + + def has_rated?(user_id, dimension=nil) + record = self.rates(dimension).where(:rater_id => user_id) + record.empty? ? false : true + end + + def can_update? + self.class.can_update? + end + + module ClassMethods + def seems_rateable(opts={}) + #has_many :rates_without_dimension, -> { where(dimension: nil) }, :as => :rateable, :class_name => SeemsRateable::Rate, :dependent => :destroy + has_many :rates_without_dimension, :conditions => { dimension: nil }, :as => :rateable, :class_name => SeemsRateable::Rate, :dependent => :destroy + has_many :raters_without_dimension, :through => :rates_without_dimension, :source => :rater + has_one :rate_average_without_dimension, :conditions => { dimension: nil }, :as => :cacheable, :class_name => SeemsRateable::CachedRating, :dependent => :destroy + + @permission = opts[:allow_update] ? true : false + + def self.can_update? + @permission + end + + def self.rateable? + true + end + + if opts[:dimensions].is_a?(Array) + opts[:dimensions].each do |dimension| + has_many :"#{dimension}_rates", :conditions => { dimension: dimension.to_s }, :dependent => :destroy, :class_name => SeemsRateable::Rate, :as => :rateable + has_many :"#{dimension}_raters", :through => :"#{dimension}_rates", :source => :rater + has_one :"#{dimension}_average", :conditions => { dimension: dimension.to_s }, :as => :cacheable, :class_name => SeemsRateable::CachedRating, :dependent => :destroy + end + end + end + + def seems_rateable_rater + has_many :ratings_given, :class_name => SeemsRateable::Rate, :foreign_key => :rater_id + end + end + end +end diff --git a/lib/plugins/seems_rateable-master/lib/seems_rateable/routes.rb b/lib/plugins/seems_rateable-master/lib/seems_rateable/routes.rb new file mode 100644 index 000000000..81a243339 --- /dev/null +++ b/lib/plugins/seems_rateable-master/lib/seems_rateable/routes.rb @@ -0,0 +1,7 @@ +module SeemsRateable + module Routes + def seems_rateable + mount SeemsRateable::Engine => '/rateable', :as => :rateable + end + end +end diff --git a/lib/plugins/seems_rateable-master/lib/seems_rateable/version.rb b/lib/plugins/seems_rateable-master/lib/seems_rateable/version.rb new file mode 100644 index 000000000..180e47824 --- /dev/null +++ b/lib/plugins/seems_rateable-master/lib/seems_rateable/version.rb @@ -0,0 +1,3 @@ +module SeemsRateable + VERSION = "1.0.9" +end diff --git a/lib/plugins/seems_rateable-master/lib/tasks/seems_rateable_tasks.rake b/lib/plugins/seems_rateable-master/lib/tasks/seems_rateable_tasks.rake new file mode 100644 index 000000000..98c5403ac --- /dev/null +++ b/lib/plugins/seems_rateable-master/lib/tasks/seems_rateable_tasks.rake @@ -0,0 +1,4 @@ +# desc "Explaining what the task does" +# task :seems_rateable do +# # Task goes here +# end diff --git a/lib/plugins/seems_rateable-master/seems_rateable.gemspec b/lib/plugins/seems_rateable-master/seems_rateable.gemspec new file mode 100644 index 000000000..b4f32a9fc --- /dev/null +++ b/lib/plugins/seems_rateable-master/seems_rateable.gemspec @@ -0,0 +1,25 @@ +$:.push File.expand_path("../lib", __FILE__) + +# Maintain your gem's version: +require "seems_rateable/version" + +# Describe your gem and declare its dependencies: +Gem::Specification.new do |s| + s.name = "seems_rateable" + s.version = SeemsRateable::VERSION + s.authors = ["Peter Toth"] + s.email = ["proximin@gmail.com"] + s.homepage = "http://rateable.herokuapp.com" + s.summary = "Star Rating Engine" + s.description = "Star rating engine using jQuery plugin jRating for Rails applications" + + s.files = Dir["{app,config,db,lib}/**/*", "MIT-LICENSE", "Rakefile", "README.md"] + + s.add_dependency "rails" + s.add_dependency "jquery-rails" + + s.add_development_dependency "sqlite3" + s.add_development_dependency 'rspec-rails' + s.add_development_dependency 'capybara' + s.add_development_dependency 'factory_girl_rails' +end diff --git a/public/images/praise.png b/public/images/praise.png new file mode 100644 index 0000000000000000000000000000000000000000..808d18134a663dc97c959bd531f0d0eb75e91a6d GIT binary patch literal 3103 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 literal 0 HcmV?d00001 From 9cc86f3cd8bc7bdbb9edf987a25fcbcf0af8f3c6 Mon Sep 17 00:00:00 2001 From: william Date: Thu, 8 Aug 2013 17:26:37 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E7=A7=BB=E9=99=A4seems=5Fratabale=E6=8F=92?= =?UTF-8?q?=E4=BB=B6=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gemfile | 2 +- Gemfile.lock | 2 -- app/models/user.rb | 1 - app/views/layouts/base_users.html.erb | 3 --- db/schema.rb | 21 --------------------- 5 files changed, 1 insertion(+), 28 deletions(-) diff --git a/Gemfile b/Gemfile index f4decb75c..6d9bb4ada 100644 --- a/Gemfile +++ b/Gemfile @@ -7,7 +7,7 @@ gem "coderay", "~> 1.0.6" gem "fastercsv", "~> 1.5.0", :platforms => [:mri_18, :mingw_18, :jruby] gem "builder", "3.0.0" gem 'acts-as-taggable-on' -gem 'seems_rateable' + # Optional gem for LDAP authentication group :ldap do gem "net-ldap", "~> 0.3.1" diff --git a/Gemfile.lock b/Gemfile.lock index aa29558c5..6713a9977 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -98,7 +98,6 @@ GEM rmagick (2.13.2) ruby-openid (2.1.8) rubyzip (0.9.9) - seems_rateable (1.0.9) jquery-rails rails selenium-webdriver (2.33.0) @@ -153,7 +152,6 @@ DEPENDENCIES rdoc (>= 2.4.2) rmagick (>= 2.0.0) ruby-openid (~> 2.1.4) - seems_rateable shoulda (~> 3.3.2) sqlite3 yard diff --git a/app/models/user.rb b/app/models/user.rb index 8050082a8..3d71394a9 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -103,7 +103,6 @@ class User < Principal acts_as_customizable ############################added by william acts_as_taggable - seems_rateable ############################# added by liuping 关注 acts_as_watchable diff --git a/app/views/layouts/base_users.html.erb b/app/views/layouts/base_users.html.erb index f6abf5e6b..35722ed93 100644 --- a/app/views/layouts/base_users.html.erb +++ b/app/views/layouts/base_users.html.erb @@ -9,9 +9,6 @@ <%= favicon %> <%= stylesheet_link_tag 'jquery/jquery-ui-1.9.2', 'application', :media => 'all' %> <%= stylesheet_link_tag 'rtl', :media => 'all' if l(:direction) == 'rtl' %> - - <%= seems_rateable_stylesheet %> - <%= javascript_heads %> <%= heads_for_theme %> diff --git a/db/schema.rb b/db/schema.rb index b0cf92655..356ddec01 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -524,27 +524,6 @@ ActiveRecord::Schema.define(:version => 20130807021309) do t.text "permissions" t.string "issues_visibility", :limit => 30, :default => "default", :null => false end - - create_table "seems_rateable_cached_ratings", :force => true do |t| - t.integer "cacheable_id", :limit => 8 - t.string "cacheable_type" - t.float "avg", :null => false - t.integer "cnt", :null => false - t.string "dimension" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "seems_rateable_rates", :force => true do |t| - t.integer "rater_id", :limit => 8 - t.integer "rateable_id" - t.string "rateable_type" - t.float "stars", :null => false - t.string "dimension" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - create_table "settings", :force => true do |t| t.string "name", :default => "", :null => false t.text "value" From 0a2b91fa170f1c4690cf45babe418b6af3b699ea Mon Sep 17 00:00:00 2001 From: huangjingquan Date: Thu, 8 Aug 2013 22:19:15 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E7=B2=89?= =?UTF-8?q?=E4=B8=9D=E5=92=8C=E5=85=B3=E6=B3=A8=20=E5=8D=95=E4=B8=AA?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=EF=BC=8C=E5=A2=9E=E5=8A=A0=E4=BA=86=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E7=94=A8=E6=88=B7=E5=9B=BE=E5=83=8F=EF=BC=8C=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E9=A1=B9=E7=9B=AE=E5=9B=BE=E5=83=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/users_controller.rb | 17 +++++++++--- app/helpers/application_helper.rb | 10 +++++++ app/views/layouts/base_projects.html.erb | 2 +- app/views/layouts/base_users.html.erb | 6 ++--- app/views/users/user_fanslist.html.erb | 32 +++++++++++++++++++++++ app/views/users/user_projects.html.erb | 3 ++- app/views/users/user_watchlist.html.erb | 32 +++++++++++++++++++++++ app/views/welcome/index.html.erb | 2 +- config/routes.rb | 2 ++ public/images/avatars/AnonymousUser/0 | Bin 1306 -> 4208 bytes public/images/avatars/Project/0 | Bin 1598 -> 11934 bytes public/images/avatars/Project/6315 | Bin 0 -> 2317 bytes public/images/avatars/Project/6322 | Bin 0 -> 199009 bytes public/images/avatars/User/0 | Bin 1306 -> 4208 bytes public/images/avatars/User/4874 | Bin 0 -> 1336 bytes public/stylesheets/application.css | 5 ++++ 16 files changed, 101 insertions(+), 10 deletions(-) create mode 100644 app/views/users/user_fanslist.html.erb create mode 100644 app/views/users/user_watchlist.html.erb create mode 100644 public/images/avatars/Project/6315 create mode 100644 public/images/avatars/Project/6322 create mode 100644 public/images/avatars/User/4874 diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index a93698de8..9c335ad6d 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -17,8 +17,8 @@ class UsersController < ApplicationController layout 'base_users' - before_filter :require_admin, :except => [:show, :index,:tag_save, :user_projects, :user_newfeedback, :user_comments, :watch_bids, :info] - before_filter :find_user, :only => [:show, :edit, :update, :destroy, :edit_membership, :destroy_membership, :user_activities, :user_projects, :user_newfeedback, :user_comments, :watch_bids, :info] + before_filter :require_admin, :except => [:show, :index,:tag_save, :user_projects, :user_newfeedback, :user_comments, :watch_bids, :info, :user_watchlist, :user_fanslist] + before_filter :find_user, :only => [:user_fanslist, :user_watchlist, :show, :edit, :update, :destroy, :edit_membership, :destroy_membership, :user_activities, :user_projects, :user_newfeedback, :user_comments, :watch_bids, :info] accept_api_auth :index, :show, :create, :update, :destroy helper :sort @@ -27,7 +27,7 @@ class UsersController < ApplicationController include CustomFieldsHelper include AvatarHelper - # added by liuping 关注 + # added by liuping 关注 helper :watchers helper :activities @@ -379,7 +379,16 @@ class UsersController < ApplicationController respond_to do |format| format.html format.js - end + end + end + + ###add by huang + def user_watchlist + + end + ###add by huang + def user_fanslist + end private diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 9935b577d..343b41265 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -1305,4 +1305,14 @@ module ApplicationHelper html.html_safe end #end +# add by huang + def show_watcher_list(user) + html = '' + for user in User.watched_by(user.id) + html << (link_to image_tag(url_to_avatar(user), :class => "avatar"), user_path(user), :class => "avatar", :title => "#{user.name}") + end + html.html_safe + end +# end + end diff --git a/app/views/layouts/base_projects.html.erb b/app/views/layouts/base_projects.html.erb index 0ee2c64a0..2e00961bc 100644 --- a/app/views/layouts/base_projects.html.erb +++ b/app/views/layouts/base_projects.html.erb @@ -30,7 +30,7 @@

- +
<%= link_to image_tag(avatar_image(@project), :class => 'avatar') %><%= link_to image_tag(url_to_avatar(@project), :class => 'avatar') %>
<%= textilizable @project.name %> diff --git a/app/views/layouts/base_users.html.erb b/app/views/layouts/base_users.html.erb index 35722ed93..81b0c8743 100644 --- a/app/views/layouts/base_users.html.erb +++ b/app/views/layouts/base_users.html.erb @@ -53,7 +53,7 @@
<%= l(:label_user_watcher) %> (<%= User.watched_by(@user.id).count %>)   <%= l(:label_user_fans) %> (<%= @user.watcher_users.count %>) -
+
@@ -76,7 +76,7 @@
- <%= l(:label_user_watcher) %>(<%= link_to User.watched_by(@user.id).count %>) + <%= l(:label_user_watcher) %>(<%= link_to User.watched_by(@user.id).count, :controller=>"users",:action=>"user_watchlist" %>)
@@ -93,7 +93,7 @@
- <%= l(:label_user_fans) %>(<%= link_to @user.watcher_users.count %>) + <%= l(:label_user_fans) %>(<%= link_to @user.watcher_users.count,:controller=>"users",:action=>"user_fanslist" %>)
diff --git a/app/views/users/user_fanslist.html.erb b/app/views/users/user_fanslist.html.erb new file mode 100644 index 000000000..579ea42fd --- /dev/null +++ b/app/views/users/user_fanslist.html.erb @@ -0,0 +1,32 @@ + +

<%= l(:label_user_fans)%>

+
+ <% for user in @user.watcher_users %> +
  • +
+ + + + +
<%= link_to image_tag(url_to_avatar(user), :class => "avatar"), user_path(user), :title => "#{user.name}" %> + + + + + + + + + +
<%= content_tag "div", link_to_user(user), :class => "nomargin avatar_name" %> +

+ <% unless user.memberships.empty? %> + <%= l(:label_contribute_to, :project_count => "#{user.memberships.count}") %> + <% for member in user.memberships %> + <%= link_to_project(member.project) %><%= (user.memberships.last == member) ? '' : ',' %> + <% end %> + <% end %> +

<%= l(:label_user_joinin) %><%= format_date(@user.created_on) %> +
+<% end %> +
\ No newline at end of file diff --git a/app/views/users/user_projects.html.erb b/app/views/users/user_projects.html.erb index 12d5fc943..72638c5f5 100644 --- a/app/views/users/user_projects.html.erb +++ b/app/views/users/user_projects.html.erb @@ -10,7 +10,8 @@
- +
<%= link_to_user(membership.user) if membership.respond_to?(:user) %> 创建了 <%= link_to_project(membership.project) %> <%= link_to_user(membership.user) if membership.respond_to?(:user) %> + 创建了 <%= link_to_project(membership.project) %>
diff --git a/app/views/users/user_watchlist.html.erb b/app/views/users/user_watchlist.html.erb new file mode 100644 index 000000000..222ac117e --- /dev/null +++ b/app/views/users/user_watchlist.html.erb @@ -0,0 +1,32 @@ + +

<%= l(:label_user_watcher)%>

+
+ <% for user in User.watched_by(@user.id) %> +
  • + + + + + +
    <%= link_to image_tag(url_to_avatar(user), :class => "avatar"), user_path(user), :title => "#{user.name}" %> + + + + + + + + + +
    <%= content_tag "div", link_to_user(user), :class => "nomargin avatar_name" %> +

    + <% unless user.memberships.empty? %> + <%= l(:label_contribute_to, :project_count => "#{user.memberships.count}") %> + <% for member in user.memberships %> + <%= link_to_project(member.project) %><%= (user.memberships.last == member) ? '' : ',' %> + <% end %> + <% end %> +

    <%= l(:label_user_joinin) %><%= format_date(@user.created_on) %> +
+<% end %> +
\ No newline at end of file diff --git a/app/views/welcome/index.html.erb b/app/views/welcome/index.html.erb index 438652557..df0a561b0 100644 --- a/app/views/welcome/index.html.erb +++ b/app/views/welcome/index.html.erb @@ -137,7 +137,7 @@

项目需求

添加描述添加描述添加描述添加描述...

-

发现开源

+

项目需求

添加描述添加描述添加描述添加描述...

diff --git a/config/routes.rb b/config/routes.rb index d43a594fa..8b74e410c 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -78,6 +78,8 @@ RedmineApp::Application.routes.draw do match 'user_newfeedback', :to => 'users#user_newfeedback', :via => :get, :as => "user_newfeedback" match 'watch_bids', :controller => 'users', :action => 'watch_bids', :via => [:get , :post] match 'info', :to => 'users#info', :via => [:get , :post], :as => 'user_info' + match 'user_watchlist', :to => 'users#user_watchlist', :via => :get, :as => "user_watchlist" #add by huang + match 'user_fanslist', :to => 'users#user_fanslist', :via => :get, :as => "user_fanslist" #add by huang end end #end diff --git a/public/images/avatars/AnonymousUser/0 b/public/images/avatars/AnonymousUser/0 index 26e7db3e7cbb4c2ef68bf5691c9777ab1f36f22c..a4cc45467b6270c6fecc02e21fe8e8836bbc9f9a 100644 GIT binary patch literal 4208 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 diff --git a/public/images/avatars/Project/0 b/public/images/avatars/Project/0 index beea149043ce3aab9d254b7e11fb68d55e160b76..585b4bfc01363247d795bbb5eff31260611ddaee 100644 GIT binary patch literal 11934 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 literal 1598 zcmbW!c{tR090%~<9OiIr4I{V73?YP}91)UZrZqC!v?j!)95I{w%DE*Z$2dwggq&d` zBS#NHiXIjTk{DSTNonc*@`n`nV^wj|(n>nY zsv4Tw+S(XJJwsi*!67Ye{O%AC5{VQP5EK^@635F)%i;fXxJ>{G0pI~V1cU{^C=dh% z;Pp!QcoazW}eHdM^M5K_Fl#gpUsj<#k`>y#r7bpRk;!2~5Ps z8IHYz#z&<*K;Vu)ZWbl?EXixR_(UW5_lb#1NGcpqR8l^uefWruuAaW>2{UsGO9IjM z^iOB(&i-sqz2JKBlAF7Sub+QFU{G*K%&*t3$KHsGPo<}&XJp>Kla-s7|FEF2sJNuE z>Pa=T=4ox+^On}O7ws=!b@cYV>3=&gIK-M@Prjd;o|*kHx4g2t###TovAMPD0s)Zk zEZ+Sc_74||=K@2a5GZ`t1p){14g>||lhcF=o7ljeuZUprQ3&+$ln0NSkvJ{#lBkPM z5C1-S?FohDUD`L!Y!Jrc1|F5 ze$ml^pO{}gxP7lrMpaFvh3(zB(?vVELCCYeKhS3t6jA?KY;A^9He>*r2v&P-G_<#< zeT-}xetx>{+;se!sFK2kq*R8HsGct|Z~N1xtiq&qEZI$i3%I#k%QF*_Gzpu@Tg$Ac z*m*hi1NxE1^PGy}`z{QfIA)!Gy6b#$$iVA5PK>*K|5OaPK;kxaxX36&B|(H>GIkVm zl1`n8ODMEsJA~axFAqqp>JXC_YL7A_=hl{ohFyObdww;{jOt;&9^3;!lhF)ojO|z0 zv%)qq$XB!>iBm) zec_`N$z7q6Y}WR~cayRmP0|l2XA-E_bUNk|=GwtonWqRxjp^pSB@0U8!tipH!l80U z3Pb(v^xU?qXko>U5!*Kl!}8*Qq#0uSh_70C=x$318ylyGpQAUmSIj#RHppN6F#;b};~_#nnRMxk)}>DE2S_?PBv;jT(U9CO2p=A zTH5CDtI?I;a7me|!CeQLx4#N4y-eL=>A7@x>j+!Ojc3;(WrDg?beikZj^TQ|Cu+3q9Gp!e)lVXGV*M3e)U-RL){)y zj2Fc}u%aMiyDN8$tx|e+!R2xr7EU(DBf3L27u)o2vToIsR65WqQzt`iMv6y8T9m^v zvAq=@*(m?g`d}|Lc?!ki;!3M$ERrE+cwLuWE8#7ZiyANa#Zu8=>+9ie$GR+n>J6TrsW=_d)GF#`{l;xyBhXb9yJU4B!zaa z=OgVgC0Er9Gt}BUwUX!t{)UZ`N(D@;lh_FUh%1xsiQ1krz?7YF@i8Z9^~Nh3CgPSg Pr4}(|XdALy1b65U&HTR# diff --git a/public/images/avatars/Project/6315 b/public/images/avatars/Project/6315 new file mode 100644 index 0000000000000000000000000000000000000000..cce3b9ccf27afd34618b1780610331c9af454b11 GIT binary patch literal 2317 zcmV+o3G()dP)MH000009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ^lSxEDRCwCNmtBlqS9QmKYwdl`xpO~eJhsPuJ(H}#nLY3e z?;07yvF-DY;kiH0?9~>d!TLW3F63%vJHbPOM8{OOPyxx%NFYjuqzGcT7+?f$Xb6Z!3KgUUi=c7|cNf?&NCgNW zX1I0)54dF3Fc#As9vm|xgaB{}xMv`cydz2gQ&32f$!tT{bB&nG&M;&W&J7Pd)D+(b^$r>oF zB#njm;}djmxrwXpdvMkQ4QNHq`DLn|hL(Z?<=OY$O!fUAAp0*T*#^OeSgaXr!TS0- z6vmtmux^T}c4x&GC-Pf0m5{r2NDUww!i6Ycz%(laTwsFn;)*9`yR zVdj77SIJojA#7)_7y8cKk#dMMaPrGvKo0F=YqJIubhrm!{t597zs})Dzl)U>C;sFP zR{!j7RzCU>=5D-+BVYd(?B7e=I7gX>sE&zMNiD|o{`+x{+jN`t^EbYDSP8KCpZ`K$ zK7|}Sz+7@R!-%+goZ)NV%+h^d0hGP3d_DHw4^i#Eoa)Ta@FPb^d-t*Lfk!y|o?F?h z*BR)3ns5?X4CJRC$5vO-y^EL`MNwQ_EFyx4pc(Ri{X5>ajFNIrYpS*;sI&Kj_aLey zI@*OX#mWn8KK2#dJH`uF5?iBMILyMGAE0P9NL5431rkRzr&p+-{C1C_eXqOwC0i|Q zF+KV$#r`EyS2IS5tLrSj@n+V3`Yg+L-b~yoSi9?1Hop8b-x?@}K@8w3(A{ ze*=2;uTUJk8fm6P9T7wkSK^P3Znv1K_JO<@JlY(beU7f{P#xnwqOqFh6<480pTNx7 z`nN~fSUFC-;wpkW!)sr|#t;9Mt*0I*pFc)%{tSNEKH{{aac4^n)d6c8$9L|dOEY&j zTnf-Y(;2bwZHk1FPHTijAmAaAV`Cm}>lnp(%D3K1b=hI$=ra^e$HtHThsmpMV)6PLN%My&$BX2j zEtBRehH(I$Fl?2%`KxhvilXR~xs>*h3MRjNEv&7PIwzHpymx`MZ~YVVSNtMNUwjBJ zVClg}8NUA>s_Wm(;>Z4m%Rc?rP$UjL_BiS3?_(?fM<`3`uEr(Nqz10L=A|>g(C0Zq zeC-WrHDM!0#@^DE6HIDO|LtcmD}aQaK8+U>7G8e?aWgSJeFjRf7gjm-;QiQOKXEH! zp~L(fa%hRkD_?_%Y^#}Fv;z!Z_a@kPkZ^vAQBXBo_;8W@#CKWw(0d7X4iQ2*08d{9{wuJ zpST-2avj!fQc7kT3)@)rby> zXB!TD=@G&;*CGb0x;JUR9w3)T_b)@L1H1=E2 zmAGd=l}75iMhAwJL+sdb1|PVKr9ZeAH4uH#C>MDN@VdYTP_CZh*zdm+JM}za>1vXl zBY2>d#Kb0ap(C|{N-}jUDchQ@B2ncb-LPSFbdBciH*n>rXDiieT&ivLx;u04m7KfM zX-WCQF@EylyC|OcZ~VwF;8D<=VHSNrPy!%iQLJ#vjdi-yQ{r#Do6A4?Nm{8Wx)zBF z61TJ7edj=%jYsrzD0b321OeS-`=9q6T$<(hNO&20yh- zYHMUNPh2_(lS%I?r1xDOGo55gFL8&gnMl|MPAOela5WGyQ&eVRUm*#Y*Ob<)QP+SI zW{Nj~XG#PYoB6W=gLWnmVjoPS^w$Zbl!!6Dgn%>%+PjTL`d}(Adn;AYI}x9aC!e`X z0gvEjxGHW9uCdRQj!kOj^8^#a%!qMTc$a#$Cic#AkmD?CLp%|@1UEeNLQrkyHZ>p! z!DmECLx0g_@01)QfOrE^?cC`*1SA~=(pQ{>J|lNTy!V4ynVF55TkVl;|K_Y_SV{{{I62Za&(%#U7Xb00000NkvXXu0mjf5|B~& literal 0 HcmV?d00001 diff --git a/public/images/avatars/Project/6322 b/public/images/avatars/Project/6322 new file mode 100644 index 0000000000000000000000000000000000000000..1f03329079cd036e5804e71176d2d09332110975 GIT binary patch literal 199009 zcmV)GK)%0;P)KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-E z{*FmRK~#9!?EPt%Y{_+|i9OrQ&T;pMxcA1Lr@T2JGl9em5F-oVP$Y^qwpv|U>aLRX z2h>`tTT<%>@IUCQqz_t4AG@nq)vT(;nMHyiL1IiKfJDx7-g$_@-On+ztq;fD!-q4v zN8o}i###a74L^R4nH@9Ruf2QkcguhO|NLWh-jYO5FoDc&k*ZSrBeD2Dk@Al#{yzI$ zW9#e1EdEI*h@5|5wIGE3TJz z?@Jn{&Gg5Xe1EY`EpOCvzBOH6H9kjwkKLYE@&1pkz1@bVVQPu zn91CRq`GS4HEQj+mVv;<4OeEsY4#nFS-<81r^>WFM}Ld53cTjWrO9Au<3j0X{8w+$ z4S-ZF%+>j!wSchoPG-6pkmYt5WTWq&psj7clb__{H@;xA8)(gbbQ}%X6oAA{0Zfzz z0M*v`O$~YM)c4q7dDT6)x_xo8{Y%P+VR_#yzH5p-IL;gV#T(3?F}blCso3|9?%zB| zRzYR)9a*r?U4YE&?_x`?mDck^qyRIjI{Tg9Z(~%98KXKtcCNE??XwK`4jJCNiF47S zE-;jY7?i$b#Aq8fZ0!Ups=i)%(nl9g$*Kyn-a?*!e;(mgEoiAc-$>&mU!Kv$^IA1< z6K36Ntz6o0n?4HXBwh5hU?0vc^`A}NDq@ulAGkv6JVJZRP$`(!TY; zOM}6#Fi1y-NNt?6b?sVqSxisG8I8b^p^&*O$kK#?||U zB{u#z=Jq@r)C5SiggNUnKeZ)bT)d}LFm`43$4_Ew3?hy^5A>2Pb}v7Ti;Mi+wazGA>7u3l4d|JgOMU93v!=}82Ms{mnPl8e?FlRD#4yLhGq z)6$DwZu=}Kts=NuO2AFCo8_q8zF~o{9^iE0`(bX|E87M{n_^lTNy*OaLenPG#E@0> zx9t5i2Q^D=f1AEPeeJ6Z<>c>XGnatKY@4ii`xoVJUhsUELocB%MVtOPSf_v;xXQ^CwkuZzN3`&k)*bTk*1!GpB8r<9Jt zV#r2)NJ={(GiBx`At4PDC``OIAq3P2AwaYVz1=5qW#ba&URY^HQ3DvMHkhU6Xl1-@ zmBEnMV$-dEc5{Ge(Za>+;=)UkhL<=W1Jv})vg^XK(OvP3mC>nlz_0O{)$J-iYX)rP z-=A(oW}zR;_BA%SoEk$ERsq3c`$8v>)AWA21{JHR2Tu~Uu|I80VkJ!-+OSaa*zEnr zfJrutVQPpGIcbKcngM7xXFJcw&J2WUJ-h^+1!n?;rAc2%PGdV(U>)j-+T;98N*;3fJ2mq zXNC5FVZGE|Q~BD8OE%j-RJ+Zt=JBqdmbGk3NlKKS2ot5HfUlfE*>HZgxON)Ta|BRz z!9Lf2-{B=vgsMi+fY->_N8EIAEpAfnD9I{jM$vNSVrDQKC`}cZ3#^^BZOWdkAURn$ zsfW2PG_gfxpND1RHZwRRZ-@dtE<+8b0 zHGg~_a7ls>8N>{iI23SGAKUzf8l;|qFiT8DYyFwFr@|$Wr3*rSvXG_IWR%+m^46c; zm*RLDR;-s;lU1WD8&;jck}~5J=GwAgoT|pX1TtwI*ozIu*TBjsCQ@y5R)7#ui&Ds#duHtErt7+Ck~JbOFz!d@Z3tnhaW_PDVYYTzuV>B7K<(MQyMl zKlUUX?LKZz8_;sveBFJUM^8JYY5$@zEStL=H+;RSkF|YG^JpEHYq$0`JfAjMPSxwQ z`TGs+)AnPtxh77@`)E{B)=qDu-sQBIPOYllbt#v!G7IHlt!A#IzKy!!{?{zbw;D-3 z6B*PN2VOF)>yh~!XAH(TVwPcyTXZ?iHdM13)xEHR&ShDcvJIOiwbzCYqYL9c6RBHZ zNh_O7VE)nlb1G{PRxsx>K1iic$R~vwV|{K4S;#h zXEmG3d5UaQ?{wip>FAlW^S0GC1=Apyh3Ca*;~MJ}+MH8=j-mz`!)^cQnLk zL>dfU+z`l^hU?}sc1p68Oq~0yWSn$UVZN0Eqn0Ygw+Dh|p`D@fd%9#IkHC|v&g@26 z7V2Vlxv2m`TCx9{NTYW~z~+D??tNBD}GPn7~f-IQ!sP81CrMrkhL+}Jcqhc}K> zJCUvSj7A9|SH%v(%6x6}1{d1WNU*ePZ*~9Lz28d1Ee!yw$;mBRKlY7)qIp9u3s7(W z^LSl8n=>G0(-v&T`ZS#QH)WW*lqOm0{_*%yvD>(u>NQu&7htT>;oLlxy#Bij2~TAP zU7OgBcGFK)%ipy&k5hYqY0AFcKxlMi$mTwGsznfOfl4P?M6uX(+NNU%z|Nt%NT>~F zt)I`U;GmhZTUx|3YE4#7{z9`$tyx!2TeZ9T0p)?nrlbXBV;?&e-z!mLYzX3rjqxI7 zwWee(gH@G;SgZ5d2xywJv`*TfwlhxE>Yxp5MMH5{jdO|pBAwf(@no~4ngjn%mZ50_ z*pB1S-izI%I3Cnex27gNNPgR$ZR%$nzUIO0bkS_ zu+Tn>OVI`QUX*giKdwF3D%wZ;c$uoy{i^=Xl!C*`1#*<#G3Ul9tIk}|nDeK?RpFlb z+D4(lpjc_3)JrJ&dAHcC2v{r^yld9WssB7y8b>MZ@9KKjQW796F(k_`tuhOz#rQ0s z;y``>m;SNh@~RN-n{QujEh{6dnadRhyNs;~m3wWAm@PnJ-01x`F;g^_p3us*vAnQK z7w~cn&5BQ7H-iR^20b1V^jPBvdkjC)aT7gm@FEMv`;G@NExhwaykQ#p-A>rCE#T@3 zXquSaDB4Xyw`!lLVj|{{&N_8go8o`8G|Q{~>(^4nb?E@e7c+`xhdo`LOR)j4)xTOT zWi{IZnzk&^0z(tE#JH@aB_Cz5%x|#E)s?H8CrhYo(@>S93B5=wRkot zPvw>t_F%rQ)Z+b{vRInVFAc&78=o+nL=9u(0BR+pbi60v(oIs^0mJIgyTwekV;O6@ zUm9|wwG7O1|`P_C4%f@{ZyOF`&v|9S+E}8lmBSnvY+*(k0 zvu4FE!hWmozjgX~t7}ShY_xgxE!gMM16H*aiWPfPJ=>@o_Oo5(Z@276E9yX&Gas|! zQPdQqq$G%V<&;@3%^fJ$@hB@6xXd6;_<;rHXj#ndNC>Ii-#j0qQLiGqIyUpbuW5sx z1q9Qs7S!zgWa=4)u*|M3fi0ujs()4QPaAgZ+MsQy6iSh*v~xPvJCv4b%}xEU{9H@* zm72fT4oob^$SjZlq6UUm0NPEA(n;&IY+CwaGeFiX8*uzCr*1}m{TQ7xrSFyfp{bVC zhOz@;L)n4Gnm$dnt~x3~YXj4}tbJDvSaf5++UB}YIT)rhSU9pl^YdeM|5(%*YGUxJ zM0(mCvZB<38LQQwyCc=UqihsisAerIE{q}$Nh|41Q{rw|++$)XwYcn3S*g-GGk6uX zpd^-ppdvc+Jq*9_Z$? zWwiwZrZT|>x=xm$)Uq@S2eu|9>zWuI7ne?(^C!ZElHqgJrnSM)gtCUt7w3|4hM-E- zwtR5n3Pm>W8e8p4lL6A!pRXFGuAAs$|Ch&b-7JDC#zjPm2|pQ^Q0ns2#uL~kZj7?_ zhl;ak6e?VCtbpk9Hq~c2Ef?=wjbVwM-hVp~)c(5AkRCoCv|GwB{w;SoZTfTaIyYSy z0O_oxy7AiDu+~%8gH+i%J^n!8b}omyNm;fg$^gs4!M&m#>y>n9cWtc5!>G(c>Hx47 z?$rU%%)rbVfUykB)V|Zkp!e!|>|$8eC7tGn&l|eB%nPmEP)c&z=ap!eVo=OdZ7XSk z@|QDhWJRfRLeou|5iK`X%hjxx3urYR=vEY!tLWbngD`*TybeoQ04___maEvM6~i$D zeA;mOu6WO_i|93EnZzacm8`lbOJQu;dRAR^*+r>uk*QxmQnBH;Wh3h9a8&{Mx)bc` zJg?sn=F3Zzwb?EJ{%IW7bnRG>u%IwHQ|g`|-Dvt78R2DCQ=KOWBF>Ycr(4v)qQC7CK zR>icJ*SVQqK zElX3TLcdV@pcEcx?fyMKN5kB_U5+PmQ$#P+xiZ>K(AG+VlPsTwldlS5w4lREh0WS4 ztyb#7U{>N=+Dw3EhDIt7WBCN`a^hE{6x3ARqmEfyUcFNTwZ3BM@h~`rx^Qf9UAc=g zqMc%Fy6TX$?N^unZ+0TDH`voTuzZr7exA>}d_`v`w&L0xqi%AoT>$mdjl{&m*(xgs z)eYmM{YoQSv?-eb{G<9t2En3cBF!&LA?PjQ!n(<;pWIJ3of27F=cxL5?b4c0!d-GK zV4U9;H1XT9(e15^y&g^H`ptrJS@5N44nR{2N;lY@8FElMQqtP)@ji^^0)xxRd%7 z7-P9oaEt|*H_|`a93?W*?67jI$J=P0>~cw7bQUcJCKDUAJO=8}3*Ae(M># zvRYhI_pu0=Il!Y*D1oC9HD(TqgRM|I^mF3*rR_Iu0h>~mZYq)xbmD%V%LEhy#u%o} zFIb!~`>ri0BVs)1Vw=)(V?I9Fgf3Z7O{ED|DgEVIMopy|x-k@Ovs;el{V8vKW=R30VZbF4n48tX(mW7-L0+=Mpv9Dqyw5JS-Pnl%*_<}j`U7kYM7T7cu7}bi>15)vvHdzyOLU=3v?%)zDjn^^7DK5si5KA-tjdF+@JNMn` z^%H<^+#-V#b-{&YU3E5H!QeIlwxc+`DZ3+LF{WT;l9>!@u`x?k$LCp`8bepf7);AcOrAc! zfTXq%V_5{aOk>)rC(BZ7(&T0}J5g+0i1Y6;R7~EZaR{{qNlk^=(v-1U9^YlACd@G? zMpvoYW+hl^<+B?Zn2Hl{T`+J{4A$Zasy%~LdVMbaO|YYt>p;t_~&&-I4jy}vqg7NncJv-{O9L~A);sqgfMyTT=7_u>Hj2iv~s?17>aZ2!K-48tv#te z{uml*U^h0brmdzP1krRt-^^t|6X0JkNU{bXsAojm)Z&X$4c5w(aOW>si4l>dan~kh zsy;1!UX1R@C1xsEZBxSB)U!%W;~VJCAknfu;|gG|I^-=sYas@w`dKc{6{lQ%iLxS+ z*KUE8vj;~Tu&z)q3m|5CYSZJ`JhW6?ZZ@@ItTn#tEb8fkm8DYXVG5z7ozi8YbgXME z*b*AFB3@=`MYdu9XmMI=cXF&(dR`ri)z9l(dh59ZT2Anmr`5GGJ(}Kbld#z&&SVNY zrquY1A`f=v<`q>886t|a79+x`UcibWNfLVfgsuL7t*t&={S@aMXSR#`8eBF-Wf@uUJUEPGS;pabg!hr$NAeIR>ZJ-kD+=SPAYu_~P%*`S z3xp8rnbTupS{m?X>-n>8j7-&Z6x|FEojjm9-WZ;)>t{KpbtUdltC^b0`_~xtu0g@f zi`Z#-0m>=`-g$u7STkzP7^O1c)n%t7^WuSRz9o7itVG zx@U~e3x7>Ej+#_STSh6)xdco7p=Nb*E|Rnp=S^ksUtHY0Bu?T_x(c0@>*+KHfzD6- z5)m|=Gi(hq{h?+NR|XrGi4HDi9`Q`Yi0xPZFdu4Q%{JT;SD7;wI zv>H&v7DB7Dlh<4qdpSdJ>Jlv0mYHKpiq9>5V)TfKGtHNXAXr2UG32v; znTadNOn|(qA~qrDQ7%}VxLQ;dV+=hJ2EBw+gC3`MQqFAmICpBm?x`MIy_C~ib^>rL zSTjlO55+nWFk$k(Cu?0*h(Y^S>`#|AM)tnkm2Eo_xExRM`IrC9k4&j7-vEhOT-X?)J$vA*-0T>on>zt zV^G|jTP#josKqlw$PsZfR%)ioJSl`*tS!^va%iex-;^e%b);aeAY9$ysV-h-^#m=Q z@JwAX#1$`!P&;1bC8y>~gEX)Zx=be@?Lu(m(q4Tht2#L4?Q0H7u97X78vbR83XOC7 zKxKl?GLvyM-ennYf$|LJ=A?vG9h${CC6&N%SyrTMOJ5FZZ=FS_reJ8gAovzpYUM7U z4%byF2Cpl*zl`|SlY{S`c3ZUB%vL~^|FTIfdENfkjb$}s0-zoHD98H#kE4%2uaoym zC2|qG&nGS!HyhUw!pu#hHbbK?*o07&3b7cB7Ae=_rY9*|)WuOLHXlhb)}Z;gU?K4I ztgy3X+1=UV!tN<{wzs)-X@_1fWvidk?^&G4?E0cD$q_(|^P*f6WZN3f`T0L`BG>oq>Ze-EsA(t>WX%m^ouf29E9R0hc%j zz-Ppg`N(jTaWKqyv^V6zqdo3D*kk|TfLnVIqmT!W$AGb*w#f2QFmVrSE!HH3`^rbe zIGlAj;|h=$1fNG_;_AW(QI!}Xs|3}uVcd)%k`3pqZs?LaHm0hCN&mSpWHlpMmWF+t zs=!sEp|$TTmfOYp%qyC&Tep(9nu_O6+-}mGc(E=!*YvroZgd;tZCIA^-*f_2*LUh> z92XdeiR}M6RDK(mMAP4^#2IEoimVD-k!IZQQYJErn!mvtD)gri2Bx*$|IhN5&ZP*}n^lEt&`+ z&X~kBMtVTMXE`_MBj>jXdI9evK_hn$43GBqxOL|Nx9&aQ(ZPtrEEH}lA2F_v_eu~j zreLum5Mxe^5u;|(7CWKXr%OXHHbvw3WY>vwU)LuISULl;s#cc5En{bz?A+?%vwI%`^I&GqO+}UNTfL1~VVGLh%F_)M*%!ZTssT+mCZe2ySoZ{7 zTwDEJRc-XqR(4p92Yhw!PXicG)98BY0&3dS$f~_RW~I>QH0`^Lb3HDWrtJN1!jQEA zd}W}f`Tq6Qu)X&c?JYn~Y8@Jd5R0Hz#1aSu%?lStj0j39%1&b0J=Np#xeHvobb)hc zPq90&BuRpEX2$*~IioOfo#>PuaRp#<22}B}*vy>CkKnW%9ZHI=&4bvPyJe~%KCcNA z?UMNB5+xztQ0lauW;x7VFD1oYHB7U#EMg4CPC;q`EbLSuXDalmi!N4glB0Nm5D_Wf zkFiCD-4mxl&hGN@C(n^bVSkiy@4+K(-F?8r2akB?zHo4Gz$nX5SFkTZ6|pJC8H6wa ztN{qK@hqt5LJ;FQ1!EM zvbNv@r^<=Nl$^*j%mVErnGPn|6{d)m5FwhQz*g zn5|lG)7f_-M|wrmza``|>idXcI*JX;r|IQKnFqyqOfoEe7#Gq3MsRA_-7=ipIm1Vu z*d>I(qs(&u{zE>vb)Q>z_qhGwkVl6Ze&op!d^!P0Q{bnHPQlHbKFKf2&vBP}`FQ}L zF87Y@we70grsl*zUmcjK)1WD1gWKM}jnLuh@oXI}8MDI3XoW3ZS4gidn5hLc-D4=) zxg^@UW!7aFs({vUum@chM*(PK37}X7HnTS9#K4v6xYUnhmEo=jS1l%72lnWQ;gQYW zf0X)pxKvHO>3+uzY8pYT3Nh#`tFCbM9O=Mhae#@6gp5=IXSaJ?xq6CgSI%+e(s{0& zE7GHlF+>f8t0P1rg=;O6Ox#fuF{w$zW5_4tpBA5M1StaZMGNMq2>wkcfzk8D`3l#k zh@(FRH)g_;ND+ZEZNIU0^51iOgv!i~H7p9wEWDeki$+9nlXWqbH7Eo<-E6)1I0@99 zj-LjmB@k2C9 zJp1*}6Uw=k8ZJhdSv`#u)tq0$FZSrTP@JRT!4C#oqJo@wB!Op7v_i3)Hm+#RNH-Iz(SNvm#R{3j(1CSzV?3|WGSvovWj z7L}ADTS|yAlBh2NX7fPiin)=~-N2Nu4E03vC%^3b0{B8L63M9TiH*5uHsMBSQ4? z$YnOELANl+Ls7AJ<_cCjD{v{3Y$!q?s>cdkIGu3${CPh1^e%_PC%E;{@WHLyyz}md z+`0dVEEl42s3e7p?<5XMzaZ>LJHXQHvegn$qtdPYRbZw`M@LEkL{;VOy8Y?ci*l-| z`EL6dl-7?s1~AhZK-I(mwVpoFR1z4j%OqagupbksnGKG%iSj^OlqhNfY?#Ur2^W5oL$V+`lc?Q-$rMSkgu zaQ?y>PMzMGfbB>K8Chn?08O`we#D4aH;ZG@Sj1~M(HSU{Sx~V|+%p!5!y_fssjJ8c zQ6g#tqlP>W49A|~$a6T#**_TbXm7~yaKya~vMggb${6JyABvdUFabPfD#@;eQISbi zZk-r&qX)HBxRsP?!4-)G5ED`Cq#$KKHMqpmOC0^wFzBb8-s-cnv&EpFa(>&;>m_XU zQ_|EGB7#iVClr|gDit#)4{`K<(n*m{odilppfO*QlbVJuxbbQryrgISH z;x%=(?^Xw9RR?C}c`Y-b%Hjf=?p=C~wj0YTH%nQnaGAk1T7i;{sr|lf*_LJ9pXT>D zaUnE6q5koveR0mx7^#N&Wf8ph7&#J&)5(c2Mnz1);h0b)J0F!~2q1!&Q)oUy!XdkT z!!y@+dH$)(JaPFfJ6kEt)moalaVGaM#t{5bR#a3ED8>~14j~XGIw({96NrTn-n5>H z6`~434IvtadEnu}h=-33IXE2h&Yov9%-G-G=WsM4_Yl0|wa{xy&FY*kt&Dww#%KO_ z{vC-3HZk;4SLp0)^*FoJ=iKRSc294!-S2UBE5llgPHMPCreiq;=wWusG!&&+L>0ke zt;NSjU=mbq@!2F@Jx+^qhKLieW*T3VFbcx^x9{`z`!{*zt(-@DdyGPkBooaV;^bMr z2yZUgL*lfgg=Hble_CT}s(lmvrpC1CaAG=oCHiU>L>q-6OAawD--W8q#`malfN8wX46M%sni(M20MIOU zDz+AclMWS#O{aae9iVB`jyko`MIcvSv`ln$oHhY8Rev{?>s1;Idi%Dt>BEZPq1FSc zrc=sE0Gfqs)gaS)NN6E~CsG(mRg4Fvsod_}-TWI}g5x{*Unm1pL zrC@-pD8cm6Faf+8QDZUIp*AH%$i_oH`0y@oymOCtZaw18!y&nX?WJH86Z45-kjY$| z)`=@p?Ip2`#XhI{MXKa^jx))I%)s#gnzc(4w9QMH2YVd=O=B&wxSpQbyaDPS$SRe9 zscj}w+xFEJ+idms8ZcAEjMS3~?HRJJfM(^{%YbHiz}E#d%Z6^glNRZ`Aua%hhV{1E zyx0r`T7sH3pr?vHn|&|p61ZyV&XIOZ$O8DQDF0r^@|Y%Yr*w6F%JLi7_=V6zOQ18LeP_kqzka4-(se{{&ryAS#B_I(~b+T-3x z2qEC37Mr)Vh;g$3Ul&F*H`Mfv%Zj*8t)`{z+KdQ9{rcy@Y* zbEkK>e14ZRr+2u1@l^4Cw)%((#OR5Wl=))*rxU;vX6%Sw}Gxu|sw; zPmE?5m!P)Ky}dDSymyy3-o3~BcOG&7;gGb~FO0e^0=o=SFhoI+sN|vxS#nG;*K7=0 zrt+=}XtW7&=!P!c7GJLdGsogy+8_vcx&7_HhN-l#&EM}1TBA^F{2RjzN&$_jb@ep8 zhv_rh6vx!L8qxFMvkluL|LA}E9bK)KYZ^|oU5$TSa%rq*gqEveSArjHzlaxrg~YXt zVUr7}-FN2tq}@gA7Vfv?5;7HaDy!OVx-9TUcik$O6y1D`Yp-dD_i25vrGP;@`JUIj z*l0qepIB~OIm^eMJkQhD&v5Qk4+({djj=FDI*AR@S+KC3wX;~@M^)NY70Jg~YcVb@ zK#wWF$2iM4JRI`oZO^@jkGOUFE_WXua4-t^Pz0tLaTvman`j!OJautR%L&ZuGBLf@ zXt}ihV^CtQbl-|E#?VZw_nMg@jwm)v1F%g2)?y@v={s~J$(Wt30hi97;_8LdTseP= zb7%T&^@_10mkH?>@LK5dfFr6wNDv)O0$LYYW1|r?5L}NKG6Y{}4oSjr3?JM&;QgET z_~9!bGR$&DF{0Lj0fS=j1taLwBNyK^gKd(bR%FcCwTGzb|da)NI5MEsFz|x!=0DbE+7kX25CIN*Q0ya-0V=b>e%o14^tC>#K={{YU@P z@94_r(E-r3H%MB_8nkio)B&1q8*W@!B{M^^>@Jen`QGd5*^~jBMVCzXVB9hW#UhoP z#Hy=mjo`srU=uqrG@G(6O)jZM4H>{|EDV@U3JLxYAVv&|hQQe~DbHTt<%MT1^W^0- z^qe8)MGT6Mi>H#Qtie&*ahRno7y2a;XO70jIE#uUkA{c)V{YBu=hg#A2diBbZo(Y#UPm(@5aq*zxKcAMo;PH@S6x$k+>FK@wj8 zDnB>^F~o&x=JTx0aR7$3z8_DNz*!5-l$8qT+W*F)w6k^6G=3$3p%W{!Sm&$+TRJxDG_k0L?PxUI%EpfR{3+rb`S>DNtx~IkA{7y%LiV zwX~3B>;9SgYRirHS`w{WW{Rp@W?jHVIZ!Dn)5I!CjFX7Z0)%+)k(e{+JI-ux^SO^+<;Il@Tsgl*qMqPKM74Nh@mNd@h#a}8 zlz61xD@vFM%S~T|wH9OC>{;(WwA{RPhj%}`&8>Tnc(^|%^JbD7Y)N%|#HN`^V5{nE z+%dhyu@+s7$(WwFr0fJ0TCDHx@8>wdkdn+4f@MaMPvf&9el95TD46+3Akx}|5OfwV zQ^YBSSuxSAe&F)?U9Mj}$MuV6xO8@hQ>n#G1PJpiyf zS$l~@kc44WKKSqvFTVU1ufKhlVP-I9fY{MwPMBFct(~~jyl<>#-dr4UQwFVmowap| ztOasZ7m^Cvipq6KFKz}jU65A$^yYFlq693M2A56TP%>b4e_4ARYXOa#c4^zOnU!e- zG;J7~_U?gLVKCbSkZuTQSlr0x?^gyGx-cyBfTlE}TWSK3m#DNd@UhBZbTbgs^6k=r zJz5XYEN+kWfMyOnHr5F<4ey}4OKIUfNqtO}nH7}u5Hq$@!?lZN_{6g}c;?Bgoa&8> zT{#qEAtK}&@e&bhNTQjE!p+WfszXLT58cOy42?Sr>aDg zP3BnPv2GH>q=X6ECDs6*;Bz$37&y3ec8hD5&+)|N^ISN0np3B? zum()b3x#8iL@`7yGNO`6wQ?`MV7<&l!C6gF5!fm|A0fu$(u6EHZr{&&`PIAp?A7;q z6c37bZxWnKkK!=205sOEFVWuy&~)-ROLwEUuDzYcc^T|xSv*od_YB7XXexnBy{z$S zoXBchP72U0W^tLy46bIK7_9|}jSSkXq)CNMa4n9FLw(1xjL185dchnoVLZbm|-feEQF=(BeeV*{|1l`V2%9F7st)ZJ%O zKvQ*X5&Pm9q?V_zU*uCCeUhiI?66}4#vd}4BF3R`YXsbci6QEQeYA_Mw2Sj0iNeT7 z?%qG-_4n@b=6iR!`C!B_69NWFa_l5XcqSAVby9c9klVRb@#$F4rGlp#R~G$3sSM_7 zC6#U(n`Oa>9G@med6t@=o!a6=Z>DH<@&COz$*G>WXX12z&Rl>Fkx5L^giUj{U~vlO zWvc#L#H)mm*E#1@B7gYP(185eCoVE<=tqwYE zn7u6>rZf|X2UJ|qzx{LC4=8^qOV%ybviXo zpVbMI9TmeXDWA}0!;x6Y-WY9ku{Msw!n-tD`u^*J=$Z^-V+>9xPQF0}9~H5-NVg3E zA!4;hjGi>HL_A(2I7c3pEO;)O$WzzO^7)V7;F)XZNHImFW+{Fp6sMS2q`4HW2@$JB ztcq6)nq!3`k6Q$rCX9XL{=+?f@P6RK4{q_nhquYHSQx6wsmmB?fhQXJUtzMEsPy9l zB<9#b%+K?uX?!vrV-e2oZ1Lok3q1S8C9YoF;?zKJHZaOP28*bfd6k1IYKr)u`Hk9Q z3pzb|M8Jw6btCQ#;fJr>;yW*Yz}@{EV-t)hRw5ca&bdjQFt9cu#z=^YbFMZUWFZxO z?brMBV`WNNyC}8LyBXls$FoR@{hN1r=v?ixGBDF+EXtTB(?Ed)bgk#s0|HaS614|J zRSN%gjLj;WRS#HWmHk%f2562NBDMN5u_;F3F#?*R{Y`1yOZQ(o(KqU()F=tpm2+rh z7G{*Iv}SD{JD@2IvaVV%#{*~*Ysq|Zig(VT1k@L&XlE?J=4iA;bqEfF;Kz^H?hDU8 zeVxy|@H7|CZL`x;Vm>NP9BPRs7OA#S#L4(VdfymBG!`$GoX8*x7-vZO2^nzb;gEMe zc*q;?Jm8)8?=s2{CN+N&tW7Xt2^wcWTZ8^Rp!o#`G|I$ntq}>HL;`2eZt={Mm$`cN z63<>bjTl8^4#5}tMaE8CTi~Qe)QqS(syWtLoJr8=2tkYDqe+4!eI6W)`N^wq^P``> z#oY&EY%(ZF(OzrfZfbKo>w$<#LgV&y7NCN{jCRXr>HTWq|M+ z#;Xa?s2GR=H;D}o6R|pDOrgzU6fusVmV7j3r!Rc;`guP0(d&HV#wC;t>mbjEc<)Km zEfgUO9p-D)MC4t!TDPbXdXAZ&x=2OlY9GMoFGY{kejTTd%silpoq^0MI4SRc>I8iH|4 z0g;;4>-)F>%{q0QR_2M8F+;N6{9Fb!Wp0Ab`NJ^ik9z+9JdQ5}}?InMRDXEY4erSLvWBqb(@y6+pw<{j2<}LmL(Wf!Vxbcav^Z z)qS;_&P*#n^PB(IRUMixfTmdB>j!O?i@((yzcQoUNzbMN(5$|gxE=#!>UCVY7PDM& z3!N~ai9$pB>-$uT=Oh-QXe+0n*gi(7=>Sc@+61B!BZzTCnYao>aN{wTFAn&nPd>@V zo;}BwD+JAqI>zIi)HNAFT(v$Whs9T_>XPd#~+9XF!Li*U2uS>|Ho;v_AqfBQlU$2xRVtZHrvSj*7r-*^VYRM3?ok4xm{FNX&mHtT85y zpLYZ_s?u$ITdD!K`hF!~HSNA{DuB~Gpjl=j>KK)>31_5>oPD{=sXZv^UIJi&VL%%r z!Rrj|aq85RZ8GbQLtBH^6hqUbQ&X0zy?BqKRN?kxb$kqsv5H~~Ff*x96#NK7px3wj z^5-t|!ZS~E;nX%ZAAtsPAIZg#47QLwM@S0ylq${^1q~%C);b6Wm}HA_OnKvj2YmnK zH+k*-yBq{Xla!q-Oms)gEc2$YGKy%xn*L1rbw1<4OqiRvp;AaAUXjgoO3Z)Z3=QHS z9%=TNx$M9gBgW;ZIAU}}wFTfIqt_RgdViC}yz++7xIzfT@5ufKbX@BHvJ-u~bLx%M%(k1{$@V0l#OeGSpI2L5rK z(gfO3Ik#^5Pph!E0yGsMBDOW`#|&s%15Kos8B;=cwq;X5+C{*xB5hqG$Z!0Qt3knH zLjAy0yhv$noMY=#ecSJM0yZ?)lV}1p^(WwVSy6TOY*YNQ4WKFeesc^>wYKq!QJ_b;a zHR+5=QhWh8B*EAo!5{LI*FWS(Z`|gcdt>&;h1vzpe63J{gVIE?fejURyx?3_Nu z-pKRP%OCRnAHU0oxA&2LuXemQW@wD8buV3-KgXq`GG$RW1^jhEzbgi}26RO^-qH)L zzSAko$&|7tN2Nt#CF9Zxkj3`%ttu^hEg?dcazKOl+RU3eK+|pmTV+`4+!SrT-{hT-6 z{E$EU@jdQ8ddN7>uxY^n*$B=UOoX9HixgW8h=$1wn!2zo62~)lQ}KBbTv{+Rc2j~ecTK7C~n4dh=Zm8G_$gI6FF1Jrt zD;}3VW9q6?(;D#9fv;+&E7oo)Q+_Jt?uTT3>~NRk23Jj6(k+*>qS(q54j<-NyB zI&uHx7#lIpasM#zqc`vH;;T1#@7|Cen-;%p>#{qR>D%34%bG!Xa|eb^ZqTFzzA3}d zwwBbo?QeX28WCfOIAR11V|KPIAAR}?&p-bZ&z&FQ=;3ogLy^%GD0F6Ql49~{aZEES zd>Ug!3?xayYaiU_yFYw`SKq#eH(QWcRP#xk82BhyCrFHiHj^uKkYZ4x7_2tU@1`+Y z$K^0*&^lzvtv459r7^Aio0`_ok4@F2k0E=g?kB{uIc{2ktZ6J*?X^u~A+hEfSu-fR zeu2&0pjCiog%LPrKvVATiwlEqw4R|kiInLwi%_L3yy~i}e&J=+u-9qZaz;?=YUA^9 zQH??~_0`d<4p41ffQHZ^eSLMT)H);-#RZEh)((s%V#xEH9Ub!7Pd(44KmH^a&-Um^ zj>bsvMc<>fXc*!W!HU6;3!yCQC^r5?Fm8)`k1~Gp%KQA})%W@E?moE~T+%}xGoaZN zkTfwke-CI*7SI^+M1(LYg&?ZLkdctnPc6?r^%Ng}{tC}tKSM%B728tI^e@4W&0q0L^^h z?_&ovE1+gWKvRyCtJArU!{yXzLz{Ddl-GW0VwxJBE1Md`2A5SVXOQXuR}+IY&(hQ} z!fjYHi48h5D=xdm_ILy0Gq#)|1R>XyfMRsa)eEQj$6xpeS1zCD)K1EHbb!xttVqAzo7kX^+GNf*+&SZv6gg$0(kx z!QM2<>7)V8NoQeg{Ie;bVLU0PDMT!ZDO81H$RR{Vxv+aG<@u-2@~Mwr;oA8v5>sUC z#UPAgBuNsO)ZFSNDIpXLV`3c=bD~kCH{jkQ&v#yYiy!{17@B&vq)|zDL!FvBP&1{UYXg}Z(|XGp zq$4G0HfrBIplQQkEzgyxWBTcU(b%Jsq8iz_cA@?|AL2^_g$zX>E`;j-^xXHJF^d5H~KH|U!Y_AVSP@j{;NMa1WDQfo^0Bfy5 zR8I8%n{KF$IyisF0Zr3}Y(oTF+$Kb3^`)%1!dPfd9wI&j&YVg3__G)J%txp{RFdh!`mj zX?{&%#J1I{+Y~1}PFAiN(9~6{Ts6$Gv3+u~V5Z?f8W-Xg7u`o~WIdW(Qd2-v+2#qL zsVZ-?DWECyh_(PUN4MW3E=3v)U6r0n)h0d#5%Y_uOowG1hUTbRbS&LptHDw1^sM6s zH1*$!t?Wf^5mrfzxkDq^Yr!8#O!cZ-B|SK zgc74i1*|pT1!Ia59X5ds%d2nS<@-PUkhkAIBoj;23~Ll)BOw&7En_Sei|@cN{TB&n zPC9J(qyf){F-%PxvWc!(mquq9WyQW#6d#r7!9gAr9}G@~i#rLQdj2Axdf^FnwAp}@eW~K7}TFq+2#`bj!n(ll}3qT_!hps9G;JPfhrWElqAX^4#npm(d zLBX|v<{$nKzoShCzN>4cEubkgylp^Db7_U<45GU4RRNlMFw`OKxW#_aq*c?czpddIa{BZ(zwy~8c;ebs zcD8ziY>1e`2>1}OX@Z76F&toYOfRtr30a7UHMrFB!`Cyu_3iKQ{+$O5ws*;*lE*;W zvxG3l#$>ZO(V?zT>2+(Sg_p78<<+vw;ycXT^3+;uHeVX1l)(_Qnfs_gho>2Dn@S+5 z)48?@Fpc%&ThuYDx~6$ul(!ZZcayDnj{m=j;dd20cci(g6FhJOmPz_ z>1c6(tu_4XGBZ_;mR6hFQTw}W$W8v{<1u*Jx<6g|zfN7MqWcZ~7b#IA7E~vNMY97g z?xy_aS3kk8{L-^*r-9MoA$bt2+r}1J%G2$q_>L+fh0MJ6`rO^i_?s8s=8ymK6<&R3 z4>f&kUkDtau^?4NOi>A2EM5y*-#9x<#a>4Vy6B%SyqSqq_puq|lLiz=D#zu&=t(OP zw_#YSe^uuOzU+6?_L=(eiRwWj#u@|x1wjf!pb-oh5=4t~8O8-nBIMC>IC8xF>KokK z8<7rnICbU>iM2q$8qnY|h9X_uT2w7rrdZ>!R>;QtT)lXfk34x5QRV#)KO{!z^#^2m zR?P9{sO*!j3GY zWpA2&B`bTu%KEIVN7Y85*wn7yQr2mnp=q-@&odBBF%s9E$Un+Xm3-Iwq2-4|cxtq#Z2H}v(h+}f!Rl#a95mVG6rbUV}3YGyuM+6g!_$`&9D!eF0l}!5h;T}7w=QGb;U{jHrz)%Vy4XljjL z2bWUm312pgL1~WBFbjZY`Fc|WXjF@Rr5?;Qi?+5MzjB7Dkz!xjH|KR~mKmDPz$~tM z1nRP!7F}H}0<1ffepv|${3$AtpHmk zpV4{0TFnw$Hed}pHN{D-&DeBjYmS8X%IiQC8=`IKzgFTP5orXxNdy&3R3X|)JWGra zr^Wt8NOVQ!2N}^Sel+IdPQsTy{SkikvrmIj#`y>};KV?P*a(TW3?(8lArXf%1{=^` zpEuq;;5*-Yogck>r$nSsPQ;VZCdOt3&^Fy;Lk6$W9-nlK&ZcSOda~bN>z#I?%v-oz z>wf}@#YaQ*8JBjq`0A&h;WN)&W!nYDeuz<1RPatL*+i9kU{W-Xs7p|Cgn;YydHd!A z{^Z*~;ivCDLi%TLGA70%4kL*c6AEpr%tm6OB;yXkck8I)O84*22lmDqBi{zl$BxR% zO@Js$by|A)y(87Zvu37)HVyhM6TjPN{JZMpEZMUdW9|4iop(wTiCVU=GoS%Vt5G-U z)Cl##N7XDtto++@d)H0XUIsPIDhmx+Ov?<9(PIHL#|CP&dTgiFpVtL6(*<1D&KQ_! zXhij>Mx1lliH?jFgBOn`2|iD-SvUvMcY=fq^^;K(n#I*Ar%l zHvDOdX(E1Q1R0 zJ2u4NG{%s%1T@_R_NL#P0vcQUy*BzXe;WXec4(V@`m6u?x9e_LzIZF@^N3brEUCF) z{ol%-RZ=p(B@@&1St}P=W80UnH%r!18d#K7chg3hW-GO<%Exi`Olda&RWVLYT&t`1DY-kk#+BTJdZ!|pH2Jqiw>B&Fcjte zEB1&i_XL!5utmUe^T7c>d*>!m9jA9sv(-~v%!onAy~Fkrf@WA_Cu+qM^`&Cq%ub)H z=g)BUOpgy9W<0ukk2LL}B4lxlOATZ>TeeT8%~^aKfw~UgFRcYsb_7*zJ-@Z3(r=}$ zS>n=YXiv*y#*%%owe!9ylj+#jRjWdxP4B1O{?i6%H8M2i23KesFH+aYb|+V@eD-?n zJ~{yzUGIepO_OCci=|1Juv7rAVgaoiNL-g)wv6EG$0N=irq&1ywkgq%K|P5TP)7(6 z6^l(A86zaO?DibL`h^>O`7_t(t1`+xej0B8Xeg9URlxgfl3Fd0SRU;MzVqTceD_Ch z@@T9igKeTIDkR%b5!4&oF&`(9nN()bsyEDdY@5{MU~qoX0gaw;P;=baV^_%28xg{! ze1STL7>AD_dCoJJ629@p=XmV+?Q={PD@^y37 zvg_u1SAo6C>$Oceg;l_#4Un>ox@gN9H8M2Sz+n2@(g>`*ag`X?Nf2~(7F0c;nMJ8f zb6?x^W%WBpW3vcCCRr9Gf!p&*7Q*@kEV~-y;>DX^VpfCJ8)9&dn}K=U z#VJo3a6E1Xrt!!22;L*2q_)^+oHZCR1n+Ss@bJL%(i^up7%NvU?$Wb4q7mo%Nc6ZQ zA@`mv4~Vgdb+gp(%ew=feCjH>&$)H;4n&8Q9zh}4FqwnZzl{ut>M>0)QwjLWvX|Po zN!FTk^BFg#;(%+dp!Q(qsFqUq7`skuN*Bj=H9Kh)h&7Gx^6T&7W?I-!+b}dM48qE$ zyqcA>LV2xi7)s(i=Ec^u{sdXdW-P^sG%-6(3{CxaN`jg@#Hf@-k~g~Tno3ht9cJ#f*(S>}G#=m*<yZSi1l#EU%CwtU?BD1 zkF}XHrp3&!&+5^Z^Rr8>qey!f+R^>nt%H>$9I0k-yD%`_m>JXZKGI1Up-iFKXmuM~ zF*J3XO!4>$aYOA4LK$1L`lsgNg=H}_b?nJ9 z>(XY&DQA|tfVIW1N{j9lIwcn444Fn$4aQjf=n<#40-ycFHU8^g{}laH!CQ>!7r~2+ z3-wcXip&q$>i5X)u%YOdm0lXA%d+ZzM6lU7RBcBl9G z_cbl~p{nej>htSg`6!=$>I_K$#o0t*wf-NTe75D zyEagWb|V8{Hr5ND8*L}1S26yPda%^EzAMt!mqqfb?rG-QwVV=fpZdzb`t5b7sX9>8 zrB-V*hxopIzhN@b3<>=eBHJ~~h@ahFq>c>Ru6^f%wUivg*c=6v=%-3qs&vxUv zTKb_KdsFQ)r0~(lLUBPf5JQet#fp%n5PgsQ;E?C85BT5wqtEfo)pKaBL^T9wv7%_m z3W2X=i)b8#oNWoj!4+P7{X_o4AN?h7d~lbvw^M9lFU`fu<2_z`{Whb_a_QP>di@Lu0cZR8JQCEC z^afxYArxudqLF^T$J0+fK@v0GdiMh|)1SCE111>|g2idJQ0u5^JWK7Ulvk9lQkq?7 zg;l>osdZ`0uh6oA~h!G=7npiC0^NiHN$F80w+1lZa_dg_HAR2-P=PVjVU`(Tnsm^d~Y3YFK ztfjgbmPY$ib}(!RYK|pGo>{C+i^;DIwZ^1DNx14TTbGnm*1>8ZQ#IDb-#2C;n*e!} zQnapKJ4@Ss>MQ^1x4WNa8{8Ia1eSIR$}KBsSqgaOQ>CX#ud7kSrD?A+SAcWr-_1dd z&F@pBI_ZuA9b%8a(5{QP*!j`PWJ>^-J!b# z{rsd$xAY@cR1?`L}=k9o~76(d%tNEOa;w z0Y5HcY;2k`&N7^}wPW7Irq#`ZpU(k(Go21uV{JAi0W7@z6CR6`hC3(yCO55iew;wH z>=bTO5KW08LIOAU$NcV}zru(2_W0VDo@8KCf)8knY;SMly=R=|BuRp*GQvW(&zC=X znKRov{Lb(F75l@8>8E5dkkqg;)1cLI)?)hhtJG(w23R}I?Mf!O!+om0QwCFC75QG=hE6^K^tYVB`g1V&BBuVgkp<8WfbS$!k(xABW>ZATYvC(xyu36<}sL3vJoO)un%NiSb%xz)a29FBTEj;{r5Q6Qc0FHwDEm z#dNP|XLW9 zZBd-p_CX!wL(c3DxOnXfAAWF~!$(8nr0{HA``atWR@j)<;9;FHZ(?u?fT*$x9^1Ku z+XI@qc$v2STYtWpia47kz_C2RHf5k`=zmv0BTEQOY7kjzHSUHDtgiIHx&UKd;7?Zo zR`rIrDX1|^Cx<4cM<)L0^7~GMG26#bv^C!IZEL=EL*o<;VwIqQ7y~Y)pd*T@9Ig%uZ zN$??Hq$s#&qBd=RjcGs|0;ZGxF;r$awP{;T7Nm#} zbck^Sq7+PMYAi1H$yLbHj0bxo-h20L&TjX(arF{DFPNGnF+`ssRtQ-@)#8&B?+>|j zCgJ+ECwcSzLk`BnTGnsT3N2cQWiSP}wJ5=KBGfip?uhYwPI|Bt@K zJMTV%bcaZo#LEa03r(B){i+_&G)eDAX_^mOI;W1Z#A569Q}$!U6q58yo6*tw3`Mow z$;KR+3MJ}f^+dX^>7{eo#^$*G0Qz@34{8$;xK`gco5twW&(BP9G&;7d@atcCmal!{ zNnFSY8u1c|YB1smC`yL05s87G-R8ml1OC6i|1x(T?vVk#qz~g9Q3zJZonX8+Fue8s zXx1rd8UwR13M)prDa)p1X_H0Qtz80C_0Q-M`_qM;QB~A5=={Vc_NN0gR`Rz%H<7>U z{;sxvg`qi);*27jp6sNCT`Bre7Kwi3qpfB@mQO%sr_`<|@a{S_?HQobvDAvp5?xIB zYr`;YLZta(qSA z`m6*zXzluzIUSkOdq@*d=<4z`B{6#41?jqi*UI}#gLMFphs@6RX!lSX+W>Yoqrs9W!4;iQ@O%hZhiXe%@M^Bzd&ZO{00h9HJ$ zENT=oC2a!=+pJm=j};n25%Rl|>!j`Wj>HDb{YZ zsn*Vy+TB#8>41&3?&vgCrnstMHouKASSbvPXv7dvu^XB@tpz0V_ewJxGB`~P7MsK* zuLWr44T@7&G*S$iro8#yZSLdXK7x0lm4q){iKTMSB9os(rB`N}3LZKc!e z!Be%-s#j7~S>5m#bZS~E6IZoo_0r`muBP)}i=Z<-QX%fTV|pS+BB`^)sN`M|n--r< z)O`QxuYHoQeBvre%*bQJOF%VZ)zY(}@YhG!?l}<0H(z>>|Mab&ar8-ka%kZf;s%-uszMeR2P#*=CYSMqS|?ig7X`hC^eXd`-z|M{#_mPkb zB9QE27y$`FG+pWho&=L2b)>`^#Tly?h%6m0 zw1_5d)y}FIq{j9MYoxZD_RD{b?Lk$GG6gjZOq;a)Y87lVVQ9Ye-~D#ySQ6T$bynRs zO1;a#l$D2{H`LOl7EBvP=y-+aOhp*7iZ+6c<)E@saMrPUUsr?Pd;$n0#$W{UEaKc2 zVjTJ5kW-1{pZxMi_`;`dkmv!qS4?k*+(#VXqLSM~B8Eg#0t5cydvEfezV$Nuc}g$o zA;u8#ARc1`gAf8}5JVlAcr3=TO#pW{Bh{{KKx10BnW!s^AW|?i^U2s*)Iumy3{hhd zlVS`}1&y1tR#v+J1GC=yow+o(x5!5$2B{^+F+K`N zpS$-T@&2v*T)n!@nKKs(7q==Qj)@^B?e!UF8OEd#1E&U#C$3)N&h1A$crXU(VG`3i zW@KH^(p;BpHA$r#0BAG5hH3%1_6*H@%xPnM|n_U?c4|>}r5{ zbpJX7B^}sJUkoUwpKV-A{QZDGbk5Cli!62wqjZT9EE&KwPyR=Dfxe@zQK zI@Pl|%4j>%!#CDp1Qd_X{w{^GvN5$vtzAy=C&z#^)RNMZ)uGu~m~i9qdA!1VQFK-R zV~)5TWsx+Es2^ftf)R(<2sY*By_^ryKBp(rmkSbk9;Mm>EM?VZgQeFJ11r%H~SrbEVb# zp8iIuXJBNb+ESEp>D$HdGauv)LJ?|Hm2>h z<=~~el5i6spSmc;6eT2zIGQ+fLz$2hvk}pc(C86WGzL_q2-x1(Cv?))up81&MK@zO zn!ewbY&#(a<#FrWG@am+$zB<77?WaAAVG~NT)wbNHX4$+9^U5| zV@XqCJc?MClKUa2cM`5&zskGsf56_s7_s))`m*l)>t3#)nqg`69W^KNE;j?*6|U*p zvJ%~d1EZW|Usr2h*{8nzuO2I)DMx5WMI=kvpeCWw27Q3SuUW3DS!SfVQ~0{LH_M`K zfoWN-xeCDj8hvHqN~eMb&|L~DQ)1a^5xGx$3Obz=jr)dL_LegqZUlGm=G|G z2@;9PHt9(DcYpGIzV*`&@J2`yL99UoIG>>=EdtL~i>xiN1uG*Sad`o7=100A2zzz> zj+fo(46d30!=$)h2!R+p)>^i=2An&0j!WmybN%8jm(K5U{n}-2JaLWl=gwiRAWVU1SkfE+!eL60U@2c3$@3hG>KdvSlG6`#v`O0Bc|#Im|rab*%!1(-EGen4cX ziZ>3IBv^%*XJ8F#9a}zQs2M)lCeL$z_2ZZMKm5ZNz#lM-JA`x((H%@~aWcZ25t%g% z+yHl&^Z)+VeSZAoAET=DdOh+y$69-A>)A;68Z8Tdvw~_M#>sm$W`g1kF-9a>j4^}| zNRkBaJGiv19EekpT6@RvA+dsFg{|#M6}Tw z9`}#@7q3IJ*-vP=zZGqz!%}_!<}63m9)6s0Whe5#{l;hb*i*Ya+JA`YZ4*O4V-YZH zkr_*ET*ABW-{k-Edp|%&kw8LB6Jm^{81j4ssX}mTk9AQC$ZqyNVp(AFqMK@&(O%4A zGM(dI=I=G#cd7wtegDft3(EKZE&#U@$1EWUFGWEx^Jt7`siCj$^clBv^4+lRz{O6%z~=i^75S&dh#-n+TGXm<1j4*4+vk^ukDh`vRWPXgbhD4M&en{VByzuN3oZWIf_rwK$ z=@ZZK{4>|sJ=G^o3Xmku5s6@w!^3@SVmTa-@fx^z^%_^MU**<=1NI+|$RFmMa(%X~ z(ocl#?QKTm@YscL|I5>zIcC7LAp_VL1JUrg2?`QP62swW#0T%+=Ipr(oIiI4{17KS zh!JNKj4_Nx2lV;!;!e%a~C%?QZtk(o)Di!@Wa&dP9 zHC;Emied&WlYknNOq!UfmZbx#;()r;dTNT1smp?@DtFK%3>d8=NW@wp=3|@)&KQQ{ z5xss&lpfh=#AiNofq(svKFt>U;8G5wqB_F*0oFvsM)H`E+5{g5{Kr523E%qJ9T1&W z?wzt6B0>nEU_*{+%U?Hc#@GZ6kr*dnOQdj?Gk{E1MY~1JSZo=2U_$fa3!qYte#Cfh?JjK~92VqF``RrsO z#<4$y*I#`X=eDtKo4@+@4>%YGwohH)Z~o>*?mvv28zg-8xr_YTSDxh)AHU4?Cof=n z3Ab;3NKpItfaC8pplR4&Hq;q0A<*wRM%frI2@i(Cdmr54=_jsoX4^tu7#N>tAc{*Z zxzBM41V7^1*7p)CI)m3_J8W~>2?3)&h%jz@RSNM%$YUSgb zT@JAUU`Z?Lt-76y_ctBWsON)zOP{|K_`Gs$gSNgjv?n@83^`Up5d);ID0QF_n_5N( zhdg_2!2j`|eU&R)kY!^=7EId11i|Hz=nS4QePhVt7Ju;VH~6z3yu~QOASv860M0pL zj59D(jD6V1;5PNIt~5arjO)=@xR{Fe9IXSff|rCm&*@o%h64Bn?-4BCdy@V(NFgLv zg!P6=psz&*oDW>QUaJp4#HZwaW~LkH`)WxV&Td$G`C<&Yjxfy|>=rqt9I7^r@7Xdo=nY5qqL7 zqnL@tjDjl08V1hMPZNBW(Mu8%YY?MczIdMVXHW6q_HA~019I>9;mf!9lfQX`4<1A? zeVld2Ak6mnfafFu%ccxX^RqU4e>sXV2@O;Gr%sY#Ka? zwPblf(gB3PqX)M+zdPWc|Hj97^4t#MM~qEGt-v^;Z-rrYNK7q*zC%g)=8Ny~AOG^F zUJ|cx8?lgX88e|(|JSMkOjjCixmd)aZks??uh7fd;E}bK$s3$d$Al}ac z;>-NiOFzMZuRhCYxX*W9y~RikXVS=M&Lvvv z$}vl0AC8p2@1h|pbxX+xw1VzQxK|9@&tMDZ9R1@Ukm2 za8-u=sJNAM0yXu>q%0b|+lyYUjnp)N+5i&jflVcIwL}RnvocW@8@voAn$xALlrVLX z%A8x|ZST3r+Zlo{vT}SLNJTM>+3n~2##cVgr=PmU=wL*eSfbCdjIgfHFw04L4j%+H z+kEep5BP&`|Aa9KJE<$O$Gnp1)V*XerqEl-y(fe~nx>OlMQu0idQ!gZT}^>b8Q@V> zu)RXm&gY2F*-GHz#T~9+Im_}>b2rVuDo3%k!=2IDX`Fdk(%QLbM-#b}sgH7RCJ6pV?86^to1_7L&{_?hBwwx5%S zLt++5k_2PH`ys{&)*4PdG2oBB^B4T&^#^Ejmc%OKy**rNCaS3Gq@DilG5CM?e>MfA zn?2n{MT}vXXQW$wLOvpOj!_;-cDDGNSMK7HpYqSY{zcA!@+&dW^;+j1KwQ7oO!e zzWQ;@!HDP_S@iV9kSOHh3#KL-&N$1D-#y@e{-f`4XMae)pOASa)V{)R#JDmaFH2H76Nx4 zJ>s2PceuH?&$FNU6j#rmp~#L7#E=64V<3h&34RhLlSP+W`R7`9L6>JuTya(6;dNPB^0oi|-)jAa7E2#kxA~Q^HKxOcx%lyFfNX3) z@MZchq9v25A~>|#;}J_I{Ibhy+PJ@{T z`N%6{T$UJ`)pmyZv5iIGx^spYJsJb4O~`{FCdKdwH9fMJASQu4$HhY~p6>D7Q&%}S z9CP+;kEd?zvfVfIY>#}DPrz1yzQu~47Pa1GV-}beQ}T>Rbr5a+ zajz*M1|S$yKQCfvm@DnQ2FuqL2mV!^AC=-W*HqoKZvX3YlA9mmCYQ}BeHf4J)L7#xlhm|PbZyg7KiXF(t=hmAVrZh}Fz#WJKI6S1pLpUd|KvA6jgLc;WI&eX zY^5o=7lHzKobDsZfV+n~{NW#en_IW{!0wF;p$>Ul0*NZH;JMx%XF(?8O&>`+dk%RC4%167=}AW96DB-!EaqcOMdK4dT$ z5M!KynduyuW|1`tcWp>Xi#%TOzC+D0#$cTQ7FCO?fnWfG8D;crpBM_4T?m0J9FnA# zEFR+MHF5;U;aWJkA6cuIV51>#y)Q*X$Mh1%Uw`K{u5Rz}nU7vY-4F?5kO6rB)iM3_ z0J%U$zZ4pcgTZB>;WcPG#FfB@G+eM?saQHNu@BIv~qPc z?LCcSsLMgk-599m09&&bbJb>#Qq?12*ACA=u6QAx8rK0IMV>NI}J1n(K(DEJ1>hzRHfzQVfP1D-fWoNpc&!$zp=j+>)>&(o> zD>b!2fnHIM<@)I!|IIf(#?#lfhygP1vBqIk2|l1kaFUZ6&w(HCKmXB>dF72;MCsvr zeF8-wtut|=%l=!0rGGD9b40g_5teGZVf8fDND-*4ffym_ZINl@%8kps_U^-l0P9(7 zP-~W^Da-B`J1AHtO3lGXqA$iEF?Ir|!DxmRi&)1v^W-t&(jrtkhJX>**#5fT<~3U{ z?f$p`(Qy?`G{z9a7*)u!gm*u@%kG6!T)ME0<|EXks0NZ=Li7QNMd4Yek?U7ZaWKqz z`|W$!!GMedh>(awiKt0xW9*9gZI;G!c}|yo(RA2zH>?h=4c}{BJhh^7d0A!^veCL+ z$>L)3n4sp*O~sm$Qjd|UE(Qg+p{9#k8x0Mt$&QUJ4ff*c-K@lg)UrXcnkh7`4F&U2 z@Y=v?7$CMX0#OQAO%r|F_VZ3BDP0ufQ(ZlU9QCJ}k_|~tmZzjT=AVB3N9lu+Lw=^e*q-9C7iK z>dJptz4ux%#ks!)|BxiH_z*~(!z6v)zj>EG|ISP7oV!AvdqRlBs2H=38h4WpO8cPf ziWgKrzZ-OvOw&G^6)|8=1ho+nk7|xigV7ViaCnH=0pb!|5yeQBc@n#gSHB@N*o>i) zjzO{OvAW&&ptjF7QpAI~o&z`Fy@wC^!@vA7XLdfz)91Gt4iD({`h>gyCN?qTS-@CN zFA;w8mp{peHy`r)odZm7tEdMjkn6aJ2hep`i@J`PPT$=Wke6kac4M1X?bl)ubW@sk z{rip546;rVbn7e&wftQz%;9CO*QF z^Dzp=f5b+xFpYUw_`C$L)rk>yW@s8*Y;}H4S&FG$-W$vMv+|QDqX&V1^2;yqFMj1o zL=QO(1}la>kr)iQv&5K@;OX~w`IGOw&cFZjpD>a>Mg(Ju>>Oi3utoi&>4`}~gE^4a z2CsA+CWbu5NUloS-y$C$aO1)bU;pywxU`k=*WY`Qq<0p@5klb8pLmW$Mwpm!%0O_I z1KZ>Kue`%wfA43c>42SnI!V_)!?{zZNCZSPq8}C|BVuIGKSlJTT7V)_4{D@go;c$R zg;nEFE!2!-a*E&m&u+!Wdsi~IBa6@n$PBGJ|58@oZ{7+_xb<*&R?-VK7+9lVT=-pMv<7b z0&K0uPuFmdY^ZZnmIc%lbh~nTE(J1E3mIvDvyuZX$0Ksrc6?UHqC{3BN+m%t|97_* zHPnFC7TrVbbZQnS;UWTEoTS}OKg(>*@<5a>h*Ao3jun_ghoV(4rJ0tj`g}R)dHFg! zL*XR>+i~^ZV#@kcy?KrvJ>-`@_7wl{E6-rVh*93d4uCKsW+|9ZWZWpYbekW)d5_=w z)+>yqkKlmC>XSR%VS31@maHdDUv$xo15 zfkZeQ4N3Y3#LMqBLU8ghh-+W}S`7XzvhFu*P%dbWvMt@6kS4w21AUaQ`-A$ToEe6~;j-V%TJ^ zeX`bbilAsqo*!b8P!y?jTm0;eyZphoe!_qCYcG&Gi?vFgg~AFYFdAhzx6Sx)kLPZj z;kUl_8GiQ9w3MMFS*jthof@JOCB7z`L?V@!IQ+xHLo?vH-T%dfr5wd>azjvn#GI|p38 zxJ}PMViH18q=KlBWxjB6g`z5X9Y8T{flI|TLB=GhBZM4m0y5w)zx^Y=|AV(lwyzMw z!s_S|Vs4f@>r;5MgsPILLnIW9kO zjt?I^n&~U`)bjw1oIb>!0Pue#ahVo47Cm`;H+?ZJ0;Wc1xpRC4K-V|O zC+@I`4!q~ocFK)QyIeWH&DC>#E}S25dMjldAbb82Sr&P8@Q8=E-{ZrZ4>=qvIXk4X zf9$Ntaelu!=+rcv;I(ppIgbA1enfA}67n3!7SRWi1U#OQp5jlw^$O=N4*2+!+nBMz z=aD4sLG-B4G0wqQh{OAQ-$$We#?9MJUi1ihP7a5=8gK~g)Zv2m{sE)Lv0mktvEH$ z9^MdF6XuwZ(kjsnwR*}7UYz@~SrSWvWd^Bgqb@vjrZg%suDo!nPCI5ZVXQ#;`8LV#5>Ey-LX1V= zu$>eI(CCZzYK!-vNKsMRZsE1){KJPMZr&f0^_1_v_zo|8<{938_gyZYInT3C3<%uk zkTd*;zkH3iZhwgBZIh%1n?2;SFFeh!e))5}|G`cETNFP`6XML3R>WwDSjOWK7q&D0+1Fp-=_fAGQ;&wo%{|ZW|LgoXm}}B)Uh4iZMmeR4WF>lUg?^)dA{cwvibHV=P`Hc~oqgV7#BiDn$r!vfhQL zf^o^Dy#b9m)+WS!qM>0ZSj-Sn>n2Ho#i2k|i=f!PA<5Qf&_w1!?w1csv;BF);*O+D z3dEC>6)q($9OZo?57h9#{_$&^`)@wYL+UX}rji~*6@#ac{-6D>y?(>-v zJ*H#!;?z!U_WWjsQA^dE%Lsu*4dY1*!%;r8PBK2{S*uus0qqlC{O^8ybwWx51+Mk< zcuoXi z*=*`orL$^7|4mVsvFL{s6m&7AW086*p@<{WKvZ7@LYrbERuOF6M{Gn*Br%p0LkMtd zKjT0D=yfh`Cw%IKk8okT$N51*&jd_5;LZ0R@Uz$N76#4si<(Ma$;LS!-h9CKe*6Y6 zzjd1rJ{)oX(E-Ce$H#<&{lGhK-Q?QUYn(aND?*=_=7yOV>avYzB}PiqA~RJCgTVl= zfl)rfqz>Cl7-#VI&D*F12HR(N|6btDckU1l57`+E$Qw&XY{sN47n@!F%@HI?2ncyp zLX5aHEed@4fM~>ukci-nMPnrQ0h1)eIMaQs-jcm9;-fU;XI0t@CFb#X#Er|R`Nmg1 z#>a1*g%BCV9^ZNCU4H*Bf67a*-{oNMA>&a_@DU@ni0zuj*I0{H#Th|Van=y>9Iuh2 z*PBQ(xFWMKf?{zd!5TwigplW01P#9Erz#dOVz2_lKx!f}4_I-4kcWT|ksw0Qgw*yJ z}2JHP|84ba(ONN#)-K<^TM-Fk;n*<6tM!PC;V{DvEIO&CT`AgFQ!lKzC@+FujUlKIV<2^fmWa>Bg&{DCMvsaj&K0M$ zNxXLA&w^79!#=9}Y`c{F;DB^*$X9>qIll1ZHO9jcH}CH8&WHE#wnv8Ht+#J697X!h z;5C9+qH%n9f5@HvA>&+#=`Km|BdlkmZQ#s?4gxOVXjLCYo4&622H6|fO0 zYTjhQGaP#&hW_9zd5HY@rC0gRi?@0A;R8;eK1C{y4-%aO5K6c|ge)teEg>-z9^f1La2x5*) z6As79fBNQ6c21i5knxvBK1<#6eCZ)=W5gGNXdzle zA&L-1$tP0V4vWF^An|NT#;0#wWOr+a!%-3Ma^b=jXSXcheED5cKPHU!8Eo%xa2R>% z)ptnTpkSrKenE9=z&b%gAdetvidYbnbC@YxX+n%6vT#7M-Q&*vJ&c|w;1`s6LnsPw zGKpuIW*}7oiD>-H1!1irh9bz-XMvDMo_gvA_g_`+JS-TgBpo2KPY$Tv#_DLTHQoAT z*f8I=jFOG^u_nQZBM$))gL4U^!yzW^5d&-w`V5C-MqY6)MK!Mu_?l<1Y!PHC6!op5 z4@G^O5D|f^=eCK_Gn9l^KX}9+fBQuab4x!_G!7?jidc~LT8IQV>t-=VnI<5fq@OYz z4si-D84#mKjFK275591L0xnHZW65GDQfB=DTU!GLy%d8YTDaZpq$2u<4<8V7#ph$T zQ~1i~p61ynFOd&39^5(L_rCoTvS=6$113pPOu=$lSGZdxJXRyOY-qIO^Rnnk-5Em6 z_@lr1DVMJd`1F(8#F3DjYy$p^x@UPXnEa4aJ@}1Z{v_|*{%h{$O2nbKg3gOMXpRv} zkfY*^CuP9baosN3$u(G!1`t(R1bO8kxdAJ)fjHjk=kpOZ4rn$B$ej*cD?{Cq z6=`Zu*UX+Nr~yiWO}ma3rR2qEEA56&D|pv^zgsDZ!te+61O|*p8J~D^m#=^JDf+66 z5sZc4bJV05QjBC|@sPBCng9GJKjp<&ZsE3e$g?qnWQ%+paf!!R!RK~1sk$%#3#At% zAs=}#f=wp%h@xO6E$CixMc}dRVy09av^0v zk|ykp4!L{l0h(Kki!-I(X=c&1|MOs`nxWYy8q*ypJ$=lJ?BKh3}W{g>(Wwg`a1V2vTfF-XGHp>iB)*y}P{Rf#UGpQZIW zGhJN?C;hJLz|3)FP(^8Xy}ka0|Ms`*Vod5{XewV;%WBrsYo(iuv9?A|=gpZ_Avfu8 zG8N2Gb#0MWXO>Mw_u71J8l=?|myoN+XRw>XzxrpN z#Y=D8<#+$+CuFh>;z<)r^kz~osfdp-l3=8IL5oP^`^|HumnIk!&^*JUxWs}Qq8f;! zNqw(EhTCGXVv3lX7?JppEHk|L)Au+y%z65W3!F+vJbmLVFFgM=*Uz8f{=)~nfB%p_ z`|caO^!gprQ>O{)iy&m}5rZN6f-)2=_(&oN2?oW|OCzK414JSs4wH}g+zU_eHPb%W9!SbKhX?ofdH(4Oqyxum@7!fPGI(#mTC9tc z;&wH^ax$)_+4~C)<9b9aK8A_wMzKy94i7kc%J9)=u5BVhT1-%q(t3DdKKK3J|Xvi+HSj zpWRa_!5IjF>CN8T`Z*H5vzcNw0{NsGvuurx^+c)tF&tC2`%sdbFGKOPtX|FIkLBR@Ha+xd!ddZL{pFE2t z=kPFc`+nfo-FJEO(LO;A*n4!q!9!)>`uKx8Bt1tSEe?aVf^%*nm+#19VN8rF#s#wR z0j?+5Bw@Jskk5bY24DQ*NAYq9!+hpq2(v7&BVoH~+(#7{x7H(*P1(4FN5jBRUU`f6 zZ|`&O;Q=GB{Ga~C7r1=+I@`M+us0qP#S?9gi9?F>@8kQi)-oLJF-R=CJC?osxB24d zKgIQHmw4@!mwEd7MZWmC&+_`4m-y=+yuy#)zK8AaVl^T6qr%h}t`U0W_posHI+@>h<8Dk{RGm<3X*FXO>A9?<19_>HmyWjsA zufBPY{?-LXArMvZG2lW@-)4O3lTQ{gSKf2~!5#<0F$bfZepbvIY@czA_*}8Bk0e5m z5ynNb@qI)L)}|Pn5<-!|sE7Mp+1=*auYG|cLM`y_ho|}LAHK?+heI??I{}LB`--e} zzqb1yF(W6^V;dP2dNtqr@w;5Sy3JQVeg=#q3*cOem7FX;z@-B+pRxV_XYRkAEy>dB zPVl#t`w>@*&{}3jq|QoFA`^wG0!V-WL9!{Q$HvCmj4xyJJkNNVm-z>#=YcleHZ)GN z**#4(z$QqDLMc>LY8jcKwY(y(IKq9adD!Rbqi#fGu}_#=+0d%lXeYKA)<%y`XRPDLM0X$nd4nRnMCl^szUSvA&T|9 zX-~txLFX$ZWwFBZXOHsjH($ot7GGbwM59$OGCINEd-plUMyoViZC0BFQ5gb>L@Tu- z+K6v8n3{TEBQqU zi*;qHHj#-p74Sq1N@RFnqvZ`11+PATn7RA+`26deOph3{EJG=^C7rQ`)C{`k(klc> zBS)AVOU9k~C0fGJ41z<4_i|`L(pYKn>yNHbloq8ucuytDfe6RuzWPMkP6Oww7WIna z_~99T@B43Z`p^WgJ%5lh2S#}A$RvmMjHBEtdnd;kpPc23OE*|4933odp!sYFe%*jj z2#NQO%xG-cVr6-Wzy0b4d#6U(H(p_+KF;;qk7+amDh7;9)+y^Ipq2M-=IIkTU_2Fl=w8iHGKL4o#_R^gNk5ONa;=?P_ZOeElgNpYGRC;=>sgzuh6iA zyru>Vo%Zz~Wp{kPzDn_3CM^})V8(EzrxtUZbgTl8AGSDus7|$-5oMmpzLZE4X$Fsy zIjRUuPE>JHap~403NNVSRcujE$?FtlM9MJq-0?&yk=Xy-2kTBgc~Q$6rDG66(|gToWf0K894L7t^E?390g^1Ltq<4{$pc3qK#6C#3`ks zjGm|sGH7BeqK)T`SN8Mr*?rufj}qpxofYz+vMvJD8T zzQXhS#`(dkQye(9hrjvwDm5hk;GLJLDbJqiDV{qq&ikL-<;smE-g@Z>zw_!8C#DTY z4jtjv!$-7eqqHV^P*SCP9vnUN2j09YX zMkIm35RgjZg(5mnE(7Yf9>yw;kibwoN#Z_$xFKQX*o75K5#8*uwDE zam63}_N#pR+yVBC1dhy%V4^1mMT{Ax@z^MdXv(6=^mvt8u6g+IF$Gnm0v7^8CUt2c zJVq&S0_7_pJyC{4%=e^pkWxe`DTBfpfV1tF6zlIYlbCta5g$y@{!zGIuQcD++dE)oe*qQXeJo-*Pvc#&bTOit9P z=ZcHBS_lFHi;SS8Avl?&3xw~O)zW+Gao@YD>UR$*`|X{9q)#-_JB*POF_D0Ej5JHj z&6SL|Ps|duqZ9?1uHp)n_(vijLLg9ZaCVYM4<2)GzJXVuq68O_l{PV`r$QDsncXKX zF}D7`CdaYE#CzS@x{KR)lv{N>I_=oJ4INZSnKX*JT=~#hp2u#D8`8~PgqY^pp4YG2 z`E4Fk#J2cAY`tEcIV^6QXV>P|AO@v3!;ZeT?&Z|0w04-kJ;X)IsG%mz- z4GJGMRU}bc?lnsO^Di!;ohGP~AS%R;ncS0JPfd>UsbT{(T1BESaejsAnHq1sbe55^ zaen-lUobmU0@Jj=jHuK zJ<0o@Tw`z6=68Sa2CI!F7MhPZdUTA|66_hz`8)5P=j_QDMwR2({(XFLW1evpkhaF^ z<2HF#17+~B#AF(4i&Vv;b4<~~M1^z7Rs8wmGraY}8QSfV5Zf57v1OBLo>P`dJWLyn z^NFWZ$qe3>AO+e~DWgxsXK84Q0%?+Tpzs1nL5hbg1NY_XThmVqq z6?h+!(y@1}%D&kXyzrc7-&DqxYj?SP&yyKR2tM&jVup(mV?0hQ5W^md@-Y>Y2Is6= zO%emS0$0!;(fsVfRjxgFL?u(K7M6CdS!tA1@)0uOXcjG;2b0%XY&8%j)3DvxqBYLZ#WgPS-pDgI%%zG zx7*yhb&H>T4Bz?AbC{w{yL4!2h@qWQJt{}U5+Mcee(x17-uVkwy(Fkez~S2xsh=#B zw4Ea}tfj%geaHSq9&wjdS>FU{d&}JO4X3q2A3LMnAu>BFsMNvN|Jff8a(3SFd!K+| zI6~_nrODnX%G$U45rYSr{|y|khaT4l9V2#a=Wuw@ra^IAnko)R=_M*jBFTyvktnPS zD5EKgl9Mx%-}~)1nI2J;?FJ}=OZA`~9f%srHISyt|NN5+e0XtzT<2sG${0KAkBtaj zY+jzkjrQ*hIy>hTG)b`;Li7Y53BF`}Ea&yto~M=x{^loNFghhTd1gP&l_n489`gB@ z3w-#=ZLZy4!HFChBrl$xm)3b#XXq_rGjEsoj zkTQ@}sw@|R_rJWwfBNa?{Oa?oEHna9*DxjnZ;^me250@cx^n+#!Q<5y)?1X27^P^p zTV&Fai3-j|LT1sKhUFE`AD*U~3!)ZCX}Eo7k^2j)eCN$mEIw#aw(s-y>nAa;$yfzu z_wM7~!v;RI7$3`%61Ey9Ku2q0pYq__$%&`O0?4772Ax3Rb(Gf!+ z$czw5qSQ=I)bQ4G?fN4`o?~M{CPsANY$W+$a$=Mi?2{4HB3wjww`9kO}F2*5Iyd}S^y+LmY_;PEKxEi*Hxkw ztSmM8=)yxY=esX)Wd8`u4UhDiBh#}K4s=!$qelcsunsM9yn`%7t>k&Oh zYeXlA(^&=Q98y57qQN?%b5u-*REDSwi%rJ|U)|zA{`?ExyYPUAs~Rmqn+ziqp=^RH zkpu_^;5ilcA6LpL<|_MlSfvF9oRXf ze=7N1IV4JFD5LN;pjC$Sl6`w6FQ0#o$+1apT)&Pj3rub($_S!{Za2vCHm$Ni=sNg< zOgKVNI8{fqEYb_IEJNxHTRODNsi-RLM!{%(l!G&hi5zN`oYnF%t){1{s+>AL!^~ur zm7;|bhOyCcu3VpEd_?j3xwGWjGAeUw*$lQQ8L7hF!-x3g$Cr_+!hwk@b`vt&&C6>G z|6#}b0vQ8BYCNDSHSWwU^Q+IUa{2BGAANO;)wUo6LkN;qvmi5uiZ)0aP(Bir=qn!~ z#5e2ZHAtdD3Z2G)DAxOjcL60eN@*5~fNw5y=IB8x3PMNoM+ilXAa&CJ31y3;2ljI9 z`W^1C7N9DaD2T#86QrU)G9Y%QUA9F$z0jGbZkrhH_|Fp6iDEN?BL|>Y!*O&r2ei9G zW_ob6qSy#%b`t=6;{i?gd2ttTZn9;x4bh#tOHcTt$I6?_-=SVYkZUKH(m@^ zktwu>;M1y2s!m!5e6hkyXOHstzHR7U>4|KTGRS_Yv@ zgot*dk!rPq6CRyuin5@RXGq@wRpYB`4_IkAoDT%=s8y?!rN;z^l^RPxOUM418JcbQ z^Iv_;O4NM+mE&YOA(=*NTu30RQj!>5#|k6KwHqZdIJ`|kK($ii?oxvb*Y5N4k8kml z4{q_vx2-P8L#rA@10_@X1IRs0jgR>D}yT|-k0ndRUABcfYnxud4}K*cAUPjN^km11Lb6utB6Wt3P_&kr8G%3i(Oc{tg|cWPl?0(E%Mzor zjy$_W=7zue^(}t+`EBZ>HC&NApO6kMvfVv|aqIowFmF?Ym=mlZBXD50%F8bv;oS2F zdFA+C4jkM|qj*f+)Hyhjb9koC{X5H;QAKQP4$V$*`qVhJdYwyOEzoE#bNKWOSMEHd zS(G$mNxN{IIe3Iz1`6LGYK@PPUwnFpFTT3V#Va?ck7bOG>SUZ}MrgGHHB;y6?FJux zb%(ak$dyLPj+vsAC?63j5U?ndbLZhIpIyE~b9Is5e)|lk4^9(8^59vk#*tDXWF!QS zG8!Qi!3S~!(OHz%=;{R5?kw_e{`_M;zW9I}3k9p*;G;qksE9yCI99!&QmJ*gDG@Ie zMF6BG`iPLjLF&D>HB_h9resp;)dr$-NZaPMb9;H=%nZV95Klu)Bygo9F?fPcKD;s- zWRNHXxe6%ZF**=pz~lmn&#Be2~HfD;K-pFOqMbK zc$ro2iFu9;f&Zef*dw6otjL^m>jIN&6TIAF*ck93=kek)Cy&lDF_z&&=Q)Zt`8N>} zXq;;^vv-1pg%&q%&Y^3HH7m0xPqPjx+88F7={5n&o{QVw{iGWQ<=F+KyAEcC2rP+0F!wD|68C-}~bM{%}^kOHX_drl!RN~XzIX)fJb;?I8kC2d)S=*eP^A|gyu zSruI#scx%|&2H0MJ79^?HGB!ewRz#pUfzE77>DzJz56V$w7Gq6nFseC@%Fb)Gd7wrJ#&z2Hy0@yfmT~__390d?3rYA zWQ_Mdzr(LSzr*Jj@3XLCc`(1g#AJLi|M~+SE*YZEJNKtRh=SZmloXWK;k72%6gfEWKuKaK5w=Z5cznn7aAQR-cDW4- z=sgjM%raux;EnT#_~EzDGg39QT^p^c8_$YN#G?=*TB;78NG5s07!c7@lud%jSX?b| zqJqv10)>bXZ%gVm!_=O=T)y#u<%Z*`RXC|1+ z0!BEF9Gc28WmmHn0a^m15Cl5?;;^aQYGKnt*!en^A!rt+WBZm%g`PyB|l~s-& zoWyxYrBX$dk)MBkmH7vAEG<7~wcTcXbUc}*N{w`Ic+WJ`(^X_8NBF@yI_pSDmy}b8 zG70|4K&29yo~TlaF3T9-B0u|NtX%G6n2X`xKyz}|7{2Jn#}Buc0hR0oSR8A>Qdt5vSvyv>R=s9h4^ zhd~&2vyT|N-EXx?jXLy1vxck4eKvf!Vbe@q?jF4>sD__U!?QSzZH??3(DV*!c9UKb zPan|i=wgE))j>+AacJ$AZt&?KotOTw?hq)=b|u#*N$G{qS;2$QlG&*$fAqsQ7}qU) z6hx`9&LKO_!p@c`nNk*i@>gGT-lei7j`y0%2CY1uPfXQWa^D@{J`G1W0He(`|Ev4xRUR+kMA=9|3x&I=rv z28zIEpWNc|y@HYGXj@BRBBzf`F`*RF^0CD*^zMqC71$f z0);ZHl#!?uw$&iIGOZGIg)&N1D3KzSU{7S0fBwT4IWR7eN_SS9At~6(6etECfIwyx zLJES9NU6|5AWg<67jN;u{MGy1URBhMLkWit799mj$mF;kJw8*^wWO*gu4pkjQpKpq z^k~ixzx_IgCu>}Nu=G>``=EeE#z4@LX47;0@HGG855LX07L=ujiU*sgXFvp$PAhLM zlb4e(J`02WQQ&-m)NAr}z2V?Y zXsq){qX;@uh7u(qLt}!Ztt7EsVaj;E|HeK}9^#mrqfxjnFCsxvmpr5=PW$2#H_hMIgwCkTPkBpa6r4AVk0k@F7q) zlIh8k7$QpKXj_tHhNXsQxv{|a&+Q?fR$RYy4{Vj$1Ctb@NyHGWLMhu>!FEq$2q8Pc zee6t49nn1@)>Xek(24viVn?C^1P-D{M2QFvt99Ubn;%DbcJ-))E6Uys0G2p@=ES9t9>TI95S3!y9cmgTvlqx_wBUnZAH z)t9Ic+JS^n1hkaMOtR37{K=oc$5PP|#_N!v*SpsmDSFTf9)%Ku;5@S9ofCYClmVd} zB^u$IoIX6sYpV#{v=C1W_P!jg}Qe8^&|PiG!o8$Vsl;xeuy_ z43dSr*Ex6QFj=lyT3+FW=a2GuRp6R!e(=gsj?Rqo`K3qv_~WaTnM4+bpdy(b#jchd zoT>BtseKr&h$^CkLTN=*j*01vQ>XTGoHE+qrDUGUP`eVjTthWAiX zkSRlqz7t!^@wmZa`5$9HX!SnF*q7BP)h04_A5c zV2KxxpCBKRG?pFpT8;5BlZ5nw>I90(GI1w5BYP|eMb|N8`}ca8@y5-3oX-8+GjoW& zduBO!a0013kCz@(v>i$%JC4}#)`}5g=qxh4O{p3Q!Kajtl1U6us`Pp9J(5K`B^5#%8Y>IbD{%7Y0YXtEnFFCgt;t|$hy^Cg$W@guuigdWiAoWL1|Lu& zRew4kx(?pk(_Z}z9iI}v60+|c6Sftitc%cfDGKSzf+as_3KcNK+Ee%M87bWN# zzxd#5ZrpF7sn+V>u>@BQU;`o6s|yrI#U(F8|O}O_kN4_KmVFT2d3Fe zjrTvjj`IaCzOaXCE^$7iu!51Aq~)7@e(4?`e6~oC23uNat@2y1oKNO-w!!l!_VQrK zbLsMzy!*yWeCzlDLfK-uENBUdk{M(kDFfw7gIq*jID42{b%b`S0j5Dv85IMv)xhW) zZI|=&pMT2yQWKrm31tb=BrTPC&eY5#4xg@RMbK)t$+M2`iVet4C6ClOjke=|`q^c! zT)76FlGV}$YW49HY$6DObrI_Ks=JJ$IaWgWAqKQIxK5>4R;h4c-$5|TjEoz8 z`|VTw>}MA^G&agib)410p-GdgcL6OtF+`+FV~5UER}MozzT0+@vmn}_6|3z?yCv{T z1-I`!M5}x#o1~Z5b+^RW=cj@Tb^Hhc7rn~j&Pu+C;=ZOYcrXWju0bN5qatCetv!7 z8eiXfIJZt&_s8O3&l)e38VSszmfNM@58jY)O$CalMMoO9Ezi~ z`F*(s5Zfljyj_xc*bA_m?{2?XyH#h5Vz>^{t35I7ekHLZn%>p9Zf;MH05XUzTjHB+ z+6J7L^Oh_hqbOUPJ2}nEC-%@@T_lq13gVjiVJVWUb1u1Z=P|$h=q9E%@eFucAz33t zD6Q`VfRVy^q{z}>DXLt%xx!!k^b4-vS>^8SCEkDU6KZ249654?T0Vlc6~4amhz~E_ z=6*DMaJR{S{AiBYwv6Y7s%&!R#3Tpy)lkA=gyitPSuR|<$-#Z&yz=~B+T{{4%NU!Q zq@oqF>-v1#jx;e1vAZNC-%b zD5I0Nk5U*Z2qB<#h6`}{%5^T!6@+XYEhq3|vugC{f}^X}^h`PTCXsYLKLAajKk1u>Lp7cn|j z+BqaTmk4{8w_lj%z?dYD5*H%Q1(Y(Wzm^4BCqqzIwwaloWqRDxUYTdMUgN*{hrdPD zw^(jUtP*Gus2GU|cHLQ7h*UkZnS9xgN79Q|B7`9LdFmq>-bp_G=o)|W?|*`Aw)s0h ze1j-f$d%;4-YI6L$H+5{5-Oz<@acK&$)Slm7JFMuxqGDWyOe!*L$%j~8eI~7L2GG+ z5fymzg~R;*k6z)m7mlI5MPNV}WLC#II;zbQWvW<_rBeD3Kq`WeSf>fnV6qBj+3q<{ zJS*K7Ap|z0@iF)kQy<~>LdnlRxR90Xf7pL)>1{XO;g++|Dh39)0-u@jl;XVb7_ z&K4WhQQO}OVt2vQmVHFgb-v!B6uke{fAYseE9ed_Qa9kcyGg+e$*~P)aI*tdhkh|KJDbI5b&B5{MeSlL%=sqJp;qWjt*GfA-g3as6%} z7=h?!*{~(0IDkWg@2JAclzZ12YfEaiIz&M$Z?n>X+mBXR^)04H4R1Yvf>)l~&%XVF ziMqrWic8n$x%A*ZUtYh*mlqbedSw9@OWt|mC`S+Np{6Xq_4bR*j2T?JjW!uBI_jf_ zSI!(~tZHyN^1;PB{LQbgV68z2k2i);XigoT;z#eEWvrqIZA&FHtSqhaCqI3}y?YNi zcH$)0?mprtAACX7RkT(p5%5tUMFk%n-hvUHqX$N*nH(3ARJ-$*5F@$C2+k(7M33>o z=Qp`_e~EgnhIfwOEz&525=bqRwSrF*ic|@j_THmaB8ZlyC5k!=kC&;BRuQ_+=a=XC z^PgShCm&v6zU8Urd72DD5-UqEzU#P$5AJ6s2&`*isu@9Q%2JRaI53^@&RZw=;mgOM zw24!dS15uLl79P@V)?((JBS2j~6&`XqKswj7TbI5K?zgAqi0< zWMpEZ&aH>b+{dAor^* z3!BnqgHw8gfrno0RtH}D=YKpbIcei_{ZlA|`-bfCnciii&oZd#zRKyngWYgyo?M@2 zus+Tf4pTojZw1A2gV)aO<@;|P2Uj3fGUkhDgs|WZDhkv{g-l{YbklGUv6w51|JT$>*Jx3cubOEU)N*W}B;4G$E=iXz-Pu{yot7sFvLn)E? z3&D4ES{&MBN%BX^HQ1C?wAK-0Uz9YCCQ*Zs)fbmnpSBc7=-nlIxxXM`n^~A_Dg%H`sC$ArfHWJ9~8N&Ca#6D z{4alVlYjq{&zLI(2WG4MAO7Gi_KZsk>k+z!_w7Vz4L(&sX^m2HU1&|)z=4@PoOu2i zS*^*b{o{BMDA82fRf3G@EF;oEWl$Xx(eBnPI~N49FLEP8Kt5LxIq$C-$4)UWDPczwefES^V zLL{`;Cz*q?)uylo=T03V&r-#j78!v+6rv;e8L4CjWh#7qV&lW4K*?sLPQzZ`l#?N>?nwB^|`40rrwaw>KoPvVC z`}a+!NuM(DMRXM(z+{3OH=5j;Tjb`WRjyoLMPwr&OSJNY)fGl-B}WcdIW%2`(xFsB zlA5JuWVFsd_|Yk(Z1KwrH>uXAkufJzB~mGxWhB>WMGF=oG*WAn$ z&#NF5UtYS(?YSmdmZ!TdI-dz~-NPxCjv$gw%Ua4xYu!oVNg_!rNXT)n-DyxnPt+Qv z1=>eU1Q#WlF<5IUZJSIRGL_+7g7Jmw|C~7mw&kd1BiQB=r;kqa5C87VoY+^zHRdT@ zgYwy~>ek#mT*A2up#IT1xLp2U^l9+GwrGDml>yoNKQu&LUM$E?zfNz#S__ zCGjC7XY43&&QsHXZPQW}v`|DHiQc8f85<^)9TMR{jjDdisl#x7Hv7VD<}t#BU@%-6|4tm)!yA%$h zCI)cAapuSjFP_}X2Nxeuc!LsY;Y3#zt^P{5yG2U|jr-vlpfOK^a_o*bBzs0~!_05b z%m_DjuL$nF7!zVB2yKx2_I5(=P*LVCgPQe|8Mtpb^uD^+%=Zu2wpXKVH`nSF53PSL z#J;D{YtS9`Rg{6VXZLdE@II_v#^cCzhHx1^tP)~QmU*=CT=@JZm#;1nRR*fW*@%$l z=~gH{P3)Oc9N0U_x4(57BbrpiDleYdL!KK1Ia*o{y^%B5s`H=!_7++gUU+UVSMNP! zcB)Rm(I`t)CQunR;#N@1u}4AvK*+Jq=5oF+ttYnJ@t(?@)Hw}CVnwOkPV0+||P zL>YeY?pelX1qb$ykxN7H9vf0cn8`;eVvC9!#jiN3B2TD6#bCWfI7>y;aIuLIAeF$D z7O8WxN(F5s&Ly(7k06ci211|MwSepiN^%w+hY z&GRSs^7}t{o?{0jc6kx$E5u9@v?DqNrNq!cXHAx<@{5ljrWJKwA+D|x9xWpqhY)_0 zARU=#5Y#BnrBsbJ3CW8-poD}V2xQ1S5Zi&^48nM#TtK);t|nNC4xMXcgraC-j6o`a z5CJLT8m*?!M9_aya6ut;jxSeHDk4NkWz#}{tYBS%QHme}YtC;zc$5-73CV*dpnlw@ zVS=2^_fX+dd2%$^U{NL^U(SNCIl|3x=J+%tRT#@16ZM=BGOFJ?&!?B~u)N}EFV9mO zALFgpPH=SD@#*D9T)#GlmKhy3O7BVR8BDOUQ|%OpWJ(a*O{A{S2$ElZe3`??USU*g zXsJ#Gp+x{jXbKmo=Ym(CJI<$9=V(g}ArOO0i&>?IYS)uiafzoysNx3P-@Q-t=)arI zCHtZjad-~P&UWrjT|Y|k^kreYnBUi{oHobDvTIq_;Izv6NeQ|B`R;_bu;s@c!BSUY zy0GJc>7Cx|k5P#@7~<;}u!%t(Uv9Kh#%_U1cMp&Bzv?k0Y#h~wHbzYl!z$3kFhcMO zvOvo^rnTqoH%_5wp-YKZ1}jPskO_$w7K3Dd8UFI)$E?UIb=gEXMN4Y3kP|6^cDn9l zfL@36{dzS>K*)qh_z(b@P?NG`X1vO|W3!w(IK_x+cdQ8|D$kPO3MXY?(k9aSHHf?gQan@N{bj0 z2V`wrO|AtZ@n<@B+IPylH+QxWLIShHDhLu884$rENa?RK=ExY<`5eJ_QoNmIwF{{d z$@+pQ9a?302S#gxZzE_^Xho~N$`4;Xz(4z)m(dn%Bj6O|Dncx&whci!T6u#IGb$m& zmVrl0i`cwQl{T%YSP>e8LWY8v3qoTL&`QqW!4nd-p>u*B@F)~9$YcVVrQl128cIMx z>brE*cr%?5L+qFxrpqO_)XQ|Kl#rVS#&yEsCXu%YBD6p&LJ+7JQdN!2FtG)y6F7)Y z>Pf5#!*wRJ?Tfok`RN)09JVZ&((@D6THQf;HYSO+8dbT8f+2gXsyD`v*y$5S2=M8B zNwO~yF-H`RgHz+_8S#M_V4@1|zIcEFaP1Z`SbPii)oP5LKaN{nVyRhB$SSML4JxLB zL|{W3p%gxdM2;6BIb#PJjg} zbdZ*A5tT&5Dgud>HdSsG3!Fc)kFy8&@zKrucvD4DMTFK4gk)zGZ+{zt5JHc!yZijJ zv&v_{3Ngs7M1&qyLOrXoqTF>LHLSU0Dt_OYHrxFDFi=AzN1jkfxDH;2`&&YL>Gyn zQC1Qv5ZVY~ zQ7Tn_NT1G3IE#{zkjE|3Fj9HgO7adN?x{+Nh5wSvM46S07`e+UBN0@)K#3!HML1nW<+Ssy0 zWeG{CR%(pwJ;>*`=lPF6zQX*<694!|FY>}sg{kLg>)4}PT)lgrg)6rSAz<uz$|J5rLiO;%Ne04@|DG}b5OEv<8m4^Z3>KF~lrJcqN7f^mb7(EWI=oAforo$`ut-IW%^j=0q18=y3C;KV z+;(JSH}CJZt!pTG|6}w@KZ}72;9fk9^%Z^G5HL$Yds=u9L$cR!X{fICp#x=T7e7?BOX+ z>>KCQktwD}G8A?ls!vFuOqDjlZ}1&R<;kK`o(zy>*?QD3rA&m+xXF!|NMFg zUMBa<@cG4uXp*xsJg-7^=V+K`XOpV9$1!bej3ojl;5-_SlRR&sRo4@+t z5*KeZ(I!GW~XYr_QFwIy8%*TZJ<^i zr?4eHChn0I28{&a2*%JZ;M(m~ik3rE6b~0y8Os!BkJOT}psewz8Mt--A+^yu^?Ie_ z`VKLcAl;TKq^?y;-NZbHD9heVq+MT&cl+FyhgS4jJoX(`wv2mmaFu7Id;7Z!^KCn9 z?5A%dc8;KN&{7Yf^V0wQC_Rtoo9vk$7Tn>QbG zf3XQh;C4LN;a|0hfn2Gch&0A9#-etSj9sxa= zk24sJ=?l-r*ZOiNGR6lD3Z> z=UTky^pP2!J2HhRTUc9Q)Ce|0h%OD9BA}GwgHIoD@!kR^uV8Ta5QtJBTu3$r0<3S5 zXH|+;Nks)-IeUz1H8L?;V{D|(_-GX^A|jL!S|}owG0{OXR#Dm@w4$^gr4$uoaIRcO zTeQ~e91%nc9E>sR{ED>7lUpFo7$aKcgtAFqQ9N3<{Nz_xxIHhC%8+HCrB7wFQBqie z!Z9_GQ#XR~efv0hY%hDqa{kw!eaZjuXICg%tIV&K%#28s^c^|=h+h{PQxs)8Su%=b zD-oSUNR9UeLIkpWghmGOY@vQFpB8NbC#_(Rb#P25YYq|$fP6)NnOE@ z-aJX83BUN@8bvO-zfkh?4<7OS$%7a($zS~RGk*Hj3a-7x@jW$u_qSf=)WI2Cxk{$f z+%BH*WVaYj^?`PGe81~NA9oe-3=9za zAw+}P7k7^gt=(`L*#TAW7Ga7ptXo>S7|>Ev6fNq?^Q{+-lPiHOJ313FsWvGkh_n&P zFu&U7SD(z$44$zp;!A~>7AbNR3M)*SxD^zQWhO^zyma{3@91g!N;RScK!?BnCF@3PbkwA3h% z8!eP?pz~TPf9@#Kt_jjf*+FG&K?tCA4HZUk&LOpDZpHFv|M?SEn)4jpe~>@=!MBJ^ zP*4Y@alVZvrhD=mcx~^y>wQ=$TFsK&WMsNVS+vnQVx+`5M^KKa1h*fpaR1RNr}vH! zTnl3|V&+l4z=xbD6EQZZ2wvlwZ6<2)yRT34$;X#z+ra3E=ElM*|LyR(dG{K5 zZGTcv4xy9ISmTAnEeJ~QN+pI4Y`Xr;5CM;%Z%S!9eBUjI=$4k+eEg>kM$)y4eN$$` zv}1eVw)T8VxoLV3f#576MxxP3BIi#ZW@2KLoA>8fS#1J2Z5KP5OBqr@;T_RCl#pb? zAlECehEFf-7~fsQRIA*$x59-h^SpL$BrV9I0^tckAWT4_2-fl3i5ZUU8{zAFO-xOK zeY%PLHy^+}>-~zM^A*Dc=}%LZy;(HxNzQM3Y@~-lHA067^i(&O4T94^geD9~Nr`9Q z>9%lXHn)#B5IyRJ7>OP?e-J5oFjpsuTZQORDy@7%+2-ican7HZ#oJWENKBKlQ6?Ei zih#+geDKLNZryK_R}3*&VyGevxai1)!ea?el10J9SdCZCALhB^v)JY`xPUSeWay9? zli{C~3WvaZM_wHz#E7#g5Xdq`@RsO3S(cPYH(&Q8^S?3Rs!iG)YXOdwas%m8fEwfd z&+qc_g-19HMwWQnMvx(*#g`y*O|XK|TE@|RH7aoh+9keHVZpZfop+9MhG+QbQ7|d$@FWfq(rcKW1cP zgvP2xWd@LhV2Pb|M7IfgxWIN0s4aJJzc%OURk=jHGD@>$@mhA$YJ%WB8bRS#h}9Y( zsf~?NsX*DXc%9+3M2ay?l-N$mtn~$%s8FqpA+%++9VnH=1xpqq4Xe5N@IKESpW?s% z-VZrCt+4GT`}a&z(Wwf}_M-rD%s8`Oxs5tbdOj_hYr8F$T35q*NnUAtuuvFaJVUHuUj(c@&c7>2E< zbHx^as-9^);gQi0@dy?19!7G>58gh-xg(>L-gN>Vi$WnqMhGP+#qtXLyT7@}!g5I^ zQwVR7GQ%N>c%+v|BM7YqGh-R=y!ku__f%=F%wvouMuiPcgp3H4f}|K-`YtIQ6MTRe z$+Sp_gtJKp!ekvTPx72ua~V!>V?-;pj>>F4_Y}-*deE{_e)|3;{_<}x;PnV9SNO7> zI6_h*q{E4j(nsyc`IGy2{oG!B(_-W(Wz=||F(M@kOP0^B%;5@;@Q&}j{xTlP>gsYQ z)!QLm%5;CE*5EsOK_a!&sHC2pWbY*ojS+#RMw`d0mP{!i5F%(HJ8r*&H5`V57<=^a zExII|1}G^d-+q3I@4WRU3v&xBHCmV~BWgjrU91cHSs*yaYzU-Q^}qf>9aHDPB1}!~gYPyutCQ5hk<1{^>~+ z0bd5B%8A~9sG?+rwIy^fZcOaLHQD}|fns!BRC+gEy-j?R9fM6Dv)S%;1-s?YZ0`q~ z1@^j%@I^83dz+8DeWc$m-4SI{aF$XcLVy?&sv=afwD6Y9WQ5@HzMz^5#zrd4PK;#em8)Ih- ziTFTT{Di>N_ykvP-eYb#=^^%?JjKux>C*|^^_k$G3PIW_?6=hsd~lGmd0yIProO(1 zCq-tqpKDi-#X;A)Z^z0jZfp{<<#+M4IzHRs`CXjnuwEO(nt=Aa z7I>6Qj?NK>w}HutQC@iND52fJg@UL-XqCjsY(SAAh2iSeyIi~9!c;+6nP6FIajt`w z2%sGqsR&+v;V@HU0@rR+sfOJbx$kw3c#OPwxn^1Ku~r@Zl#n`Sr(F3AHiW+Twymi5g1QXuE>KYP722 zU5T&-Gb2^JZ$NHnBFR``M79am@&1?hXs%j}7SyN4dE@zUoNwdGA_Z+Cl~b=h*xq|U zck<{CVvFEB_*69%q(uggj*d#Tjxbd+0m7Fc^;)&@H@?E!-WS)dsn(i*@S``_KdyNE z=nhh($;x?8R;yBmfDR*wkQ06C9|FzFisvtWe1(7YuYb(H{ZF5;)V65l2&F|KP&#ts z;UfRtpZtPL_vVmjs#I{ckpvIR3R%lRYZXt?*rz8#%vhYpv1 z%hu1zK?q3@ThC{UZNTO@Hg3Ky8|M{wMAF;L=$<0L8;Brvg18t#2avKtvsmR1f9oVK z9QqJ zwIWp=u~DG&jAoQPUTt&Z_I)w}zyIx1oIg3v+`}bqJ}7XihM+|G0Ll?XiIO={tb47e zK}w{wZ0x}4ia-#mqs0_(9X|>g!!w!uc3P2a-L&$wBM35b=|L7)QNy-c{P67qymNjJ zcW>Tf|GwiaEjL+d6^XbmCE&46P%$l#8CUPFa_K>nzq+u*U;pxRzW@3Wlvd1EMmTz8 ziZXbzD5!b3e5=JTuihb(lPJ-mL52xAMz69^l)V1J9>%g7P9&cyB|FtHkPrr!MHvn!eVWE>~RBz=?f~TjDmPq)WiD z$;~8+ohU|(VN>EhtPOvivyYucd0h99Lc~o3gShcG;(FC`j2o->%@fV$X*F~v=(RHw z9X%UCK#7R(Ai|n{mQ0AI&j`^|sVl}OYCL#2Pgz0~IX-HlER)Y}3~Rt=@>&vtC?� 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

CG zzH^>lbWB*2PvC=-{$@E)DuITW1S=LT5v3AJS(IthU>I))QfO#I<5Ppg22mF6EE`;2 zT4NdW73e z;dNQ@gsN(moWNTBl-0neYTy$z&V#vqyRH^*K77&QKI>fYN+WF6Hk9p&7k4 z!=OePf@%=0c=lL_|K~sZeg3<@|3%#PNpz?)r&cy51~0e$7^KtQYrwYR?^kg~-uQpl z51vPPFR^w6Jg!yXLqm#@f?V8Hni4UZPH&#KPo5(hOA`ZQ)}bW_Zky$NhS;EOilpJfWDxq7MPu1pwp``u0%;f^cH_+E1=nG z?-_b;>&RO(ZKk`he=MSP7n%Z9TC|S@ooLhIz=4{Ult{9qq9P^1iW#clEP75Y-$&M# zxF7N^mx%xlekUR%YqORr7B5LC{4ll zUzz5={nt@aSGpt2IGiV0$%umaW)T0)P4*N-QD=XZa?TyK`2 z|K&&c>Su1FRaKx0YA#dQg860wQz%+>AQ^dIb6~lb)6xo>xMWjYPQF$nCE>? z73guIQV=_ox*$bCsYICu2$foKpL06I;FBjcJwE=xE&Rsgchc*2_=E2@{NUB|oGx~9 z?o#5e0|j6H>;(Vvk1sH-_AsU9ne+{n4U}n&Ce)PUfo|2IB~v{1zzz=YRZtr)_G*F# zrvpl27P^d}YVdWSqkDuV()1c6m@Hfus+`V4P+~GV+E++lemIf!M7mZ4GOP$_@tJ0~E-h>=MWT})_^w17k`aN?wpbQ?{L(gjZDNxH=rF?cJW*=p}` z!&+Ea;KIdO4&HGKA!U9{_Ip`e81~(^m%^Q)ml7%^jIoH9t6o(&TK2s(WtEYfg*m@O zKPCq|dWhzfgldpIdp zLei4e&WEXs;bAQGWzhQwOwyYB?>WS;{X&=j{LL2$!C-eg@- z;FBhJ!P$0pNRBmy)||hXh1XCTYciKb8<$b2_dp6>?Y^y*l3V;+JxsTZ9vl`A6LE-^ zjvh)xgd`p-7S(dRa{MHZfA&sp+qsP|e)@jSPFK8fdWMU06?fL2eY^LvbK5yCU!Ef% zXgf(^X7JKOw_Ef=fr^nk50`xL3-_Vva%Os(Z+`CxXU}&L-KGkcGXfK8OoG@%d~#UV zN9@F)wZ*xDTs>q+x*lGKQJ&ccgirp8ce{Us{^_bVX%oV&LGuTiG$8sb}+IVe(P% z>aPcBX+SWVh7b{)E&C<6*;Tly!_aAV)c<4<>?}`PIm?pgUa>Jq4^1(2y&arpWALEN z2&q_B-9SYK6%os2adrQspGl|rM7(sf%w@P8e&uHm^5)xT_{r<%G1gHihjyO2Rx6+P zLk?~-=Sp%QCJ}T&MVqINPE-Bc@A7~7dw+#pdpt^8UVXjGD@WdDe79xqZM#^w9QeI& zKgqEZ)6CCh<41}_bP??oF~DE`_ziyHXK%-fLc0Rd6(tox8oVTs*84^$mmj*9mt-&h ze#vtU-Ht6v61A^TMqy1G-vqQ#xWeF-&QM-8#nExo+Ob zqhz-KRX##27n2*^gtgZA5n()KEm>HjpJpP%=^-Ri6A-CZ1Ug0ET41r9+$;%rl+#%2 z&`P0{gA~y*u&wQQ;O^U(orG6zE(1W?B((xf5pszpBLIySH9WP82u)M5dt1S0K5>|* zk6uEXl0-%014ZEoaRXBCRnNt1oHO{Qi^7t`P?Qs>)aL0|FYy2QSKr}_zw}Wq&&~2j zfBFVT-<_u1?rF6Oy7Oby;?azw3QLk6Z6_4gAi+|k9lUbt96xyRJbNei@SUfh;;uV) z@!9+L(UKaiCRokcVR^aril3|X{ztEh>Z}^f06IAu@o1|7MW{VSS*(tv zEOTHY(JMqbQdBF(%XtDK; zNh_$@5LIAeY!5{_PF)9LqCdy-9LNV5LlYO!ra>2)7!(PGaSD7Q#@?DK(GLrq89iW) za=``%orxlGaNjnhiMc#o4@%MlR_8G@-SJ$SUKpw>i=_Ti@!=dAx7t=fbJH}R0x2rq zJ-a~92eh(85u7B{h)Ly`gTuE^^3-dmafO2b%51($BQ>qGO6{VS=ts_z-_Uzckr#^N+&|Ol|mA8$wf*hTLmqkQnaf4hL z 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 diff --git a/public/images/avatars/User/4874 b/public/images/avatars/User/4874 new file mode 100644 index 0000000000000000000000000000000000000000..90e0e84745921f6ce5380b5459a2333435e2053e GIT binary patch literal 1336 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<c1}I=;VrF4wW9Q)H;sz?% zD!{d!pzFb!U9xX3zTPI5o8roG<0MW4oqZMDikqloVbuf*=gfJ(V&YTRE(2~ znmD<{#3dx9RMpfqG__1j&CD$#!}GhwA#)8)GxmFV=>AJKR;+)w&cd`$s%O>t zNorG9xy`AZX*+kzx)rb5GnAj%@SoeuYI@c*N3r#t`;3MZR(1KQm4EcVb>CRLV}hgb zj<5;;88}wH%Tt=D0>!UiLcu-d6wUu6?st{Sb`#E$1cko zv3HB1GwYK?o9?M6IREfiXw}bu9Qk;|#-*7D?@B$`Xtc88Y~;)%JQuz1b$#x4=uw|> zu)6$L$ms%y--~70s<^rrrCX@?A6k9liQsvry)~@%>Hf1<+nfp6`8=;$I7|s2N{km!S z%sZ@Uw}r|=-^N6?d=y?QRr2(-?CsZ2dOvJ=xx&&jcBYxwhd43Dlati6UKCDE@Mj56 z7Tr_yvUqWGGqY8-)#v#q1bjH8999hU=!q8yHAC$n<<&zqIRVZ@=g*zh_gXy;-MR!1cK8O}*BeKfKE# zw#_d{+1h$Hx~+ue%iCFxe14>CXV>w2xAoo+-EX(O7>-pc?Jz96@M>Z4`mNE&FY4=< zoX!Y76C~xX7$`3DfY0;zHrv-Hq&)3zsuY=d8OERP`j*T0gl%X4Ro;rVpDU}bKKjpa zIqhHR;fPmDPFt^7buU%)TuxES9J$)8x7&Xm|Ibj?rTy~aqti(hp61&l--OH0tx|9P z&+v5pr7rE$$MS`@wFj@e*#9f${<~S9bmRZIN#FnVDr3>k>=Lu3J5FgV+IjZ;|C<1R Ca5O0Z literal 0 HcmV?d00001 diff --git a/public/stylesheets/application.css b/public/stylesheets/application.css index 8aa00453d..91b74e767 100644 --- a/public/stylesheets/application.css +++ b/public/stylesheets/application.css @@ -11,6 +11,11 @@ h4 {border-bottom: 1px dotted #bbb;} /*new by huang*/ /**/ +ul.list_watch{list-style-type:none; + height:auto; + border-bottom: 1px dashed rgb(204, 204, 204); + } + .new_creat{ padding-top: 0px; float: right; From 80e74e4dd78fb8221cb5ad79a8cf70ce7e25be6e Mon Sep 17 00:00:00 2001 From: william Date: Thu, 8 Aug 2013 22:25:32 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86=E4=B8=80?= =?UTF-8?q?=E4=BA=9B=E8=B5=9E=E7=9A=84bug=EF=BC=8C=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E4=BA=86=E6=98=BE=E7=A4=BA=E6=89=80=E6=9C=89tag=E7=9A=84?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/tags_controller.rb | 9 ++++++--- app/controllers/users_controller.rb | 3 +++ app/helpers/application_helper.rb | 1 + app/helpers/issues_helper.rb | 2 +- app/helpers/projects_helper.rb | 2 +- app/helpers/users_helper.rb | 2 +- app/models/issue.rb | 3 ++- app/models/project.rb | 2 +- app/models/user.rb | 3 ++- app/views/layouts/_tag.html.erb | 2 +- app/views/layouts/base_projects.html.erb | 1 + app/views/tags/show_all.html.erb | 18 ++++++++++++++++++ config/routes.rb | 5 ++++- 13 files changed, 42 insertions(+), 11 deletions(-) create mode 100644 app/views/tags/show_all.html.erb diff --git a/app/controllers/tags_controller.rb b/app/controllers/tags_controller.rb index 233a2b308..b725b9fc2 100644 --- a/app/controllers/tags_controller.rb +++ b/app/controllers/tags_controller.rb @@ -2,9 +2,7 @@ class TagsController < ApplicationController before_filter :require_admin,:only => :show - #Added by nie - #before_filter :require_login,:only => :add_tag - #end + include ProjectsHelper include IssuesHelper include UsersHelper @@ -78,5 +76,10 @@ class TagsController < ApplicationController def show end + + def show_all + @tags = ActsAsTaggableOn::Tag.find(:all) + @tags = @tags.to_a + end end diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 9c335ad6d..d415566a6 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -20,6 +20,9 @@ class UsersController < ApplicationController before_filter :require_admin, :except => [:show, :index,:tag_save, :user_projects, :user_newfeedback, :user_comments, :watch_bids, :info, :user_watchlist, :user_fanslist] before_filter :find_user, :only => [:user_fanslist, :user_watchlist, :show, :edit, :update, :destroy, :edit_membership, :destroy_membership, :user_activities, :user_projects, :user_newfeedback, :user_comments, :watch_bids, :info] accept_api_auth :index, :show, :create, :update, :destroy + + #william + before_filter :require_login,:only=>[:tag_save] helper :sort include SortHelper diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 343b41265..ea87f47bf 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -26,6 +26,7 @@ module ApplicationHelper include GravatarHelper::PublicMethods include Redmine::Pagination::Helper include AvatarHelper + ## added by william include PraiseTreadHelper extend Forwardable diff --git a/app/helpers/issues_helper.rb b/app/helpers/issues_helper.rb index 4ecc33690..06ea865c7 100644 --- a/app/helpers/issues_helper.rb +++ b/app/helpers/issues_helper.rb @@ -377,7 +377,7 @@ module IssuesHelper # this method is used to get all projects that tagged one tag # added by william def get_issues_by_tag(tag_name) - Issue.tagged_with(tag_name) + Issue.tagged_with(tag_name).by_join_date end end diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb index cbe57d1c7..d4738a831 100644 --- a/app/helpers/projects_helper.rb +++ b/app/helpers/projects_helper.rb @@ -85,7 +85,7 @@ module ProjectsHelper # this method is used to get all projects that tagged one tag # added by william def get_projects_by_tag(tag_name) - Project.tagged_with(tag_name) + Project.tagged_with(tag_name).by_join_date end end diff --git a/app/helpers/users_helper.rb b/app/helpers/users_helper.rb index 9b6f85d2a..1f32990c1 100644 --- a/app/helpers/users_helper.rb +++ b/app/helpers/users_helper.rb @@ -58,7 +58,7 @@ module UsersHelper # this method is used to get all projects that tagged one tag # added by william def get_users_by_tag(tag_name) - User.tagged_with(tag_name) + User.tagged_with(tag_name).by_join_date end end diff --git a/app/models/issue.rb b/app/models/issue.rb index 5ecadb672..8d6f6e7c5 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -60,7 +60,8 @@ class Issue < ActiveRecord::Base ###########################added by william acts_as_taggable - + scope :by_join_date, order("created_at DESC") + ##end DONE_RATIO_OPTIONS = %w(issue_field issue_status) attr_reader :current_journal diff --git a/app/models/project.rb b/app/models/project.rb index 6c1be04af..47494ff31 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -78,7 +78,7 @@ class Project < ActiveRecord::Base :author => nil ############################added by william acts_as_taggable - + scope :by_join_date, order("created_at DESC") ###################added by liuping 关注 acts_as_watchable diff --git a/app/models/user.rb b/app/models/user.rb index 3d71394a9..373252e14 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -102,7 +102,8 @@ class User < Principal acts_as_customizable ############################added by william - acts_as_taggable + acts_as_taggable + scope :by_join_date, order("created_at DESC") ############################# added by liuping 关注 acts_as_watchable diff --git a/app/views/layouts/_tag.html.erb b/app/views/layouts/_tag.html.erb index 5873c6294..e0e2b49fd 100644 --- a/app/views/layouts/_tag.html.erb +++ b/app/views/layouts/_tag.html.erb @@ -4,7 +4,7 @@ <% if object_flag == '3' %> - <%= toggle_link (image_tag "/images/sidebar/add.png"), 'put-tag-form-issue', {:focus => 'name'} %> + <%= toggle_link (image_tag "/images/sidebar/add.png"), 'put-tag-form-issue', {:focus => 'name-issue'} %>

diff --git a/app/views/layouts/base_projects.html.erb b/app/views/layouts/base_projects.html.erb index 2e00961bc..00ff23a0d 100644 --- a/app/views/layouts/base_projects.html.erb +++ b/app/views/layouts/base_projects.html.erb @@ -42,6 +42,7 @@
+
diff --git a/app/views/tags/show_all.html.erb b/app/views/tags/show_all.html.erb new file mode 100644 index 000000000..df5c851b1 --- /dev/null +++ b/app/views/tags/show_all.html.erb @@ -0,0 +1,18 @@ + +<% for tag in @tags %> + + <%= tag.name %> + +<% end %> diff --git a/config/routes.rb b/config/routes.rb index 8b74e410c..9e8279ef6 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -19,8 +19,9 @@ RedmineApp::Application.routes.draw do resources :shares get "tags/index" - + get "tags/show" + get "praise_tread/praise_plus" get "praise_tread/praise_minus" get "praise_tread/tread_minus" @@ -431,7 +432,9 @@ RedmineApp::Application.routes.draw do ########### added by liuping match 'tags/add_tag',:to => 'tags#add_tag',:as=>"add_tag" match 'tags/delete_tag',:to => 'tags#delete_tag',:as=>"add_tag" + match 'tags/show_all',:to => 'tags#show_all' match 'parise_tread/praise_plus',:to => 'parise_tread#praise_plus',:as=>"praise" match 'parise_tread/tread_minus',:to => 'parise_tread#tread_minus',:as=>"tread" + end From 79b5544bc0c81f568b952e6816f12890fee98fbf Mon Sep 17 00:00:00 2001 From: kaizheng <18763216000@163.com> Date: Thu, 8 Aug 2013 22:26:46 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E5=B0=86=E4=B8=80=E4=BA=9B=E4=B8=AD?= =?UTF-8?q?=E6=96=87=E5=9B=BD=E9=99=85=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/users_controller.rb | 1 + config/locales/en.yml | 91 ++++++++++++++++++- ...20130806072429_add_project_id_to_shares.rb | 5 + 3 files changed, 95 insertions(+), 2 deletions(-) create mode 100644 db/migrate/20130806072429_add_project_id_to_shares.rb diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index d415566a6..6568149d3 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -24,6 +24,7 @@ class UsersController < ApplicationController #william before_filter :require_login,:only=>[:tag_save] + helper :sort include SortHelper helper :custom_fields diff --git a/config/locales/en.yml b/config/locales/en.yml index 135d078d3..bdbb3783c 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -547,7 +547,7 @@ en: label_assigned_to_me_issues: Issues assigned to me label_last_login: Last connection label_registered_on: Registered on - label_activity: Activity + label_activity: Activities label_overall_activity: Overall activity label_user_activity: "%{value}'s activity" label_new: New @@ -588,7 +588,7 @@ en: label_news_added: News added label_news_comment_added: Comment added to a news label_settings: Settings - label_overview: Overview + label_overview: Activities label_version: Version label_version_new: New version label_version_plural: Versions @@ -1082,3 +1082,90 @@ en: description_date_from: Enter start date description_date_to: Enter end date text_repository_identifier_info: 'Only lower case letters (a-z), numbers, dashes and underscores are allowed.
Once saved, the identifier cannot be changed.' + + #modify by mkz + #by young + label_requirement: Requirement + label_requirement_focus: Requirement focus + label_developer: Developer + label_investor: Investor + label_theme: Theme + label_logged_as_new: Current user + button_register: Register + issue_list: Issue list + lastest_respond: Lastest respond + label_news_lastest: Lastest news + label_versions_settings: Display settings + label_versions_progress: Complete schedule + label_versions_description: Versions description + label_my_photo: My photo + label_documents_sort: Order setting: + label_activities_settings: Display settings + #end + + + #huang + label_file_new: Download + label_user_edit: "Edit information" + label_user_info: "User information" #huang 添加 + label_user_watcher: "Follower" # huang添加的 + label_user_fans: "Fans" + label_user_commits: "Code commits" + label_user_watchered: "Followed" # huang添加的 + label_user_newfeedback: "Leave a message" ## huang添加的 + label_user_login: "Lastest login:" + label_user_mail: "Mail address:" + label_user_joinin: "Join date:" + label_user_activities: "You have no activities,come and join us!" + label_project_overview: "Overview" + label_project_tool: "Tool" + label_project_defect: "Defect" + label_project_newother: "See other comments" + label_project_newshare: "share" + label_project_newadd: "added" + label_project_unadd: "No project,go to creat it!" + label_project_un: "You haven't joined any project!" + #end by huang + + #added by liuping + button_unfollow: Unfollow + button_follow: Follow + label_delete_confirm: Confirm delete? + label_more_tags: More + + #fq + button_leave_meassge: Leave message + label_leave_message_to: leave %{name} a message + label_leave_message: Message content + label_message: message board + field_add: Add before %{time} + button_more: More + label_user_response: User response + label_bidding_project: Bidding project + button_bidding: I want to be the bid + button_new_bid: New bid + label_user_information: "My information" + + #Customer added!Added by nie + label_create_time: Creat time + label_current_contributors: current contributors + label_lines_of_code: lines of code + label_since_last_commits: since last commit + label_users_on_trustie: User + label_front: first page + label_commit_on: commit times + label_follow_people: followers + label_member_since: join trustie2 + label_contribute_to: Participate in %{project_count} numbers of projects: + label_total_commit: Together %{total_commit} numbers of committing + label_upload_profile: Upload avatar + label_type_as: Type as + label_status_as: Status as + label_priority_as: Priority as + label_member_list: Member list + label_author_name: Posted by %{author_name} + label_comments_count: (%{count} numbers of comments) + label_post_on: Post on + label_find_all_comments: view all comments + label_updated_time_on: " Updated on %{value} " + label_bid_plural: Requirement \ No newline at end of file diff --git a/db/migrate/20130806072429_add_project_id_to_shares.rb b/db/migrate/20130806072429_add_project_id_to_shares.rb new file mode 100644 index 000000000..65e0852d8 --- /dev/null +++ b/db/migrate/20130806072429_add_project_id_to_shares.rb @@ -0,0 +1,5 @@ +class AddProjectIdToShares < ActiveRecord::Migration + def change + add_column :shares, :project_id, :integer + end +end