From a07c576d1a8a548d8b22516304c64152d5eb89a0 Mon Sep 17 00:00:00 2001 From: ketralnis Date: Fri, 29 May 2009 12:04:00 -0700 Subject: [PATCH] Some toolbar upgrades --- r2/Makefile | 2 +- r2/r2/config/routing.py | 23 +- r2/r2/controllers/api.py | 63 +++-- r2/r2/controllers/error.py | 2 + r2/r2/controllers/front.py | 80 +++--- r2/r2/controllers/reddit_base.py | 5 +- r2/r2/controllers/toolbar.py | 237 ++++++++++++++-- r2/r2/lib/filters.py | 8 +- r2/r2/lib/menus.py | 1 + r2/r2/lib/pages/pages.py | 120 ++++++-- r2/r2/lib/template_helpers.py | 14 +- r2/r2/lib/utils/utils.py | 45 +++ r2/r2/models/account.py | 1 + r2/r2/models/builder.py | 31 ++- r2/r2/models/link.py | 31 ++- r2/r2/models/listing.py | 3 +- r2/r2/models/populatedb.py | 10 + r2/r2/public/static/aminidowngray.gif | Bin 0 -> 187 bytes r2/r2/public/static/aminidownmod.gif | Bin 0 -> 126 bytes r2/r2/public/static/aminiupgray.gif | Bin 0 -> 187 bytes r2/r2/public/static/aminiupmod.gif | Bin 0 -> 127 bytes r2/r2/public/static/button-normal.png | Bin 0 -> 220 bytes r2/r2/public/static/button-pressed.png | Bin 0 -> 218 bytes r2/r2/public/static/css/reddit-ie7-hax.css | 4 + r2/r2/public/static/css/reddit.css | 190 +++++++++++-- r2/r2/public/static/dorks-toolbar.png | Bin 0 -> 504 bytes r2/r2/public/static/firefox.png | Bin 20196 -> 9033 bytes r2/r2/public/static/help/tb-ss-close.png | Bin 0 -> 357 bytes r2/r2/public/static/help/tb-ss-comment.png | Bin 0 -> 1075 bytes r2/r2/public/static/help/tb-ss-help.png | Bin 0 -> 344 bytes r2/r2/public/static/help/tb-ss-left.png | Bin 0 -> 3489 bytes r2/r2/public/static/help/tb-ss-link.png | Bin 0 -> 358 bytes r2/r2/public/static/help/tb-ss-logo.png | Bin 0 -> 722 bytes r2/r2/public/static/help/tb-ss-logout.png | Bin 0 -> 906 bytes r2/r2/public/static/help/tb-ss-middle.png | Bin 0 -> 1911 bytes r2/r2/public/static/help/tb-ss-right.png | Bin 0 -> 2593 bytes r2/r2/public/static/help/tb-ss-scoreetc.png | Bin 0 -> 2341 bytes .../public/static/help/tb-ss-serendipity.png | Bin 0 -> 1419 bytes r2/r2/public/static/help/tb-ss-username.png | Bin 0 -> 744 bytes r2/r2/public/static/help/tb-ss-whole.png | Bin 0 -> 6129 bytes r2/r2/public/static/ie.png | Bin 24954 -> 8084 bytes r2/r2/public/static/js/jquery.reddit.js | 11 +- r2/r2/public/static/js/reddit.js | 112 ++++++++ r2/r2/public/static/link.png | Bin 0 -> 198 bytes r2/r2/public/static/logo-toolbar.png | Bin 0 -> 582 bytes r2/r2/public/static/safari.png | Bin 28856 -> 12030 bytes r2/r2/public/static/tb-loginarrow-left.png | Bin 0 -> 168 bytes r2/r2/public/static/tb-loginarrow-right.png | Bin 0 -> 181 bytes r2/r2/templates/bookmarklets.html | 24 +- r2/r2/templates/buttontypes.html | 8 +- r2/r2/templates/comment.html | 32 ++- r2/r2/templates/commentspanel.html | 46 ++++ r2/r2/templates/frame.html | 36 ++- r2/r2/templates/frametoolbar.html | 258 +++++++++++------- r2/r2/templates/innertoolbarframe.html | 30 ++ r2/r2/templates/link.html | 14 +- r2/r2/templates/linkinfobar.html | 2 + r2/r2/templates/newlink.html | 6 +- r2/r2/templates/printable.html | 38 ++- r2/r2/templates/reddit.html | 19 +- r2/r2/templates/redditheader.html | 4 +- r2/r2/templates/redditmin.html | 32 +++ r2/r2/templates/starkcomment.html | 44 +++ r2/r2/templates/utils.html | 25 +- 64 files changed, 1273 insertions(+), 338 deletions(-) create mode 100755 r2/r2/public/static/aminidowngray.gif create mode 100755 r2/r2/public/static/aminidownmod.gif create mode 100755 r2/r2/public/static/aminiupgray.gif create mode 100755 r2/r2/public/static/aminiupmod.gif create mode 100644 r2/r2/public/static/button-normal.png create mode 100644 r2/r2/public/static/button-pressed.png create mode 100644 r2/r2/public/static/css/reddit-ie7-hax.css create mode 100644 r2/r2/public/static/dorks-toolbar.png create mode 100644 r2/r2/public/static/help/tb-ss-close.png create mode 100644 r2/r2/public/static/help/tb-ss-comment.png create mode 100644 r2/r2/public/static/help/tb-ss-help.png create mode 100644 r2/r2/public/static/help/tb-ss-left.png create mode 100644 r2/r2/public/static/help/tb-ss-link.png create mode 100644 r2/r2/public/static/help/tb-ss-logo.png create mode 100644 r2/r2/public/static/help/tb-ss-logout.png create mode 100644 r2/r2/public/static/help/tb-ss-middle.png create mode 100644 r2/r2/public/static/help/tb-ss-right.png create mode 100644 r2/r2/public/static/help/tb-ss-scoreetc.png create mode 100644 r2/r2/public/static/help/tb-ss-serendipity.png create mode 100644 r2/r2/public/static/help/tb-ss-username.png create mode 100644 r2/r2/public/static/help/tb-ss-whole.png create mode 100644 r2/r2/public/static/link.png create mode 100644 r2/r2/public/static/logo-toolbar.png create mode 100644 r2/r2/public/static/tb-loginarrow-left.png create mode 100644 r2/r2/public/static/tb-loginarrow-right.png create mode 100644 r2/r2/templates/commentspanel.html create mode 100644 r2/r2/templates/innertoolbarframe.html create mode 100644 r2/r2/templates/redditmin.html create mode 100644 r2/r2/templates/starkcomment.html diff --git a/r2/Makefile b/r2/Makefile index 025500d44..8ad089956 100644 --- a/r2/Makefile +++ b/r2/Makefile @@ -23,7 +23,7 @@ # Jacascript files to be compressified js_targets = jquery.js jquery.json.js jquery.reddit.js reddit.js # CSS targets -css_targets = reddit.css reddit-ie6-hax.css +css_targets = reddit.css reddit-ie6-hax.css reddit-ie7-hax.css SED=sed diff --git a/r2/r2/config/routing.py b/r2/r2/config/routing.py index 18b5012b0..04cd87b5e 100644 --- a/r2/r2/config/routing.py +++ b/r2/r2/config/routing.py @@ -134,8 +134,16 @@ def make_map(global_conf={}, app_conf={}): requirements=dict(action="help|blog")) mc('/help/:anything', controller='embed', action='help') - mc('/:action', controller='toolbar', - requirements=dict(action="goto|toolbar")) + mc('/goto', controller='toolbar', action='goto') + mc('/tb/:id', controller='toolbar', action='tb') + mc('/toolbar/:action', controller='toolbar', + requirements=dict(action="toolbar|inner|login")) + mc('/toolbar/comments/:id', controller='toolbar', action='comments') + + mc('/s/*rest', controller='toolbar', action='s') + # additional toolbar-related rules just above the catchall + + mc('/d/:what', controller='api', action='bookmarklet') mc('/resetpassword/:key', controller='front', action='resetpassword') @@ -150,8 +158,6 @@ def make_map(global_conf={}, app_conf={}): mc('/api/:action/:url_user', controller='api', requirements=dict(action="login|register")) mc('/api/:action', controller='api') - - mc('/d/:what', controller='api', action='bookmarklet') mc('/captcha/:iden', controller='captcha', action='captchaimg') @@ -175,6 +181,15 @@ def make_map(global_conf={}, app_conf={}): # displayed properly. mc('/error/document/:id', controller='error', action="document") + # these should be near the buttom, because they should only kick + # in if everything else fails. It's the attempted catch-all + # reddit.com/http://... and reddit.com/34fr, but these redirect to + # the less-guessy versions at /s/ and /tb/ + mc('/:linkoid', controller='toolbar', action='linkoid', + requirements=dict(linkoid='[0-9a-z]{1,6}')) + mc('/:urloid', controller='toolbar', action='urloid', + requirements=dict(urloid=r'(\w+\.\w{2,}|https?).*')) + mc("/*url", controller='front', action='catchall') return map diff --git a/r2/r2/controllers/api.py b/r2/r2/controllers/api.py index 9034dd374..5cc1c7284 100644 --- a/r2/r2/controllers/api.py +++ b/r2/r2/controllers/api.py @@ -33,7 +33,7 @@ import r2.models.thing_changes as tc from r2.controllers import ListingController from r2.lib.utils import get_title, sanitize_url, timeuntil, set_last_modified -from r2.lib.utils import query_string, to36, timefromnow +from r2.lib.utils import query_string, to36, timefromnow, link_from_url from r2.lib.wrapped import Wrapped from r2.lib.pages import FriendList, ContributorList, ModList, \ BannedList, BoringPage, FormPage, NewLink, CssError, UploadedImage @@ -55,25 +55,6 @@ from md5 import md5 from r2.lib.promote import promote, unpromote, get_promoted -def link_listing_by_url(url, count = None): - """ - Generates a listing of links which share a common url - """ - links = () - try: - if url: - links = list(tup(Link._by_url(url, sr = c.site))) - links.sort(key = lambda x: -x._score) - if count is not None: - links = links[:count] - except NotFound: - pass - names = [l._fullname for l in links] - builder = IDBuilder(names, num = 25) - return LinkListing(builder).listing() - - - class ApiController(RedditController): """ Controller which deals with almost all AJAX site interaction. @@ -95,10 +76,14 @@ class ApiController(RedditController): count = VLimit('limit')) def GET_info(self, link, count): """ - Get's a listing of links which have the provided url. + Gets a listing of links which have the provided url. """ - listing = link_listing_by_url(request.params.get('url'), - count = count) + if not link or 'url' not in request.params: + return abort(404, 'not found') + + links = link_from_url(request.params.get('url'), filter_spam = False) + builder = IDBuilder([link._fullname for link in links], num = count) + listing = LinkListing(builder, nextprev = False).listing() return BoringPage(_("API"), content = listing).render() @validatedForm(VCaptcha(), @@ -169,8 +154,9 @@ class ApiController(RedditController): url = VUrl(['url', 'sr']), title = VTitle('title'), save = VBoolean('save'), + then = VOneOf('then', ('tb', 'comments'), default='comments') ) - def POST_submit(self, form, jquery, url, title, save, sr, ip): + def POST_submit(self, form, jquery, url, title, save, sr, ip, then): if isinstance(url, (unicode, str)): form.set_inputs(url = url) @@ -245,13 +231,12 @@ class ApiController(RedditController): # flag search indexer that something has changed tc.changed(l) - # make_permalink is designed for links that can be set to _top - # here, we need to generate an ajax redirect as if we were not on a - # cname. - cname = c.cname - c.cname = False - path = l.make_permalink_slow() - c.cname = cname + if then == 'comments': + path = add_sr(l.make_permalink_slow()) + elif then == 'tb': + form.attr('target', '_top') + path = add_sr('/tb/%s' % l._id36) + form.redirect(path) def _login(self, form, user, dest='', rem = None): @@ -706,7 +691,9 @@ class ApiController(RedditController): errors.BANNED_IP in c.errors or errors.CHEATER in c.errors) # TODO: temporary hack until we migrate the rest of the vote data - if thing and thing._date > datetime(2009, 4, 17, 0, 0, 0, 0, g.tz): + if thing and thing._date < datetime(2009, 4, 17, 0, 0, 0, 0, g.tz): + g.log.debug("POST_vote: ignoring old vote on %s" % thing._fullname) + elif thing: dir = (True if dir > 0 else False if dir < 0 else None) @@ -1372,6 +1359,18 @@ class ApiController(RedditController): return UploadedImage(_('saved'), thumbnail_url(link), "", errors = errors).render() + @noresponse() + def POST_tb_commentspanel_show(self): + # this preference is allowed for non-logged-in users + c.user.pref_frame_commentspanel = True + c.user._commit() + + @noresponse() + def POST_tb_commentspanel_hide(self): + # this preference is allowed for non-logged-in users + c.user.pref_frame_commentspanel = False + c.user._commit() + @validatedForm(promoted = VByName('ids', thing_cls = Link, multiple = True)) def POST_onload(self, form, jquery, promoted, *a, **kw): # make sure that they are really promoted diff --git a/r2/r2/controllers/error.py b/r2/r2/controllers/error.py index af5fbc2a5..5d591981b 100644 --- a/r2/r2/controllers/error.py +++ b/r2/r2/controllers/error.py @@ -113,6 +113,8 @@ class ErrorController(RedditController): def send404(self): c.response.status_code = 404 + if 'usable_error_content' in request.environ: + return request.environ['usable_error_content'] if c.site._spam and not c.user_is_admin: message = (strings.banned_subreddit % dict(link = '/feedback')) diff --git a/r2/r2/controllers/front.py b/r2/r2/controllers/front.py index 4afe9f0fb..5cde45a3a 100644 --- a/r2/r2/controllers/front.py +++ b/r2/r2/controllers/front.py @@ -22,12 +22,12 @@ from validator import * from pylons.i18n import _, ungettext from reddit_base import RedditController, base_listing -from api import link_listing_by_url from r2 import config from r2.models import * from r2.lib.pages import * from r2.lib.menus import * -from r2.lib.utils import to36, sanitize_url, check_cheating, title_to_url, query_string, UrlParser +from r2.lib.utils import to36, sanitize_url, check_cheating, title_to_url +from r2.lib.utils import query_string, UrlParser, link_from_url from r2.lib.template_helpers import get_domain from r2.lib.emailer import has_opted_out, Email from r2.lib.db.operators import desc @@ -76,20 +76,20 @@ class FrontController(RedditController): def GET_random(self): """The Serendipity button""" - n = rand.randint(0, 9) - sort = 'new' if n > 5 else 'hot' + sort = 'new' if rand.choice((True,False)) else 'hot' links = c.site.get_links(sort, 'all') if isinstance(links, thing.Query): - links._limit = 25 - links = [x._fullname for x in links] + links._limit = 25 + links = [x._fullname for x in links] else: - links = links[:25] + links = list(links)[:25] + if links: - name = links[rand.randint(0, min(24, len(links)-1))] + name = rand.choice(links) link = Link._by_fullname(name, data = True) - return self.redirect(link.url) + return self.redirect(add_sr("/tb/" + link._id36)) else: - return self.redirect('/') + return self.redirect(add_sr('/')) def GET_password(self): """The 'what is my password' page""" @@ -138,8 +138,8 @@ class FrontController(RedditController): #check for 304 self.check_modified(article, 'comments') - # if there is a focal comment, communicate down to comment_skeleton.html who - # that will be + # if there is a focal comment, communicate down to + # comment_skeleton.html who that will be if comment: c.focal_comment = comment._id36 @@ -150,7 +150,9 @@ class FrontController(RedditController): check_cheating('comments') - # figure out number to show based on the menu + # figure out number to show based on the menu (when num_comments + # is 'true', the user wants to temporarily override their + # comments limit pref user_num = c.user.pref_num_comments or g.num_comments num = g.max_comments if num_comments == 'true' else user_num @@ -411,8 +413,6 @@ class FrontController(RedditController): return builder.total_num, timing, res - - def GET_login(self): """The /login form. No link to this page exists any more on the site (all actions invoking it now go through the login @@ -432,10 +432,10 @@ class FrontController(RedditController): @validate(VUser(), VModhash()) - def POST_logout(self): + def POST_logout(self, dest = None): """wipe login cookie and redirect to referer.""" self.logout() - dest = request.referer or '/' + dest = request.post.get('dest','') or request.referer or '/' return self.redirect(dest) @@ -474,38 +474,25 @@ class FrontController(RedditController): @validate(VUser(), VSRSubmitPage(), url = VRequired('url', None), - title = VRequired('title', None)) - def GET_submit(self, url, title): + title = VRequired('title', None), + then = VOneOf('then', ('tb','comments'), default = 'comments')) + def GET_submit(self, url, title, then): """Submit form.""" if url and not request.get.get('resubmit'): # check to see if the url has already been submitted - listing = link_listing_by_url(url) - redirect_link = None - if listing.things: - # if there is only one submission, the operation is clear - if len(listing.things) == 1: - redirect_link = listing.things[0] - # if there is more than one, check the users' subscriptions - else: - subscribed = [l for l in listing.things - if c.user_is_loggedin - and l.subreddit.is_subscriber_defaults(c.user)] + links = link_from_url(url) + if links and len(links) == 1: + return self.redirect(links[0].already_submitted_link) + elif links: + builder = IDBuilder([link._fullname for link in links]) + listing = LinkListing(builder, nextprev=False).listing() + infotext = (strings.multiple_submitted + % links[0].resubmit_link()) + res = BoringPage(_("seen it"), + content = listing, + infotext = infotext).render() + return res - #if there is only 1 link to be displayed, just go there - if len(subscribed) == 1: - redirect_link = subscribed[0] - else: - infotext = strings.multiple_submitted % \ - listing.things[0].resubmit_link() - res = BoringPage(_("seen it"), - content = listing, - infotext = infotext).render() - return res - - # we've found a link already. Redirect to its permalink page - if redirect_link: - return self.redirect(redirect_link.already_submitted_link) - captcha = Captcha() if c.user.needs_captcha() else None sr_names = Subreddit.submit_sr_names(c.user) if c.default_sr else () @@ -513,7 +500,8 @@ class FrontController(RedditController): content=NewLink(url=url or '', title=title or '', subreddits = sr_names, - captcha=captcha)).render() + captcha=captcha, + then = then)).render() def _render_opt_in_out(self, msg_hash, leave): """Generates the form for an optin/optout page""" diff --git a/r2/r2/controllers/reddit_base.py b/r2/r2/controllers/reddit_base.py index bc82fded6..f87df1720 100644 --- a/r2/r2/controllers/reddit_base.py +++ b/r2/r2/controllers/reddit_base.py @@ -47,7 +47,7 @@ from r2.lib.tracking import encrypt, decrypt NEVER = 'Thu, 31 Dec 2037 23:59:59 GMT' -cache_affecting_cookies = ('reddit_first','over18') +cache_affecting_cookies = ('reddit_first','over18','_options') r_subnet = re.compile("^(\d+\.\d+)\.\d+\.\d+$") @@ -73,7 +73,7 @@ class Cookie(object): class UnloggedUser(FakeAccount): _cookie = 'options' - allowed_prefs = ('pref_content_langs', 'pref_lang') + allowed_prefs = ('pref_content_langs', 'pref_lang', 'pref_frame_commentspanel') def __init__(self, browser_langs, *a, **kw): FakeAccount.__init__(self, *a, **kw) @@ -90,6 +90,7 @@ class UnloggedUser(FakeAccount): self._defaults = self._defaults.copy() self._defaults['pref_lang'] = lang self._defaults['pref_content_langs'] = content_langs + self._defaults['pref_frame_commentspanel'] = False self._load() @property diff --git a/r2/r2/controllers/toolbar.py b/r2/r2/controllers/toolbar.py index cf81a53e8..b452a9d2a 100644 --- a/r2/r2/controllers/toolbar.py +++ b/r2/r2/controllers/toolbar.py @@ -21,31 +21,228 @@ ################################################################################ from reddit_base import RedditController from r2.lib.pages import * +from r2.models import * +from r2.lib.menus import CommentSortMenu from r2.lib.filters import spaceCompress +from r2.lib.memoize import memoize +from r2.lib.template_helpers import add_sr +from r2.lib import utils from validator import * -from pylons import c +from pylons import c, Response + +import string + +# strips /r/foo/, /s/, or both +strip_sr = re.compile('^/r/[a-zA-Z0-9_-]+') +strip_s_path = re.compile('^/s/') +leading_slash = re.compile('^/+') +has_protocol = re.compile('^https?:') +need_insert_slash = re.compile('^https?:/[^/]') +def demangle_url(path): + # there's often some URL mangling done by the stack above us, so + # let's clean up the URL before looking it up + path = strip_sr.sub('', path) + path = strip_s_path.sub('', path) + path = leading_slash.sub("", path) + + if not has_protocol.match(path): + path = 'http://%s' % path + + if need_insert_slash.match(path): + path = string.replace(path, '/', '//', 1) + + path = utils.sanitize_url(path) + + return path + +def force_html(): + """Because we can take URIs like /s/http://.../foo.png, and we can + guarantee that the toolbar will never be used with a non-HTML + render style, we don't want to interpret the extension from the + target URL. So here we rewrite Middleware's interpretation of + the extension to force it to be HTML + """ + + c.render_style = 'html' + c.extension = None + c.content_type = 'text/html; charset=UTF-8' + +def auto_expand_panel(link): + if not link.num_comments: + return False + else: + return c.user.pref_frame_commentspanel + +@memoize('toolbar.get_title', time = 500) +def get_title(url): + """Find the in the page contained at 'url'. Copied here + from utils so that we can memoize it""" + return utils.get_title(url) class ToolbarController(RedditController): - - @validate(link = VByName('id')) - def GET_toolbar(self, link): - if not link: return self.abort404() - link_builder = IDBuilder((link._fullname,)) - link_listing = LinkListing(link_builder, nextprev=False).listing() - res = FrameToolbar(link = link_listing.things[0]).render() - return spaceCompress(res) - - @validate(link = VByName('id'), + @validate(link1 = VByName('id'), link2 = VLink('id', redirect = False)) - def GET_goto(self, link, link2): - link = link2 if link2 else link + def GET_goto(self, link1, link2): + """Support old /goto?id= urls. deprecated""" + link = link2 if link2 else link1 if link: - link._load() - if c.user and c.user.pref_frame: - return Frame(title = link.title, - url = link.url, - fullname = link._fullname).render() - else: - return self.redirect(link.url) + return self.redirect(add_sr("/tb/" + link._id36)) return self.abort404() + @validate(link = VLink('id')) + def GET_tb(self, link): + "/tb/$id36, show a given link with the toolbar" + if not link: + return self.abort404() + + res = Frame(title = link.title, + url = link.url, + fullname = link._fullname) + return spaceCompress(res.render()) + + def GET_s(self, rest): + """/s/http://..., show a given URL with the toolbar. if it's + submitted, redirect to /tb/$id36""" + force_html() + path = demangle_url(request.fullpath) + + if not path: + # it was malformed + self.abort404() + + link = utils.link_from_url(path, multiple = False) + + if c.cname and not c.authorized_cname: + # In this case, we make some bad guesses caused by the + # cname frame on unauthorised cnames. + # 1. User types http://foo.com/http://myurl?cheese=brie + # (where foo.com is an unauthorised cname) + # 2. We generate a frame that points to + # http://www.reddit.com/r/foo/http://myurl?cnameframe=0.12345&cheese=brie + # 3. Because we accept everything after the /r/foo/, and + # we've now parsed, modified, and reconstituted that + # URL to add cnameframe, we really can't make any good + # assumptions about what we've done to a potentially + # already broken URL, and we can't assume that we've + # rebuilt it in the way that it was originally + # submitted (if it was) + # We could try to work around this with more guesses (by + # having demangle_url try to remove that param, hoping + # that it's not already a malformed URL, and that we + # haven't re-ordered the GET params, removed + # double-slashes, etc), but for now, we'll just refuse to + # do this operation + return self.abort404() + + if link: + # we were able to find it, let's send them to the + # link-id-based URL so that their URL is reusable + return self.redirect(add_sr("/tb/" + link._id36)) + + title = get_title(path) + if not title: + title = utils.domain(path) + res = Frame(title = title, url = path) + + # we don't want clients to think that this URL is actually a + # valid URL for search-indexing or the like + c.response = Response() + c.response.status_code = 404 + request.environ['usable_error_content'] = spaceCompress(res.render()) + + return c.response + + @validate(link = VLink('id')) + def GET_comments(self, link): + if not link: + self.abort404() + if not link.subreddit_slow.can_view(c.user): + abort(403, 'forbidden') + + def builder_wrapper(cm): + w = Wrapped(cm) + w.render_class = StarkComment + w.target = "_top" + return w + + link_builder = IDBuilder((link._fullname,)) + link_listing = LinkListing(link_builder, nextprev=False).listing() + links = link_listing.things[0], + if not links: + # they aren't allowed to see this link + return self.abort(403, 'forbidden') + link = links[0] + + res = FrameToolbar(link = link, + title = link.title, + url = link.url) + + + b = TopCommentBuilder(link, CommentSortMenu.operator('top'), + wrap = builder_wrapper) + + listing = NestedListing(b, num = 10, # TODO: add config var + parent_name = link._fullname) + + res = RedditMin(content=CommentsPanel(link=link, listing=listing.listing(), + expanded = auto_expand_panel(link))) + + return res.render() + + @validate(link = VByName('id'), + url = nop('url')) + def GET_toolbar(self, link, url): + """The visible toolbar, with voting buttons and all""" + if not link: + link = utils.link_from_url(url, multiple = False) + + if link: + link_builder = IDBuilder((link._fullname,)) + res = FrameToolbar(link = link_builder.get_items()[0][0], + title = link.title, + url = link.url, + expanded = auto_expand_panel(link)) + else: + res = FrameToolbar(link = None, + title = get_title(url), + url = url, + expanded = False) + + return spaceCompress(res.render()) + + @validate(link = VByName('id')) + def GET_inner(self, link): + """The intermediate frame that displays the comments side-bar + on one side and the link on the other""" + if not link: + return self.abort404() + + res = InnerToolbarFrame(link = link, expanded = auto_expand_panel(link)) + return spaceCompress(res.render()) + + @validate(link = VLink('linkoid')) + def GET_linkoid(self, link): + if not link: + return self.abort404() + return self.redirect(add_sr("/tb/" + link._id36)) + + slash_fixer = re.compile('(/s/https?:)/+') + @validate(urloid = nop('urloid')) + def GET_urloid(self, urloid): + # they got here from "/http://..." + path = demangle_url(request.fullpath) + + if not path: + # malformed URL + self.abort404() + + redir_path = add_sr("/s/" + path) + force_html() + + # Redirect to http://reddit.com/s/http://google.com + # rather than http://reddit.com/s/http:/google.com + redir_path = self.slash_fixer.sub(r'\1///', redir_path, 1) + # ^^^ + # 3=2 when it comes to self.redirect() + return self.redirect(redir_path) + diff --git a/r2/r2/lib/filters.py b/r2/r2/lib/filters.py index c29a17a1f..7f3a4378e 100644 --- a/r2/r2/lib/filters.py +++ b/r2/r2/lib/filters.py @@ -115,7 +115,7 @@ fix_url = re.compile('<(http://[^\s\'\"\]\)]+)>') #TODO markdown should be looked up in batch? #@memoize('markdown') -def safemarkdown(text, nofollow = False): +def safemarkdown(text, nofollow=False, target=None): from contrib.markdown import markdown if text: # increase escaping of &, < and > once @@ -133,8 +133,12 @@ def safemarkdown(text, nofollow = False): def href_handler(m): url = m.group(1).replace('&', '&') link = '<a href="%s"' % url - if c.cname: + + if target: + link += ' target="%s"' % target + elif c.cname: link += ' target="_top"' + if nofollow: link += ' rel="nofollow"' return link diff --git a/r2/r2/lib/menus.py b/r2/r2/lib/menus.py index 569b5a179..27b244da0 100644 --- a/r2/r2/lib/menus.py +++ b/r2/r2/lib/menus.py @@ -99,6 +99,7 @@ menu = MenuHandler(hot = _('hot'), store = _("store"), ad_inq = _("advertise on reddit"), toplinks = _("top links"), + random = _('random'), iphone = _("iPhone app"), #preferences diff --git a/r2/r2/lib/pages/pages.py b/r2/r2/lib/pages/pages.py index 495b666d1..9fcf17fdf 100644 --- a/r2/r2/lib/pages/pages.py +++ b/r2/r2/lib/pages/pages.py @@ -24,7 +24,7 @@ from r2.models import IDBuilder, LinkListing, Account, Default, FakeSubreddit, S from r2.config import cache from r2.lib.jsonresponse import json_respond from r2.lib.jsontemplates import is_api -from pylons.i18n import _ +from pylons.i18n import _, ungettext from pylons import c, request, g from pylons.controllers.util import abort @@ -33,11 +33,13 @@ from r2.lib.captcha import get_iden from r2.lib.filters import spaceCompress, _force_unicode, _force_utf8 from r2.lib.menus import NavButton, NamedButton, NavMenu, PageNameNav, JsButton from r2.lib.menus import SubredditButton, SubredditMenu, OffsiteButton, menu -from r2.lib.strings import plurals, rand_strings, strings -from r2.lib.utils import title_to_url, query_string, UrlParser, to_js +from r2.lib.strings import plurals, rand_strings, strings, Score +from r2.lib.utils import title_to_url, query_string, UrlParser, to_js, vote_hash from r2.lib.template_helpers import add_sr, get_domain -import sys, random, datetime, locale, calendar + +import sys, random, datetime, locale, calendar, re import graph +from urllib import quote datefmt = _force_utf8(_('%d %b %Y')) @@ -71,20 +73,23 @@ class Reddit(Wrapped): create_reddit_box = True submit_box = True + footer = True searchbox = True extension_handling = True enable_login_cover = True site_tracking = True + show_firsttext = True def __init__(self, space_compress = True, nav_menus = None, loginbox = True, infotext = '', content = None, title = '', robots = None, - show_sidebar = True, **context): + show_sidebar = True, footer = True, **context): Wrapped.__init__(self, **context) self.title = title self.robots = robots self.infotext = infotext self.loginbox = True self.show_sidebar = show_sidebar + self.footer = footer self.space_compress = space_compress #put the sort menus at the top @@ -92,7 +97,7 @@ class Reddit(Wrapped): #add the infobar self.infobar = None - if c.firsttime and c.site.firsttext and not infotext: + if self.show_firsttext and c.firsttime and c.site.firsttext and not infotext: infotext = c.site.firsttext if infotext: self.infobar = InfoBar(message = infotext) @@ -190,6 +195,7 @@ class Reddit(Wrapped): OffsiteButton("rss", dest = '/.rss'), NamedButton("store", False, nocname=True), NamedButton("stats", False, nocname=True), + NamedButton('random', False, nocname=False), NamedButton("feedback", False),], title = 'site links', type = 'flat_vert', separator = ''), @@ -297,6 +303,13 @@ class Reddit(Wrapped): """returns a Wrapped (or renderable) item for the main content div.""" return self.content_stack(self.infobar, self.nav_menu, self._content) +class RedditMin(Reddit): + """a version of Reddit that has no sidebar, toolbar, footer, + etc""" + footer = False + show_sidebar = False + show_firsttext = False + class LoginFormWide(Wrapped): """generates a login form suitable for the 300px rightbox.""" pass @@ -455,6 +468,17 @@ class SearchPage(BoringPage): return self.content_stack(self.searchbar, self.infobar, self.nav_menu, self._content) +class CommentsPanel(Wrapped): + """the side-panel on the reddit toolbar frame that shows the top + comments of a link""" + + def __init__(self, link = None, listing = None, expanded = False, *a, **kw): + self.link = link + self.listing = listing + self.expanded = expanded + + Wrapped.__init__(self, *a, **kw) + class LinkInfoPage(Reddit): """Renders the varied /info pages for a link. The Link object is passed via the link argument and the content passed to this class @@ -531,12 +555,8 @@ class LinkInfoPage(Reddit): class LinkInfoBar(Wrapped): """Right box for providing info about a link.""" def __init__(self, a = None): - if a: - a = Wrapped(a) - Wrapped.__init__(self, a = a, datefmt = datefmt) - class EditReddit(Reddit): """Container for the about page for a reddit""" extension_handling= False @@ -880,27 +900,73 @@ class SearchBar(Wrapped): class Frame(Wrapped): - """Frameset for the FrameToolbar used when a user hits /goto and - has pref_toolbar set. The top 30px of the page are dedicated to - the toolbar, while the rest of the page will show the results of - following the link.""" - def __init__(self, url='', title='', fullname=''): + """Frameset for the FrameToolbar used when a user hits /tb/. The + top 30px of the page are dedicated to the toolbar, while the rest + of the page will show the results of following the link.""" + def __init__(self, url='', title='', fullname=None): + if title: + title = (_('%(site_title)s via %(domain)s') + % dict(site_title = _force_unicode(title), + domain = g.domain)) + else: + title = g.domain + Wrapped.__init__(self, url = url, title = title, fullname = fullname) +dorks_re = re.compile(r"https?://?([-\w.]*\.)?digg\.com/\w+$") class FrameToolbar(Wrapped): """The reddit voting toolbar used together with Frame.""" extension_handling = False - def __init__(self, link = None, **kw): - self.title = link.title - Wrapped.__init__(self, link = link, *kw) - + def __init__(self, link = None, title = None, url = None, expanded = False, **kw): + self.title = title + self.url = url + self.expanded = expanded + self.link = link + + self.dorks = dorks_re.match(link.url if link else url) + + if link: + self.tblink = add_sr("/tb/"+link._id36) + + likes = link.likes + self.upstyle = "mod" if likes else "" + self.downstyle = "mod" if likes is False else "" + if c.user_is_loggedin: + self.vh = vote_hash(c.user, link, 'valid') + score = link.score + + if not link.num_comments: + # generates "comment" the imperative verb + self.com_label = _("comment {verb}") + else: + # generates "XX comments" as a noun + com_label = ungettext("comment", "comments", link.num_comments) + self.com_label = strings.number_label % (link.num_comments, com_label) + + # generates "XX points" as a noun + self.score_label = Score.safepoints(score) + + else: + self.tblink = add_sr("/s/"+quote(url)) + submit_url_options = dict(url = _force_unicode(url), + then = 'tb') + if title: + submit_url_options['title'] = _force_unicode(title) + self.submit_url = add_sr('/submit' + query_string(submit_url_options)) + + if not c.user_is_loggedin: + self.loginurl = add_sr("/login?dest="+quote(self.tblink)) + + Wrapped.__init__(self, **kw) class NewLink(Wrapped): """Render the link submission form""" - def __init__(self, captcha = None, url = '', title= '', subreddits = ()): + def __init__(self, captcha = None, url = '', title= '', subreddits = (), + then = 'comments'): Wrapped.__init__(self, captcha = captcha, url = url, - title = title, subreddits = subreddits) + title = title, subreddits = subreddits, + then = then) class ShareLink(Wrapped): def __init__(self, link_name = "", emails = None): @@ -994,7 +1060,13 @@ class Socialite(Wrapped): class Bookmarklets(Wrapped): """The bookmarklets page.""" - def __init__(self, buttons=["reddit", "serendipity!"]): + def __init__(self, buttons=None): + if buttons is None: + buttons = ["submit", "serendipity!"] + # only include the toolbar link if we're not on an + # unathorised cname. See toolbar.py:GET_s for discussion + if not (c.cname and c.site.domain not in g.authorized_cnames): + buttons.insert(0, "reddit toolbar") Wrapped.__init__(self, buttons = buttons) @@ -1377,4 +1449,6 @@ class RedditTraffic(Traffic): "%5.2f%%" % f)) return res - +class InnerToolbarFrame(Wrapped): + def __init__(self, link, expanded = False): + Wrapped.__init__(self, link = link, expanded = expanded) diff --git a/r2/r2/lib/template_helpers.py b/r2/r2/lib/template_helpers.py index 70919a7ca..29bea083b 100644 --- a/r2/r2/lib/template_helpers.py +++ b/r2/r2/lib/template_helpers.py @@ -196,9 +196,15 @@ def dockletStr(context, type, browser): if type == "serendipity!": return "http://"+site_domain+"/random" - elif type == "reddit": - return "javascript:location.href='http://"+site_domain+"/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)" + elif type == "submit": + return ("javascript:location.href='http://"+site_domain+ + "/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)") + elif type == "reddit toolbar": + return ("javascript:%20var%20h%20=%20window.location.href;%20h%20=%20'http://" + + site_domain + "/s/'%20+%20escape(h);%20window.location%20=%20h;") else: + # these are the linked/disliked buttons, which we have removed + # from the UI return (("javascript:function b(){var u=encodeURIComponent(location.href);" "var i=document.getElementById('redstat')||document.createElement('a');" "var s=i.style;s.position='%(position)s';s.top='0';s.left='0';" @@ -283,3 +289,7 @@ def choose_width(link, width): return 100 + (10 * (len(str(link._ups - link._downs)))) else: return 110 + +def panel_size(state): + "the frame.cols of the reddit-toolbar's inner frame" + return '100%, 400px' if state =='expanded' else '100%x, 0px' diff --git a/r2/r2/lib/utils/utils.py b/r2/r2/lib/utils/utils.py index a8a9e09e1..7df807c63 100644 --- a/r2/r2/lib/utils/utils.py +++ b/r2/r2/lib/utils/utils.py @@ -26,6 +26,7 @@ import Queue from copy import deepcopy import cPickle as pickle import re, datetime, math, random, string, sha, os +from operator import attrgetter from datetime import datetime, timedelta from pylons.i18n import ungettext, _ @@ -1037,3 +1038,47 @@ def interleave_lists(*args): for a in args: if i < len(a): yield a[i] + +def link_from_url(path, filter_spam = False, multiple = True): + from pylons import c + from r2.models import IDBuilder, Link, Subreddit, NotFound + + if not path: + return + + try: + links = Link._by_url(path, c.site) + except NotFound: + return [] if multiple else None + + links = tup(links) + + # run the list through a builder to remove any that the user + # isn't allowed to see + links = IDBuilder([link._fullname for link in links], + skip = False).get_items()[0] + if not links: + return + + if filter_spam: + # first, try to remove any spam + links_nonspam = [ link for link in links + if not link._spam ] + if links_nonspam: + links = links_nonspam + + # if it occurs in one or more of their subscriptions, show them + # that one first + subs = set(Subreddit.user_subreddits(c.user, limit = None)) + def cmp_links(a, b): + if a.sr_id in subs and b.sr_id not in subs: + return -1 + elif a.sr_id not in subs and b.sr_id in subs: + return 1 + else: + return cmp(a._hot, b._hot) + links = sorted(links, cmp = cmp_links) + + # among those, show them the hottest one + return links if multiple else links[0] + diff --git a/r2/r2/models/account.py b/r2/r2/models/account.py index ad33efb11..d31aac0bf 100644 --- a/r2/r2/models/account.py +++ b/r2/r2/models/account.py @@ -39,6 +39,7 @@ class Account(Thing): _int_prop_suffix = '_karma' _defaults = dict(pref_numsites = 25, pref_frame = False, + pref_frame_commentspanel = True, pref_newwindow = False, pref_public_votes = False, pref_hide_ups = False, diff --git a/r2/r2/models/builder.py b/r2/r2/models/builder.py index 7d3a5d73a..9bf518a09 100644 --- a/r2/r2/models/builder.py +++ b/r2/r2/models/builder.py @@ -400,11 +400,16 @@ class SearchBuilder(QueryBuilder): return done, new_items class CommentBuilder(Builder): - def __init__(self, link, sort, comment = None, context = None): - Builder.__init__(self) + def __init__(self, link, sort, comment = None, context = None, + load_more=True, continue_this_thread=True, + max_depth = MAX_RECURSION, **kw): + Builder.__init__(self, **kw) self.link = link self.comment = comment self.context = context + self.load_more = load_more + self.max_depth = max_depth + self.continue_this_thread = continue_this_thread if sort.col == '_date': self.sort_key = lambda x: x._date @@ -419,7 +424,7 @@ class CommentBuilder(Builder): for j in self.item_iter(i.child.things): yield j - def get_items(self, num, nested = True, starting_depth = 0): + def get_items(self, num, starting_depth = 0): r = link_comments(self.link._id) cids, comment_tree, depth, num_children = r if cids: @@ -496,14 +501,14 @@ class CommentBuilder(Builder): comments.remove(to_add) if to_add._deleted and not comment_tree.has_key(to_add._id): pass - elif depth[to_add._id] < MAX_RECURSION: + elif depth[to_add._id] < self.max_depth: #add children if comment_tree.has_key(to_add._id): candidates.extend(comment_tree[to_add._id]) sort_candidates() items.append(to_add) num_have += 1 - else: + elif self.continue_this_thread: #add the recursion limit p_id = to_add.parent_id w = Wrapped(MoreRecursion(self.link, 0, @@ -541,6 +546,9 @@ class CommentBuilder(Builder): parent.child = empty_listing(morelink) parent.child.parent_name = parent._fullname + if not self.load_more: + return final + #put the remaining comments into the tree (the show more comments link) more_comments = {} while candidates: @@ -587,3 +595,16 @@ class CommentBuilder(Builder): mc2.count += 1 return final + +class TopCommentBuilder(CommentBuilder): + """A comment builder to fetch only the top-level, non-spam, + non-deleted comments""" + def __init__(self, link, sort, wrap = Wrapped): + CommentBuilder.__init__(self, link, sort, + load_more = False, + continue_this_thread = False, + max_depth = 1, wrap = wrap) + + def get_items(self, num = 10): + final = CommentBuilder.get_items(self, num = num, starting_depth = 0) + return [ cm for cm in final if not cm.deleted ] diff --git a/r2/r2/models/link.py b/r2/r2/models/link.py index 5238aca85..fe662237a 100644 --- a/r2/r2/models/link.py +++ b/r2/r2/models/link.py @@ -328,7 +328,17 @@ class Link(Thing, Printable): item.domain_path = "/domain/%s" % item.domain if item.is_self: item.domain_path = item.subreddit_path - + + item.tblink = "http://%s/tb/%s" % ( + get_domain(cname = c.cname, subreddit=False), + item._id36) + + item.click_url = item.url + if item.is_self: + item.click_url = item.permalink + elif c.user.pref_frame: + item.click_url = item.tblink + if c.user_is_loggedin: incr_counts(wrapped) @@ -461,13 +471,16 @@ class Comment(Thing, Printable): wrapped.likes, wrapped.friend, wrapped.collapsed, - wrapped.moderator_banned, + wrapped.nofollow, wrapped.show_spam, wrapped.show_reports, + wrapped.target, wrapped.can_ban, wrapped.moderator_banned, wrapped.can_reply, - wrapped.deleted)) + wrapped.deleted, + wrapped.render_class, + )) s = ''.join(s) return s @@ -481,8 +494,8 @@ class Comment(Thing, Printable): @classmethod def add_props(cls, user, wrapped): #fetch parent links - links = Link._byID(set(l.link_id for l in wrapped), True) - + links = Link._byID(set(l.link_id for l in wrapped), data = True, + return_dict = True) #get srs for comments that don't have them (old comments) for cm in wrapped: @@ -499,8 +512,11 @@ class Comment(Thing, Printable): for item in wrapped: item.link = links.get(item.link_id) + if not hasattr(item, 'subreddit'): item.subreddit = item.subreddit_slow + if not hasattr(item, 'target'): + item.target = None if hasattr(item, 'parent_id'): if cids.has_key(item.parent_id): item.parent_permalink = '#' + utils.to36(item.parent_id) @@ -542,6 +558,11 @@ class Comment(Thing, Printable): item.score_fmt = Score.points item.permalink = item.make_permalink(item.link, item.subreddit) +class StarkComment(Comment): + """Render class for the comments in the top-comments display in + the reddit toolbar""" + _nodb = True + class MoreComments(object): show_spam = False show_reports = False diff --git a/r2/r2/models/listing.py b/r2/r2/models/listing.py index 6e1fec961..abe1dc509 100644 --- a/r2/r2/models/listing.py +++ b/r2/r2/models/listing.py @@ -114,7 +114,6 @@ class NestedListing(Listing): def __init__(self, *a, **kw): Listing.__init__(self, *a, **kw) - self.nested = kw.get('nested', True) self.num = kw.get('num', g.num_comments) self.parent_name = kw.get('parent_name') @@ -122,7 +121,7 @@ class NestedListing(Listing): ##TODO use the local builder with the render cache. this may ##require separating the builder's get_items and tree-building ##functionality - wrapped_items = self.get_items(num = self.num, nested = True) + wrapped_items = self.get_items(num = self.num) self.things = wrapped_items diff --git a/r2/r2/models/populatedb.py b/r2/r2/models/populatedb.py index c1c77982b..0a671e0af 100644 --- a/r2/r2/models/populatedb.py +++ b/r2/r2/models/populatedb.py @@ -21,6 +21,7 @@ ################################################################################ from r2.models import * from r2.lib import promote +from r2.lib.utils import fetch_things2 import string import random @@ -64,3 +65,12 @@ def create_links(num): if random.choice(([False] * 50) + [True]): promote.promote(l) + +def by_url_cache(): + q = Link._query(Link.c._spam == (True,False), + data = True, + sort = desc('_date')) + for i, link in enumerate(fetch_things2(q)): + if i % 100 == 0: + print "%s..." % i + link.set_url_cache() diff --git a/r2/r2/public/static/aminidowngray.gif b/r2/r2/public/static/aminidowngray.gif new file mode 100755 index 0000000000000000000000000000000000000000..4d7ba63f835084819d65ffa23175522e3c77d932 GIT binary patch literal 187 zcmZ?wbhEHb<Y(YxXc1;Oc<|t!J$tTPxpMB@xwB`_9y)aB)TvXKFJC@z;J}?bca9%F ze&fcC6DLmGzI}V&zI{7(?AW$#+upr<w{PFhKpar~$->CMAkUx!QVz0{fz{%HdS6N= z*P+B&EQV{AE;2BP6mhV1b6n6Zbdp(&(@Ev{0+pa5hj|`Ll35Md1h>BW`aI&F%f5VF H76xko6q!b% literal 0 HcmV?d00001 diff --git a/r2/r2/public/static/aminidownmod.gif b/r2/r2/public/static/aminidownmod.gif new file mode 100755 index 0000000000000000000000000000000000000000..7656347d9d249a3d5b989bfe284c048a1f049960 GIT binary patch literal 126 zcmZ?wbhEHb<Y(Yxc+AHzZ{Gh|v;Hq%{(s%N{|guXU%B%C?%n@4Z1}%_|Nlvo{%_gx z|KP#@vuFRGGUY!57%2W^VPs(7XV3xhKxQzoXn#2AxjOX5t%Iea3)}^lSg@|pG+lFi dLk^R<&)0J~xr`PHpLFKGTpG+8vWkPj8URhFIEVlM literal 0 HcmV?d00001 diff --git a/r2/r2/public/static/aminiupgray.gif b/r2/r2/public/static/aminiupgray.gif new file mode 100755 index 0000000000000000000000000000000000000000..fef891dddc16344d76c671ce1af041dd3bc453fb GIT binary patch literal 187 zcmZ?wbhEHb<Y(YxXc1;Oc<|t!J$tTPxpMB@xwB`_9y)aB)TvXKFJC@z;J}?bca9%F ze&fcC6DLmGzI}V&zI{7(?AW$#+upr<w{PFhKpar~$->CMAkUx!QVz0{fz{%HdS6Or z-N8(&pe20`D$4mfj-OvT{He8G+QHL4d27g~<JlsdOQy|tVr2NMA=0DOXt08drTvvQ H3xhQPj%i3? literal 0 HcmV?d00001 diff --git a/r2/r2/public/static/aminiupmod.gif b/r2/r2/public/static/aminiupmod.gif new file mode 100755 index 0000000000000000000000000000000000000000..2d675cdffc7071d01e9cf6e8effee8c288656f2e GIT binary patch literal 127 zcmZ?wbhEHb<Y(Yxc+AJ}e{%N!nZ^It^!{Jm_<wfU|7C6ecP;$Cw(oye-2ctf|L<S^ ze`@akp2Yv%2@GJM_>+Z^fq|bv2gC!J!N8*P;iTv4+6T9;PMhbb%oeZFCtf~JZfVzv cTTwoLeI4q&UH02IKk#?>quRIMpM}910JkSMtN;K2 literal 0 HcmV?d00001 diff --git a/r2/r2/public/static/button-normal.png b/r2/r2/public/static/button-normal.png new file mode 100644 index 0000000000000000000000000000000000000000..ccff15fd9f42a780a76926faddebf0f60d2fdced GIT binary patch literal 220 zcmeAS@N?(olHy`uVBq!ia0vp^j6f{R!3HD)xzi;<0>we@P7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85o30K$!7fntTONkiEpy*OmPy3!4y+;pyXQKzRnq64!_l=ltB< z)VvY~=c3falGGH1^30M91$R&1fbd2>aiAh|PZ!4!j_bZ>4EY)i1dcdt{$H;bdStDp z5a%vUonn38R-dQKHJ5nJbBa32k*WB2dO-=>q?cR2GHK`O?`QTE$p9L`;OXk;vd$@? F2>_lSKac<b literal 0 HcmV?d00001 diff --git a/r2/r2/public/static/button-pressed.png b/r2/r2/public/static/button-pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..915c59f0fc482a3034504e0b32d45447826183c1 GIT binary patch literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^j6f{R!3HD)xzi;<0>we@P7LeL$-D$|*pj^6T^Nos z+++Ch=J>t?KoQOYkH}&M2B8uVX1tdsUjY<kFY)wsWxvV7Cd4OrXnu+%P)M@GHKN2h zKQ}iuuY|$5C^fMpHASI3vm`^o-P1Q9ypc~FsL0gQ#W95Ay6dTfybT5dM;vay+%Gh1 z0rx4+ewjy`Cz+luwYQ$Ebtpr0WlDG8>@)A*%#4?|@Y>@n%)HOWpimuX0E4HipUXO@ GgeCxqnn1Gv literal 0 HcmV?d00001 diff --git a/r2/r2/public/static/css/reddit-ie7-hax.css b/r2/r2/public/static/css/reddit-ie7-hax.css new file mode 100644 index 000000000..7a5cb7cc9 --- /dev/null +++ b/r2/r2/public/static/css/reddit-ie7-hax.css @@ -0,0 +1,4 @@ +.toolbar .middle-side input[type=text] { + border: none; + height: 17px; +} diff --git a/r2/r2/public/static/css/reddit.css b/r2/r2/public/static/css/reddit.css index 36d55469a..535976118 100644 --- a/r2/r2/public/static/css/reddit.css +++ b/r2/r2/public/static/css/reddit.css @@ -1,3 +1,7 @@ +html { + height: 100%; /* Needed for toolbar's comments panel's pinstripe */ +} + body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,p,blockquote,th,td,iframe { margin:0; padding:0; @@ -19,8 +23,6 @@ body { z-index: 1; } -/*html,body { height: 100%; }*/ - /* IE dumbness patch. hidden input in a hidden block that is * subsequently shown leads to the input to "show" and generate undesired * )padding. This makes it go away. */ @@ -725,6 +727,10 @@ a.star { text-decoration: none; color: #ff8b60 } font-size: medium; text-align: right; } +.linkcompressed .arrow.down, .linkcompressed .arrow.downmod { + margin-top: 2px; +} + .linkcompressed .tagline { display: inline; margin-top: 0px; margin-bottom: 1px; } .linkcompressed .flat-list { display: inline } @@ -733,7 +739,7 @@ a.star { text-decoration: none; color: #ff8b60 } .linkcompressed .entry .buttons li.first {padding-left: .5em;} .linkcompressed .entry .buttons li a { padding: 0 2px; - background-color: #f6f6f6; + background-color: #f7f7f7; font-weight: bold } @@ -882,6 +888,20 @@ textarea.gray { color: gray; } padding-left: 5px; } +.starkcomment + .clearleft + .starkcomment { + margin-top: 10px +} +.starkcomment .commentbox { + color: black; + background-color: #f0f0f0; + padding: 5px; + margin-left: 10px; + margin-right: 5px; +} +.starkcomment .tagline { + text-align: right; +} + .fixedwidth { float: left; width: 100px; height: 0px; } .clearleft { clear: left; height: 0px; } .clear { clear: both; } @@ -1246,7 +1266,9 @@ textarea.gray { color: gray; } padding-right: 5px; font-weight: bold; } - +.details td { + vertical-align: top; +} .bottommenu { color: gray; font-size: smaller; clear: both} .bottommenu a { color: gray; text-decoration: underline; } @@ -1407,18 +1429,154 @@ textarea.gray { color: gray; } font-size: larger; } -/* the toolbar */ -.toolbar { height: 30px; border-bottom: 1px solid black;} -.toolbar td { vertical-align: center; } -.toolbar td#frame-left > a, -.toolbar td#frame-left > form { margin-right: 20px; } -.toolbar td#frame-right { text-align: right; } -.toolbar td#frame-right > a, -.toolbar td#frame-right > form { margin: 0 5px; } -.toolbar .arrow { - background-position: center left; - padding-left: 18px; - display: inline; +.bookmarklet { + border: solid #888888 1px; + padding: 0px 2px; +} + +.toolbar { + font-size: small; + border-bottom: 1px solid #336699; + background-color: #CEE3F8; +} + +.toolbar .left-side { + height: 19px; + float: left; + border-right: solid #336699 1px; + background-image: url(/static/button-normal.png); +} + +.toolbar .middle-side { + text-align: center; + background-image: url(/static/button-normal.png); +} + +.toolbar .middle-side a, .toolbar .middle-side b { + display: block; + border-left: none; +} + +.toolbar .middle-side input[type=text] { + font-size: 14px; + vertical-align: baseline; + width: 100%; + height: 18px; + border: none; + border-top: solid transparent 1px; +} +.toolbar .middle-side .url { + overflow: hidden; +} +.toolbar .right-side { + float: right; + background-image: url(/static/button-normal.png); +} + +.toolbar a, .toolbar b { + font-weight: normal; + display: inline-block; + height: 18px; + border-left: solid #336699 1px; + white-space: nowrap; + padding: 1px 4px 0px; + overflow: hidden; + outline: none; + -moz-outline: none; +} + +.toolbar a, .toolbar .clickable { + cursor: pointer; + color: #336699; + text-decoration: none !important; +} + +.toolbar .clickable:active, .pushed-button { + background-image: url(/static/button-pressed.png) !important; + color: orangered !important; +} + +.toolbar a img, toolbar b img { + vertical-align: middle; + padding-top: 3px; +} + +.toolbar .content { + float: left; + vertical-align: middle; +} +.toolbar .logo { + margin: 0px; + padding: 0 2px; + border-left: none; + vertical-align: top; +} +.toolbar .title { + padding-left: 20px; + color: black; + font-style: italic; +} +.toolbar .controls { + float: right; +} +.toolbar .arrow { + display: inline-block; + width: auto; + margin: 0px; + background-position: left center; + padding-left: 18px; +} + +.toolbar .arrow.upmod { background-image: url(/static/aminiupmod.gif); } +.toolbar .arrow.downmod { background-image: url(/static/aminidownmod.gif); } +.toolbar .arrow.up { background-image: url(/static/aminiupgray.gif); } +.toolbar .arrow.down { background-image: url(/static/aminidowngray.gif); } + +.toolbar-status-bar { + border-top: solid #336699 1px; + border-bottom: solid #336699 1px; + background-color: #F6E69F; + padding: 0px 2px; + overflow: auto; +} +.toolbar-status-bar .login-arrow-left { + overflow: auto; + background-image: url(/static/tb-loginarrow-left.png); + background-position: top right; +} +.toolbar-status-bar .login-arrow-right { + float: right; + margin-right: 75px; +} +.toolbar-status-bar .login-message { + float: left; + background-color: #F6E69F; + padding-right: 3px; +} +.tb-comments-panel-toggle { + display: block; + font-size: larger; + margin: 15px 13px; +} +.min-body { + height: 100%; +} + +.min-body .content { + margin-top: 0px; + border-left: solid #369 1px; + min-height: 100%; + max-width: 60em; + overflow: auto; +} + +.min-body .content h1, .min-body .content h2 { + padding-left: 13px; + display: inline-block; + margin-bottom: 15px; +} +.min-body .content #noresults { + margin: 0 0 0 13px; } /* default form styles */ diff --git a/r2/r2/public/static/dorks-toolbar.png b/r2/r2/public/static/dorks-toolbar.png new file mode 100644 index 0000000000000000000000000000000000000000..64077d3a79160b25cfa199c424c1eab5d424c17b GIT binary patch literal 504 zcmV<U0SEqxP)<h;3K|Lk000e1NJLTq001BW000dL0{{R3|CXFC00001b5ch_0Itp) z=>Px#>QGEnMMg?aDK9okPE%G|UQ%0SQ(R?LUT6L?FkoF<TVZBhWNTz)XJ2Y{WNK|< zYI9#~dTMKIV{Le4aeZuXc5ZNTad2;EbAV}ef^K<)aD0e&dw_3#jDCK8dw_s}fq{32 zn0SboiHC-Hikp0jnTm~#h?t|Fo}G}RxTT|^sHv)&uf?yetFErDw6n6KxXz}z&ZfJ` z{-&h9ySc5w$*jZI{<5&K$lbBX-^<I(&&<jG!@<+h&(hM;zt--;+Vk1h)&9=R#ohMa z+}g<C`pMz@$>aXd=>F&G?bh)B@bK{S_VoJq^#1<-|Ns9iVpNL&0004WQchC<K<3zH z00001VoOIv0Eh)0NB{r;32;bRa{vGmbN~PnbOGLGA9w%&00(qQO+^RU1P&4m4!9K~ zp#T5?8FWQhbVF}#ZDnqB07G(RVRU6=Aa`kWXdp*PO;A^X4i^9b098puK~xyig^_^{ z01ya7d%xEIf0Pj?i@A(hZ>3{4MUiEJ7iH#>4(5|T070mO2)qDm+d$_TM??aml)}?} u0_wOHqY!!}*CBv3#m|R_6NlUI_>2Ytb2@HPHA+kX0000<MNUMnLSTYX_T&Zt literal 0 HcmV?d00001 diff --git a/r2/r2/public/static/firefox.png b/r2/r2/public/static/firefox.png index ab206758ae57431b3b8e2dfe6e13edc318ad2388..dc8b00b4ef2350954978224ccfa1a81c91698074 100644 GIT binary patch literal 9033 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 literal 20196 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 diff --git a/r2/r2/public/static/help/tb-ss-close.png b/r2/r2/public/static/help/tb-ss-close.png new file mode 100644 index 0000000000000000000000000000000000000000..be50c0a7d43ec749cca86e67b36d6505f3cbd211 GIT binary patch literal 357 zcmeAS@N?(olHy`uVBq!ia0vp^q9Dw{1SHi;jSd1S#^NA%Cx&(BWL^R}oCO|{#S9EW zB_ParFHODzD9B#o>FdgVlSPcdgym>Jofc3?vcxr_#5q4VH#M(>!MP|ku_QG`p**uB zL&4qCHz2%`PaLS|lBbJfh{fr(A%;Rt1_CigCHoFtnsw|@=l=z1D{A_B`Aq*CBxk=( zS4kIq&LO=(A#GbiUfK5@8{7l8ny1VWI`H^bp74DA??MgJ_xy8iJGlS%{`m8y2Nzl` z{l$4WYPU++Il-F@AC$TRa;w6!T2HVYINr~(e6_lmZ~wY~w!%QEIFVI>-4Sypc{3b7 z^p_pPa{e!9V$3^f5^sZ}%fxd&VlHM6e`{XiR_0bZ|GYn~PupeQ$^POz)q0m_f8KpN u{`JqLO|9RjpZTk4^u4_LztZRb-&qgOJT7}vCdw1&I|ffzKbLh*2~7aP;*BK$ literal 0 HcmV?d00001 diff --git a/r2/r2/public/static/help/tb-ss-comment.png b/r2/r2/public/static/help/tb-ss-comment.png new file mode 100644 index 0000000000000000000000000000000000000000..e3c8e9f6b3386901fd1c5cd3813900768305e264 GIT binary patch literal 1075 zcmV-31kC%1P)<h;3K|Lk000e1NJLTq002M$000#T0ssI2c}RcF00001b5ch_0Itp) z=>Px#32;bRa{vGmbN~PnbOGLGA9w%&00(qQO+^RU1Qq}=IF3`tsQ>@~8FWQhbVF}# zZDnqB07G(RVRU6=Aa`kWXdp*PO;A^X4i^9b1E5JnK~zY`?N@C~TV)h}?niIAutHiD z86D$mP#rQdV3>dtaih%`%Ut}WW&{((A8tl)F+qW;(V+7qW?4*zCYza?#+VF0nlX!Y zh%?4avPA})C`uI(%W7?*?Y+16y#6R4vM&88HG6Y@JbClnlXKqZob$eyt7tilWL_eG zfkQ1x8h!1a9uWYsBv(LB<_xYYurd-@@nI^H2M%4X-*fjyWBd|Y@d}XU^M@nEuC5gk zKy--$O#Rb!^2|F!zF9uic6-&{?S<I}0APymbnn24A>S;Fc^k|3?pmMECOW&%m)4pF z&-^s0$Q$bKsMm&%o}Id)$)yf^d)<vGN+JRW7WIGr;lSJ9%mn#VTUF(wjYVtpiOv@< zRBlOkefr~X`l?M0_O?x-gRi)U!!-J``>B1)Mc@Gtu?5q<?{mF7SKRS*)3Mg7tczbB zJQvi65ve0i*9m{YlkH8%+qZ5G487p|Jwy!3%-K-!{*LCJ-PWI7uJ@uFy1SZtc3V9I z=SL!p5)-s>m-_?t*8Lq#$J(lGp0A$$B<9xJe<iQ0v$^N~tg-%YM=AS>*18gT^}g1+ zG6P!@Et^k3XA7qK+#`a0+b#KNqI5(41NYT9GI@&aUlO+MxXoq~MbpiW#`W^0v2hhl zx@qTTYlgsQ<mFn8nY-?s$Jv~!5OkJ^p!wayh8>P|IjN##S$psH{OHB8aTQFo*lTjk z0-uqWyBcaZ<_aLTBvb~SE%v}-32BijC8Z>lCj!8katf;f5J*$Jnp~C^+lP>5PFJS` z8o-N29z*~G#|!^pfCz*{1U3At?~hY29eH!HAh_&+1_(xrkzejA1}N?nT5Mv@U^Xa| zv$`(x0Qtv;UBTRY$}<d{WHE$2!Dyu{0Eh;C0V!4HVyD7%2C#S-i3q%qX3BiHrJ**R z13>EBRDjQvyiR~{ZCALe2XtC6!BSli>Fc}vLr|addfxB7@SP%npbO@jLiMzBWYiyx z1g1|pM?>q1tRfgd3*W}Y2?&CvdTsEeYkVR^k-w&$$9tduY$nXE;fj$GT@otIPyb~% zu~h8X()iI}_kph!PA;gZd8A?$7zk34qkiYdgRi}ME(|HBwES^<mXUeDz!-=DvC~?H zfkXsjNkiRTy@Stmf1yFLmXtl#xJG8b#9@jio7wxu>-{NhTTA~vg}92A!*6vxn55V6 tL(d)gpFHN0{w>5^SKvQeT(bWY{|)5(lU&7;1JVEh002ovPDHLkV1lHc{*wRz literal 0 HcmV?d00001 diff --git a/r2/r2/public/static/help/tb-ss-help.png b/r2/r2/public/static/help/tb-ss-help.png new file mode 100644 index 0000000000000000000000000000000000000000..feca0d99149cda468dc8acf425235a176c9d58dc GIT binary patch literal 344 zcmeAS@N?(olHy`uVBq!ia0vp^q9Dw{1SHi;jSd1S#^NA%Cx&(BWL^R}oCO|{#S9EW zB_ParFHODzD9B#o>FdgVlSPcd*w|=|?<1g)WQl7;iF1B#Zfaf$gL6@8Vo7R>LV0FM zhJw4NZ$Nk>pEyv_QBN1g5R21mL#+7@8SvCP-n3v<E*57Kd3UhKs!&Eu!1()tq||3d zzGo(^^8Kv6YNJua#p=qwzd~2HgmXACSH#^)eRBBcGDeGOFQX4K{=fErPkia2Z8w+y z;XEV}tRx)B^6l$${er45C;wXHxh3!}D6ahE!2MZo@%-$B6_Rc&*BEkk{{P4IFjDZw z>+4c-qK_{9(*4~3L}bsW&(dL;EXws<^FGF}dM{!8PjQi#wb4J$zq{|fdG&AW%Re%k lKm65r_&avp`j-Fq#Xr8vnc1v%)CTAw22WQ%mvv4FO#qwdiKhSn literal 0 HcmV?d00001 diff --git a/r2/r2/public/static/help/tb-ss-left.png b/r2/r2/public/static/help/tb-ss-left.png new file mode 100644 index 0000000000000000000000000000000000000000..a29954641bca815a003277ecf6e65345134846f3 GIT binary patch literal 3489 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 P00000NkvXXu0mjfKxBz( literal 0 HcmV?d00001 diff --git a/r2/r2/public/static/help/tb-ss-link.png b/r2/r2/public/static/help/tb-ss-link.png new file mode 100644 index 0000000000000000000000000000000000000000..7ae37966f1db2343cf67eecc7fcbd90b1f00d551 GIT binary patch literal 358 zcmeAS@N?(olHy`uVBq!ia0vp^Qa~)q!2~3)*Jb(uDaPU;cPEB*=VV?2Ih+L^k;M!Q zLM0%~crQ)90w~B{;_2(kev?Iv!BF;&kJ5UekYtH#M2T~LZf<H`34?P{YGO%hib8p2 zNrr;Er*A-bBcC`>(Pd8;#}JFt$tHfYPdeBhICS7ZL4lW4=$TFDXC4J|KD@UNjr~5o z>KSj{^}m0QJH(z3x>{Oq5F;L9Cw?yO`b?hynX9EM62*fo^UHE=HVJ0mn*5<dnc3~} zmYLeO1r|LF4X|B#miuD`*E%*|{UfC>Rt3)%*UR_pTH{#A7p7^lSBHm(r`~W;Qdw?I z%2}J3JeO^3vFi(OozXsDuc!<(<hk7c2IU=0F^^72ZG6)8lee>z_w&S^0<1fZaH>DH wEbS~X+oYpccuR~i<lN?-<}0N=SJrAXd{5q5nIWdG2J{|-r>mdKI;Vst0Nq%J%m4rY literal 0 HcmV?d00001 diff --git a/r2/r2/public/static/help/tb-ss-logo.png b/r2/r2/public/static/help/tb-ss-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..3256cb4c449f442e8409a8190342bb3255dc5f29 GIT binary patch literal 722 zcmV;@0xkWCP)<h;3K|Lk000e1NJLTq000#L000#T0ssI2CUr8w00001b5ch_0Itp) z=>Px#32;bRa{vGmbN~PnbOGLGA9w%&00(qQO+^RU1Qq};G*hIsT>t<88FWQhbVF}# zZDnqB07G(RVRU6=Aa`kWXdp*PO;A^X4i^9b0zXMaK~y-)V>C{i$v^>MVPIf5I3<ld z&GtF7SQr=>{{5%S{=XC$K-m7&)O2An31xM)TbC{{{r)1MYE+n$3YTSq*pCPC@(Z*! zH(bAR{om&o(<b$vJF*Kd1=o)g)i<_wbaedv$I#K%EFiBNlbkho$tt)k-2K=+FlFZa z1G~2H35n%pr7$osl$MrYDrR9|VEFS7%Bd;M7ZjCbWaaq!=AoLhf{vt!bxY0b*RQAb zw>)_GOhi`g|L-5~Uq5f@o`^8OIBn+rx4-Yd{hd=#cJIzDI~%Lc_O{R8zWhT4pTB+S zY;Uu(vATEXR!%_~M2m6SOeO{fhQI$A{{Cm+=H{9_WokiDNojcn_l6A&LV^rO4>K?@ zFdRM1ASB4WVMA$oML|)?<SA3Rxw#-(pyBuLAH%<Y49WS`*RJ0P2nb+cU|`_kVNg<J z;O1svU|`_pW>8XO;Nf9lU<e2ZxOV+Ua(*>L3oQM>f<#?Y8|o_`KL#H^DBHk@;mkR> zf7La${~`q;O8h;2^ZDYr(-4VOtJhq)a^=&fPgky7S+#l%MDXId(@)=g#*9CxVf9^8 zOHx8A3bP%YU6qv-*RNmy_wQe3W@axhF9rsN1ABLO^iS=Xvj#c6Lef8i-#KedTUG9w z4Vzt^?1KXQ*x1;9{rYw1&Yk%S7QX)cyK~kWWX0I?PkGBE1_p*T%jWMmcJ<G%A1rJf zf}#>h<-J&Q8qV|=6q$g`#g#@O_A^qLf634Pj1-oC08pM-&eGj}^8f$<07*qoM6N<$ Eg56k3yZ`_I literal 0 HcmV?d00001 diff --git a/r2/r2/public/static/help/tb-ss-logout.png b/r2/r2/public/static/help/tb-ss-logout.png new file mode 100644 index 0000000000000000000000000000000000000000..228ee5628f6e7c4ef185314c4b1455fc66a70404 GIT binary patch literal 906 zcmV;519kj~P)<h;3K|Lk000e1NJLTq001oj000#T0ssI2T~Y8200001b5ch_0Itp) z=>Px#32;bRa{vGmbN~PnbOGLGA9w%&00(qQO+^RU1Qq}^CJ-<`&Hw-a8FWQhbVF}# zZDnqB07G(RVRU6=Aa`kWXdp*PO;A^X4i^9b0{2NoK~zY`?N(h#Q(+i>x1H_Gbm9#B z$qbj8G8Iw7g0P{vEYn2ts+%Z82rRNfw6GwGEVCpeFob?C?1wH2Tjmcd5fjpk$T>l% zw8TW6bFQ6j=bZ2DV*Z@v21=8>=;OIKJUr()FVA`3@B2h)B@M6+76kyE^(Ftd2u<l- z3IGVMk39HwP{{v0+?N;tcp`vpr2PD=Zks#lD==eMYxI50pZwx~5#)i0fQYyz84=cG zX6(d+IRyY55lR68cmf;&beLM7cQ*B#tUyPlq@E~LM~Th)7jGZ*PFtlx8QELM-;5Vk z=BCR%C{;L8Rc*+x$W506*hi|W4f$oso%Q+wh8Sz~=gwxO(98Q&SRO$DK!Sv@MqPW8 zIljCyFB+y_Kkc}p3p`2pJe=BAUU48=Jl*=Nz00xDi!%83zD1t}PwA#JWtkVR59XC+ zCQFf!<^6$fKmdZkJ5Bl_$^QJrI0Z#1LUZ!eexKjp?-%DBOo$7lsDRL%{R!ce7v<3K z7w3YH&=cLrMa<Vhh#Te^)-lQYMfi(dq{Lqt$jp4R$v68;T#VRX8AN$eI;|EKmYn&e z=jESsk*+*Y09VP#i)6u4W^|5o@s2r@MXm^?nUO`tIy1w0QOY*>i2wlzK^~E{|FZHx zgy!z>G`Ga{KJXIdu4regZqR7v?3RfZozbS=aahf^y)+nRIlE=Dt!3~h=S3M48zGhW z;cV|$o0GMD>>3<pfw;_(I5@9!D`*%5KtKcnve+DLL37v5+CBzkkx8ki_C`j6wy?SL z){PH#TA7iVs2ZCPfk$N+EoBQbg6keXIVMqT*TkymaYP`LB2GDZr>;YOIy=dIUPNgn z4UHF$u4wwv`D5t2HBuEHAO-+#>eJ;%%#q_eRn*^ZE5(=Yt!`hp4)-+<aHY91VZ_v< zH(Ix7Ld3`upPh3ntb<Zz?bbARU#oq`f-F2fsd!I_43YTmoD;27PKRlW4rv91Pr_Jj g9&5Nn>*Rj=8yV+~ZMNTF*8l(j07*qoM6N<$f=|$zSpWb4 literal 0 HcmV?d00001 diff --git a/r2/r2/public/static/help/tb-ss-middle.png b/r2/r2/public/static/help/tb-ss-middle.png new file mode 100644 index 0000000000000000000000000000000000000000..9a4b82913fe06cbc54c50458ce26b239337cf674 GIT binary patch literal 1911 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%0ACQeg79*&)=e7T?;zgje+2 xX-q`M>Z0DKP;@&!7kWE*z#8HGPu9S;zXACTg#ziA;3fb7002ovPDHLkV1iVhfj<BM literal 0 HcmV?d00001 diff --git a/r2/r2/public/static/help/tb-ss-right.png b/r2/r2/public/static/help/tb-ss-right.png new file mode 100644 index 0000000000000000000000000000000000000000..47bbd220225506336dbfc1cc64c82a3a3d002183 GIT binary patch literal 2593 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 Dm3Hdq literal 0 HcmV?d00001 diff --git a/r2/r2/public/static/help/tb-ss-scoreetc.png b/r2/r2/public/static/help/tb-ss-scoreetc.png new file mode 100644 index 0000000000000000000000000000000000000000..998dd73307b4b22ff9fe741f17943d87b73cf717 GIT binary patch literal 2341 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 LNkvXXu0mjf%gkjh literal 0 HcmV?d00001 diff --git a/r2/r2/public/static/help/tb-ss-serendipity.png b/r2/r2/public/static/help/tb-ss-serendipity.png new file mode 100644 index 0000000000000000000000000000000000000000..38079757a0ac1a52ad1482ad0f75bf192c1d8ad5 GIT binary patch literal 1419 zcmV;61$6p}P)<h;3K|Lk000e1NJLTq002n<000#T0ssI2g<Vt!00001b5ch_0Itp) z=>Px#32;bRa{vGmbN~PnbOGLGA9w%&00(qQO+^RU1Qq}?3GKV35dZ)H8FWQhbVF}# zZDnqB07G(RVRU6=Aa`kWXdp*PO;A^X4i^9b1o%lrK~z}7?U;RRQ&kke&wG8ZUAuL) zom)5BjR6}IDt15_%EWCM8?p~RHKGE62-8FZSsg0sP{arZqM(GxM<fU{CLoMSfv`D+ z1x*l;&8-6&!xorhA6>hTe!RYSkAJ*%6s3$mOqh!&_m7i%e)r?NbM8GikD6Sx1BR(E z0B~ws(eQID<F%a(01zC$aTA8AbN|QfzbP~T2;>1Zx9yF0j-7D_Dfh-aH#cmmKIgfw z$p>=s0mTgw0TGde#jjhdry0C^0?7hauixSHcnRKTo-qKxli(iWynJD6c|)y(2SwD3 z+1W)Cl?(v#&L57P+IzO6hgPJdnO-eO)(f`MjdfFJMp`Vl(q5UrG`9C{K&>e|vhw8B z79nCvUat8`wba*n{M#SPYMmZ7(v&{3mw-TkciT%hHWa><mj<@d4YjG+s+!6sJIBTw zC$Cyy7>)MQjSYpx##7s>>pi4#Q}x>=)1?&$Hj}LF&&A0B`1XtD&u+|Fou3^^{XHiM z!Q0K-w*O#rbl$vu>z91-OmyAR^Nn64#NS+5eUKaX-n&conWv@Le_D66)lCq5ZRJ+w z;^nz>V=x5JUe%enwsh&v7h<neop1DTR!imnu0-?dMf=R@$+pHne1HTAL4bhbYd>UF zEh}EMw<IggasDGqt6Q|PBVI4gGRWgfinEL?Gb&XFO-<LlNQlr<*VL&?Ne#clk-&Mw z;6^xs?{@V$d0PF*6Q900eJl%t-&tMH7S2qHS1?jd!h-x!e8ZJy4p5@X%{NYoS4Ch5 zfYIcp$Ezi@Dsf~Sa2~It`jTYUT;pSEsZ<r0Utow~fFKA62mwW+oK^Vfc$G9vqn|f- zob1w-Yg~{ups>0z2BD><l^6WoXD)b>r|Kf^bR=-zf^(A5E?PL@>#EZw-}Ong2|2ls z&rb;l&U3@jcKqW#y9O|7M7JM+k&jT&gg{6@BGbrdLI4mb0K)s)IfXGoBCaS=YNFUS zLO@)<Uttvqw}GgKxXUhokX2L&02@6$k^i#J^(<?vacf^3BZmNRXAKCxONh_G#xH)! zutM<I>VNs<(AgAorh$@#D`Qp^<z+-t06@6DKfCD|X}bj|1QZY;BmhJN#7|C3qonR; z7jKeF0KnhV<?sVR6hI6J3IOPLUmE~ijxJUqr-H1af&jpdo*3gje)Sw>cPFNem5H7A zt^u6u#5Yw3F7>#P4VSSr&Cmn{iDp_t&*92uo11uDw=8AlAAaBA5w|Oj8WbRa07Rlm zPv%cn)Lrc4`kbxDEY@2>KQKTd-*fEfZ}nYVZ|BX!6;^Ljl8y<oBJuJ46Uy{slX|UR z{mhLsX~QsN4G40Ujh>Sex2^o(%Wj|}v^lf0MzcUbX2{FREU$Tg!)ZTAbq3?g0=*os z0|KHrd@w)^9kNL|+4GK^{(Q?tpG0ZOFpO$xMFaxSPXd5UovrWKy|t`EV6@{Wt;~&; z4a~zRQ`GI-w^W6hXH1X*$fDB|s9$gBGj!6sRt0Ku(T?3~mkpJtgwMWdt2JlU)2Xui zq5Z#C9NI-^t}oDr{lm8WgFQp+%|#Fa2tk1iN($Z{`-#g`>Ou`mPze229x}esN>f_m z!}Q=U53j9eP1$wzq^F*bm4w>A7&mIj_@<tgt`@JidkdS8xp_^$9ts{}ar;+=8pi)i Z{sNMgufd+Yc<}%L002ovPDHLkV1fkHmWu!Y literal 0 HcmV?d00001 diff --git a/r2/r2/public/static/help/tb-ss-username.png b/r2/r2/public/static/help/tb-ss-username.png new file mode 100644 index 0000000000000000000000000000000000000000..67ee1a26d13e2ed139b7779076553192e891c243 GIT binary patch literal 744 zcmV<E0vG*>P)<h;3K|Lk000e1NJLTq001HY000#T0ssI2tXivp00001b5ch_0Itp) z=>Px#32;bRa{vGmbN~PnbOGLGA9w%&00(qQO+^RU1Qq}?He20@EC2ui8FWQhbVF}# zZDnqB07G(RVRU6=Aa`kWXdp*PO;A^X4i^9b0#!*wK~zY`-IiZS(@_-1zrWvao6fdb zt_79-gM>nBgmXbg(jODEKlUQjOB6DKf*!&MN}=e%Hv^+k78SIJASg?Vq^LlGkkFMs zdP$l@`KL{@+WhVJ`<>InoZFl|_^>^Axeu4~z2~0$Irnh5LaC<>nI8rKZ?1VV8l&QL zy8!@kR%rCh$5~i3A^@G{GsA&%7rJ`F|1r*`&LnL<G|UWU=9Co77;{%$YAO^BJS#y4 z02(D3rUH%4{;gHE&dw3{$=ZXH{jE=Ae@KJT=C0axX1m=?U_d9Rk>In3uYLU!5u?pj zzUB`>CurfJ#^!+o=l8jD(@P*ZG%=LXNAk)O_0Elpf8O!>$I7a`l@9vad-2`}*|ld2 zGXSQj{Ji__c+uI0k_}?8>p^#~;$UJzOl6|<5=g-ZOZj_ioMjFXyy(cOI>~0S3TjX^ zO1c^)=l}zxgkF7?s*gE0FOh)dHT#QS-WVm0tDJgfoF>UYfWf>XPb2~$>ObV`w+Fvz zCdbm8NnIpDY%gibSTxURkz&4*wZLv1O{j!9X*h)j0)ur1q9gY^0)=(84Qq46$k3G* znV6^VE1K-4@Zc}aWtIS_zsEx=5-Rg7nmG!Z0gA14n$iVH6i5w!diU{*LW&mOAQhAs zX)ikbeZlD8iQ%qJc|@P~O1P&LbjsU+!3<)+wCvE1{Fa-(r=n%kwvwHW_wBxc)km#h zFdNrb?mqnZZR^!OMY6goir0M~W(Fb2J!uG~o;GjO@r<^B`pdVn+B!Kqty5SaG(vX% a0{;MyW0~6zG$|?o0000<MNUMnLSTa4pisd8 literal 0 HcmV?d00001 diff --git a/r2/r2/public/static/help/tb-ss-whole.png b/r2/r2/public/static/help/tb-ss-whole.png new file mode 100644 index 0000000000000000000000000000000000000000..41f8bd2597dab87a31b75c39ecdde54f22fddf42 GIT binary patch literal 6129 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 literal 0 HcmV?d00001 diff --git a/r2/r2/public/static/ie.png b/r2/r2/public/static/ie.png index 4d5d37a25e580f0988014f34bcce4cadebd59fb0..41d643c45f1dadb0cd81473071c44fc5eb0c84bc 100644 GIT binary patch literal 8084 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 SG7pdFfSR(VQia01kpBk^+_}~O literal 24954 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 JPDHLkV1jxYIjsNy diff --git a/r2/r2/public/static/js/jquery.reddit.js b/r2/r2/public/static/js/jquery.reddit.js index 7f0506a4f..76c02f976 100644 --- a/r2/r2/public/static/js/jquery.reddit.js +++ b/r2/r2/public/static/js/jquery.reddit.js @@ -33,7 +33,16 @@ $.redirect = function(dest) { $.fn.redirect = function(dest) { /* for forms which are "posting" by ajax leading to a redirect */ $(this).filter("form").find(".status").show().html("redirecting..."); - $.redirect(dest); + var target = $(this).attr('target'); + if(target == "_top") { + var w = window; + while(w != w.parent) { + w = w.parent; + } + w.location = dest; + } else { + $.redirect(dest); + } /* this should never happen, but for the sake of internal consistency */ return $(this) } diff --git a/r2/r2/public/static/js/reddit.js b/r2/r2/public/static/js/reddit.js index 0e84a5aaf..c40d1d8ea 100644 --- a/r2/r2/public/static/js/reddit.js +++ b/r2/r2/public/static/js/reddit.js @@ -621,6 +621,118 @@ function register(elem) { return post_user(this, "register"); }; +var toolbar_p = function(expanded_size, collapsed_size) { + /* namespace for functions related to the reddit toolbar frame */ + + this.toggle_linktitle = function(s) { + $('.title, .submit, .url').toggle(); + if($(s).is('.pushed-button')) { + $(s).parents('.middle-side').removeClass('clickable'); + } else { + $(s).parents('.middle-side').addClass('clickable'); + } + return this.toggle_pushed(s); + }; + + this.toggle_pushed = function(s) { + s = $(s); + if(s.is('.pushed-button')) { + s.removeClass('pushed-button').addClass('popped-button'); + } else { + s.removeClass('popped-button').addClass('pushed-button'); + } + return false; + }; + + this.push_button = function(s) { + $(s).removeClass("popped-button").addClass("pushed-button"); + }; + + this.pop_button = function(s) { + $(s).removeClass("pushed-button").addClass("popped-button"); + }; + + this.serendipity = function() { + this.push_button('.serendipity'); + return true; + }; + + this.show_panel = function() { + parent.inner_toolbar.document.body.cols = expanded_size; + }; + + this.hide_panel = function() { + parent.inner_toolbar.document.body.cols = collapsed_size; + }; + + this.resize_toolbar = function() { + var height = $("body").height(); + parent.document.body.rows = height + "px, 100%"; + }; + + this.login_msg = function() { + $(".toolbar-status-bar").show(); + $(".login-arrow").show(); + this.resize_toolbar(); + return false; + }; + + this.top_window = function() { + var w = window; + while(w != w.parent) { + w = w.parent; + } + return w.parent; + }; + + var pop_obj = null; + this.panel_loadurl = function(url) { + try { + var cur = window.parent.inner_toolbar.reddit_panel.location; + if (cur == url) { + return false; + } else { + if (pop_obj != null) { + this.pop_button(pop_obj); + pop_obj = null; + } + return true; + } + } catch (e) { + return true; + } + }; + + var comments_on = 0; + this.comments_pushed = function(ctl) { + comments_on = ! comments_on; + + if (comments_on) { + this.push_button(ctl); + this.show_panel(); + } else { + this.pop_button(ctl); + this.hide_panel(); + } + }; + + this.gourl = function(form, base_url) { + var url = $(form).find('input[type=text]').attr('value'); + var newurl = base_url + escape(url); + + this.top_window().location.href = newurl; + + return false; + }; + + this.pref_commentspanel_hide = function() { + $.request('tb_commentspanel_hide'); + }; + this.pref_commentspanel_show = function() { + $.request('tb_commentspanel_show'); + }; +}; + /* The ready method */ $(function() { /* set function to be called on thing creation/replacement, diff --git a/r2/r2/public/static/link.png b/r2/r2/public/static/link.png new file mode 100644 index 0000000000000000000000000000000000000000..80757543a3286b43afa4bf6b7c0dd233d8acf61e GIT binary patch literal 198 zcmeAS@N?(olHy`uVBq!ia0vp^0w6XA8<1SE`<)7qk}PqJC<)F_D=AMbN@Z|N$xljE z@XSq2PYp^<OsOn9nQ8-6l;P>(7*cU7>CgZF_ROjcg%5ZQ{AP0|FP?p*<JfVn^GuWH z#7g%o&AzqggZ(5$i>Hoy4c<(wokeDws>D=;6VDymz#GeZqHKngSW581b4pKyM7R?g uJI?m=upDY&6k`)P%Jlexe<uSY8^h`z*Fe_!aiTyw89ZJ6T-G@yGywn{972Ww literal 0 HcmV?d00001 diff --git a/r2/r2/public/static/logo-toolbar.png b/r2/r2/public/static/logo-toolbar.png new file mode 100644 index 0000000000000000000000000000000000000000..b3b4dd62fd44beb6d2a410ecfc5910296143231a GIT binary patch literal 582 zcmV-M0=fN(P)<h;3K|Lk000e1NJLTq000jF000dL0{{R3LBPaw00001b5ch_0Itp) z=>Px#_E1bzMUA1fDK9oYJUadm4@XBwMoLafPE%G|UQ%0SQ(R?LUT6L?FkoF<TVZBh zWNTz)XJ2Y{WNK|<YI9#~dTMKIV{Le4aeZuXc5ZNTad2;EbAV}ef^K<)aD0e&dw_3# zjDCK8dw_s}fq{32n0SboiHC-Hikp0jnTm~#h?t|Fo}G}RxTT|^sHv)&uf?yetFErD zw6n6KxXz}z&ZfJ`{-&h9ySc5w$*jZI{<5&K$lbBX-^<I(&&<jG!@<+h&(hM;zt--; z+Vk1h)&9=R#ohMa+}g<C`pMz@$>aXd=>F&G?bh)B@bK{S_VoJq^#1<-|Ns9Wz9N4B z0004WQchC<K<3zH00001VoOIv0Eh)0NB{r;32;bRa{vGmbN~PnbOGLGA9w%&00(qQ zO+^RU1PT={H_DG}TL1t68FWQhbVF}#ZDnqB07G(RVRU6=Aa`kWXdp*PO;A^X4i^9b z0GCNbK~xCWV_<*+4lzw3esu;o5MU7I@n?f`rGZ$M9nMu_RE9D6WaI@kbPTl=dF5sJ z7#PIem{k1&K)_Fx$xWO=PSPO2l-Vx8j@dN8KvIr@fh8colG`P~h1)V9fCZ>uA^-s- zfP7BdfB;<wUkBZQ09#Iw1*~QPHcARgHUVa=5F5Ef^zEJP^+mYg&QXyPl~Mt-0EmSa U6zYiltN;K207*qoM6N<$f=KrTiU0rr literal 0 HcmV?d00001 diff --git a/r2/r2/public/static/safari.png b/r2/r2/public/static/safari.png index 5c3b3c37ca6dbd3e3669b60f6a103963df19661b..8635632e0f320ac10684be5f9b7ff4a684c03263 100644 GIT binary patch literal 12030 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 Z+F=>E<wY`44o+7Ghzm>qt`O4o`#(8`p&|eP literal 28856 zcmV+XKm)&tP)<h;3K|Lk000e1NJLTq00E5v003YJ0ssI38E=XB00007bV*G`2i5@y z5Hd5q;lkPg000SaNLh0L01EH`01EH{Laa2H003}TNkl<Zc-rhc2~<=^w)LP{<*`ae z@hB#4Xi)qbTtU={h>DKUuQ4%XT;mv*$RW{0gQF5Rj5CVL5|<F<#E_^MMa2c85+jI! zfTOq&L7_oe8hXL*rh$LoE4r+%*Pv!5GyZ@6JzCsXb?erx`>O6z^_oKnwY0RLmkcbF zN~Kza?fcFy`s8asR4Nt6ar1&laU!IoC#poiWC7cL#t5$DyysQrBpO>wVsopZ3t-i1 z6ZklQ>(6m#e?F#G-^DdQSE^_A=T1f~<+y;40|LaMCUXH%iMc{ouCcMPxw#qY7KZM! zw6u)bwitv}D5~tNWVQ}2&zzRpfE;830vvFSL9LJ(JJRn#t5(}OIGA+Ss*$aOS+?9P z4$VqFMsvZXg%MypTw01icWx1ZGXkN<K<EL-WO)7<hk9tG`9mp_$uMWj#e4RA`Q;8z zuYr~=`n;mDyno#7*4eE>p>wpi0y@kZa|F=q^*RwS0wq>9jD%$(qR{lD7l6TFXliQ0 zl35zT+uPf==g`6@wq8yan2d{#j&^f%Q|SyY9c=&5sgt#pRe5>&t$X*pdh{R)0Kfw? ziUc6azz9(oO^+vrOI(S8=0jA7`E$E=?ScinaN$Dc?Pg?T`1|`~{J?<&ef#zuK72TS zymIBr<jIqN-<=4mE-5Lov9URR{J4z>fK*mgLL1;e{P2U7l~r+ZG0XrSLqbBJ3EqO| z<XtoO+!h$9O0x<}3$>uCMS{XYqT)h0&L=K3KI3q1v0Pr19v8YuRD&WnDsC!h#7CU- zVU8P{t7==Wn3$LkKKP(ogqrH7aO~JIQU?U5PoE~usi~<g&w@*7r(2PNl4lZ2fs2ie z?bxv+y(92yg*IH0MFVQXdxzdZWJ{7>WPK2N*kAN^!(@2j)BI&3VE!^#??4Ac(0u*+ z^}&M&<E4k2aR-9nwM^)-SW+^2l0;%+L>OyAI+6_m#Da{lXlz9oFkk?&OrXUrTee)d zZ~;iqpFfZ11h97P+Vu2vAOm{P2RypFyI;C=>Bx~Ic)Ni)0KO|%uB@u6f*Rl-78VB6 z0MlS+XP1_iwtV^W$jC^{kSLz;$MT@KxVYc&?tgDU;1j_>98JyM6rG}?ATl|pLPV0* z%)>Qk)Xp_Y`C-A{MiShv@*cGWN~H*L_+R@Er4f+-4xvOS?BF#(UVnWq9u8p1!F=d{ zFyqeK-rfj#s}%REa`rz|37b=JwZtdR|7hpF9m}6OyQ(S&clWmTFEM?>&R1()9Bf<K z4nq`b1MgsTE6)OjLgC`#!ewV?gIRAe`YiH}k*PJOT_o8-WFOJ1m@H(1BU5inRuUl~ zZh+9sZr{FL@<@Fu_0;0`XVf$xcL$5}nKxeP=sMh|7v3Y79V}S9vGGnJI&0m}G8ruY zw&;l>2|WOz_ZD6v+VW#|KzD09k$6q~IqtjfzN=Sh++3W1qNw;@-=4iZJUqakR#sLp zK>=Y+W`+#}Gb(YEj3_icZLWy@qqQi5X-%6t1+(z;^TWvg{rmg$=|dhfGc$({9g1=6 zAA^E|ezU)O9uRCU;}Ai;zyA6w5`AJ`ULH6>m;rW(*grxSzm54GA6^<8@olj}%}tGL zRg6yrlu<syq_b4W0DrWFg>hrK(A0>-S#gW7%BwQ6Qnf{gIiDzKYE!Q7zyIFo?4G(r zaDswQG*$=>k@Amc&YbzZ?G^_y0(t#dP}~47x0Qlg*CZ-rc3BJM<H+J8^wM34-4|J8 zm<IdMRyPW@K(T4lCI<(HWy_Y4Wk~!h%@kXQCK0d&F-uSTKC|?K384Hp<8y)7a`x=m zKoJlSFk-|A!U(!;-n_ZAv=kg4yf}?UbLY;TZr!>;&+zc@@#Dv1Z~yt{pBEJs`TF{< zS+nNRqelY=4g`WvKKTR)KK}S)*cR|uSy>4d8wjRMnF0%D@7}%n`T6(m-5WG$5Hkn- zh&gk>`m@hIqpdbT((%i0PZ`<%W~ove+#Q~6y6dzCXWQqr@c$X8s;F}B?EXBI7NMb` zTCKLh2<!iTG<@6PtGU0vJ1@LJ0`?Siuz0XFW-C-?K5p1Q-JYckjDa$6N9N4fYa0$8 zJ#+1WY5QaNe=TNuL))++B?Hr?q#Uh<a%<q$lrv^WA+j~pW*YI;AXUSIGxqj@Oqa}B zp;xU)zavu)l6&^>g!<|B_JTaMnevPs2UiC^z82HU6C_#O%7klq`Hml6T973kJP58I zR2Cl}58E3D@~}(Sty{NX!2$>_V5<Y&xpU`w_38zVa^uF0*kID`8JRj}8X?4-DG=W* zjRVZ`Ct#L8d8CgT2y<LdFAKtd@8=&}Yv>dAw=j|`0bG38FsNGxCsX+aR$$v)U0w5U z6a~+C+nIOT9ldANU~g!4@_4m}XU{8Fuh=xHp-%&{9XV`d$%FfK757`Hq@0lw83RXJ z9dr~Z1!BL+oXzrQ0#k-R2~0^x@_O1D6eGTC6MCKAb+_kd=-xSBbPX-u=IiancXXNd zx-)Mozku)Cw-1zsjLw#x5<NDShIn%NWlC2H{d#F`bf8V2rO<pB&eD3b{7EiK#xlDM z8NJgbIqotW_qJ}sCn8+DcoEXnXKvb0Km9Z?Fc4Ub9z7b@?AWnm#flZUX~KjFASG#{ zd*QR4;NakUl?`g0;co8r8E=hx=5RE`A1|CUrN7xGdDdZ%q5u6t+~fx2@!~Gp0%8^+ zt40VAoNOj0CPEg96H&-V;nDacWS~H7ZEY<QtLDs^!}C1dgii}dZ_)%^AiOKOUvaeD z{<TgW&fnJ)2_UF87|`Kdd9e^)BQ5+_WeEjtR%NZ`IEcXKhW|1(;&@0ze69)=Dhvvt zmkL@#IIiY;G?Yb!#ordG;<HNS>8ms1LZHi7PWa~|o>__fR1mof;1gH*1T8vV`l8Be zJ)8s%_}rs?fTe-NMGh-btya@b5Z&RXpMLs@X?p9ew`g-quW+&x8JmSSHGM$EB)&8~ zy=&;Gyd7J~@W<x~h&r4`rio!|nU$4=D7!!dGeA2Qnhe0$W@Kt07?Vs0P`ei>v}a`M z=^@O@&oFO`k5p{4{AG|m5Jq$dh*V))5#2*mLPA1WS=s#g^C8IS+O;dxbm`J1H#c|H zs#ROJZiPf)+_-T-xqkin4I4I)_qKNJS_ti+_02cm1pJFHz93^|XJ?-{al+Hn6LJ^G zA}(LPoSK^I<>gggUJmICEp$Xg1Y{>4ee{vwxbyRY26z(LAg+G@{r4gHFDNLudGjVn z2&MxPrc<X*0U4}x2#FxSftiBA1wOC|=s<xpJ)}pbd6|j&jvhVAC>4wgNmyzBNUv4K zPjQlyQ0aD%0`XsD?a)D4TT8|)f9bj=3?Zij1u?kP&yqu1jyk|$eJFY<?+{-?5UwEG ziQL+P?Ck5lz5}0w5ZqgP{`vVc*ndB0>#A&>pUP%|&u<8PbM$J|Hy1WXpT?Jb7zDgN z2iL&<*W5kw;pZEd&J5a>dUNB<nf5cjI&!O?rf+Jh7Yfa-CQZKBCCG#o)QtZM%J3P! zkiL!|9}YZmy+H)AOL$Gj_TwApHZ|2O`7(9sH#y_&$7k%GOGXh9VNiSfnZV(j@VWVF zz=s$N)%HP4)i)2>2knK{rQa0Lf)(tYsma+c@*jfdLYmI(UaBcMbF027NUY4rIg|8( zXThQHCe2;@A)i3a(`}43C$Frkt5fQ=!l68j@l?ZBeYFoRX*+fQ>-N8LT_)^0IALt} zjwt1g83<KZ$A48&r`KCi??VS2kgguEn+fw06PN0AI+OR+(gZb=_FUY4vSUVu;Dz;i zJ>7oqj6>HQ_PbCL&nJPAzVV*_+LDyTCmaWxkcp$9CgAXOWLQS2(r;6gqhq(~>Js(M zBh^R$JaK#4v1R@=XT70`dv)YYo)?ZV^Wvc_*60Ry>IjJcyvPDITKjeO&whW&uF+X_ z^*1!32ZKX<a<=Hk9-VGIhc!iv>ylNmI<3HZ{_N4ieETEHo0gW!Jv}{$-PLL88XFq< zS6*Q(G5v_k+FF&XE6=3F!p>ByWe(<V?`cqL4GyNKU<`kuY|^z@+B9kEEIT-BbX*4; zp?<Knb&g(dR<K&t6Ib3&rK;t5SB8~FqtUlmLMuDO|C{sY1lg&S6o?}5%0foPlO={s z?}m^uR^p85K9a<i^kD;%1ObS0;hgEIi`02DrxZ+NAdQUZn46g=?XnmN5f#4EoN4)m zN_9g+eSLjON=ivd$(l85U{_-kn3<Uw6B9$?3&5{jxgtIKC-xNp)U6jmD*~kA<R}tw zTuJ!Tw@mbH!M~ZmkB<+_Uv)b#b~4TXvv*ej-fGdC?A$p!x8Rv`gl|?jE+*lJ>2FON z-RZTp;Tu+c8WtJ(w;As*w70k0x_kf1CG*<J=I8(w-w|@g6D2x*BkQ8|@Qk|Mqo+h) zZ;-`K2g6dF5Yy|0qb@(_z!KDS<Hil3IhkAVpt^B!;Na`YTLuJ8wsLSHJb~<R_Q{6+ zCuO#_w(u}^v>!get0}t&Tn792Ob80pHR`mgS|Iq-v}u78-gM@jfB?UWc7kav2fdid zzLstl=CBkQZ(<q#h{{@-_e3k*tbJkfJDUI3VF5LDHTE|4f9%&AY8urA4@=4in10!S zJJvwup+kq@p<B0Z7cO5OJ<?AuFURwgS1atStlV52G54w(g@v_^tAib9?i84@0*q2< zZ8AzEAB{<;CuL60mL8E&B5gWpYe?HihPkw4<QMqkk4Xp@;X4)aD;u*NIOFFmG*h#u z+RP-GBNPH=7bYV#a~RL4M(QY#<e*hrN*|?bmRSKZ;r52(@Qnivb#-;l&dyBb#fuk# z7_8pdvFr_YR#q15O0ay=CU6B%`uqD!8U8N<3u0UtAQ#dE%FD`;criV0+&F0ycm}%Z zz4zWDP2~N&IXkLG)i^&YQ_$?;_<z+L3@=JwmHS&Xh21c|bgrzdOioV5xQ&esMxX}j zA>Owzx({3*85xNY++-yJu6g&}cYzX0+(d5WAN*m+p{q4F6~fu{t;D&a_7;H)DvS$> zn94;i3dJ%-a2(V?LkP#k9e?^!q9Q9QGK5QC?Gw_f`KjF0sIgJGPr$0m3xObYwNH9_ zZfJZ4^a+VN9vYttl~K7WOdS$mR8%U5nkSXnzeQ6WI&^?U5vEtKR07(sU%y%r?%yx1 ztyKU5H9%owW9{hZh`$)Z2R(iJ_RTLSm>e98n}`yjDK<71%DC8A+ywl=fx=*;2EB&5 zbXqn|IOkU0N3mnzuRTHq2&sGrj~Ng!Ql2U(YjiExm-0blklz@TtF|&~N@dX0uS!If z4-0w=9l=N4N6Jb^vF(XncWv=;{gVQBt45!`J?gZEgUhG<eU9(}&+<V$8W1~XXHL1Y z!OfK<r`i|Ql<;vA%n<Ap%ni(!Xm5qTbxNhPqhl+Pu|6Z?5)cOk1*udjrs>+XY_OnU zq|7#f9)}Jc>g42PRtS~6nD^-M9MWnF<&FJ4c=DW;kv`Oa>~nPd7l05Yz~mo3e0b;1 zo%Tt4_wL=RS1*_|#Pk^%8BCLxmltSCsZ@g1r<?lp=>w~h{=B4}AdBE6n4n`<(uIz{ zICGz<qPCCW$;U^?G@xlK0eTv^CM6{?hsRJ$L}3nyNgz(drNa|MeTR#=BS{RwgaYJ( z6H)i61UN~2OFMFM!O2{p(h&eXfAaM*t!_GD;HcAQMt;Gtbno7sGtEDlZv#;q$Hz=m zg(SH&y*i|kS39p=%D??f8d`E`9K`UH-Y2z1%tTwV2M->Q{y8~0zx?vcvSrJ*Y}rD8 zctwxRM4r+(jlR@j79%YL9XGZWa}xfD3cDGR%$^)DVlcX+$D)Bbx}fD3w%UvtGf1tg ztLw;-!bfOOG8x0!vu7cB=6OCUD$38#FC`@fY}2-F+W-f(0)0e8L|Iu`Nl8i1o;{h( zkFQR_(t|~}wzekA9$4YeO~F>m<#G=X4`>B(4;(n~#v5-CsbG{LLxzBrC@(M1%gfuh zZy&xi!<;iSGrM%@5*8K)P8poi&Ye3iT(|(-PMkOaBLdHagoHtZ2L1Tsj}Z4dI5;d{ zzC1WM*zCSxeknk2CSfx|)FU$jG~h6bd^$<=4O&P~PlqAFsKbQ8a)W%Ho}Ml)E|4>V ziUEh^2|g4Cv$L}!Sv%&lfB*j5w{H&{HVkx4DuDw?uTUspR=@=80I-Gh6|_(6E|lPE z)6&wwQFQIvb^7$_W5$fZ3MI!W;Era`o(-eJ3!6A`BIIWk6%{ZLsOi;LUxjD}<be{@ z1bPe!32}3CL#8Pa{X+{Z8zVowhNoA4#2kPe<k*`ruJ|;AWQD|o&>N8c!GqLfaHjbx zv9Gl4Adk`mHpcXFrg<FUPljO9KzfZJNk+*yXj=Z(Kal#7O~IHLdMR$)`F*EXT;{(s z&a4%r&G}1(|C3Dqc@C%zr}uvt=SoXUNs=#JRf0*~ciz&%vR>I>ZwJYMg{DEf@a+*@ zJzS*@$G9#HJm31;N*uA1^$ONw&39>DE}f^2=t|dPJa&YmF6!Y5UuVXhP|P(v-&uT` zq^bzxcO%sbt62wHzWeaMOa*8QR~x$rt5k<@J)~P8B>vc`?0#9-*I2=54j0$)nnj8U zodg5J^9v$S(w~(|m-a?PQf^O$8Gcat%U?uR!&Ry)AOlHoM4G0GIzwk?+vi~`4Sq15 z9~<ny@)F>wzt)a)w`!{+&redRPQK7UiSO`#`c}!eL1RIm8xb4cY=m_?Pw*XVnhbhd zD+}Edod&$UrKU?K=Vl4ugMJaUm??7mFgndxuK<-{13rGt8&igL5$kK<jRLZO=Z7sz zP$`}`cp_^V%}2lq{}$@2#SLlE%@#6$M;TNr5h_YraQ1O?vp(;g1J@aPQ^8uhuTI-j zoV+~YmWJ{y{($%M>BrDx0Z5Ji+WOtST^d_jCh~lJ{a3D&5M(rXY6-J=1;+J-P*xf1 zX>P1AH&%iMfD9o|@w~+!DnS{oH2Qm?NA3cSwba~D$j?ep-8iry`Z7Fi=6QKbOY#D~ z+>|Fh7T}iFco(7JZkGFJ@kPRq|MZTIlk~;O!`A%-4<9)?DuwBH-aL%YRtSA(@qBSZ z^X&r*S0xoTH(Z?<orifAMo+w|Y$gJL=4x+$&o55~JTH3IIl0NW7BULx+y}$t(XUrl zJbqm9_)+Df>Z+=`T18onZhKUMg(+}!-lVyvnH#oq&AjLj|JYQ21y=2b*`6@5$|hkg z8=5UFl$j8hMa=FFkB^!KZymKM#L?9rJ7u#x37}CsVMB)wam6y?(reP9={+WwKXMB0 z>C~QJFu?0`larHusxx2d?z3d>hHoQhBh$Fyepw~cm*H?ysdRI4T3;cYd^L)_4$ea> zVowiUbpj&2ivMBnI>4ejw*TB^=`2OCVF62Gk7A2G3GscR_>4(R)I^gQF`C#*LNs<n zqlrpPEMOE3=u=TqM6i;7#1ab;3j`yAg%SaQWno!h*?s5US#E}zdoO5;@B99qPp-3b zr~Ky3nRaI8+{865?t#$lwQ+ID6mI!bEUg7*V2I_8qa}BEt6v?l_U8jZ3yx*0R5nKs z94M(YeKQD!Cj7d4S>Pw*Uxs+o-s=x>KQAe1@8VK4E!UG%<QP}BW^eS|(Vbmp$GkG; z!)5DYuE(rHqd%}|^GeFv1%(gO!x3`kv(BA=_S&mnJokVXZ5&k9T-jLvE`R~jOkCc7 z!?C1~0uyiE%*Fs9SQUrd+mA-!?_Jlc?&URZYs!W?{Uck2wJN59N7^|HLo2HcjT$)R z7wX%1xvyCCF?vQ%nerEermdVj@M*)4CT<>wZX@ow4?mnRXAUfxYQ1~RgJ@3<qV}9X zQoSap{gX?rKAz-^p5y9nV1EZg*ff>#OU}~jME<uHflZeCA|T-9(WCLvdnBWo<7#iu zVow!uh@8rUJgI<c^qiEcm(7mSSV^j@s8ue7gakvaJSg=OlE0e7CdFcw!%sd{HI_$M z<SOP)HKnjnMow}@PT@*DDF=&RR2qt~$$Uw*g);v!shjuc@$lh8{NwK3yD{;n0t4r@ z_VzMVRv(N$91|6}Xz>!U*vpnK8S&P*H(!6v+Q#bc-TSN8d^N&vaI03WaP-W~OiT1O zt;OiemIraQmDeN`QIgmdIH`|e6{wP3m(0qMlZ!~n1f@NetWIV8WXgDPKw1(|(0-G( zMIx75jmia3c2oE_zxZOe*z^4wsX6idoT(D2>=3HP2NJ>GU@+R+T4A)mMFn`i8Rj6v ze;*&8<m6=R<`sOlwzfFj_PsGvKb~sh?DDkbu=r`;#iyd0v$3%eV-9|OT)R$PAC;7; z!Bg!xc6`8h-)&gAa4yb6GP<~~q{>P9usS-j-=Z{xq?;_2Wc#D4kd-P0*+ooqe=PiL zFGX%5P#JN|(G-Q2KuVS5;UQLA&$bZo+=0*qcMg`2<NNmAb@AehpG05Y@@B7IpI*80 z^^~4Hw_d&ak&h4R)ysG8x_8^;?9OQ3+e&3^V`D4eKN>i4D{sQ+w>5iH+u2!?1yPyM zv152@Dz|y_<^~NKU>3k4Ha_9}l*v=Py&CB&jaM!w-$_kw+N80_hzHrZ&04h^(7&(7 zL7nw`A;cZ}N`E|h0!k+*r?}JS$mr=QS3TStaKte?$sU`m41^>GFDd}rKeN%PN@c}` ztF1vsH3K)LYi6S;;HO}t+QWpIxPitFm#Fs0!V$!ZGC8$iTL{^b>zF%M>kEqX4H`DI zlB$Txa-FS%b4iKb#l?|r=W>mTr?9Xv-g*tG!cy@^J+PrOs*Pe~HUjDOdU3Wywq}TK zXJ=O>kk~p|?yIEEB`Zi3+e1*bNHtSVUMEflrur(mF-39&Veu<S71d?3a*3F3iG0P5 zIFfypoZPc*jKWX#qjD8dC;u_=_m%Moh+n6qq!bnwqCZXU?(TRq57jiO2M->krleL@ zRVu`SUbA=a-ej%k=H#ZOrPUd$PoF*{*Up_gXKihbp3zexZsW#{P%F4TPM<!#a^=c8 z<47J2r3l1m;lhPOhYl4dv!bo1I%E0!`-?vKR6u=Vz5e>^qEFwxeeoHth&?Bc{dlQK zBe&@j-|+Ts`t<nx|BF=ATv*Kzc`TGV97-M$C4ID7?Y;Z=k#Mk9+;t%Xz!G8f=+UD_ zjT$#@+{B3!saR@7f+&)Cq1v`C7JqqA^+sHO-+@!-P2XSC^@X5cxtBt5Fl_z{6E}W0 z{}ilcO47w3Y;6D;(n50-S$QLYKXA%*4Sj-YxDo2BdxB_UDYym70b&yG=x&789Hzau z<IZCr>wGLyiF-G=GQ`>f&$P5(w{H(WdGe&LRF?;opAY}?^YVWCEsb{z1YV^&-HDSY zw{PEm{o1uWAqYqk?kdP#MN$;rfB*eOixzJU+qz-HhJu0uDpmzSWGq9u;nAZ)@D%dR zWAj49Aed5G?KiOX>QiO^xnXtV>;6A3={vx;D_QbTUqQC6V@}`xqiT&eHvCdl6H0gZ zWsA89`(Ss^nlLynehPLjIPm;&_E3rR4L2_8_%MPK>a~blkO1zH5XDl>I^PYy)Ch+_ z<9FbnBWs$vB`Mu65E3^D{0b*~XaD#rGe5!z0<H56y@As-=KmrjHxgdGHti3i85}qB zgEn@5t5oq8hG4di=WfT29fN8vEP{Czhs=;YR2AZfFCipU9EUhFGDB@PY}CjSUwCJ( znM`9JJ{&?zmMk4MY#6GU<@x#f84MNr@-jXlGxvW#{<vrFp0;h<&Yd?`7$fOen5bC7 z><=GUrt^CH?YG6*VfXIc^;N2UCw?hy-tPG>joOzN?mB+|trr{j=-7;AfYD%7^Y>K^ zMs$0dulM8xYa<fxuR^sY2&Io1&y9$X)?XWRMRpoD0})G18XD=H{j;lvuWxS$!E|;S z%b93=O2Ts4JwIW?@4aSpsd-gYq;Yd261T)M8gxcGjg%}HNA5^J^g(+`Y&xA$V_%Nc zf1JfGN(@2+7u9X&`%g+0^f7o|1r>km)~(4?rtr09w$zvKSHn%AI-%Z5N_5T|XEQH% zmdX|W7wX*1;o9bStI1pNscmuX;Oom9tPy$@&JvZ0wPj0amo647LJ$~V)TuL8SlHGc zJ$hI~+iV7@k~<s!jQ#=Q^;K?ewCqxAMNuK4u*E^@MdZ{f<dT?DH&E&s5&)$gK~gJQ zxdl0@y_}{N;Up?lTU#xuSF961LbY@dWJt*syE5BZbp~Q~3n<+wsc$2ZlL^YHd$5Dl zt5E^ibK{a+g{PW4ep(-?Vyl+r5xcuY)t@93Ii}0$vE<MyOBD-1Rr{X4BsNx0qo98x zwL8j6EH+A=QbiSwk^rg-<ai=iUddK1{#1}E%FW;FhEax6kIE^{B=cZ1pri^(Z2+^o z3S<C<tr8?7b|ijDqAE|^U6$-iD2`LzgB*TRFVEFhQF6>aBS|Xe4if9hg5>1)0VOwi z6!4S#m6T0K7PbQaEyuiE1j2_Bot&KT1xjpBuwlc7@XEu(BO@atJv|);N_Y#CFmYu^ zS%|<!955LPf&fdFED<eFfB*gW@QjO#!}ThfZpS;4r%#`@x3`CkA|oR;0s%G`d0Mez z1w5B7T?*h65)w%KkeYbomF$v5{PX6`15~S5uNI+JR#qN7c<|`aqs7I=bLPwu@na&l zaX7+C1ICZ-GXi1!K=r||z<&k&&=CO6!-o$8PLltN7A*qi<0~a11q1~A!}wLC1c>az zx`3RVoYK<L!otEf0)Yb-FZb`?rvwOp>qay>a^}n#z_)Vc%2TIK?c296I5-$zTdAn1 zfRzE}k-=bqFiA;CMMXu}e8`n6R~|ijR9037g}is~-i;eKAOQSazI-{XOey0f_{%vs zUq}tWKwx-kwOVKZfPen{`SJ1bJ9g}#>~M)~0N+W2ydVXL3)KMiffK~{X?R=aR#uA_ zFNPE@Uc49`9StQi)TVNRX3w6DEt@AMCW0FrGiJ<4PELk&z;WQfflZq>N#X}uvu4c? zKl}iwrcRxD=+GgU=^j6R918((510mpnm&CxR5m=J3Swenu;mad;WqfRY15zxvu4eL z1Tpfcs3>rQe{5_l;D@((|4j}*W^Y*yVYm2XjmJ><S^44i@86GPcCtc3LV)`K3tBV$ z3=9l}V5?TG0yeSpbg`>!(xgdlZmz4VD~K(G2QENw2hA=mEzR588`mPp4Ft>2&-e87 z%+9u$6lmJCDMW-05()sRLD!g-l?Boa03bZo&x?I>>(;F^Gc)lMGD3o#N$|(5JTEVg z9F#=|zU>AQ2^H47d2?v-fQq-<rqx0skRvz%Exd)4@7}%JvSmx~#8BBO0c3>lqd_`& z=>shU5`-2EWduIpFUjC<#UN(-0tE-QK%<3_01u=GY6xl+a)glqe{c#Mz#Iq(7yu!Z z5%=`a?4de#?b-!_L981$ZVW|k)Tj~U1wHqWAw!_<n>A|&ah0bu)WlI?jAQXr(+}PO z4Vs;!$sH?`Thx&A12Gu6XGvnEBC;nys8a)ya|KeS*;ynz7m)-&6~{~*va9El!cR?E zC_|vE#TbgER6$hC<xWZ<*aEWCU$#Oe@sr#Zr-PCVSLVMZaro=mvnTYK&@}5z;u$@o zI*FS!X;N5N7#_l@H4!PNg~g@oLJuwf>|K@A;V&x6U+Df@6R*>4;n820+CKpP>2i$k zsqk!zEU+XcUQBK6)wo#`_dg@Q`58AKRylNT*ZNPk1CfgJ^IaSM3DdpCQUh}O-~PVN z-%r2<wbSG72<8_X8oEkHQo(eOoVrtU_>2en%QhTc9d<G)HFx8#v#T~ATfXjaZF|Jk zlsV(XwSM?RK*1LZNdJo42fRA>HWj7N=8tRa8j~i2CBuAYN!TGtTaE1+f8^z*5T5cB zqhBeu_-j-Dvo*Oun-rX=t*)-n78~e9s1!tmXM!EBmpyWDSSyz`>!!i<c6cPXuY5b? zXKgjcK!*7}GqXO)D!XgG$@I2D7+}K9;>S(D*lSFLTp0Qr1LTAnC?fh&)5flj_BJr# zcGEb(+^uJ4Pf9AODe$+8&P<I+g5}=lz1<2f@8h)`eaC|T_^#t2!1|+=kFG>vPd<Fb z?XdwN0UAvy|8a@YY?|Z%q|u-p;Tw_NoX{5o|G55Em2(MJSdr&*k<@@Cx;4%Sf0oim z!x?kW1B8f^*T7%x(B4Ij{N0**Ht3g9S}QJ<LeL=eKydp7qfT~q!{<H^?)YyeX$1Ts zWBWpwg7e$=38@TU7Ei{d!FXFNr`y=MSR;fna21&XXFf;9jMkkx`TO&q-Ti6%=TN#s z$$aVj{g=*ic23^6^l~vDcgs8dlsN`5gfri<;JSZlAEdK1^1KkHsIRlL#($<5-jESD zGcws+ek&x7=L{49Dy8qF5O{Uy%bDP_{rm$AV1`gwOno%`-hbp$2&=hSZpl|IsT2^Y zaYH9<Nokev_2jCm>hiMke|_{X<>kP(w3x>2du)W|v{viT&JWh)TZX%Ax>~sN@+S9Q zN5dA6FqD>xo>SVD#qM2nGdmlkH8ysy$rMJVMsCBI5b_i(vO)CZ#6%2&UvIa26@1=t zad}6pHOn6-2fwDmhCc*$dwvK!3od-K-)yR^cvM+wioU!l0=?P6fi#{)(~O8?E`dk2 zfv*0W&YMh?v6pfy??oSUpQqJsav8QQdD5U0*{0YbGs6dJ{eo>jnG~RqmIwyu%qR<n ztC0&1q-h5?<x2|9E9}U*$~)14_W|n4SuQTVTJ4!LYmaEP2<5u;Tctfe^Rw6ylbI}P zbKoe5(I?05m`o*|UQL1`$ItI~uJF8{S4(gsLyBfhMAjE(b$Ld^t_QW+FjIN*;)qM| z%EiT{xVX5#tE(w&=7`VM7k|3W)%D#8+T8#krns0hm!YP-QZ%c$7&7{J?M*Guc@w^h zqb3c@Q#HZQv?{9fI(-GqwkmjYm7H*K*~Qrb$&-~wzk-5-g@ZiY{WpGocEOh&c>_;A z#wuNTIS2rxw7yw0(X*-wav$2n*0!pO7kzP7CrQA)tbzhNA()AH!mHy)j=Uckt{lDE zgzgp;I9Z|$g{Q59TQy)n`~%?Wjk>BTD}@x0V^6fn<A;2-adQC=*j%kE)Mo$o^N}OB zBIk5(K5%fi6?@Ro@Q(2lz8ZuU7EDyYBZ5iYIbL7`kKu)hJHMXm|K`rKz`zm#XK9J{ zUH^XI=spzXmqTg;gfu-mrmRfbb2~PDvvQH4m<0t9AA5Kd-AzF6_kzHE#(cQ@PQHcJ zR-WkSK4V~ufPZ(J5_*RBF;)-gkFyvGg3(e4=HcNH9vzG84gd%OQ-$^hfZNV!1h4c9 z{ANb@<*a|V;%8SXJA!O%Z19&=ZEEOVCa*~^)0LL%^%aJSN~3W>&`!K>AV+U_c<hQg zyd@QNez5~|vcq3_J}MRMjy!2=13f*z{Zh-*)*5@_FI7=VVGN=hMro@Ww@L_XC0q>h zhaS<jt%swD3QwhGvO<Z8KPM(8rt6^P#Gg(|YCdSX+8ToL4|ra?l4Q26gA#&<Pmdbz zjsdIG?mlDAhD`6!y}R!B5?fm@6f!w>)2Q#(3=ioXq?`_bvEWo&;oRXFzv{EGfnk^r zu!Kpvm*?&?a)IwiUE#gy@u-a>ut<et9X%f8J2~p5#&oh22Vl5MjE{;!$e}?`v~xn9 zuF!kX+z)y-3K@vDC#FX&dGC`wlWeT5LVwaZemiK}l}9!<YL&nY$Oxia@krp&sf{@u zp$CFLhto%czR5ZBu7}5`&>I{~cR03f?&UjLoG(X;IjdldJAUEFsjGZnV#X(>IAf(D zeB-B7TOh|8uDT*8@1dPrOE){-zpzl}=H^sXYQSGmz+sAu%UoR@@h7dhdK?O1Us3MT zq9V1%&E8sK_g5}fVPPTGcZ>dzh(_4WtY->Daf(T+Oma6{9yck>B_3F55&kZP7``g! zc)(9yJI1toERI>e`YpI&`e9T%Y3%EU1Ql9twpAO7)J|^FVT^|23Ts!#n$I29sU%$x z^!>f8d^e3vv9_$*%!RI><E(K+&*-Vr?x5LkFIxY<sr`8Nt(9l=7ZW#w<IW(oB09Q5 zmoDUOQU$f=Uk{@8i9cm2R|Y2eRxXNJ@wWTp=KBPVlTEWu{PpD0la=C$iA+|V*RyA2 zcz9l3UTSJ;wO~D;LQn0CvU}I;bU}Hm7)j}AC{MYKZn?N540dZm?kKQX>N>Jy;%ugJ z8`7BAO<(05cUEX5!9PJ`6L-XwH<;_(HJ7si!S0}QCr+Hu>-C~Av4;jlK$Il0CWNRh zca|6C8e(gg-G1j7LN$lTBw<is>J)1gVaZ;ykD+9=KKNPWtS5Ein`$$ZxO25nOvp*F z9Bj5msD6QJ|B^~?(YOPKt-ybrtQwXWq-rWSIN0Cc-_z4GE-ud7+k5cf!RDH8mxJTf zsZ*JmnZt$+%gM=!kB<)u3ZfbWzJ-jVw{6?j&(E(ugNwpwOLanIjVkQRqPluG$-b77 zPO(NwektRZ^C6GEV3M>dPd>?(%-%SVY$q&!DhgE={e#N`UgIy#hQ|HetBH-Aq=HZA ztOb)pR(9<ge(l->N&Xvh&R#J3ywZ|4-J!--H}H#~<;zCAHSP_;;#7;)&#hkb6}D@R z`>>3RjH@?qi3Y38){cRneY$wbQZeu4%a&5nTeN7=s#Pn=rbeB!p(>b_0E$zr43V`? z4%P~@2Xe48OC7jY80;kROUei9$%-ah>t^Dc6jZxXXhm|_Q3ICXd^q5>u!|Qj;)3v> zj^Q}HzQWPb4xSDUyqeHts<g7=&1y{idO0rx&+%KFlDSuvWM>;YnavJ-FI6oZjm3f7 zy*j9@9nW1#1|NM{S?6wj_U%15civ1Kf8V}?Jzg5}>+P(p+@fleNoC^z;mMkijJ{~` zd`WXT)ELJyiyBW!Ss@!e`HG4tNhDjzOgZK|aTL`Dza(G^DkpV)fDMU9E3Wq0J+@`C z_^I(rEEIKtr93@p@xe`wj*i&#*51H3mg~Qr<1l?)><{baBsU-Ra@Kxzx8cKl`(M9) zec}r*Y`cCP2_Fqp;J>Lf#i#!}77GX%oKN>2&pqF^X_JO(8=KOSGJ8j-pMFZPx3|Z+ zmYUU_JG5`vqM5U+Gl<lG*?SVOs;YI@J|5wK90mtcjL8|)oF1tKn&8bYTAFEkukwAV z-B6#UR_{9Ikd=nrLci41D{=#INO(w39Mcp-kW>&s1ffVqnK=hJ!qM~oeb!;Q&f05l z(DdeaYx%j^XYDoo>z~&A|4uG0jg5`%+qWm!<YvcOP^vAY?PmgwCR!_S)w^`uLnq*l zlca1aryjT(lnXzJ;odkRH0J6~rY^!#+@YI7dujNYqUgFB>kL)KTAl8m%8(sZ;5o9X z^i0}U=tkV0<h4FR&eflq)y_`Alvh1$GP%XeWrMHpj6Qu(Ztmb~*Ve*Uqm8<~N~7su zyF5NkZN<@djb7d!ZclZ!(>T=Xs_r!1nK5M&LD0-86J4L`?Ag<+vr}i|y=IM#ZAQi= z!j58>&&!T?TI961RC7p2A;`L8l1e9Cf^>2xEt6(7lAS06xlXn%@Jl(bRrr~PGm4W* zDK|Vo@?E@?rEp4{0aLg5`Tf_o$GbLEYHYo+W`@-0o`B5D;9;{@e|zG8U;fjpJl)?R zJ3F4y*#g#s_e{c`J$vx|9{6ypvYN4o7aZtcUtf>EIyg8a96KX5s7KUbX?X>ceXRep zkX?}2;F8WOx%|P1KGWlHJ0MysaCwvlfU%K>thJq7U#0**w>cz|nL4o~u~u~?3s)MY z&@y04CwE+JU0GSC(Ku<f_FNq58t*yU-npk1w^|5374UCqMO0K2uoOw**1da1_H|u- zwQHxR`up@LE-t309^K(<W>#fQmFrV({d@N;FE3-nv5Tu~dR7k3KESsxObnS-AH>rx z3=c62UC3HnNTrbb!evv2_EIfnQry&Q6@Db6khl!Zv_d-GCupa^X7m}d)>7Qjq+AJ1 zX>`9V#jqfABZDLVd-v|eEJZ-Uo7i}<inNWeKlG;d_VzGB!WI@8DM99YNKgU{v&if~ zj<j5jqChzXwJ!xj;0^g1<u4uiO4SdGFGcv}c$Wc~%Tioc7I^C~4C^TCA(}f8rA`=7 zO_b45Y1?U*QouhBYT}TafJh8-5?s>_07k*aVdYSdPm2mIPR5YD;F2n64MAr?GK-%~ zjSOc?WmN8kfuGy;DBw;CKTR{~sECx$EH#;^RZYa}WFH8ADMjQ4luUv2fk8ns9Y!sx zR001MmeT2Tq~oissLapLSGJ$omSEG~X25^}PrE-&L!X?STvb)2oU5NtKiahf<Vs6R zQ#LUQxqN+n-MYJxrXD$R1iSA0Bm5>o*u8r<>G+_}l6qr*xR98bi0>RDv&iP;<jk2f zr!BdF8;G!8yLN5%?AdL}MH@MCc6JU3ctRbs{2qeEq9N8&K|w)}s$3r*A9Cp%o&^O3 z$|F{i3tza#0aRuib5&MWN_Bq0PbFXOiYu?E4GtPH<MpxsUc~->gNnW}qk2R^dW8$M zEa1{%#*7)YwY5wx+WDPaE`_?te&xaVv!5R;S-v!M^Jhyk@41iu>!y|_8<I*Mmvz*V z)Pu%{${3lD`M4<^xjo@=SAoNQcYee(FdabRFI>0~8yhRfJ@5$<2((i<Boy5&B5p<K zRbvujVq&n>%>@e<{P^RKbS@I`8YvefX<Zn89B{*?ewu}BJM8|xWXb*;QD<)bVCuJO zW4!rG^Z7E%+35U(p}<_m{FqF6Mi>;9ieFkY>ub!cFjS>)ZG0#)%=#etp-I@PE#!*K zQ_#LybHnk^#cfdhzb2??<Gu{#Qd3jo;^LtHQr1b30Fpss$kNczP*hxGV+;RmnAsDZ zB|bhLvUKd&@xXxtBSws%b0O<9By_In<^YlSh0cZH$EIp<!<>BkB^TVTF$kp%LVs_U zejYA+(k!cJONKcn9o-z3T9b4l<#<x+`IAR3o=h^D;XIXkN)SSjA^&KhsL70l2jkuy zj_I=L;xgQpq|~G0GwEPRWKPb(&4nd7Lg03U8jswxVkbybSa`{7?$-#<!psCAG@<6w z=Eado+e3v*Ius%ZnY3LRLr!4W(Xc>5Z=+a3ex|`(R0-4~7A1O}Je3e8J|ja<nav_^ z^qFfmgd8FaS{Di*LN<q(%Um9IFex%LRfo!wKcY=!hcEi>v9gpJo6ez^D{#>3^tH8h z5JY3X0xB;nGu^j0jP1dS_E_ud>tKosTwrf+f2;f!L~1m62ZnXLMheG9kIKr**REL$ zD(bV(J_`>IC%ND&Jt?Jg?bxy1U}y>reQW#n?EnU_6v;*VTEfA*i@Kk;YaMdh8|vQB zbZ^0)0vmhFG;q_E`hbCG_2#@yLpyl|3`frC9lQd>eWho<3LG9d5d|Sl)JvXX%3ZHa z4b2dN$v^n+{3%h$oF-uS^JBic5)k0E`f{F~hpkt4A2jAG31Vx|vhO@ShmJw@$Z+MW zD^Z>UwP;7+fxOdSoHC);E(Y$tbQ+C`^7Pz2#*#somvVZ^tkVe1LrA>fXSlNLyJF9t zZn!8nw|*1RAq;$A?>zk6oLv*>;<9SyHy?-v6xU}&#RRT0MZL4VSiJLzj!qp_g;HJ< z4Yl7trCxFB;`&E31CtBl-5P99jC6cJ@5;(5!yUu$;m=NfZL+(khiJ}A?1<n$%-P$E zIc(eG8$RvYsXaX0Cr_FD+;bzvPv%(oY-3|}0SL9|o0{5M^A3-2=umvwt+Gv<!lzA} z#^i$Z_!1bC3s?<O!A}bqR4xKP;i^8`x}IL$`}sQVEfhM~AP?70>t>C{pA6#VK_sqc z*gED_=(L?YPp0LIAFk{-8fy-rMaWo^QzNFC+i5q>GI{D1tGfetEM4cUpt<$cS5Q?Q z{qf-PNe1MC)(6FGUwj%lB2DkPGsBHFIcUtZmsc)}Of5-@`C{c?o|%YFA3PW-GLboG zdk;fz?QX2U)gGZqgC-%3@A{ybI$cGD5sF%DH0lnaX9)19xuvVtrJmh9g-2Q4`rdoa z&VMUCuZE6|`CHJ?$7>NC3H$c#BU&mrIGC|NE-EDR5AlzwMMsJGTI`aW5LRPiN<8-$ zEJm&`q>@pHaQN_H+SocI1Lbt%#*Jyyrw6_;hMNnSR|j||+BtP)XJw%lEd_k$@9%#x zyEyt>*?<>)0-f*e&C<D)6igcPOt;Qjru{mdL95jmbOw!9BLqg)$4<O&k=&4(Q0?=I zn_AiIxB-aUc;DPP9j{RXNFgRu6sZVN#?3{0<yy7%QlU|2FlsgTX|6LE@Xr=2>TFQ3 z)s750q|urSye|%d5N0y{{jsu?c-xpB^caoJApex1bME1zmd^-Th>H080CZ0T%1`W` zOqTr1mvctDkRFs1-SIKGxX8mx_T(LRg2Q~f6Px<WpLalr?_>s(8QZVFwtFIN;T~xQ zzG7K+Rm<^{m`ZK7)*uPxH!fZKxfb&isYonKqqR_2S9tV?yk;u|tF_j4WC(k4`3Zt7 zKbc!)F2Sn6$IVX&8yF@BR6v(7_Uws*GFeoFg{m#u!NPGAUs=XmCr%s}sKxspJ$k@L z=wGdj_v75wx$NxiNv>YKdbKfEM{2p8IYiL*(AUHH;WBcAN8ceHeU;7wI&|wXu3L|X zyy@};2k|5V?)U_=i-e4f4830eD+_gSa2PstC<qq4>zSLIo0pfToNL&yVYIs#2$1Xg z_3O&H{QUf!ot>q-Q8<B0vZsqA`)D+r%)TC-hW@0YZgU8&orxpKkVJozjX#z3DG|Cx zrfNavm<@N^7*TtO(p_*8m{SJI<<OBTsWZsv=xCy)NPP_S<Rq~IX_YrMrEa&m8{;aO zyGn9fx#XwZPAY>wL2^iv*=Cn+`!gw(;g{n8nhWJN(WPit*kh)fOnwTyb5sKFM25=x zAdNtsR^T!XjeG_C<99U?5d|91EXC}5Fz43<Yx|+n_AnC0pg_txDv5P@ZVOe`_tfMh zQcl*TOi9B}!>J5ER}2_QP*JDq=t!DxRMe$86YuH{!(q~f(7iu>)LjZcAr0}V!BBxY z5~6^AE0$vL!qAvG%PdEJQYFJl$XY*31Gh{jhRYUA6%3+j^2o6iS1&S+<(|`$qcP%% zGD9lmqdpknbT7l$sp8^?3qO)M=OkEn=*U`Ob1|%vn246czq)77o(xPX$ssJ2^*u5! zS|4bX$vx@DM7ByuW!RWja8XZ>pB@SPT$(X~%Tf$y%L!7e*x-_*jq=>az-1}=sm{sC zk@hT1FQcMPtg2*gs&G*$C79eWMS6@*dR$npNzyKc*3T-*;b;OscgQSAhV62slEP1e zE$tKKv=lS;-~vxKP1-XsFWiH|^e1V%q?ZHaW)%wf$Iz<n?d|D716|*4v#o@wQ>TI^ z`{}2j_V3^C>gr04J#on_NTxGLMlR*h#Ko5!ODU5RztDyr7`Z1<amP0g#L5i7a`ML1 z%aDybBx2@b%0%T>DtD@r&PDI;a~sYrhdU=wVc#_L<_QiPH*Q?MeEEhA8zxPf6c!dX zapJ`F>(?(^w(QeSKcx>ZkZlkJ{n^yibn4V8oMzXqUGQABYL#HNk1ezuD`;+RhUW(# ze4sKr&4FilcsMy+px_HRF){J<>C;fuiWMv5Ou~@{;;knf^7Hd=+_<r0#||3)B}<mT z^ZobV2LvS~BrpWv26|%~Lr$Kp!jCstx%gLx|DAW<f#-q+3uyd*{`u!fGVr=|>C&}p z*Z!UGtMKkU*~TaD09jdCSzTS-l`B`^9iFwdwGadE#5ax9DHOD7@7}%0?1g5}o;?8Z zmtTH)?%X-3siC3a<Bvba%iPY+&hQgB6&ef$>U28b*R-@WfD&}!zJ2?kd<O>yfaIf( zKKlCWuj%6wP1ZqWc76me&~kW2L_|Ous0et4cArH1(}9=Ot5;vWdKJLKcBkXx<3U;g zekcl__>3qZ>*Pt%VQ@x9#?qxr8yg#?GK#gx`Sa%&FJ25y+q!itlmh?&f5Y?Gv19OD zxpE~SK@NTh>(;G<T<`)iym|9xNVC)&0O4=H{dP)93VizJn{O5^S_Hs@7+{w^@D6ao zGd4CBWI(UiYqeT{2a<jA$tM5+Ko}Pn2dH**bmT4&5cr7~C*t}GvjI0W@d6!xpFJ6t z6wLP#a3JsGxDrv+^ocpqxcQws^XJb8M)C3SsjjXDjvO*%$V)H11fODJV%Dr#10=-G zmY_7q-oJl;_=(>K4jc&2H{N&yh>aTtYzGBG&wIDU3l}}5r-cjy477oM8MuGIfB{ui zRqZ4JC(g~yoi%HgpPwHTf)D+rr>6%72Esd(EE-+a>!J3_%1Uo<Z+HPA2?z)P__2d1 zgCqdep_!0!`t<2gHT;}1WePB2a&q#83m2e`rKP2E@B>sJsK6x`FJ1%;U}yIL0LbK~ zO`FD!9UC1TjY$AH2?o9p38IL30z?tYgs%_@Kw=a2c6N49+W7I~0gb?v*d-e6oy#B- z2*)URL6gJ3760HhCvFdomq0NCVe!TB^rdy_Ahf2YreD8)g@uLhy(hZJ&dkgN#sWbB z@&K`mii+@!czg543qEduYsa3!Zr{F*-=SV;3CKP0=!YME$Q=QY-W`ts7A{-}A`4^y zrhz^bD^BTfyH~GXAoNgCP*4zV4rI*A%EEfc#(dHXo-lCSxpOCU{ZRP0apUUi>oJ5< zbiMxi>$oS4jEn@400tU8dNk-Q$O}>dz+m|4K?xab0Tp4)3X-sP?OI?0P%tDOhOmH1 zC<+S$b{5yUb7xRgm?9W>Ks9vzqehK7apDC0?9!zRl<)8F4|oGrT~Sd1d1=TIZ<@?q zPqB=RtXF86aT~L0D!xcvsNpB{IDnmJpM7@AmMs9Zr>7@K3Gf8anBMVac+1z<H#<8U zO6b$44=^=g88``K4$23TbnV(z5D%sm0;T}b?(Xg&XCO%siQj>W5D$6t^75cY&~tzb z;0&BbIzELLz#zT{2I+tP`DdsOW)j%r8L%&+W*hV@q+7RcSTvzuC@Cp{TtKj!H*XS$ zYy|}c#3361k4Fr|AsfR|Pe1)MNH%<hVzEb7kSl=UmtTItUqx>VWo0ya$rIQGJ9C3J z0)7B&>{$+=f^wj1gHPq<<xWmcjiQxrF$>5fpryFDxO?~R0Q2F)heJX_AUgmIniXUf zpan4o?gUCfVrVZOwkop}Gs9pKsCXvJ7!I>=5p=gmGQ!6z=HzN9fDSFh<31d(u>8+B z4WmCvN4w0sl(SWmo83$^xYGje&KCo-@Zg&;t-{X*l8NLprL>ozSI=pom0})Kgb{LJ zap><r)d@07ol*o!Aw<;DfQq_zFNc5pF5cslQjx9$3IdU(G0Q~?iILW-vcA~QfWqA+ zV9>{qR(Z)vN=pS)(qO1~mxj5hmxJF#1;iT_AZj^ViaHu{ll295Ix(|~dw=#$!H=~& zxlYFw06H+{A-IcbTw^kHQ5FF3kI>LinAp?TGJj3DexqoA!nuaqhId0JJ=Mkek(BvI z_#^xgez!pwI&|oP0|&g!-iPTA+!bKCK<mP@DOqPzvpd+?PMPqWNB0MImnXL+^~A>i zRscLX7<fWpcyen0k0kML8!sF^deq<FU+U_sRXs%t(%&|uXBXWpt97uq@$J>kwW9-! z(uzuJv+_!tjdwlVT!!}d(1<RGS`UKECcYrtz5YXN+@W(NjmWN}o0of!QLjzz@2r+j zf9Lr6S6}_;tmXI0)B2@;isjSs`uHVpZa7o_?ydvV256PjD*$};`){*qkWEWW6LJZd zFxpK4ye~u0C_5f|(q{04(S4keJ}tQGnCgw^QsxbA8(?h*z?gmJ@YNa<Q+qeHReF8; zwyysFv+-Qfyur?QD>Gt`76(iZ?xub)0A$h_(i0Q%P~Vq>2hn$OjHT&u-<3Q!b=>Wg zZ_}H4PySPX^#j(`mUzXl#_W@auQqwU5<HjyR*`k)SXR^6*Iw+}&Sb1ek2_XE<Ka<3 z^{7dV>T=H?OD{KHwm>#6UVg&|chNj#MY_vdyZZm@bXkg@!((lre%FYu3(>}+lzGk% zSdMz+$dQa|1{@SPfFuA7wI%wjgT0-Tqa7r#ths&m$AacN&5%>oPGxMqYiKgws?^8C zUYIj&#NdHmsI`D6v8;;Kr%&$|@P7#XcT~zhCiOMeR%9k$Zfd?iX_u;G(=Ul;B{l7$ z?w@_A=E$bEitjLP>9*(JM;hl2<UpKUdierxU)nlzo^Dg=;n@`FP4`fzVK2Pc-o;6T zr=8jnSuH=b1{jArG6@<lZksW$F1$2xj)Qe3I=!u(11Uk})Z>L0-Ce}(F=WWv)@8)s z!;&iI4c4>;FkTwlzI{#pgPtEBes<rSA(l8}?z_GHFRVB=)kf7kWR%NYyLQ%0_7F%= z7>USY=AUNF{CSXVOH_Hvwz&&Y(x1n=b}+Sb?m1?hr!xf^TaGb(yh}j!x}@`q20s#L zAC|=EX40nF3r$I-`vyDc(;`-QkB^uTmb7=?;D@N_UON~@bX1$H=<x^}(h_g7@j|HH z24nYu%HiAkCK9L+AoI@s$@X>{2YcJP`rFmD`l=fJt%~~U+J>rXUHPq=%Bs5Rs=A_r zoBvonrBx+G%9Ji9n>x4-GQV#L88LC;&YVUUzu@3Ooy5kbg^zS}oUmp?_?m^|wdQaj zzp?Rp{CM9GbB_JP#*hEY(s(^W7rq#w)doY#wTmWLQWl8T4@`}hr<;E|Iy##D3va7M z`j~m{-rnwCXV&oHk(f2)CNMAk-7%PVs3BmziVRoh_vkTgXF8i+pZ+%hVC2%o<TIkn zXRY>dNwaeKN*J>Mpu1IDTWJn@qdC6u>YHLq{~CSrOnk&rmtpfrdj0jN9zAAW)+1wO z`tB%k9Qv<_ZM$~G-!!y>0XZ0Ky{BeG%|5(n)V6f9KW1cze{Wa>S`oWsB=kH{(>=Ur z#F#%A5|@hY{UZMR#E3OOg*T&fA;AF=2^&O<ucqe2g(7vvho_0jjkyc8+Ue0(724i9 zW@;)5ODjups4OkHRo8NTRRBDAd(XIRzAJV;T4aq42Tq>-?wbu8B1C>MRwnM;2iUoK zd~ZZV#F30D0{{QBcO7t19r=IWvb0@T5KursBsNq8jff@&HN=A0(AY44H8C3XVkL=p znr2BZmY68EBLzuLi7n;)2P`NSP7+0IpkhI@K_E(J*=2WOcmFeQ;Q98I*$0@!`=7sj zf^X-|ugrI5epBDf>`gzMJCnLH20j1dJo*Z~_G%I?X)%jdZr^pL>{3!w>JU|B?|`qi zpCgqq+X(?weM3WSi8}Y@Z2$(%9oG|vmt}22g*k5JvFxmUYY~nE)}Ew48`U3LuEM5f zXQi#AYmAiva%5H<3SL=2-&jp)FVDtlaE;rsYe&<w>*(d1chEOq&)$cUW6_+O>Ke0Y zU)t%@`{{}}`zn1#k|yuV#`sHC?bwyYoSOuzZgKir6u$W<{2lJiU2!zj=_k|oL8$K< zxapPSWl2HDL70TcKdY*0{C&NuYc#sLdb6p)gf_dNE{GXDnIWf6Tj%OfO96{ktL01J zt7D#-$aJ{-qWkw3HT-sX=f^YOSr(auzMPF-fAp)FVLfMj^|jO9lpnr1eC8VFEqPFB z2^+ri<c3Z|-h#2xl9KznQb4CeF`f5W$E?u#xLfM<&gfTkTESOOD`~wtEx-p580vI7 zM<IKJn?CCZIwKTPc01>%pA-!ZP@qS*&>(kvphsW6n~Zf35Xyj_&Gl&0&-GoK_d@2p zZBs@xo|dp>*U!%{=qoOtj94A5T~kqBUQd5l?jloAj+Xp?uG$Nt)74-0a<qVF!VAJW zLX>FzjygT$H8p6p2A3``P8z&y+mCT^Q{uwhfmx^1i6TI>f$|yt{+Bb7UX7g7`(Cnl z#{1KgdVF(fzI$Dr4(NaamSTfJtF6f2J7pVUe{cF2ENAbQL#xNn9=+llus3dF>ZG>= z(x)U%+_A%N{`>_QaYyYxgJM3oF+PYXw|u>}kulfT8?`zb8M#GnK(}R^^e~|^phZ$m zCi>Z_J#?w5AHF(1dd7Q;7R~ZDX?14BkSVdz%eHAojGsCc9aeGw{BCIf2kAHFgrYBu zLk<*lnAvIZf-S={;$7+t01Ql5e+SW~4e0al&6&^5@B2*1y|{K~M?@`qaZ~2YA&v;& zmSi!dM=8<VFH+mz&%1UBH7%JJ?nFFWIe)~vJ(hi&5kC;c@0oC8V6Sd5W3~^u5odoG znR@ib>`*tz-gAFJz|2ld7H*9`@rH}u2*Bycwyps5_&TTP3qL!`Qitp^>Z?&*JMq=b z9#C38O~&43;H3Ji?oQA*UC#J0sk)>B+HaBdOvrif=%F8z_n$w245`-C=yYbFLt+sE zp-%KpYi%tu`Sjv;s>J{-yL$h=7i`I4kpsZVZvX&4e)#GH1oh%qeat$o)+)VnCnw=U zJxCYbH~Fcc_8#}kYZ^=q26U;m3Hl~x+ZGz)pe-3rW#zS-w(nW;mpD5+8PiIT#j-Po zriNNQa8(A5Td<{S!ItcG1BZQd_3-~*sEIC#4V`%vj5<}8wMVW`8sih62^2~dy}K44 zVrHjA_kmj)3J(rJF=I}ap4nq>*g3{$DU7K=F@f2Eo`;hu(a|wjZ@rujlGD3kh3sjx zlhf8&M{tls6Fj>Qh=@?K!_CMtncR^+2Ety3o@sj(Nag3}$|iM{^A!miK#V{q!85RX z$Bs_ya1#twSJyc@p|87vT8(xF$Q$<~BfIF+b3i?fo)+!Yav&JMnW7Q|;l)ob=6u~} zxW5nlF+b%>bfEGfI5K;v%ua<)^p9MXesEE^m7EUI>8oOf#r6J-W{itbJxJL+uCqS? zJyWjCZRaSL0**K`zCr%}E=}Q8J_rtbwCS0uM-!<sI_H7kpw}xaUq?_}N%jx#IO@|= zyIu|jMwDxA3I#437A2Z^&B`r%J-i()|AG22OpmV@#1V^<IXE_rFhgc;{rt><Ig$QL zXgE&I43W1yi-ElzG{ilybH^UR9oG&T-2S;P?{7anKYGlNp5Sk(xAZGsaHr!JWFLW` z1^as_YLK>{u9h!|@TTQxe?_MHc)*09Ywagz-CO<hYr!-6`o*VQcz0wF(rZE2r`MQe zxFk5>ih)uD`yS|0^%_)3%m?QB&e<1#rE+E50&3aLmm-z|djt<~L}D=l*!~72VDjhJ z-)S>3bYf5MyhFEBo<Y0GK>Nr>sB16p4CosOq2B#U7(2Z(TX))v5;P=k{IgZ1B}PM? zR#U61)j}T#yC6orzTT*Z4OWBEsMXXsDVz(7^=sB9if!Q++|h3p&2slG-?r{e1fA5> zcXz9gEb{9-=I<X)g)QD-FL(EO+mz!L!1Tlq^xbs}7B*ZTe4G_Xj<PXk+K{$wU`z!& zrX%)KDtne*Iql_?4kGq6*(qu;O(;v;<-BkQ*k<{)ai+r^ROnd&L;JjvT#=uC`AwJ- z_ck=m-*<~FpM)6H4n=3a?n5Jn1#Z7y7qMv1sl?|e24f)KxMoIYiYpaL#9$9Al{*H( zv)8zfr-pnK6V#?n<du5c2#`=xbX%LhKLl3M1^d^<c7A9cM8O@EWw+p$bUO9C+5~JQ zvTNR6BQ0m(!j<R%#6er$jqU8<&~E;^E%4XW#GSF7l{WQ~kg;pb7be_Z3Bj_%hnG2^ zea-Il3rpI&<FHl!gO`qZYxn1K`=MaZh<A1_NQ)l`!#7^msX|`SRpdpTo7<+5LhW{D z)f}1YVI_*ONA=Pdd8qJ#cMCSgDy5}DEP_Jm3k(0VUO0=#|2ko3{=epVJNhlkt~j;m zUdN`aU;FFi{EF<DK&4wRWa{&0Uu!B7*wlHRP(CuX4mfm}cR;6mkY)V)(=h9g-A9MJ z;o`~yO4SIIgEPuQR7u>%E#E%~d=iSX@43_NW2b`DA-<94>l+J|1IvC?EbGjkonx|f zx`Onmk)7S$$9_@mU}m5W7!r@6=A>72#YAv&oliz%{rb({6qjj@hI;7zDCFZQ89iqP z`&MY<yS-hP4sJ{4PvtKlvIkJ?mia&H`Oh+d4ddg3#$)pQ_*i27Y&!gQ_^7p>Crgh- zdOXSEW;{3VbO14`s;<q<x~w-CyLJu;>G71EOm?fF@LK*|XNBXy{-H{RbL&++p(pf& z{%eUkapHvF3;vS4bdM&+Wpgtd6OBKE_!x$>)Ah$2AkgOgNyt17HgKl)A49ADqqF!= z52xZOPyi^0@bD?|@nPZN@E!j08Gr9h?v66y7NL_qfDkpy_pwjO1lAuzF(DM|!zlhD zE}MlP$VrIJ5Hj%>k0pvCFN1QP1??ovB6D7`*OJIAoD7u?5uXuQXGC*>6_g{m@G6D| zfB8(h7AY~CH7McxATh~Oti{pz6-4X-5c840Fd~uo^4Z@Twk*f3+;k)b=6wFeQ^CQ| zJ!v!=<{nY<+MM7tjaURilEebp-Usk%j#$PBDiy12gi6TKPOh#ksDXq6%Dm#>&q<n~ z6BJu06oi^1kmK$-X^{v80n8TQFZPPybOb9c8(T5o&9HNv2nT<@b731p$X0UeBG@EI zY)yf9b!fpezlmZXB|9ClQY46m#PV+i(U;q|d-(c7=f`~C$B|M{P;l|$#r*vI!oouM zGaw)!I5@aZpFTlBLD(kdj9QL9Ea#VBe!=YcI1GP(e>OXrpv=2>??U$L*RNxCti5mF zzKnK3XvpokU<9#gew(gGik~9)m<Sy)!0S>G8gMDCI$r|6yb5+p#oQLTfoTo?g3yus zQ(}IKP;>YmpWNjaoT?Y}Q{=XU<ENx2Trg_{hZlr=5p#=tlW@M+?22;yl&<vF^%BS4 zp&jhR6DXFCf=x1&n3(A4>4|qeaTwAO9qrdIVtDkZ-o3-x(id)&mX}|;bouDv)a>kY z!-fqXI&>&|+{bo@$B!RBb}XID&belpZ2)8^Ymbf|IehqVer^F?p|?5c1H`IDCPpve zi%6S!EXD6|s-Iwqx7q*YWIx9?rceUjVM2mM+~!fwt-+rhO>j1cjfO-&C5Ww9w~OE5 z;*4?l<8(qo_*ozYL&1(erweS8xANjQQM1+q&~H`Z!tSmOCF=a6N$Y#AJ{=eAD#$|i zQ;ph<w^#RD9{#VdM?Iyywg1%#dq$l7cCtc3=CYyCUfb7y^6J0s%le-lDs~(>o{(Zr z%41%nrKM&5loR&M3mrRm(bZFz^KRM63oK~QvPow&2L|`n%aq4Xo-rDYBS(&;ScKVA zQ&Uf8owvyjJ8>~FG5nN3_ETrF$?QjtpN8yX$BqReb&uS55(3F1S$+=TXTr`{DShVV zlFfon9uGEa+{ZsCpZRHX6wqS)$(bTH)FS&S^4Im`Y$D@N=zWWI{iKik2!;uEA<07l z-K_)ANey{B<<p7Xv3Xs(_Zbu&ho1|NZG7|RF7HHXXD-+PLt<8?yxHf$vaw6f1JEVr z?M<s*^tA(}xd%U*x$-0}EoR=QZ_OFx26Z)<ENC|pKCTn(^k(iMmtOuYc6hi=cbkm2 z*H2p;6hFN<X`!4s@{YrBDE-XPQKN!72D!Sb<c^MZ3MYFzIiP^aWNx5jZG9+bCs!Ah z>QHLh=+UG3$U^oPVq$Evr!}#2j7~fHZz=3QrX9k5ijZ<Pu`es(lo+ug4`@y!DHcbt z6J*n1!9Y$;BQ$h`5h4&D_X!qyG4q<+IcgUEf}KR0J;&DIZ?m3@)i>!qHFgMjI@PAr zBsfz7{><Cwdv|0d(^OGf?WFQ>vbPwji*9{aNiF{H!i6}~F9-Wgm=>}7WMWPZWiE*C zH~GX%L*s%~ULj*P=8Q4a)aYvR=8s#L8hK(`cQ*j))!^1sbq#d7ERAzNR`!@4+__n% zXNR~1b`MbUk*5onOlB&&dCpL?{QaF*<;)?}oa7A}GN^-J`%X^<d3t%MTwIjS3b}(L zj9@a?>$G)M)zuYM)eZG^k%J>Sx9nho;S$*e!IjAV+@R+K3$e|QemL>PRz`uy;7dx` zWe4(a9%}JwAR~&cm#}yz7A}1f$|ibzdL;Ohwb)$mWBVHB<}J?HPz*6K94L{QApV?* zl)T_1K}yplh72b;V))}J8o8@?7XaShdGz_!qw%;57;di`Hnrcbj49n*8%!F|c|f3| z0lEa8!2m#bCx0b6*w<*NMZ34nCf$v<BBy~jk~T~UQ7OIKqd*Ed5R;i!ZNeYU;ZBjo zs{B))f!#bgNu#l2ewmttpp(;)DWG2<IssaaofN+Td2#HB(?4Id0CU^6ZQ6QyyC_|p zot$NMl-^*ht*uo!IaXCwRM%8a92YH^Nt0qnp3KT2v)5><CXbI1%#SG(Mx8iw-X=SY z#`dsMR#k0gKf#IE?7$NWQ?nL>fOx58Y6xM}AQs3MMF51o;6)JCEEoA`@fUM#V)#p( z3>HL>GZQ2Q8FH%GD#W}PkkEhU%$kuwZcK&efRyZ?^N;VI6&`;3;ma<==&Q0R2N&SR zW>R8H;s5AkH2C1uVamdhf7v)IVj~#*@*BZ}!NwUwjQ>17BM2zbH-Pjvi}p(3&c)v* z?1*HDU2dk&BQ~3r^c9fEL2cW%&DGTvU)R8?03AAX$j!T2^q|tuKOiI|*x%0^_8N<R zE5C8;PNDj4TQ`?pAw3EU3kA2^z`%fj05SG^zy9K-Qig?w6crWmZN<-ietwrOUxDoH z{rvgtP<!8}dzX}yuvysi=wi5tO_~Vy%*9HNpg@AdB8!qZ5hf<81%oek8u{~6Y<97? zfanSz3I1dfTfCzr&!abMo0Z`7IhjQ))qIyH*pn5@5&loURbu$t?A9^PQ7nPvY~>8w zr8r_BUjD7pzIE$X=%@Je=nR90hliJ!mrA9=aSR57PNyp?D=RNA2iBF7QwVUlr>7@o z$F7iJuc)Z7nW^vrYKIcAh43e4ub_#YyM(&OmkEfq-DaaiW|UILIMJw9ulGsU%a2bO z;}F0B*0oD8yp{Nq(Qek15TAvNt=N#C5?SxFnSJDLxLDtfkbEFsVhQ+*fy_s>#g3Tm z(FiP3%D<I-PJfD!5<*WHSl<RqiEj}Q%K*W_Hm6jvb&(4e0U(L{bT}b|H7P=omFPQc zdIS#Of-$8u$ONo7tL$P{HEVp)O8mvp#t-b-1~I22=xE3pA=trTzZGl?IV*_-2f+>( z+*tx7bm#dsQF^|R-JjSBGJkG|W3Zr~0@6sV{IkR5=%~r29iIGjq8lFd2K)_;#Qw$a zK^FR!E_6bRi;_OM$wF?d>gwuhHMQ_>3(Ur4PN7h!+*J5*F3wB=`=^Dz!%S17fgL?& zny&@va#guHGRG9z>WOf)NZ+B#sak~b5l0axj^IWIF_PlT#OBU9P_wo3?*eC=*W8-J zK}^u;Fn)@I3=U*ZUE6G9@H2l&gu@~h-eUX-qewCQ89X^}3DaksEFg4a#Zt;|Xyy3G zU3@1OJ9bG)Nnv4ONJvO{czC;Z?Lh0Ova%9iFWee>@ZdpSUS4)~c3@zjkB<-FHGmL> zqM{<TTHUKxuZaE;tuY(x%E`&;)TvWIK!9MJd-v|$xpN0X)PF$#*6TWV?p)WdU18D$ z<J`P?6TX7pvy~YB=_EF>D&2|Thi2V}^k|Le)Y~WY2asH^*W;_@fwg11e*OBKIj?!6 z>eqA#JDTiAe~^QOe^Go3eXcY<TpImj?d;Jn{D5z^ZuG4v9%BH_M$6*8g`()!RO1hC zZy)%dudna--+vE%D-arUUAuNoirI}!5_J9W!w-B9i`C`k=FXly=h5mC^mkBp_wL=H z^L2A`15fA){r6Gh!G@gv6h+^i?&IU#_zVBj^rx|X!#|l&CdjG_$8@Ca=x`P*JC60p z=HUw~;pkUoWfeuqpl!@$?`%QPB}g<IK3=?du}_~qHg%zc%ta<0;VX%{*ievlagO>G zBsdKJ?qKG3M=$yYbqEjZ+TPFG$w78LPo00`PI+O`gkilWjE%$%&l7q=|364pS62t? zHvY>HzIH*@94am@h9eiTw|2NgB}9-5UwTg_SanNFOUug39O;_eU`?hbBAX3`oH%h} z-MV$NXV2cSVZ*d((`L<@b>zqq4i`rkCaQ@nO(YSbX*5Yp7lS{C7&ES3yVG~rx)nd_ zx(yxs*Lh=xJsaFJuuUglH<?SjV&`r*JqE;oR~t6wliX`+RxWE2C~D2w%HN{^X>t>& zummg74Fz+lu!F@7Ef&dGdm$l=q7r@=yM^cvR%b=61&ua7EKvjDy8!VEJFBsJo4F<| zDlzv@N!cSI<UwHD%c(ic6acx-L;rI2?AdQ=f)7PSMPiXTD%b?M*g~L83T>HxNYMLK zR8*+dYIHA(1Nslp$0D1p$)=ym$jF#9Y0{oOdjbOkSFKuwlL-e?{rmT4%oEgwiS3>q z!Y6^SB7V4_E+#&Q7>!FlKAz{^;{l~ey;PB3tot^*^soEwd~opB#8V|Vf74fKEk+mB zZB^I!PmZ$fbPNTK+MCHsqoAm$xru5$(BvmK$qq|CpEDOfL7JNaOL%_D(%7YmDG79N z*z^PR6=6W13+qx!KD!1Ke-yg-AG=;*4~#E-GU2n;TgSFX9XeW0^1<Y#w44>Wm8FN* z#G>b@6&ET|oh;5wj0(fLW0TL8VhQb+zt+hOvD-U(f>1|(&oKYs`Y<dpF=2Y_(%i-y zmnsjg$LXM^uQ^cKROJgY5@T^_?21fvV^qC5g9d|&UAkszY}ASa`5bln;!GSNY<fb0 zo@W85Je;sJtWjCAMpTg|W$yIE%*=%8C~oYU!<D5MR?uwI*B@j%#AbokP@K6UHVUJ* zG%*8fa_jhi?Oh90Rn@wl8}{ZY#6v*A2bPIi;teY8p<VFYlZ_Jx$2j=7NhXy-4MVNO z9_lbHOB;z;Dwqw_EvHl})RZ#A)Ee2t3hel}M@th_L?AcH+xGqTp6uyl%{Av<fZWCz z_slWaV=-U<KmYm9@Bimx&6Sdx(%a%}1|gyRcYRw={(ba<#QgMOe*nN-r(kA*2-6J@ z$x>x`dHGjgeWjaCR)hk9ZW14V))^?`#KpyhgoHFVH`643I}Cvx_~JLGn2)1NsGy(# z85S;FNY|>ZRx9dkX=$met3!+METg5EL&<0X5H&FqCr+d=2T0A$&6UxzSloO#`j`5v z{i1tD1o;OA_%7d5ZT7NQJpKPGCg8=tMsGS;U2>%6azk@Xu;u*u>UPCK$;aPaDakIG znq9YYcwpMvJ4!OA9?dNpvigCB(sWFrCmqdQJ7jbI*ClbzkM6Y8{j#m3cYbM}Ju|QM zWT9nXNY0^}%(!8B_ENsqW9y%Mb$YRVSirTYv)kk6#vW~GdmYMA&x(*7d$xV*tLw-4 z#%2z(S&QuR;V}iKSyM_g<040;mz1Wrw$|-g5ct6J5B#kp9d(`ExwbLoHHiRPx6igD zm*m>)b_dnQ?-MhM>K*&l-;eW+kJx(3ZqLI%wFef5SP~D~cGoVjJW!I`V7L3w%)Y*3 z57s<ku?EJ!v%kik?ZDT@^@$5Mo~`F;z$FQcpIK0L>OwEe;r!HrBS=kY<~1yCbkMRb zJy>ebW?X$dTZd5A2y@*(Hx-|pU1TlId>fJRi-w%YF10UdJe=qo`}Ut|vf_d}AvAO3 zs3k=uOBx$%D?k6w=$A_$N*obD>d)=nR2aT`z9_NU<pU=#I#{E>LGv#XRI3=8L5QK{ zxahN?!OP3*zWeSY&OO0%=Kw6{+Pn-qsj9jlEI&B{oTjL#DEe$~pTlOe(FXucWMpJ- z$6s%j)3FZ43OHA&=|8{@apRM2^vc)<0~aq|+_`gSN=gdNZ>y_&zpxN7a3f~UnkAzp z9&XUxz~*VKTD6KrPMbCjzi+Qw$Er}Y%WX(c8d~&^rha{*LxXP!@b~xjc6e$reTlyh znSNiyw9(;D7oM*?ed5o58O)bzswQLq)V3Js9oiPzLTt`of}zz?-$V$1lZK6i-axOl zH=DimRi*a8#5CJM+gL8DZhdO<tm2BnK3qMq;UP|HO*WE{7)v3|JApX3aE#~psDd)< zL&I(!luULS5kPD6MM7LnsQYKxUam1iL)uW@>`ylwS}!{?yDWj(f)+M4w-QILP%qk` z){6f@72`xgv3>jW4+|!VSta(Y_9^rjk54<7MV}BcL-KdW4q*8P+!(^Da0#h{LL-fT zALlzcApe4OYFPj1P={?($?Np?=jJ9CG>qu#Zu=h_%+z_&J#oVZAzi<6?qN}b@7TQp zHo!57hHv8h=j^$Pit-AJmv`HUbM9$5cX1t#j-Q_&48NU{pcT22P)Q^pq<8Ojsm>() zI=0Q6b(vh-*>pH-&QI}s)iSo{%*ooaW%G_5JBo{oF>6E#59fK&q@<*Y6DQz587=C& z=?1qVBCZpF-e|socDen`&z#AlZ~5{cJAbMT3+>e_%G1vu?2#&u-v?f8JyPen@8s{H zzuP9?ACYkTAifj^5I=VbbbMNl3`v@ooG~WQl(F;>4EulQr_PM`HIdjHTWKaCQDkq1 zuPMWsJz?w7nv}r-a5IJn#y@t*mKleE(^{B0I=0}%2+o(PI`C>*b*^n}Bu|Qs-hjY% z{5bx620S?{Vf^ISO_Ry2MbF2UWdtUA+e-e%am$L=<&6u>Ao;eUsVUZ$vclyLCno+v zMlR0k)s`_JuEch9*~3w$F_h)!57q3B3owtcHtf%v>1#@J#>VFEuSg#iMo6aZ#GnNa zCyv}ka*F2#C6M9Kp**>OI7fyjLrkM-<q5gAl5}!-ePC>w)31yxYB`mc_E(ds%$b~e z$YxE^CsfC^#o`oz+0`(pgt;?9BR=<JE+u2q!Z)QQ%vv-ud2hUL;vrj!g)4Q<<TQSt zmb~_}3win<>HOCTj`Qd}dh}rPJ~saM?c4X}%9X8GuR2akUcG8>+jgfA)OH4exOU%} zUvTZDf-{v3*P80ukkDXLTaumb$-71}WrXmlT#^gE2yq>9u+N(}pTD(=cdT~p+GT`o z;(`k!v;bt+<i$bx_U+rdl@<$VS8#AJJ(qB~zWKzNi`Bo?pFC4pUVW+Ice~x<X|a3w z!aZndjtmYQ&?h`J$ZufZo<01$NN2<M%S`cem)6*`WLCKK^v82n)GWw;h|5q{_`<6p zGZrOAcJEeW>*+#E^!V81)B(S2+EzxU7nJ2a)X|lf+GVDYxg;SqnQYp&mn7$2C`u3O zR;Hz)dxdtaaPdYmeo4yUu2=QP2FJ3Ir!$cDgAg9j*>mTEf`U9ek;8-7+Xf+NJMu)> z{|s^{I?>ZZZ6}8C>_jd<U-%Pd6HRg*tD;G+Vs<{YEy)FTcFqr}yin=y?=QRT7)eIh zW+-ZemgrAWH17^tZqE|{ef}fHVSC4n7}$Mk5tn7xPIfeU(|>Gswk9qhWyzB6V~Hc3 z;<BdJ&ejpk+SlnSu2bk<p$$%%|9{aX-5*RjIXUpB=<==R{8Uv{RZL9G@ZrNFA|kp- z=E{{T7=&G{q_VQIw6yg2@#B5^^kL^b8N<X0AD1p&DlaeZI@>%gcDhn?mfB{sRa8`5 zM_PUR_NBDM_Zz&tyu!o7X{-Mo{vH0m1=E@}Yh?Gj5a(_b#)glN552D7kK&SUlQlIp zUA}y|xw+XSzg~m>i%|{m#jgkVc65hmwY0R*kAu0*4~U0+@GE;E%PlQX0WG#NrGBBr z$h%{@IW=$XDeg;<z4s@E4#n&8sp&yQotjkfE-Km8E9_bQGA$975yU(S#q)4?qp?^} z{o1^7T{0Pa4_Q|~HJ#Gw`w~33n`FcyBCznXm30bV%53L?$V#I#Xj&qZ5#K@$F;QuZ zbc2W9_xn7!yK7}cp^<DGQPXp>zSQkP4+AfeffjsE(q8k#p3r@-&F$SFVvuEXtMqOG zLVR|M9WrQEfTnTz%P6w;iZv+4hC=?b3XRL3e-F8%@;6>Y(FJaCN;V8dscK>j;*^Yy z4#{6pzZs4LJQU4xk0?_k)|E)q(Z~o<6BS=l?<hFxG9$YLNB50znV|WO)U81i#7MWU zkPJR_Q^jn$`E@NPFGdf^_huCG)R5>7`Lk>?ft!>cs?xP3qVzoE-)qsuN8OwTr6d!V zhy0s8qDXadN-W|bT&~aOSIFNWxbS`C)}ShyCTgbn<jIq6WnnPrwpOhf>SkzQ-Yq_g za{;kk9i76sO*K-XTfuh7$=8TWJ(nTw;8G;*R@w@-J1u{MgcSaiTTYA@>Eb}(#Yoy4 zv#wXG%eHtGk8X3^>Z(F3Ix#?u%hPQJ^T?4SjpSBXNM^o7Q>kl7Iy5FVcMpj~`8qY1 z5Gfks7Ss)T-F(gtc@~`(h^z|?X4aLJZj$({35sEVUF5HpmDu|l(!Aua7fyLdE@+fp zbEck%8CjoFK%1!Tx)Uy$^wjYl?Z1Sk7M(6W@|e&${paJ&BI@gkLos)gX^f1p=+w!W zV>xBrz%nSto~-dQx<)F|^;ty4ay#!cGC$W<DcQ856Y>}5ccQe_n$#gvWL*A=;=GlT zO-yvhswPslJ|&x+(oZW9<p&MjGS9@`MJGtNDs>T=W6KL)woxFHiSFc@7}IC9{`2*i zWtkL(H*DB&;lhOp6DHhv<BeCYT>0&{->g<E;**k+cI?=JJX5AjxxpDuoH((0^X35q z227eXi3qUbwwq;B67c~!TUuH^`|Pv+{re9ZG>C5@eH9UIBmTuC7hLu1*;CzxEN1ua z-F^G^9WrDHpIT8-0exkc=NXyZD0=RbPd@3_uOCQMS6A28)<RaEo}P$A{X>Ti?Zjf1 zCSDi!(S6^3`|a(w-`=ZNuQO-PpgGae(M0baOLQobVq;_Jjrizsv)N1|hYcGh>k(Z9 zQLh7Z)YFlfRc1KFhAS?2?c!pJqDB1g)vH$_x`6`+Qh8QYRY6zjl}cjer%#_o{+n*P zNzISA52ld6TW40bj&8hz2xskN)16Mp->lnm^}m&sl{03{@bU2hG<bV^hlPbb{q)lz zAtCeT&3omQS1{O!Qzrmny?gh5;)y5Tdh0E^X-EX?p;iLj{XU|ni^$pB+>EgYuF$o7 z60njuaSAaB2?^i|9De=v*B^cKQD$Z)nCH7t6aU?J-+6g?0WWy2ZoBO^WQGuo$XDIR z$o9=Q-#}A=Q$Q$;{PX9}x3;#jNU<vM(`>pQYf}tkgqoU~FTeZ}pc5DvIC$`2lk;vF zB76=5zXuK+z`r-&d@~RY`H`)mp@Bv+dqDJXS%#;&Ne1`Y+{&3n>aJ9FZbwzNRLpAD z-7D8s0I2BRy?Y^K$TK`V9Ht1WNYB}bVg#Jwx311{7sGSUJqKw&`skx#oe0N{9m~th zd+MpDXc2|{jm*L{l^b`C6kX7v&eauo+hKGT*zt50%<Tg`NF`=~KoO5$nujk!?{#6t zd0M(xps)ZImn~cN`s=U%@WT)E<P`obEiDZS3VP#>H}>t@hYTAxZd|)|EowV{{5Wga z=bwN6^2;yVY&JL!^t(88=NO>*{`>Ev<{mwI`1<<7w*s!2oaYZH&xrT)^F#gkr7Z<= z9X@;*v=%K|1RIDvD_5>uvSbM!%FD|aFJ26Pg!)z%y<nCECIs4x)Q8H*$f&QcXOZy! z&~|W${9qn7;LxE%Ko(F3Ke7%I<xc}70B%3{-~&7#IdX)!E~QzqVg+P{2N-ZznxB9E z8IS}Eq|vQiyLL^VJ{|qb)Cj|a7DNo}5Xye>#TT$!3l=Q+^wUrID|dLCFOD24f1vaH z`SZ7J+Xma#)YOC~ATwBk{R4K-ojVuOK;`S!t%Dq>#Fj2yiX_zk;)^c=b|EO#0H3-; z@<#w^)KFAZ6cG^t6s9qNhW-2Z!%87(&z?Of0-0xJWvyPl8kP?nqKyj|E<^@AAP;;W z6hwv>UU&gI198onGY9I2f@{{S0jm%xRF{e!Id|^d`PgHRp}WzRXP<o*HI$W=p{m)l zXJZC{NT@m_N%Nx;+7=Xq=D+mPOArqF0wnND&j#a{7j;MF@2MBe?t;Z#Fd~0L_`@z3 zArcQ(T%SVAnGxXU#x!07is&AClu^WW5xm8JQ9oRvxVShx|M=sN_!laIhesZH1X_zJ zCo~ma5=g)=K;P3MKmGI*ysAKF2n`J-oH3^i(?gZe5--<Hc+@MQor-vRKp)Sb4mSq_ z27?g382jc09x%tmAph{g5A*Z$0dO;C&Xm2eEHg@!9F-eQMYVK@0%S2qfbw0sbP3%A zgrbbWXGGh<UX$ZnweA;>*fWL!elgbr33!Nb6{!+4lK^WB&lfn3<^%);VDRv(Fcj3N z>fm3P4X_6gLC=Cc7!t}nh9ZU^Aj8PfGhQHQ5ymqEYYbNyl2xl#-FfGo@Z(S$<bWn4 z6+i$E>7^ZjR3H>u0epdo;BkO7RYD{4KBl@rACOK@Pe&JnG{BnH2`QmYXc|aU4Vf}! z3K&B{z!rK38T$0;^Z4VBBQve@o_p@O<BmIkWyk=Y5p(L)sr&E09}OHne0X7DA^-Vt z)&+Onbr(`0OyDe3ng<c;m{41Vc+6b@PgbiHzzz5Y58wwK3O#4)XGA54-tv%Qkx1=W znS^ZtBlA8HTg2`Dw)H9g!XsU`P@HB%92mC%3p)3~5Jlghw;)P%GrSB8Y3MPMV4&jT z;}Orl@S%1B#pMj>D7~a<^ytx;9HEB*PlyCCO`0?bMt<wotuRE%$;qq|_)UNhm^)B6 zxjqL%E2LV2c(?;VnY-`4d(4<Ij4Q++J$f`dI~y&c@w_3@2oWP6?g^xUQT^b94`PJK zZaa`QnYxhpMK9223_mm$50DsjOkR8KwFwg@fEm8+x7>0I1`Ml2myjkNXpW9}@4ffX zim_wIA_n?RUqwI@(23~Kci(*%&u}M`l9Dh0Fl?yj0+#3)U{{qP6%J-`aWUK|^a3h} z0>HP$L<Tu;z4cbcp267`rlRnMC`_YMU<1%n=noJOOk%FRWy=;!m+%aG05=m7xcA<B z!C_)zqK5R;sZ)s_PRV9N@VMcjP|~ADjlv8Ig!=XCw_(Eu@IdRFHf<VRNJ1~e*T%#0 z<;&lB=biQI*AwTPo&eCWurTWTfJutfkTC2efUlsS09`qL{CL{M$Ut9UfY?zM4;2*^ z@Y8{4(7@ExR65E~1O2)ZEE5`thUetupf6_3nDOSDZ)Rp@(yy67lc9=0#+aBG**Id2 zHMkF`fdUae#2OS!@9L!<nVZrMdC-2f0*ROhwSWYHMAW~4#G|63@PMkIosc7h4x5Jl zKp&t}k>S^0f0eaIWR72TV#4KT*H8uOps}Gyy(D}4vx|t-tlenV5$L6wVtX|OWsCRp z0n9M-C|lYv89QF+c7KpKk%IqJy>Y$aMaqjp^NZoZ4*l}OTU{Fqw76nD&h0u5lRWRI zv(92;z%Crxr1LeC@B$5cR<D9F72?}S>*U$fY|>HdB7PE0quab^BzF2U&pZR5hoRN< zh4?QrU%Yq`s0!qQ*T#}GTp3>v(#VRJ0RLduJ5@^rT;ru@1Rq6Fi1BT8Zr;3EBTz*d zT^hREtE}0&7L3T9KwYBZae0wFar)f}q43WJC#Rx5=~gI16J63o>0rB!kx7ZqFTUrY z@$HT4x|-om%ip-HG|*|6oTs-dkCK!2T`3ctk!^cXChAnWdZ;m(irEmeuOgHf6h4u- zNa9##4OE<u*W?%brE~hv$D1|gLeWC?nm<zoK2q0y8keSqX^mk~7<`$qhy;UVF={Z? z-TF~yR(sv*pbH;%`N0+${~9|X0|<p8Y9dAZe_iBHl-MWpJ!R4`V#d@iD(_RsdO_h( zi!tn(Un7=@i04h$p*Fc*M^(sQ)<9kMH0=@_C|gTn&t24iKK_3J;>&}s$SSy{00000 LNkvXXu0mjf82CKO diff --git a/r2/r2/public/static/tb-loginarrow-left.png b/r2/r2/public/static/tb-loginarrow-left.png new file mode 100644 index 0000000000000000000000000000000000000000..4fe4fd063fa2228982ab90d7143ebd459830699e GIT binary patch literal 168 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2xGmzZ=C-xtZVk{1FcVbv~PUa<$!xrEZ;<~*c z5y-sp;MHo7bV-n3FoVOh8)+a;lDE4HLkFv@2av;A;1OBOz`!jG!i)^F=12eq*-Jcq zUD<E42#T2UpG{o)4JgFt>Eal|aXmTV0I!@30|V1M#)XHt9|-|v7(8A5T-G@yGywpK C`zS2{ literal 0 HcmV?d00001 diff --git a/r2/r2/public/static/tb-loginarrow-right.png b/r2/r2/public/static/tb-loginarrow-right.png new file mode 100644 index 0000000000000000000000000000000000000000..13c2883d7d2bdb0b1fc2b762143334ba24b06983 GIT binary patch literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRQ$P6T7PCxq#q!^2X+?^QKos)S9<gf+!gt%@m zFa$D%-#!JYWh@Eu3ubV5b|VeMN%D4gVd!9$^#F1>3p^r=85p>QL70(Y)*K0-AbW|Y zuPgga7C|9Hvrny4K<cDDT^vI=t|uoXBs@q+n2?yTAvs|M`{su)*qIrGZ!-ScwR{>- P6$68(tDnm{r-UW|V%aW! literal 0 HcmV?d00001 diff --git a/r2/r2/templates/bookmarklets.html b/r2/r2/templates/bookmarklets.html index 2c508e74b..06d127ef3 100644 --- a/r2/r2/templates/bookmarklets.html +++ b/r2/r2/templates/bookmarklets.html @@ -24,37 +24,37 @@ <div class="instructions"> <script type="text/javascript"> - function dragme() {window.alert("drag this link to your toolbar")};function favme() {window.alert('right-click this link and choose "Add to Favorites"')} + function dragme() {window.alert("drag this link to your bookmark bar")};function favme() {window.alert('right-click this link and choose "Add to Favorites"')} </script> <h1> ${_("install the %(site)s bookmarklet set") % dict(site=c.site.name)} </h1> - <p>${_("once added to your toolbar, these buttons will let you \"reddit this\" (submit the link, or if it's already been submitted, share it and/or comment on it), like, dislike, and save links while you surf.")}</p> + <p>${_("once added to your bookmark bar, you can click these buttons from any site to get quick access to reddit functionality.")}</p> <h2>${_("in Firefox")}</h2> <p> - Try out our new firefox add-on, <a href="/socialite">Socialite</a>. - </p> - <p> - or ${_("click and drag")}  + ${_("click and drag")}  %for type in thing.buttons: <a style="padding: 0 3px 0 3px" href="${dockletStr(type, 'firefox')}" onclick="dragme(); return false"> - <img alt="${type}" src="/static/${type}_firefox.png" /> + <span class="bookmarklet">${type}</span>  </a> %endfor - ${_("to your toolbar.")} + ${_("to your bookmark bar.")} </p> <p> <img border="0" src="/static/firefox.png" alt="firefox screenshot" /> </p> + <p> + See also our Firefox add-on, <a href="/socialite">Socialite</a>. + </p> <h2>${_("in Internet Explorer")}</h2> <p> ${_("right-click on")}  %for type in thing.buttons: <a style="padding: 0 3px 0 3px" href="${dockletStr(type, 'ie')|}" onclick="favme(); return false"> - <img alt="${type}" src="/static/${type}_ie.png" /> + <span class="bookmarklet">${type}</span>  </a> %endfor - ${_('choose "Add to Favorites" and add to the "Links" folder.')} + ${_('then choose "Add to Favorites" and add to the "Links" folder.')} </p> <p> <img border="0" src="/static/ie.png" alt="ie screenshot" /> @@ -64,10 +64,10 @@ ${_("click and drag")}  %for type in thing.buttons: <a style="padding: 0 3px 0 3px" href="${dockletStr(type, 'safari')}" onclick="dragme(); return false"> - <img alt="${type}" src="/static/${type}_safari.png" /> + <span class="bookmarklet">${type}</span>  </a> %endfor - ${_("to your toolbar.")} + ${_("to your bookmark bar.")} </p> <p> <img border="0" src="/static/safari.png" alt="safari screenshot"/> diff --git a/r2/r2/templates/buttontypes.html b/r2/r2/templates/buttontypes.html index d5d9e3ba8..294d4b1ae 100644 --- a/r2/r2/templates/buttontypes.html +++ b/r2/r2/templates/buttontypes.html @@ -52,7 +52,7 @@ ${class_def(1, width=choose_width(thing.link, thing.width))} %if thing.vote: ${arrow(thing.link, 1, thing.likes)} ${arrow(thing.link, 0, thing.likes == False)} - ${score(thing.link, thing.likes, inline=False)} + ${score(thing.link, thing.likes, tag='div')} %else: ${thing.link.score} %endif @@ -68,7 +68,7 @@ ${class_def(1, width=choose_width(thing.link, thing.width))} %if thing.link: %if thing.vote: ${arrow(thing.link, 1, thing.likes)} - ${score(thing.link, thing.likes, inline=False)} + ${score(thing.link, thing.likes, tag='div')} ${arrow(thing.link, 0, thing.likes == False)} %else:  <br /> @@ -96,7 +96,7 @@ ${class_def(3)} %if thing.link: %if thing.vote: ${arrow(thing.link, 1, thing.likes)} - ${score(thing.link, thing.likes, inline=False)} + ${score(thing.link, thing.likes, tag='div')} ${arrow(thing.link, 0, thing.likes == False)} %else:  <br /> @@ -121,7 +121,7 @@ ${class_def(3)} %if thing.link: %if thing.vote: ${arrow(thing.link, 1, thing.likes)} - ${score(thing.link, thing.likes, inline=False)} + ${score(thing.link, thing.likes, tag='div')} ${arrow(thing.link, 0, thing.likes == False)} %else:  <br /> diff --git a/r2/r2/templates/comment.html b/r2/r2/templates/comment.html index fcd37e4c2..85ffd650e 100644 --- a/r2/r2/templates/comment.html +++ b/r2/r2/templates/comment.html @@ -54,7 +54,7 @@ ${parent.midcol(not thing.collapsed)} ${parent.collapsed()} </%def> -<%def name="tagline(collapse=False)"> +<%def name="tagline(collapse=False,showexpandcollapse=True)"> <% if c.user_is_admin: show = True @@ -76,24 +76,25 @@ ${parent.collapsed()} %if show: ${unsafe(self.score(thing, likes = thing.likes))} %endif - ${thing.timesince} ${_("ago")} + ${_("%(timeago)s ago") % dict(timeago=thing.timesince)} %if thing.editted: <em>*</em>  %endif %endif - <a href="#" class="expand" - %if collapse: - onclick="return showcomment(this)"> - %else: - onclick="return hidecomment(this)"> - %endif - [${_("+") if collapse else _("-")}] - %if collapse: - (${thing.num_children} - ${ungettext("child", "children", thing.num_children)}) + %if showexpandcollapse: + <a href="#" class="expand" + %if collapse: + onclick="return showcomment(this)"> + %else: + onclick="return hidecomment(this)"> + %endif + [${_("+") if collapse else _("-")}] + %if collapse: + (${thing.num_children} + ${ungettext("child", "children", thing.num_children)}) + %endif + </a> %endif -</a> - </%def> <%def name="Child()"> @@ -102,7 +103,8 @@ ${parent.Child(not thing.collapsed)} <%def name="commentBody()"> %if c.user_is_admin or not thing.deleted: -${unsafe(safemarkdown(thing.body, thing.nofollow))} +${unsafe(safemarkdown(thing.body, nofollow=thing.nofollow, + target=thing.target))} %else: <div class="gray md"> ${_("[deleted]")} diff --git a/r2/r2/templates/commentspanel.html b/r2/r2/templates/commentspanel.html new file mode 100644 index 000000000..15b2151f6 --- /dev/null +++ b/r2/r2/templates/commentspanel.html @@ -0,0 +1,46 @@ +## The contents of this file are subject to the Common Public Attribution +## License Version 1.0. (the "License"); you may not use this file except in +## compliance with the License. You may obtain a copy of the License at +## http://code.reddit.com/LICENSE. The License is based on the Mozilla Public +## License Version 1.1, but Sections 14 and 15 have been added to cover use of +## software over a computer network and provide for limited attribution for the +## Original Developer. In addition, Exhibit A has been modified to be consistent +## with Exhibit B. +## +## Software distributed under the License is distributed on an "AS IS" basis, +## WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for +## the specific language governing rights and limitations under the License. +## +## The Original Code is Reddit. +## +## The Original Developer is the Initial Developer. The Initial Developer of +## the Original Code is CondeNet, Inc. +## +## All portions of the code written by CondeNet are Copyright (c) 2006-2009 +## CondeNet, Inc. All Rights Reserved. +################################################################################ + +<%namespace file="printable.html" import="toggle_button"/> + +<script type="text/javascript"> + toolbar = new toolbar_p(); +</script> + +<h1> + ${_('top comments')} +</h1> +<h2> + <a target="_top" href="${thing.link.permalink}"> + ${_("full discussion")} + </a> +</h2> + +${thing.listing.render()} + +${toggle_button("tb-comments-panel-toggle", + _("hide this panel by default"), + _("show this panel " + + "when there are comments"), + "toolbar.pref_commentspanel_hide", + "toolbar.pref_commentspanel_show", + reverse = not c.user.pref_frame_commentspanel)} diff --git a/r2/r2/templates/frame.html b/r2/r2/templates/frame.html index 0fc537fbf..04f914d8d 100644 --- a/r2/r2/templates/frame.html +++ b/r2/r2/templates/frame.html @@ -21,6 +21,8 @@ ################################################################################ <% from r2.lib.template_helpers import add_sr + from r2.lib.utils import query_string + from r2.lib.filters import _force_unicode %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/html4/frameset.dtd"> @@ -28,8 +30,36 @@ <head> <title>${thing.title} - - - + + %if thing.fullname: + + + %else: + + + %endif + + diff --git a/r2/r2/templates/frametoolbar.html b/r2/r2/templates/frametoolbar.html index 8cd7f7b88..61fc3fa8c 100644 --- a/r2/r2/templates/frametoolbar.html +++ b/r2/r2/templates/frametoolbar.html @@ -20,118 +20,164 @@ ## CondeNet, Inc. All Rights Reserved. ################################################################################ <%! - from r2.lib.template_helpers import static, get_domain + from r2.lib.template_helpers import static, get_domain, add_sr, panel_size + from r2.lib.strings import Score %> <%inherit file="reddit.html"/> <%namespace file="utils.html" import="plain_link, logout"/> -<%namespace file="printable.html" import="state_button, comment_button, thing_css_class" /> +<%namespace file="printable.html" import="state_button, comment_button, thing_css_class, score" /> + +<%def name="javascript_run()"> + ${parent.javascript_run()} + toolbar = new toolbar_p("${panel_size('expanded')}", "${panel_size('collapsed')}"); + <%def name="bodyHTML()"> - - <% fullname = thing.link._fullname %> - <% upstyle = "mod" if thing.link.likes else "" %> - <% downstyle = "mod" if thing.link.likes is False else "" %> - - - - - - - - - - -
- - reddit.com - - - ${_("like")} - - - ${_("dislike")} - - %if c.user_is_loggedin: - %if thing.link.saved: - ${state_button("unsave", _("unsave"), - "return change_state(this, 'unsave');", _("unsaved"))} - %else: - ${state_button("save", _("save"), - "return change_state(this, 'save');", _("saved"))} - %endif - %endif - <% - if not thing.link.num_comments: - # generates "comment" the imperative verb - com_label = _("comment {verb}") - else: - # generates "XX comments" as a noun - com_label = ungettext("comment", "comments", thing.link.num_comments) - %> - - ${comment_button("comment", com_label, - thing.link.num_comments, - thing.link.permalink)} - -
+ + + %if thing.link: + ${withlink()} + %endif + + +
+ + ${_('show url')} + + + + %if c.default_sr: + ${_("serendipity")} + %else: + ${"%(subreddit)s serendipity" % dict (subreddit=c.site.name)} + %endif + + + %if c.user_is_loggedin: + ${c.user.name} + ${logout(top=True,dest=thing.tblink,a_class="clickable")} + %elif thing.link: + + ${_("login / register")} + + %endif + + + ${_('help')} + + + + ${_('turn off the toolbar')} + +
+ +
+ %if thing.link: + + ${thing.link.title} + + %else: + ${plain_link(_('click to submit this link to reddit'), thing.submit_url, + target="_top", _class="submit")} + %endif + +
+ + %else: - ${self.score(thing, thing.likes, inline=False)} + ${self.score(thing, thing.likes, tag='div')} %endif ${self.arrow(thing, 0, thing.likes == False)} diff --git a/r2/r2/templates/linkinfobar.html b/r2/r2/templates/linkinfobar.html index f763e2bdd..f8ca8184e 100644 --- a/r2/r2/templates/linkinfobar.html +++ b/r2/r2/templates/linkinfobar.html @@ -23,6 +23,8 @@
+ + diff --git a/r2/r2/templates/newlink.html b/r2/r2/templates/newlink.html index 963324f6d..937436636 100644 --- a/r2/r2/templates/newlink.html +++ b/r2/r2/templates/newlink.html @@ -22,6 +22,7 @@ <%! from r2.lib.strings import strings + from r2.lib.template_helpers import add_sr %> <%namespace file="utils.html" import="error_field, submit_form, plain_link, text_with_links"/> @@ -31,11 +32,12 @@

${_("submit to %(site)s") % dict(site=c.site.name)}

%endif -<%call expr="submit_form(onsubmit='return post_form(this, \'submit\', linkstatus, null, true)', - action='/submit', _class='long-text content', _id='newlink')"> +<%call expr="submit_form(onsubmit='return post_form(this, \'submit\', linkstatus, null, true)', + action=add_sr('/submit'), _class='long-text content', _id='newlink')"> %if not thing.subreddits: %endif +
${_("toolbar link")}${thing.a.tblink}
${_("submitted on")} ${thing.a._date.strftime(thing.datefmt)}
${ungettext('point', 'points', 5)}
diff --git a/r2/r2/templates/printable.html b/r2/r2/templates/printable.html index 711eeb1e7..8e369256e 100644 --- a/r2/r2/templates/printable.html +++ b/r2/r2/templates/printable.html @@ -54,11 +54,12 @@ thing id-${what._fullname} <%def name="RenderPrintable()"> <% cls = thing.lookups[0].__class__.__name__.lower() %> <% - if hasattr(thing, 'render_class'): - cls = thing.render_class + if hasattr(thing, 'render_css_class'): + cls = thing.render_css_class + elif hasattr(thing, 'render_class'): + cls = thing.render_class.__name__.lower() else: - cls = thing.lookups[0].__class__ - cls = cls.__name__.lower() + cls = thing.lookups[0].__class__.__name__.lower() if thing.show_spam: rowclass = thing.rowstyle + " spam" @@ -145,6 +146,11 @@ thing id-${what._fullname} %if thing.deleted and not c.user_is_admin: [deleted] %else: + <% + target = None + if hasattr(thing, "target"): + target = thing.target + %> %if thing.author._deleted: [deleted] %else: @@ -155,11 +161,12 @@ thing id-${what._fullname} author_cls += " friend" elif gray: author_cls += " gray" - name = websafe(author.name) - href = unsafe('href="%s"' % add_sr("/user/%s/" % name, sr_path = False)) - if c.user_is_admin: name += " (%d)" % (author.link_karma) + disp_name = websafe(author.name) + if c.user_is_admin: + disp_name += " (%d)" % (author.link_karma) %> - ${name} + ${plain_link(disp_name, '/user/%s' % websafe(author.name), + _class = author_cls, _sr_path = False, target=target)} %endif %endif %if c.user_is_admin and hasattr(thing, 'ip') and thing.ip: @@ -184,25 +191,26 @@ thing id-${what._fullname} -<%def name="score(this, likes=None, inline=True)"> +<%def name="score(this, likes=None, tag='span', score_fmt = None)"> <% - tag = "span" if inline else "div" _class = "" if likes is None else "likes" if likes else "dislikes" # figure out alterna-points score = this.score base_score = score - 1 if likes else score if likes is None else score + 1 base_score = [base_score + x for x in range(-1, 2)]; - + + if score_fmt is None: + score_fmt = thing.score_fmt %> <${tag} class="score ${_class}"> - ${thing.score_fmt(this.score)} + ${score_fmt(this.score)} diff --git a/r2/r2/templates/reddit.html b/r2/r2/templates/reddit.html index 018d6b836..2d24fd6b4 100644 --- a/r2/r2/templates/reddit.html +++ b/r2/r2/templates/reddit.html @@ -73,6 +73,16 @@ %endif + + + + <%def name="javascript()"> @@ -81,10 +91,6 @@ - <%def name="javascript_run()"> @@ -110,7 +116,10 @@ %endif - <%include file="redditfooter.html"/> + %if thing.footer: + <%include file="redditfooter.html"/> + %endif + ${framebuster()} diff --git a/r2/r2/templates/redditheader.html b/r2/r2/templates/redditheader.html index d21eab017..f18f5f5d1 100644 --- a/r2/r2/templates/redditheader.html +++ b/r2/r2/templates/redditheader.html @@ -72,12 +72,14 @@ mail_img ="mail" if c.have_messages: mail_img += ".png" + mail_img_class = 'havemail' else: mail_img += "gray.png" + mail_img_class = 'nohavemail' mail_img = static(mail_img) %> ${img_link(_("messages"), mail_img, path="/message/inbox/", - _id = "mail" )} + _id = "mail", _class=mail_img_class)} ${separator("|")} %endif diff --git a/r2/r2/templates/redditmin.html b/r2/r2/templates/redditmin.html new file mode 100644 index 000000000..286f32b3f --- /dev/null +++ b/r2/r2/templates/redditmin.html @@ -0,0 +1,32 @@ +## The contents of this file are subject to the Common Public Attribution +## License Version 1.0. (the "License"); you may not use this file except in +## compliance with the License. You may obtain a copy of the License at +## http://code.reddit.com/LICENSE. The License is based on the Mozilla Public +## License Version 1.1, but Sections 14 and 15 have been added to cover use of +## software over a computer network and provide for limited attribution for the +## Original Developer. In addition, Exhibit A has been modified to be consistent +## with Exhibit B. +## +## Software distributed under the License is distributed on an "AS IS" basis, +## WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for +## the specific language governing rights and limitations under the License. +## +## The Original Code is Reddit. +## +## The Original Developer is the Initial Developer. The Initial Developer of +## the Original Code is CondeNet, Inc. +## +## All portions of the code written by CondeNet are Copyright (c) 2006-2009 +## CondeNet, Inc. All Rights Reserved. +############ +<%inherit file="reddit.html"/> + +<%def name="bodyHTML()"> + + %if thing.content: +
+ ${thing.content().render()} +
+ %endif + + diff --git a/r2/r2/templates/starkcomment.html b/r2/r2/templates/starkcomment.html new file mode 100644 index 000000000..bece6abf3 --- /dev/null +++ b/r2/r2/templates/starkcomment.html @@ -0,0 +1,44 @@ +## The contents of this file are subject to the Common Public Attribution +## License Version 1.0. (the "License"); you may not use this file except in +## compliance with the License. You may obtain a copy of the License at +## http://code.reddit.com/LICENSE. The License is based on the Mozilla Public +## License Version 1.1, but Sections 14 and 15 have been added to cover use of +## software over a computer network and provide for limited attribution for the +## Original Developer. In addition, Exhibit A has been modified to be consistent +## with Exhibit B. +## +## Software distributed under the License is distributed on an "AS IS" basis, +## WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for +## the specific language governing rights and limitations under the License. +## +## The Original Code is Reddit. +## +## The Original Developer is the Initial Developer. The Initial Developer of +## the Original Code is CondeNet, Inc. +## +## All portions of the code written by CondeNet are Copyright (c) 2006-2009 +## CondeNet, Inc. All Rights Reserved. +################################################################################ +<%inherit file="comment.html"/> + +<%def name="entry()"> +
+ + ${self.commentBody()} + +

+ ${self.tagline()} + + + ${_("context")} + +

+
+ + +<%def name="tagline(**kw)"> + ${parent.tagline(collapse=False,showexpandcollapse=False,**kw)} + + +<%def name="arrow(*a, **kw)"> + diff --git a/r2/r2/templates/utils.html b/r2/r2/templates/utils.html index a6bf45917..253e67d54 100644 --- a/r2/r2/templates/utils.html +++ b/r2/r2/templates/utils.html @@ -52,7 +52,11 @@ id="${arg}_${thing and thing._fullname or ''}" <%def name="submit_form(onsubmit='', action='', _class='', method='post', _id='', **params)">
+ action="${action or ''}" ${_id and "id='" + _id + "'" or ""} method="${method}" + %if c.cname: + target="_top" + %endif + > %if c.user_is_loggedin: %endif @@ -367,10 +371,23 @@ ${unsafe(txt)} }; -<%def name="logout()"> - +<%def name="logout(top=False,dest=None,a_class='')"> + - + + %if dest: + + %endif + + ${_("logout")}