diff --git a/INSTALL.md b/INSTALL.md new file mode 100644 index 00000000..9aad6779 --- /dev/null +++ b/INSTALL.md @@ -0,0 +1,29 @@ +# Installation + +## Prerequisites + +To run this project, you'll need to have either PHP7 or Docker installed, and be using either macOS or Linux. + +## Running Locally + +- Install PHP7 +- Checkout the project +- Run `./dev.sh` from the project root +- Access [localhost:8000](http://localhost:8000) in your browser + +## Running via Docker + +- Install Docker +- Checkout the project +- Run `./docker.sh` from the project root +- Access [localhost:8000](http://localhost:8000) in your browser + +## Verifying Install + +If `localhost:8000` returns the lbry.io website, it's running correctly. + +## Additional Notes + +- Both the `dev.sh` and `docker.sh` scripts will initialise a configuration based on `data/config.php.example` if `data/config.php` does not exist. +- Some pages and interactions rely on API keys that will not be available to you in your install. +- To run remotely, simply install PHP and configure Apache or your server of choice to serve `web/index.php`. diff --git a/LICENSE b/LICENSE index c6ccaeb7..11687b7f 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2015-2016 LBRY Inc +Copyright (c) 2015-2018 LBRY Inc Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, diff --git a/README.md b/README.md index ea6eaa60..28200594 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,32 @@ # lbry.io -The [lbry.io](https://lbry.io) website. +The [lbry.io](https://lbry.io) website. This website uses barebones PHP along with Javascript and SCSS. -## Running lbry.io +![lbry.io screenshot](https://spee.ch/@lbry/lbryio.png) -It's very easy to have lbry.io running locally: +## Installation -- Install PHP7 -- Checkout the project -- Run `./dev.sh` from the project root -- Access [localhost:8000](http://localhost:8000) in your browser +Please see [INSTALL](INSTALL.md) for comprehensive, easy-to-follow instructions on running this project. -You can also run the development server using docker: +## Usage -- Install Docker -- Checkout the project -- Run `./docker.sh` from the project root -- Access [localhost:8000](http://localhost:8000) in your browser +Unless you are planning to contribute to the lbry.io website, this project serves little independent purpose. -Both the `dev.sh` and `docker.sh` scripts will initialise a configuration based on `data/config.php.example` if `data/config.php` does not exist. +To access a local copy of lbry.io, follow [INSTALL](INSTALL.md) and then access `localhost:8000` in your browser. -To run remotely, simply install PHP and configure Apache or your server of choice to serve `web/index.php`. +## License -Note that some pages and interactions rely on API keys that will not be available to you in your install. +This project is MIT licensed. For the full license, see [LICENSE](LICENSE). + +## Contributing + +Contributions to this project are welcome, encouraged, and compensated. For more details, see [CONTRIBUTING](https://lbry.io/faq/contributing). + +## Contact + +The primary contact for this project is Jeremy Kauffman (jeremy@lbry.io). + +## Additional Info and Links + +- [https://lbry.io](https://lbry.io) - The live LBRY website +- [https://chat.lbry.io](https://chat.lbry.io) - A chat room for the LBRY community diff --git a/content/bio/jeremy-kauffman.md b/content/bio/jeremy-kauffman.md index eef82ebb..72b2fc42 100644 --- a/content/bio/jeremy-kauffman.md +++ b/content/bio/jeremy-kauffman.md @@ -8,6 +8,6 @@ github: kauffj Jeremy knows how to build and scale a startup starting from day one. He knows how to deliver usable products and get those products in front of the right people. -Jeremy is responsible for the packing, presentation, and strategy of LBRY, as well as some design aspects. He is a longtime supporter of decentralized technology and freedom of information. +Jeremy created LBRY because he fell in love with the idea of shared, global content registry that is owned and controlled by no one. Unsurprisingly, he is a longtime supporter of decentralized technology and freedom of information. -Jeremy founded [TopScore](//usetopscore.com), a startup that processes millions of dollars monthly in event and activity registrations. He also attended [Rensselaer Polytechnic Institute](//rpi.edu), where he received degrees in physics and computer science. +Prior to LBRY, Jeremy founded [TopScore](//usetopscore.com), a startup that processes millions of dollars monthly in event and activity registrations. He attended [Rensselaer Polytechnic Institute](//rpi.edu), where he received degrees in physics and computer science. diff --git a/content/bio/lex-berezhny.md b/content/bio/lex-berezhny.md new file mode 100644 index 00000000..eef6cb01 --- /dev/null +++ b/content/bio/lex-berezhny.md @@ -0,0 +1,10 @@ +--- +name: Lex Berezhny +role: Protocol Developer +email: lex@lbry.io +twitter: eukreign +github: eukreign +--- +Lex learned to write Python in High School, not far from where the language was first created, and even participated in some of the first Python user groups hosted by Guido, himself. In 2000, still a very young man, Lex gave his first public talk, titled “Yorktown High School Becomes a Python Workshop” at the International Python Conference. Needless to say, Lex and Python go way back. + +Lex spends his time on the full stack of LBRY backends, such as the wallet, protocol, and blockchain, and is currently wading deep into the improvement of test coverage and performance of various LBRY components. If you want to trade notes on Dart, and dish on a possible ideal use case for Dart at LBRY, Lex wants to hear from you! diff --git a/content/bio/lbry.md b/content/bio/samuel-lbryian.md similarity index 100% rename from content/bio/lbry.md rename to content/bio/samuel-lbryian.md diff --git a/content/bounty/twitter-tipbot.md b/content/bounty/twitter-tipbot.md new file mode 100644 index 00000000..02b48762 --- /dev/null +++ b/content/bounty/twitter-tipbot.md @@ -0,0 +1,18 @@ +--- +category: code +title: Twitter Tip Bot +award: 300 +status: available +date: '2018-02-13' +--- + +This bounty is to create a tipbot that can be used to send/receive LBRY Credits(LBC) on Twitter. + +References to other LBRY tipbots: +[Reddit tipbot](https://github.com/lbryio/lbry-social-tipbot) +[Discord tipbot](https://github.com/lbryio/lbry-tipbot) + +Possible starting point: +https://github.com/Crowndev/Twitter-Tip + +Please initiate a pull request on GitHub to receive this bounty. diff --git a/content/faq/how-do-i-check-my-lbc-address.md b/content/faq/ARCHIVEhow-do-i-check-my-lbc-address.archive similarity index 100% rename from content/faq/how-do-i-check-my-lbc-address.md rename to content/faq/ARCHIVEhow-do-i-check-my-lbc-address.archive diff --git a/content/faq/acceptable-use-policy.md b/content/faq/acceptable-use-policy.md new file mode 100644 index 00000000..e3b2d6c9 --- /dev/null +++ b/content/faq/acceptable-use-policy.md @@ -0,0 +1,42 @@ +--- +title: Acceptable Use Policy +category: other +--- + +If you've read [Art in the Internet Age,](https://lbry.io/what) you know that LBRY believes we are in a post scarcity age in terms of the reproduction of content. There are two things that are still scarce; good quality content, and good reputations. We take respecting the rights of creators very seriously, and we expect the same when it comes to our good name. Here is how we go about protecting that. + +Our trademarks include our name, LBRY, and our official logo, which are owned by LBRY, Inc, a Delaware Corporation. We encourage the use of LBRY's trademarked name and official logo, while maintaining control of them in order to thwart vandalism, theft, and any future misconduct that offends the collective sensibility of LBRY users, creates legal hazards, or otherwise inhibits the free expression and open transactions we prize. + +#### Our trademark policy has three objectives: + + * We want it to be very easy for anyone creating content or services on the LBRY network to use the official name and logo. + * We want to be clear about how and when you can use the LBRY name and logo, as well as providing examples of uses that are not acceptable. + * We want to make it difficult for anyone to use the LBRY name or logo to confuse or defraud people. + +### Obtain Your License + +If you are producing video or other content for LBRY, if you've downloaded our client, you've got a license to use the LBRY name and official logo on your blog or web site where you promote your work. That's all there is to it, just stick to the fair use rules if you're sampling or otherwise using copyright content from somewhere else. + +If you are a developer, you will need to complete the verification process before you use the LBRY name and official logo to promote your service or site. The creation of fraudulent sites that appear official are a common problem for blockchain projects. This happened to LBRY early in its history and this process exists to reduce the potential for another such event. + +### Examples Of Acceptable Uses + + * Create brand new content. Entertain, educate, get famous, or change the world. + * Build a service based on LBRY. Help make the internet a better, freer place! + * Staying within the bounds of Fair Use, sample, derive, criticize, or otherwise use someone else's copyright work to make something new. + +### Examples of Unacceptable Uses + + * Creating any service that uses LBRY and presenting it as official product, such as an online wallet. + * Presenting yourself or implying that you are a representative or agent of LBRY, Inc. + * Using LBRY in the title or name of your business in a way that could be construed as being a product of LBRY, Inc. + * Uploading someone else's copyrighted work without their permission, either for free, or attempting to profit. + * Uploading content that is itself a crime. + +### LBRY Service Trademark Usage Policy + +As a statement of principle, you are encouraged to associate your project, product, service, domain, or company name with LBRY, so long as you're a credit to the community. + +You should not do anything that causes confusion regarding roles. You can describe your company as “Top Shelf Consulting, providers of LBRY development,” but not “The LBRY Development Group.” Registering a domain that could be mistaken for part of LBRY's infrastructure would also be inappropriate. + +If you are not sure if your use is within bounds or not, please [come talk with us](https://chat.lbry.io) about it. We know we can only envision some of the innovation that will happen on the LBRY network and would hate to miss a great opportunity over confusion in this area. diff --git a/content/faq/blockchain-explorer.md b/content/faq/blockchain-explorer.md index 68873468..88795376 100644 --- a/content/faq/blockchain-explorer.md +++ b/content/faq/blockchain-explorer.md @@ -6,7 +6,5 @@ category: other Yep. You can see it at [https://explorer.lbry.io](https://explorer.lbry.io). If the enslaved squirrels that run our primary explorer are sleeping, try +[https://lbrypool.com/explorer/LBC](https://lbrypool.com/explorer/LBC) -[https://lbry.block.ng/](https://lbry.block.ng/) - -[http://yiimp.eu/explorer/LBC](http://yiimp.eu/explorer/LBC) diff --git a/content/faq/claimtrie-implementation.md b/content/faq/claimtrie-implementation.md index 399d0bbe..095063e3 100644 --- a/content/faq/claimtrie-implementation.md +++ b/content/faq/claimtrie-implementation.md @@ -37,10 +37,8 @@ This section describes how bids are processed by the ClaimTrie in order to deter * The bid’s Claim Id matches the Claim Id of the bid which was the controlling bid immediately before the block containing this bid was included in the blockchain. In other words, it is either an update to the previous controlling bid, or an update to an update to the previous controlling bid if the bid was updated twice in this block, etc. 4. *Controlling*: This bid currently controls the name. When clients ask which bid controls the name as of the current block, this is the bid that will be returned. Must be in the “active” state and only one bid for any name may be in this state. A support cannot be in the “controlling” state. To determine which “active” bid is the “controlling” bid for each name: - * Add the quantity of each ‘active’ bid to the quantity of all ‘active’ supports for that bid, and take whichever is greatest. If two bids have the same quantity, older bids take precedence over newer bids. - + * Add the quantity of each ‘active’ bid to the quantity of all ‘active’ supports for that bid, and take whichever is greatest. If two bids have the same quantity, older bids take precedence over newer bids. * If the bid with the greatest amount does not have the same claimID as the bid which was ‘controlling’ prior to including the current block, change the delay for the name as of the current block to 0, redetermine which bids and supports should be active, and then perform the previous calculation again. - * At this point, the bid calculated to have the greatest amount behind it is the ‘controlling’ bid as of this block 5. *Spent*: A transaction has been included in the blockchain which spends the TXout which contains the bid. Must be in the ‘accepted’ state. 6. *Expired*: All bids ‘expire’ regardless of what state they are in when the current block height exceeds the height of the block at which the bid was accepted plus 52416 blocks, or 91 days ( currently this is set to 262974 blocks, or 456 days, which will be fixed in a future hard fork ). Updated claims will restart the expiration timer at the block height of the update. diff --git a/content/faq/content.md b/content/faq/content.md new file mode 100644 index 00000000..f34095b0 --- /dev/null +++ b/content/faq/content.md @@ -0,0 +1,40 @@ +--- +title: What kind of content can I upload, and what about illegal or infringing content? +category: publisher +--- + +This guide provides answers about questions regarding what you may upload to the LBRY app and network, as well as how to report illegal or infringing content. + +###What content can I legally upload to LBRY? + +You may upload content you created or own that does not infringe on the rights of others or is illegal, or other content you have permission to upload. This includes Public Domain content, Creative Commons or Open Source content shared according to the license requirements, and Copyrighted content where you have permission from the owner. + +###Because LBRY is decentralized, doesn't this mean the content can’t be removed? + +It is important to make a distinction between the LBRY protocol and any applications running on top when referring to censorship. The LBRY protocol is fully decentralized and censorship resistant, with it storing metadata and naming on the blockchain, and facilitating data transfers over a peer to peer (P2P) network. + +However, LBRY also makes an app to demonstrate our protocol. Within our app, we will engage in non-arbitrary censorship, meaning only horrific or infringing content will be removed. As a U.S. company, LBRY Inc. and management of our app will follow all U.S. laws, including the CDA and DMCA. If someone made an app or website using the LBRY protocol in some other country, it would have to follow that country's laws, which aren’t necessarily the same as ours. Either app would read the same blockchain, though. + +LBRY Inc., makes no guarantee your content will be hosted on the network. The peer-to-peer network relies on hosts to seed content. If no user continues to host data - including you, it will not continue to be available on the network. + +###Someone uploaded my content to LBRY without permission. How do I remove it? + +Reporting infringing/illegal content in the LBRY App is easy. You can [file a report here](https://lbry.io/dmca) or within the LBRY app. + +Open the LBRY App and navigate to the content you wish to report. Underneath the content are two buttons: "Download," and "Report." When you click on the Report button, you will be redirected to a web form to report the content to LBRY, Inc., who can remove the content link from the LBRY App. + +###What do I do if I see content that’s illegal or infringing in the LBRY App? + +Please follow the FAQ above for reporting infringing content, and LBRY staff will review your report and take any appropriate action. + +###What is a DMCA request or takedown notice? + +The Digital Millennium Copyright Act (DMCA) is United States Copyright Law written to protect digital content against illegal use. When an owner finds their content used on the Internet without their permission, they can file a DMCA request with the website, app, or Internet Service Provider illegally hosting their content, asking for it to be removed. + +###How does LBRY respond to a DMCA request or takedown notice? + +LBRY, Inc. will block access to content deemed infringing in the LBRY App when it receives a valid DMCA request from the content owner. + +###Can I dispute a DMCA complaint? + +Yes, you may. We can't give you legal advice, so check with your local attorney or legal group about how to do this. There are also good resources online to learn about DMCA counter notices. The EFF has published an excellent guide about how to deal with legal issues facing online content creators. diff --git a/content/faq/earn-credits.md b/content/faq/earn-credits.md index 3d5b387f..a32d1c6c 100644 --- a/content/faq/earn-credits.md +++ b/content/faq/earn-credits.md @@ -8,9 +8,12 @@ Currently, there are a couple ways to obtain LBRY Credits, or LBC for short. 1. LBRY users get an LBC gift by way of in-app [Rewards](https://lbry.io/faq/rewards). 1. LBRY users get LBC for [referring](https://lbry.io/faq/referrals) other users via the LBRY app (see Invites section of the wallet). -1. You can earn LBC for helping with tasks. Talk to us on [Discord Chat](https://chat.lbry.io/) if +1. LBRY users can convert cryptoassets into LBC using [ShapeShift](https://lbry.io/faq/shapeshift) within the [LBRY app](https://lbry.io/get?auto=1) +1. You can earn LBC for helping with tasks. Talk to us on [Discord Chat](https://chat.lbry.io/) if you're interested in additional testing or helping the community. 1. [Contributing](https://lbry.io/faq/contributing) to the project as a developer/engineer. +1. Research and complete LBRY [bounties](https://lbry.io/bounty) 1. Buy them: see [Exchanges](/faq/exchanges) 1. Mine them: see [Mining](/faq/mining-credits). 1. [Publish](https://lbry.io/faq/how-to-publish) content: when you publish your own content to the LBRY network, you can sell it for LBC at the price of your choice. + diff --git a/content/faq/how-to-publish.md b/content/faq/how-to-publish.md index 70ccac67..55a5f1d1 100644 --- a/content/faq/how-to-publish.md +++ b/content/faq/how-to-publish.md @@ -48,8 +48,7 @@ If you don't have LBRY yet, download it [here](https://lbry.io/get). 6. You have an option to select/create the channel you would like to publish the channel under. If one isn't selected, it will be posted anonymously. ![Select Channel](https://spee.ch/d0c7fe044b0237017f0f5af00f79e3880aae201d/Publishing006.png) -7. Type in the URL you want the content to be found under along with a minimum of 0.01 LBC minimum deposit for the upload (current limit, may change in future). If you are trying to outbid a user friendly/common URL, the system will suggest a minimum bid to take over the content at that vanity URL. There may be a delay for this takeover, check out the `#content` channel on our [Discord chat](https://chat.lbry.io) to see this information (search for your URL). For more details regarding the URL or bid, check out our [naming document](https://lbry.io/faq/naming). -![Select URL](https://spee.ch/41bf24bf3249a5f505969fb192e419fda2cdddd7/Publishing007.png) +7. Type in the URL you want the content to be found under along with a minimum of 0.0001 LBC deposit for the upload (current limit, may change in future). If you are trying to outbid a user friendly/common URL, the system will suggest a minimum bid to take over the content at that vanity URL. There may be a delay for this takeover, check out the `#content` channel on our [Discord chat](https://chat.lbry.io) to see this information (search for your URL). For more details regarding the URL or bid, check out our [naming document](https://lbry.io/faq/naming). 8. Read and agree to the terms of service. 9. Click `Publish`. @@ -58,10 +57,16 @@ If you don't have LBRY yet, download it [here](https://lbry.io/get). ### How do I delete my content and reclaim my deposit? 1. Click on the folder icon in the top right of the LBRY app. +![folder icon](https://spee.ch/5/lbryapp-folder-icon.jpeg) 2. Click on the `Published` tab. 3. Select the content you want to remove from LBRY 4. Click `Remove`. If you don't see the remove button, try downloading the content locally again. -5. There will be two options. `Abandon the claim for this URI` and `Delete this file from my computer`. Select the option that applies. Abandoning your claim will release the LBC back into your wallet (99% of the time you want to select this). **Warning: Deleting content is permanent. Please make sure this is what you want to do before confirming the deletion.** +![remove](https://spee.ch/7/removebox.png) +5. There will be two options. `Abandon the claim for this URI` and `Delete this file from my computer`. Select the option that applies. Abandoning your claim will release the LBC back into your wallet (99% of the time you want to select this). +![abandon-delete box](https://spee.ch/7/removeabandonbox.png) + +**Warning: Deleting content is permanent. Please make sure this is what you want to do before confirming the deletion.** + 6. Click `Remove`. If you abandoned your claim, you should see the deposit back in your balance shortly. ### How do I edit my existing Published content? diff --git a/content/faq/lbry-basics.md b/content/faq/lbry-basics.md new file mode 100644 index 00000000..7f3dc229 --- /dev/null +++ b/content/faq/lbry-basics.md @@ -0,0 +1,71 @@ +--- +title: LBRY App Basics +category: getstarted +order: 1 +--- + +The LBRY App allows you to view free and paid content, upload your digital media for free or at a set price, tip your favorite creators, send/receive LBRY Credits(LBC) and earn credits through LBRY Rewards. The app runs on top of the [LBRY protocol](https://lbry.io/faq/what-is-lbry) which is a peer to peer, decentralized file sharing and payment network secured by blockchain technology. + +The purpose of this FAQ is to answer questions about some of the basic functionality available in the LBRY App. Please see our [other FAQ entries](https://lbry.io/faq) for additional information. + +### What is the purpose of having my email connected to LBRY? +Emails are collected to authenticate and [uniquely identify](https://lbry.io/faq/identity-requirements) users so that they can be eligible for [LBRY Rewards](#rewards) and to stay up to date on the latest LBRY happenings. No other data is stored with your email login. All other data, including your [wallet](#wallet), [downloads](#data) and published content are stored locally on your computer. You can find your connected email by going to Settings (gear icon in the top right) > Help > Connected email. + +### How do I change my LBRY connected email? +If you ever need to change your LBRY email address or sign out, please see [this guide](https://lbry.io/faq/how-to-change-email). If you sign into a new email and need to transfer your verification status, you'll need to [reach out to us](mailto:help@lbryio) in order to link your accounts. Please do not verify again to obtain rewards on a 2nd account, your Rewards account may be disabled for abuse. + +### What if I want to run LBRY on multiple computers or on different Windows accounts? +If you want to run the LBRY app on multiple PCs or Windows users, you can either choose not to sign in on the other computers/accounts or use a different email address for each. These additional accounts will not be eligible for LBRY Rewards as they are only allowed on a one account per household basis. If you log into a 2nd PC with the same email, the original PC will be signed out. Changing accounts back and forth on the same PC/user account will cause them to be merged. + +### What are LBRY Rewards? {#rewards} +[LBRY Rewards](https://lbry.io/faq/rewards) are used to distribute LBRY Credits(LBC) to new and existing users by allowing them to explore app functions and complete tasks which generate LBC as an award. In order to be eligible for Rewards, you need to [verify your identity](https://lbry.io/faq/identity-requirements) which uniquely identifies you as a LBRY user. + +### What is a wallet and how do I find it? {#wallet} +A wallet is a secure, digital wallet used to store, send and receive cryptocurrencies like LBRY Credits(LBC). The LBRY App comes with its own wallet and is stored locally on your computer and nowhere else! **It is critical that you [backup your wallet data](https://lbry.io/faq/backup) in case you lose access to your PC or need to [migrate](https://lbry.io/faq/backup-data) to a new one.** + +In the app, you can find your wallet in the top-right hand corner, next to the bank icon. Clicking it will bring you to the wallet overview page which shows your balance, available Rewards and recent transactions. +![Find wallet](https://spee.ch/6f82ff233910eebeb0f32f69710bd98c6a6bcb2a/walletaccess.png) + +The LBRY wallet is different from other cryptocurrencies because it also stores your shared content's metadata in the form of [claims](https://lbry.io/faq/naming) when using the [publishing features]((https://lbry.io/faq/how-to-publish). Claim related [wallet transactions](https://lbry.io/faq/transaction-types) ensure that the blockchain uniquely identifies your content and the payment/tips can be routed appropriately. + +### Where do I find my LBC wallet address? +You can find your address by first clicking on the bank icon in the top right, then navigating to the Send/Receive tab. Your wallet holds multiple receiving addresses and new ones can be generated by clicking "Get New Address". Your wallet balance is the sum total of all the LBC available in each of your addresses. +![Find address](https://spee.ch/6fff389043fadcf16ade8b0b8f6125834652e1c2/walletaddress.png) + +### Where can I get more LBRY Credits? +The LBRY App is also integrated with [ShapeShift](https://lbry.io/faq/shapeshift) on the Get Credits tab of the wallet which allows you to convert cryptocurrencies into LBC or you can also [trade for LBC on exchanges](https://lbry.io/faq/exchanges). + +### Where is all my LBRY App data stored? {#data} +Please see the [LBRY directories FAQ page](https://lbry.io/faq/lbry-directories) for more information on where LBRY data is stored. Besides the internal LBRY data, you can also configure your LBRY download directory via the option at the top of the Settings page (gear icon in the top right). + +### Why is content downloaded to my PC even when I stream? +LBRY is a decentralized peer to peer protocol, meaning there are no big servers storing all the files (like YouTube), but instead, data is stored on each participant's computer (similar to BitTorrent). When you stream or download, LBRY will store the content in encrypted chunks called [blobs files](https://lbry.io/faq/lbry-directories) and seed it to the entire network so others can also download from you. It will also store the completed file in your downloads folder. Currently, there is no way to stop sharing or to store data temporarily, but you can always delete any files you don't want to seed from the LBRY App Downloads area. + +### I want to share my content, where do I start? {#publish} +Please refer to our [publishing guide](https://lbry.io/faq/how-to-publish) as a reference to assist you through the publishing process. + +### Where can I see my Downloaded and Published items? +Click the folder icon next to the Publish button to view downloaded files. Click the Published tab to view your published content. + +### How do I know if I'm sharing content and helping the LBRY network properly? +The easiest way to confirm that you are sharing correctly is to determine if the port used for seeding, 3333, is open to the rest of the LBRY network. To do so, type 3333 into [this port checking tool](http://www.canyouseeme.org) and check the result. It if shows Open, you are all set. If it shows closed, you may need to check your router settings for uPnP options (set to enable) or forward ports 3333 TCP and 4444 UDP to your local computer running LBRY. Firewall and NAT settings may also affect the availability of this port. + +### How can I search for content on LBRY? +Searching in LBRY is as easy as typing your search term(s) into the address bar at the top and waiting for the results to return (**don't click Enter!**). Clicking the Enter key will skip the search function and go directly to the URL typed - this is only helpful if you know the exact URL you are trying to view. We are still in the process of optimizing the search results, please bear with us if you are having trouble finding something! +![Search](https://spee.ch/f/search-faq.png) + +### How can I subscribe and view my favorite channels? +If you navigate to a channel page (LBRY URLs with an @ symbol in the front), you will see a **Subscribe @** button that manages your subscription. To view all your subscribed channels on one page, click the Subscriptions tab from the home page or the **@** symbol next to the LBRY address bar. +![Subscriptions](https://spee.ch/5/subs-faq.png) + +### Content consistently fails to stream or download, what can I do? +Please see our [streaming guide](https://lbry.io/faq/unable-to-stream) if you consistently cannot download or stream content on LBRY. + +### Some files don't open in the LBRY app, what's going on? +Currently, the LBRY in-app player supports MP4 videos, mp3s, images, GIFs, HTML and text files. Even though it doesn't support other formats within the app, the files can be externally opened by clicking the **Open** button or navigating to the file by clicking the **Downloaded to** file path on the content page. + +### How do I begin troubleshooting problems myself? +Please see [this guide](https://lbry.io/faq/how-to-find-lbry-log-file) on how to find your LBRY log files. These may provide you additional information to troubleshoot issues or to provide to the [support team](https://lbry.io/faq/support). + +### I need additional help with the LBRY app, where can find it? {#support} +Please check our [other FAQ entries](https://lbry.io/faq) for more information. We are always here to help as well, feel free to [reach out to us](https://lbry.io/faq/support). diff --git a/content/faq/lbry-directories.md b/content/faq/lbry-directories.md index 0f376b42..2852f1e1 100644 --- a/content/faq/lbry-directories.md +++ b/content/faq/lbry-directories.md @@ -8,14 +8,14 @@ Depending on which OS and wallet you use, LBRY files may be stored in several pl ## Windows - `C:\Program Files (x86)\LBRY` - LBRY application itself -- `C:\Users\%USER%\AppData\Local\lbry\lbrynet` or `%localappdata%\lbry\lbrynet` - Daemon configuration and blobs +- `C:\Users\%USER%\AppData\Local\lbry\lbrynet` or `%localappdata%\lbry\lbrynet` - Daemon configuration and encrypted blob files - `C:\Users\%USER%\AppData\Local\lbry\lbryum` or `%localappdata%\lbry\lbryum` - Wallet and blockchain headers *\*If you originally installed v0.14 and below, the lbrynet and lbryum directories will be in `%appdata%`* ## MacOS -- `~/Library/Application Support/LBRY` - LBRY application and data files +- `~/Library/Application Support/LBRY` - LBRY application, daemon configuration and encrypted blob files - `~/.lbryum` - Wallet and blockchain headers - `~/.lbrycrd` - Location for [lbrycrdd](https://lbry.io/faq/standalone-wallet) full blockchain data (separate install) @@ -25,7 +25,7 @@ Depending on which OS and wallet you use, LBRY files may be stored in several pl ## Linux - `/opt/LBRY` - LBRY application itself -- `~/.local/share/lbry/lbrynet` - Daemon configuration and blobs +- `~/.local/share/lbry/lbrynet` - Daemon configuration and encrypted blob files - `~/.local/share/lbry/lbryum` - Wallet and blockchain headers - `~/.lbrycrd` - Location for [lbrycrdd](https://lbry.io/faq/standalone-wallet) full blockchain data (separate install) diff --git a/content/faq/mining-credits.md b/content/faq/mining-credits.md index 55c7ecc1..f0cccd32 100644 --- a/content/faq/mining-credits.md +++ b/content/faq/mining-credits.md @@ -5,7 +5,7 @@ category: mining Library Credits (LBC) are mined over a 20-year Proof of Work period. Block rewards increase every 100 blocks by 1LBC, peak at 500, and decline slowly. -LBRY mining is dominated by the GPU market and we don't see CPU mining as economically viable at this point. If you still want to CPU mine to help the network, see instructions below. +LBRY mining is dominated by the GPU and FPGA market and we don't see CPU mining as economically viable at this point. If you still want to CPU mine to help the network, see instructions below. For GPU mining, please see our list of [pools](https://lbry.io/faq/mining-pools). Each pool has a slightly different setup so please check their Getting Started page. We can also provide mining assistance via the #mining channel on [Discord Chat](https://chat.lbry.io). **Note:** Sgminer is for AMD GPU Cards and CCminer is for Nvidia GPU Cards diff --git a/content/faq/mining-pools.md b/content/faq/mining-pools.md index 66bd30ae..1a176452 100644 --- a/content/faq/mining-pools.md +++ b/content/faq/mining-pools.md @@ -7,7 +7,6 @@ Absolutely. Here are some links to the pools. Each pool will have instructions o While we try to work with reliable pool operators, LBRY does not officially run or endorse any one pool. - [LBRY Community Pool](http://lbrypool.com) -- [YIIMP](http://yiimp.ccminer.org) - [Pool.MN](https://pool.mn/lbry/index.php?page=gettingstarted) - [SuprNova](https://lbry.suprnova.cc/index.php?page=gettingstarted) - [CoinMine](https://www2.coinmine.pl/lbc/index.php?page=gettingstarted) diff --git a/content/faq/phone.md b/content/faq/phone.md index 997f03e0..6f03ee79 100644 --- a/content/faq/phone.md +++ b/content/faq/phone.md @@ -12,7 +12,7 @@ Unfortunately, when you try to give stuff away for free, people will abuse it. Phone number verification provides another method for LBRY users to participate in the [rewards](https://lbry.io/faq/rewards) program. ### What if my phone number isn't working? -In order to combat abuse, certain prepaid services, Google Voice and other VOIP will be blocked for phone verification. If you are using one of these and having trouble, please see one of the [other verification methods](https://lbry.io/faq/identity-requirements). +Certain regions, prepaid services and VOIP will be blocked from phone verifications in order to combat abuse,. If you are having trouble with getting a phone number accepted, please see one of the [other verification methods](https://lbry.io/faq/identity-requirements). ### What if the LBRY app says my phone number already exists? This usually means that there is another LBRY account/email address that's already associated with that number. If you are changing email addresses and need to link your accounts or you believe this is an error, please [reach out to us](mailto:help@lbry.io). diff --git a/content/faq/rewards.md b/content/faq/rewards.md index 9f63ba31..4f6e7bdc 100644 --- a/content/faq/rewards.md +++ b/content/faq/rewards.md @@ -7,7 +7,7 @@ To provide a rich user experience and to [distribute](https://lbry.io/faq/credit ### Verification requirements -In order to be eligible for LBRY Rewards, users must have a [verified account](https://lbry.io/faq/identity-requirements). If users choose not to verify themselves, LBRY works with full functionality but they will not be able to earn any free credits from LBRY. **Rewards will only be granted on a 1 account per household basis and LBRY reserves the right to revoke Rewards privileges on any account if abuse is suspected or if VPN is used.** +In order to be eligible for LBRY Rewards, users must have a [verified account](https://lbry.io/faq/identity-requirements). If users choose not to verify themselves, LBRY works with full functionality but they will not be able to earn any free credits from LBRY. **Rewards will only be granted on a 1 account per household basis and LBRY reserves the right to revoke Rewards privileges on any account if abuse is suspected or if VPN/shared connections are used.** ### List of the current LBRY Rewards | Reward | Amount | Description | diff --git a/content/faq/startup-troubleshooting.md b/content/faq/startup-troubleshooting.md index 67bfa4db..1bb0f19b 100644 --- a/content/faq/startup-troubleshooting.md +++ b/content/faq/startup-troubleshooting.md @@ -4,7 +4,7 @@ category: troubleshooting order: 1 --- -Proper network connectivity, visibility, and access is a necessity for usage of LBRY, as it is a peer-to-peer protocol that requires clients to see and speak to each other. Since individual local network configurations, firewalls, and other security settings vary greatly, LBRY may require some basic network/PC troubleshooting in order to function properly. Since LBRY is in beta, there are certain configurations which we don't support yet, but can offer workarounds (see below) or offer one-on-one [troubleshooting](https://lbry.io/faq/how-to-report-bugs). +Proper network connectivity, visibility, and access is a necessity for usage of LBRY, as it is a peer-to-peer protocol that requires clients to see and speak to each other. Since individual local network configurations, firewalls, and other security settings vary greatly, LBRY may require some basic network/PC troubleshooting in order to function properly. Since LBRY is in beta, there are certain configurations which we don't support yet, but can offer workarounds (see below) or offer [one-on-one troubleshooting](https://lbry.io/faq/how-to-report-bugs). The first area to check for start-up issues is the [LBRY log file](https://lbry.io/faq/how-to-find-lbry-log-file). Except in extreme cases, a log file should be generated by the daemon startup process and will usually reveal clues on where to find problems. @@ -25,23 +25,22 @@ LBRY operates on a couple different ports and if there are conflicts/firewall ru ### LBRY used to work previously but now it won't start First and foremost, please ensure you are on the [latest version](https://lbry.io/get) of LBRY. Reinstalling the latest version may alleviate some start-up issues. Before installing, either make sure no LBRY/lbrynet processes or simply reboot your computer. -- On Windows, you may receive an error titled `Uncaught Exception - Error: Object has been destroyed...` which prevents you from starting LBRY. This usually means LBRY.exe or lbrynet-daemon.exe is already running in the background. Check the task manager, kill the process(es) and start LBRY again. Please see this [GitHub issue](https://github.com/lbryio/lbry-app/issues/353) for more details. -- On Windows, you may receive an error titled `Uncaught Exception - Error spawn...ENOENT` which usually means LBRY can't find the daemon exe file. Please see this [GitHub issue](https://github.com/lbryio/lbry-app/issues/396) for more details. The workaround is to rerun the [latest](https://lbry.io/get) LBRY installation file. +- On Windows, if you get stuck on the "Starting daemon" green screen, the lbrynet-daemon file may be missing. The workaround is to rerun the [latest](https://lbry.io/get) LBRY installation file and try again. - On older MAC installations, you may run into an issue with the daemon shutting down immediately. Please see [this GitHub issue](https://github.com/lbryio/lbry-app/issues/291) for troubleshooting. - Other typical startup troubleshooting would be to ensure that LBRY or lbrynet-daemon is not already running in the background. If the processes cannot be killed, a restart of your computer may be required. ### Known startup issues and workarounds #### Stuck at blockchain sync {#sync} -If you are stuck on the blockchain sync step or it shows a block count that doesn't decrease, you may need to clear your your blockchain cache. To do so, Shut LBRY down completely (check for running LBRY/lbrynet-daemon processes), delete the `blockchain_headers` file in the [lbryum folder](https://lbry.io/faq/lbry-directories) and then start LBRY again. +If you are stuck on the blockchain sync step or it shows a block count that doesn't decrease, you may need to clear your your blockchain cache. To do so, Shut LBRY down completely by closing it from the system tray(check for running LBRY/lbrynet-daemon processes), delete the `blockchain_headers` file in the [lbryum folder](https://lbry.io/faq/lbry-directories) and then start LBRY again. #### Linux auth_token requirements Currently, LBRY requires an authorization token to be generated using the [keytar](https://github.com/atom/node-keytar) libraries. Please ensure libsecret and keytar are installed. On some distributions, LBRY won't run unless gnome keyring is also installed/operational. See [GitHub issue](https://github.com/lbryio/lbry-app/issues/386) for more information. If you get a GLIBCXX_3.4.2 error, please see [this issue](https://github.com/lbryio/lbry-app/issues/423#issuecomment-327519486). #### Windows user path has non-ASCII characters -Currently, the LBRY app may fail to start because it does not support non-ASCII / non-English letters in the c:\Users\ directory where it tries to create your LBRY wallet, downloads and application data. As a workaround, you can manually set these directories in the `daemon_settings.yml` file. If this file does not exist in your [lbrynet folder](https://lbry.io/faq/lbry-directories), you can create one or you can use [this sample](https://goo.gl/opybNE). +Currently, the LBRY app may fail to start because it does not support non-ASCII / non-English letters in the c:\Users\ directory where it tries to create your LBRY wallet, downloads and application data. As a workaround, you can manually set these directories in the `daemon_settings.yml` file within the [lbrynet folder](https://lbry.io/faq/lbry-directories). If this file does not exist in your [lbrynet folder](https://lbry.io/faq/lbry-directories), you can create one or you can use [this sample](https://goo.gl/opybNE). -This will setup your directories as follows or you can create/edit the file to configure your own paths (but again, don't use any folders with non-ASCII letters): +This will configure your directories to the folders below or you can create/edit the file to configure your own paths (but again, don't use any folders with non-ASCII letters): ``` {data_dir: 'c:\lbry\lbrynet', lbryum_wallet_dir: 'c:\lbry\lbryum', download_directory: 'c:\lbry\Downloads'} ``` -After you are done inserting or editing the `daemon_settings.yml` configuration file, try running LBRY again. The settings file has to stay in the original location and LBRY will create the new folders/data in the specified directories. `lbrynet`/`lbryum` folders should be copied there if you are migrating from a previous install. If you still receive this warning after completing the above steps, please [reach out to us](https://lbry.io/faq/how-to-report-bugs) for additional support. +After you are done inserting/editing the `daemon_settings.yml` configuration file, try running LBRY again. The settings file has to stay in the original location and LBRY will create the new folders/data in the specified directories. `lbrynet`/`lbryum` folders should be copied there if you are migrating from a previous install. If you still receive this warning after completing the above steps, please [reach out to us](https://lbry.io/faq/how-to-report-bugs) for additional support. diff --git a/content/faq/what-is-lbry.md b/content/faq/what-is-lbry.md index adbe3247..93f8fb91 100644 --- a/content/faq/what-is-lbry.md +++ b/content/faq/what-is-lbry.md @@ -3,22 +3,27 @@ title: What is LBRY exactly – is it a protocol, an app, a website, a company? category: LBRY 101 order: 1 --- -LBRY is many components working together. For most users, it will just be a place where they can find great videos, music, ebooks, and more. A vast digital library available on all of your devices. +For most users, LBRY will be a place where they can find great videos, music, ebooks, and more. A vast digital library available on all of your devices. But LBRY is many components working together. -But behind that experience is an ecosystem that can be hard to understand at first – especially because we tend to refer to all the pieces and the system-as-a-whole as “LBRY”. (We’re working on clearing that up.) +LBRY is first and foremost a new *protocol* that allows anyone to build apps that interact with digital content on the LBRY network. Apps built on the protocol allow creators to upload their work to the LBRY network of hosts (like BitTorrent), and set a price per stream or download (like iTunes) or give it away for free (like YouTube without ads). -It might be easier to start with what LBRY is not: it is not just another corporate media service like YouTube or iTunes or Spotify. It is first and foremost a new *protocol* that allows artists to upload their content to a network of hosts (like BitTorrent) and set a price per stream or download (like iTunes) or give it away for free (like YouTube without ads). What makes this all possible is the blockchain technology developed by the founder of Bitcoin. Do you have to understand any of this to use and enjoy LBRY? No. Does it still matter to users? Yes! +What makes this all possible is the blockchain technology developed by the creator of Bitcoin. Do you have to understand any of this to use and enjoy LBRY? No. Does it still matter to users? Yes! -Gmail has built an extremely popular email service on top of the near-universal *SMTP protocol* that everyone uses to exchange emails. Anyone sending email with SMTP can communicate with Gmail addresses, no matter what email platform they use (Yahoo!, AOL, iCloud, etc.). Google can’t interfere with someone emailing from a @yahoo.com address to an @aol.com address – and users are free to switch between services at any time, taking their emails with them. Users have a lot of power in open protocols that is often taken for granted. +## Why Build A Protocol? +Building [protocols, not platforms](https://lbry.io/news/blockchain-is-love-blockchain-is-life), is the future of the free, open internet. Almost every tech giant today is a centralized service that sells users’ personal information and attention to advertisers. They spend a lot of money chasing their product (your personal information and time/attention), but at the end of the day, offer it up for free in exchange for access to the platform. -Compare this to a proprietary, centrally controlled service like Facebook Messenger. If you conduct all of your social communications via Messenger, you’re stuck in that environment – you cannot move your messages or contacts over to Google Chat or Skype. And if Facebook changes the way Messenger functions by censoring conversations or sharing your information with advertisers or governments, tough luck. +We think users should own their content (and their privacy) instead of handing it over to a corporate giant and their advertising buddies. If you think we’re being paranoid, there are dozens of examples of [companies abusing users](https://lbry.io/news/why-do-tech-giants-abuse-their-users) and acting against their interests. It’s not paranoia if they’re actually out to get you. -Even platforms that are ostensibly designed with the user’s control and privacy in mind are susceptible to corruption if they are centrally controlled. WhatsApp comes to mind. WhatsApp built a huge global user base claiming to put users above advertisers. Then Facebook bought it. Now users may well have their personal phone numbers and metadata mined for Facebook’s advertising algorithms. +## Open Source and Community Driven +The LBRY project is more than just a new protocol. It is also a company, *LBRY Inc.*, which is developing a *LBRY app* to allow users to easily interact with the protocol. -There is no such risk of top-down corruption with the LBRY protocol. Content uploaded to the decentralized LBRY network remains publicly accessible so long as the community finds it valuable and continues to host it. +Not only is [our app](https://lbry.io/get?auto=1) completely open-source, but others are welcome to create competing apps that also use the LBRY protocol. For a content creator, your uploaded content will be available to all of these apps at the same time. -Now, the LBRY project is more than just a revolutionary new protocol. It is also a company, *LBRY Inc.*, which is developing a *LBRY app* to allow users to easily interact with the protocol. So it’s as if Google had developed the email protocol, released it to the world for free, and then built Gmail to help people make use of it. Not only is our app completely open-source, but others are welcome to create competing apps that also use the LBRY protocol. For a content creator, your uploaded content will be available to all of these apps at the same time. +LBRY is challenging the centralized, corporate model from the ground up. Everything we’ve built is open-source, decentralized, and belongs to the community using it. -Do you see the difference here? YouTube can afford to push around its creators and users because they’ve created tremendous lock-in. LBRY is challenging this model from the ground-up. Everything we’ve built is open-source, decentralized, and belongs to the community using it. LBRY Inc. could go bankrupt tomorrow and the LBRY protocol will live on. Can YouTube say that? +

I’d Buy That For A Dollar!

+ -[Download the LBRY App Now](https://lbry.io/get) +Well you’re in luck, because you can [download the LBRY app](https://lbry.io/get?auto=1) for free and build LBRY with us today - try it out and let us know what you think! + +[Download the LBRY App Now](https://lbry.io/get?auto=1) diff --git a/content/news/03-5-questions-about-lbry.md b/content/news/03-5-questions-about-lbry.md index 82d0cd55..51b33f69 100644 --- a/content/news/03-5-questions-about-lbry.md +++ b/content/news/03-5-questions-about-lbry.md @@ -4,7 +4,7 @@ title: 5 Questions About LBRY date: '2015-07-01 13:09:20' --- -As I recently traveled across Europe, and ultimately to [PorcFest](www.porcfest.com), I took time to talk to talk to entrepreneurs, technologists, and libertarians about [LBRY](https://lbry.io). +As I recently traveled across Europe, and ultimately to [PorcFest](http://www.porcfest.com), I took time to talk to talk to entrepreneurs, technologists, and libertarians about [LBRY](https://lbry.io). For the mutualistic education of myself and others, below are the questions and answers to five frequently asked questions. ## Five Questions @@ -16,7 +16,7 @@ As we recently Tweeted, we're extremely close to releasing a POC client: -To make sure you hear as soon as it is available, [join our mailing list](https://lbry.io/list/subscribe) or [follow us](https://twitter.com/lbry_io) on Twitter. +To make sure you hear as soon as it is available, [join our mailing list](https://lbry.io/list/subscribe) or [follow us](https://twitter.com/lbryio) on Twitter. ### 2. What happens if someone uploads infringing content to LBRY? @@ -53,7 +53,7 @@ We will also be releasing the source of LBRY so that others may stand upon us. ### 4. What's the difference between LBRY and MaidSafe (or X)? There are several attempts to build a decentralized computing platform. LBRY is not one of them; it exists only for information. -Products that subsume the information problem, such as [MaidSafe](www.maidsafe.com) or [Ethereum](www.ethereum.org), will crumble +Products that subsume the information problem, such as [MaidSafe](https://www.maidsafe.net) or [Ethereum](https://www.ethereum.org), will crumble under their own weight at the worst and not approach LBRY's performance at their best. Building an information delivery network inside of a larger decentralized platform is guaranteed at a fundamental level to result in worse performance, greater expense, or both. diff --git a/content/news/114-coinomiwallet.md b/content/news/114-coinomiwallet.md index 718c88d8..9ad050d7 100644 --- a/content/news/114-coinomiwallet.md +++ b/content/news/114-coinomiwallet.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: 'Coinomi Wallet Integration' date: '2017-06-02 00:14:00' --- diff --git a/content/news/117-jordanbpeterson.md b/content/news/117-jordanbpeterson.md index 6c3c21d4..9e2e3601 100644 --- a/content/news/117-jordanbpeterson.md +++ b/content/news/117-jordanbpeterson.md @@ -22,10 +22,8 @@ A commenter on his Biblical series summarized his channel best: └📁 Bad Videos └⚠️ This folder is empty -Check out some of the best lectures on LBRY at: +Check out some of the [best lectures on LBRY](https://open.lbry.io/%40JordanBPeterson). -- lbry://@JordanBPeterson +You can learn more about Dr. Peterson, and [order his newest book](https://jordanbpeterson.com/12-rules-for-life/), here on his [website](https://jordanbpeterson.com/). -You can learn more about Dr. Peterson, and [pre-order his next book](https://jordanbpeterson.com/12-rules-for-life/), here on his [website](https://jordanbpeterson.com/). - -**Not on LBRY yet?** [Get an invite here](https://lbry.io/get). Know the meaning of life? Email reilly@lbry.io because he’s desperate to know. Or sync your channel at: https://api.lbry.io/yt/connect?type=sync +**Not on LBRY yet?** [Download it here](https://lbry.io/get). Know the meaning of life? Email reilly@lbry.io because he’s desperate to know. Or sync your channel at: https://api.lbry.io/yt/connect?type=sync diff --git a/content/news/130-new-lbry-version-with-tipping.md b/content/news/130-new-lbry-version-with-tipping.md index cde3671e..6c5cf8e0 100644 --- a/content/news/130-new-lbry-version-with-tipping.md +++ b/content/news/130-new-lbry-version-with-tipping.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: 'Latest LBRY App Adds Tipping, Themes, and More' date: '2017-09-21 10:30:00' --- diff --git a/content/news/134-new-lbry-version-with-search.md b/content/news/134-new-lbry-version-with-search.md index a4dace75..3ee67b32 100644 --- a/content/news/134-new-lbry-version-with-search.md +++ b/content/news/134-new-lbry-version-with-search.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: 'LBRY v0.17 Has What You’ve Been Searching For' date: '2017-10-12 16:00:00' --- diff --git a/content/news/14-lbry-gets-content-creators-out-of-precarious-position-daily-decrypts-amanda-b-johnson.md b/content/news/14-lbry-gets-content-creators-out-of-precarious-position-daily-decrypts-amanda-b-johnson.md index a95e26f1..3330aa7a 100644 --- a/content/news/14-lbry-gets-content-creators-out-of-precarious-position-daily-decrypts-amanda-b-johnson.md +++ b/content/news/14-lbry-gets-content-creators-out-of-precarious-position-daily-decrypts-amanda-b-johnson.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: "LBRY Gets Content Creators Out of Precarious Position - Daily Decrypt's Amanda B. Johnson" date: '2015-10-26 15:10:51' --- diff --git a/content/news/141-lbry-is-trending.md b/content/news/141-lbry-is-trending.md index 7e43b673..ccba0a37 100644 --- a/content/news/141-lbry-is-trending.md +++ b/content/news/141-lbry-is-trending.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: 'LBRY v0.18 is Trending Towards Greatness' date: '2017-11-13 14:25:00' --- diff --git a/content/news/144-Howl-with-us.md b/content/news/144-Howl-with-us.md index 8eda489f..89a3db4b 100644 --- a/content/news/144-Howl-with-us.md +++ b/content/news/144-Howl-with-us.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: 'Howl With Us' date: '2017-11-24 00:20:30' cover: '' diff --git a/content/news/146-a-very-special-holiday-special.md b/content/news/146-a-very-special-holiday-special.md index 24ce44b1..07535bc8 100644 --- a/content/news/146-a-very-special-holiday-special.md +++ b/content/news/146-a-very-special-holiday-special.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: 'It's A Very Special Holiday Special Movie Night' date: '2017-12-10 00:16:00' cover: diff --git a/content/news/147-lbry-shifting-into-high-gear.md b/content/news/147-lbry-shifting-into-high-gear.md index b52ab7e3..24a90269 100644 --- a/content/news/147-lbry-shifting-into-high-gear.md +++ b/content/news/147-lbry-shifting-into-high-gear.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: 'LBRY v0.19 Is Shifting Into High Gear' date: '2017-12-11 12:45:00' --- diff --git a/content/news/148-lbry-development-community-update-1.md b/content/news/148-lbry-development-community-update-1.md index 3411c7ac..2938e2cc 100644 --- a/content/news/148-lbry-development-community-update-1.md +++ b/content/news/148-lbry-development-community-update-1.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: 'Development and Community Update' date: '2017-12-12 5:00:00' --- diff --git a/content/news/149-stop-net-banality.md b/content/news/149-stop-net-banality.md index 9036041a..6d7eb6c9 100644 --- a/content/news/149-stop-net-banality.md +++ b/content/news/149-stop-net-banality.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: 'Stop Net Banality' date: '2017-12-14 12:30:00' --- diff --git a/content/news/16-digging-into-lbry.md b/content/news/16-digging-into-lbry.md index a730fb12..9e7e960f 100644 --- a/content/news/16-digging-into-lbry.md +++ b/content/news/16-digging-into-lbry.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: 'Digging Into LBRY: Our Inspiration & The Future of Content' date: '2015-11-05 21:08:22' --- diff --git a/content/news/160-srodalmenara.md b/content/news/160-srodalmenara.md new file mode 100644 index 00000000..80432519 --- /dev/null +++ b/content/news/160-srodalmenara.md @@ -0,0 +1,17 @@ +--- +author: reilly-smith +title: 'Rock softly and carry a big guitar' +date: '2018-02-08 00:20:00' +cover: 'srod-banner.png' +--- +Music. Metal. Mattlestar M’lactica. + +What do you get when you mash Spanish, Celtic, and Islander blood into a metal rock stew? The answer is simple: [Srod Almenara](https://open.lbry.io/%40srodalmenara) + + + +From metal and progressive rock originals to the best geek covers this side of Jakku, it’s with warm welcome we re-introduce the music scene on LBRY with wailing chords. + +Subscribe to @srodalmenara or share his songs the *safe* way [via Spee.ch](https://spee.ch/@srodalmenara). + +**[Download LBRY today](https://lbry.io/get)**. Is your favorite channel not on LBRY? Help us feature what you want to see! Email [reilly@lbry.io](mailto:reilly@lbry.io) to make it happen. Or sync your own channel at: https://lbry.io/youtube diff --git a/content/news/161-nickatnyte.md b/content/news/161-nickatnyte.md new file mode 100644 index 00000000..5ca1f977 --- /dev/null +++ b/content/news/161-nickatnyte.md @@ -0,0 +1,19 @@ +--- +author: reilly-smith +title: 'Clash Cash' +date: '2018-02-22 00:20:00' +cover: 'nickatnyte-banner.jpg' +--- +Are casual mobile games *really* casual? + +[@nickatnyte](https://open.lbry.io/%40nickatnyte) will reframe how seriously you can take the Clash series. + + + +A long time Clash series veteran [@nickatnyte](https://open.lbry.io/%40nickatnyte) (and more at [@nickatnyte2](https://open.lbry.io/%40nickatnyte2)) Nick Nyte and his guests dive deeper into the casual/mobile genre than you ever thought possible, digging out every last bit of strategy there is to glean. + +He’s also a popular Fortnite streamer if action games are more your style. Either way, Nick’s knowledge and charisma make long streams fly by in an instant. + +Subscribe to @nickatenyte for the newest Clash strategies and welcome him to LBRY with LBC tips galore. + +**[Download LBRY today](https://lbry.io/get)**. Is your favorite channel not on LBRY? Help us feature what you want to see! Email [reilly@lbry.io](mailto:reilly@lbry.io) to make it happen. Or sync your own channel at: https://lbry.io/youtube diff --git a/content/news/162-colinslaststand.md b/content/news/162-colinslaststand.md new file mode 100644 index 00000000..ad37b213 --- /dev/null +++ b/content/news/162-colinslaststand.md @@ -0,0 +1,17 @@ +--- +author: reilly-smith +title: 'The Stand' +date: '2018-03-01 00:20:00' +cover: 'cls-banner-2.jpg' +--- +This week, I’d like to reintroduce one of my personalities on LBRY. + +You caught Mr. Moriarty’s show Sidequest [in January](https://lbry.io/news/sidequest). Now it’s time for the main course. + + + +The prolific [Colin Moriarty](https://open.lbry.io/%40ColinsLastStand) (CLS, Sidequest, as well as podcast series Fireside Chats and now Knockback) has continued to forge his own path in games and news media with his own blend of political opinion, games criticism, and a wit that kills fluff pieces on site. He’s as no-nonsense as they come. Long form interviews, short form reviews, and video essays on what Trump, Oprah, and reactionary thought means for America, you’ll find no shortage of content from this IGN editor-turned-content-maverick. + +Become a subscriber to [Colin’s Patreon here](https://www.patreon.com/colinslaststand/posts). + +**[Download LBRY today](https://lbry.io/get)**. Is your favorite channel not on LBRY? Help us feature what you want to see! Email reilly@lbry.io to make it happen. Or sync your own channel at: https://lbry.io/youtube diff --git a/content/news/163-lbry-development-community-update-Feb-2018.md b/content/news/163-lbry-development-community-update-Feb-2018.md new file mode 100644 index 00000000..bc51d721 --- /dev/null +++ b/content/news/163-lbry-development-community-update-Feb-2018.md @@ -0,0 +1,126 @@ +--- +author: tom-zarebczan +title: 'Development and Community Update February 2018' +date: '2018-03-01 18:00:00' +cover: 'wooden-letters-banner.jpg' +--- +In December, we published the [first ever LBRY Development and Community update](https://lbry.io/news/lbry-development-community-update-1) and followed up with another for [January 2018](https://lbry.io/news/lbry-development-community-update-jan-2018) - be sure to check both out if you missed them! We will continue these updates at the beginning of each month to keep each and every LBRYian up to date on our quest to revolutionize content discovery, sharing and monetization! + +Please take a moment to read our [Looking Back and Moving Forward: LBRY in 2017/2018](https://lbry.io/news/lbry-in-2017-2018) blog post and check out our [roadmap](https://lbry.io/roadmap). + +Before diving in, we want to let everyone know that we’ll be hosting a **live Ask me Anything event** with our CEO Jeremy Kauffman next **Friday (3/9) at 5:30PM ET** on Twitter and Reddit. This will be the first live stream from our office, so please bear with us through any technical difficulties. Join us on the [LBRY subreddit](https://www.reddit.com/r/lbry/) and use #lbryAMA on [Twitter](https://twitter.com/LBRYio), and bring some friends who have burning questions about LBRY! + +To skip the tech stuff and see what’s happened and what’s next in the LBRY community, click the link below. Otherwise, read on! + +[Skip to **Community Happenings**](#com-updates) + +# Development Updates {#dev-updates} +All of our code is open source and available on [GitHub](https://github.com/lbryio). Are you a dev and want to find out more? Check out our [general contributing guide](https://lbry.io/faq/contributing) and our LBRY App specific contributing [document](https://github.com/lbryio/lbry-app/blob/master/CONTRIBUTING.md). Please be patient with us while we improve our technical documentation. Our plan is to create a technical reference site which will be developer focused at https://lbry.tech which will also include a StackExchange like forum for Q&A/troubleshooting. + +### App and Protocol Summary +As you may know from our previous updates, the LBRY app is undergoing a redesign which is taking up a large chunk of the team’s time but the app team is aiming to release a patch to version 0.20 which brings a few bug fixes, an updated LBRY protocol version and possibly a new feature or two (spee.ch thumbnail uploads from within the app, automated subscription downloads). + +On the app side, bug fixes will include: 1) the sorting of published claims, 2) video player issues where content does not play on first attempt, 3) app state will be saved when closing LBRY to tray, 4) disabling of drag and drop of files into the app, 5) poor error messages when publishing and 6) start time of night mode. + +The 0.19 LBRY protocol update is in the final stages of testing and will also include many bug fixes and enhancements. See a full changelog of the [current release candidate](https://github.com/lbryio/lbry/releases/tag/v0.19.0rc37) for details. Some of the highlights are: 1) better tracking of edited claims for both publishers and downloaders, 2) ability to automatically renew expiring claims, 3) ability to update claims if your current LBC balance doesn’t cover the claim amount (it will use the claim amount in the calculation), 4) ability to re-download content at updated claims, 5) improved startup performance, 6) a single database for claim and file information, 7) transaction list to include abandon claim information and 8) smarter wallet address reuse and fixing bugs where addresses were created incorrectly. + +After this round of protocol enhancements, the team will be focusing on improving resolve(process by which claims are looked up on the blockchain) and download performance, availability in the LBRY Peer to Peer layer and blockchain sync optimizations. + +Stay tuned for an updated version of the LBRY app next week! In the meantime, you can download the current version [here](https://lbry.io/get?auto=1) if you don’t have it installed already! + +### App Redesign +The LBRY App redesign continues to make great progress you can follow along on [GitHub](https://github.com/lbryio/lbry-app/issues/848) for the latest status and updates. The latest focus has been on refactoring the inner workings of the Publish page into a more optimized version using the React framework. We also have a community member, @btzr, who is helping out in migrating the dark theme into the new design. + +Want to explore a web based prototype of the new LBRY app design? Head over to [https://design.lbry.io](https://design.lbry.io) to get a preview of what’s to come. This page works best on a Desktop but may display correctly in landscape mode on mobile. *Please note: some of the design features like notifications and commenting are still experimental and most likely will not roll out with the first iteration of the re-design as they require additional support from the protocol to work properly.* + +![App redesign early preview](https://spee.ch/1/app-redesign-preview.jpeg) + +### Subscription Enhancements in Progress +A new round of enhancements to the Subscription feature are being developed. The goal is to increase interactivity, engagement and notification for users who subscribe to channels on LBRY. This will include an option to automatically download new content as it is added to a channel as well as notification features within the app and email. Have questions or comments, drop us a line on the [GitHub issue](https://github.com/lbryio/lbry-app/issues/994). + +### LBRY Mobile for Android +LBRY recently worked with a user interface designer who came up with a very nice and simple design prototype, check out video below for a preview. The process of incorporating this prototype into React Native code is underway. To solve delays deploying the app changes, we had to come up with a way to build the UI and daemon separately, such that the React Native app can be reloaded without having to rebuild the daemon each time (slow!). This enables testing the UI changes relatively quickly against any stable or development build of the daemon. There is a good chance that we will have a basic working mobile Android app in a few weeks! + + + +### spee.ch Update +Spee.ch is now using React! As spee.ch began to grow, we soon realized that in order to provide a robust front end experience we would need more flexibility in the way we build that experience. With that goal in mind, we spent the past few weeks converting the front end code from static handlebars templates to a full fledged React app. This will allow us to do a lot more with efficiently reusing components, building more robust tools for users, and hopefully makes the code base more accessible to community developers who are already using the popular React framework. As part of this transition, we also converted some of the back end code to perform server side rendering and updated the api endpoints. + +### Automated Testing and Coding Tests +As part of our push for improving scaling and overall performance, reliability and availability of the LBRY protocol we've been putting a lot of effort into increasing code coverage (lines of code covered by automated tests) and the sophistication of our integration testing. For example, improve the distributed file sharing protocol we created network models with simulated adverse conditions and then analyzed how LBRY DHT responds to these conditions. Many bugs have been fixed and improvements developed as a result of this work; the best part is that we're doing this in an automated fashion so we'll know instantly when any regressions happen and fix them before deploying new code. Unit testing for blockchain, wallet and other common use cases has also been expanding. + +![Code coverage sample](https://spee.ch/2/code-cov.png) + +# Community Happenings {#com-updates} +If you aren’t part of our Discord community yet, [join us](https://chat.lbry.io) anytime and say hello! Our community allows LBRYians to interact with the team directly and for us to engage users in order to grow the LBRY platform. + +### LBRY Team Expands - Protocol Developer! +Great news, our [team](https://lbry.io/team) is expanding! We’ve recently hired an additional LBRY protocol developer who will be helping Jack and Kay on improving functionality and performance in LBRY’s core component. We are excited to have Lex on board! Welcome him to the team by saying hello to @eukreign on [Discord](https://chat.lbry.io). + +![Lex profile page](https://spee.ch/a/lex-profile.png) + +### LBRY Merchandise Store +On Valentine’s day, LBRY officially launched its at-cost merchandise store through [Apex Apparel](https://apexapparel.shop/collections/lbry) on Discord chat where five lucky community members were sent free merch during an initial giveaway contest. The link was later shared on Reddit and Social media where a few fans have already shared their swag photos. Special thanks to community member @TheSethser for helping us get this project off the ground and for the awesome design work! + +We will tip LBC if you tag us on Twitter or Facebook with a picture of you rocking LBRY swag. Please upload to [spee.ch](https://spee.ch/) and share the post on [Discord](https://chat.lbry.io) or [Reddit](http://reddit.com/r/lbry) to claim your reward. Thanks for your support in spreading LBRY love! + +![swag preview](https://spee.ch/3/LBRY-swag.png) + +### Blockchain Security and Economics +Over the last few months, we’ve noticed that the LBRY mining hash rate has gone up significantly due to the manufacturing of FPGA (specialized mining hardware) and we’ve noticed our [community](https://github.com/lbryio/lbrycrd/issues/85) has their concerns about centralization as well. We will be addressing the general blockchain security and economics discussion with a blog post that explains our take and potential solutions. + +### Youtube Sync Site Almost Ready! +Our revamped YouTube sync page (replacing [this one](https://lbry.io/youtube)) is almost ready to go live! This program will begin to target YouTubers more aggressively with the goal of having them sync their content to the LBRY network. The new process will allow them to claim their channel directly on the LBRY network during signup, detail the monthly LBC incentive based on subscriber counts and provide a sync status view so they monitor the sync progress. Stay tuned for updates! + +![YouTube Sync preview](https://spee.ch/3/sync.png) + +### LBRY Social Media Updates +We’ve surpassed 15k followers on [Facebook](https://www.facebook.com/lbryio) and 30k followers on [Twitter](https://twitter.com/lbryio) - as our audience keeps growing, there will be more opportunities than ever for new users to discover LBRY. We also want our community to be an integral part of our social presence - if you haven’t yet, join our [Discord](https://chat.lbry.io), and feel free to throw out any suggestions for posts, articles, or individuals you think we should reach out to! + +### Twitter LBC Tip Bot +We have opened up a bounty for a [Twitter Tip Bot](https://lbry.io/bounty/twitter-tipbot) to expand our ability to distribute LBC to our Twitter followers. This will accompany our Discord and Reddit tip bots which are powerful tools used by ourselves and our community to reward LBRYians for their contributions, testing and feedback. It will work by tagging the tipbot user in Twitter replies/messages with keywords such as “tip”, “balance”, “withdraw”, “deposit” - very similar to our other tip bots. A community member is very close to getting a tipbot working and you can follow [@LBC_TipBot](https://twitter.com/@LBC_TipBot) for updates. + +### BitcoinTalk Official and Moderated Thread +We are in the beginning stages of gathering information to create a new and official LBRY Bitcointalk thread. There is an [unofficial one](https://bitcointalk.org/index.php?topic=1541268.new#new) out in the wild currently, but it was not started by LBRY Inc, nor is it moderated. The goal is to serve the Crypto community with another medium of discussion and collaboration. It will be a moderated thread which will have specific rules against the typical hyping / pump market talk as this type of banter is not something LBRY participates in, nor does it help the project mature. + +### Favorite Creators Contest in Discord +Head over to our #favoritecreators channel on [Discord](https://chat.lbry.io) to vote on the submitted entries. The winning creator will be offered 10K LBC to sync their content to LBRY! It’s not too late to enter a suggestion either. This experimental contest will run until 3/9/2018. + +![Favorite Creators Entries](https://spee.ch/3/favcreators.png) + +### New Bounties Channel on Discord +Check out our new #bounties channel on [Discord](https://chat.lbry.io). This is the place to go to find occasional mini-tasks to earn LBC as well as any questions you may have about LBRY bounties. Types of mini-tasks may include research, marketing tasks, and testing. + +### Meetups and College Campus Initiatives +LBRY has officially launched their Meetups and College programs! We are [looking for ambassadors](https://lbry.io/meet) to spread the word on college campuses and at live meetups! If you’d like to bring LBRY to your group, we’ll help you with resources, swag, and LBC for your members! + +![Meetup and College initiative](https://spee.ch/7/meet-LBRY.png) + +### LBRY.Community Contest Winners +The [LBRY.Community contest](https://lbry.community/category/votable-contest-entries/) from January wrapped up and the [winners](https://lbry.community/contest-winners-january-2018/) were first announced and tipped on our Discord channel, congrats to all the winners! All entrants were given LBC Credits as a participation bonus and LBRY.Community is also giving out stickers and handbags to all participants and judges. Thanks again to @rouse and @coolguy3289 for coordinating! The next phase of LBRY.Community’s plans are being discussed with our team. + +### New and updated LBRY FAQ Articles +We recently revamped and simplified our [“What is LBRY?”](https://lbry.io/faq/what-is-lbry) FAQ so it’s a tad easier to digest for first time LBRY users. + +The new [LBRY Basics](https://lbry.io/faq/lbry-basics) FAQ entry which will provide first-time (and existing) LBRY app users a better understanding of the various components within the app. It also explains what LBRY accounts are used for and stresses that all LBRY data, including your wallet where credits are stored, is only available on your computer and should be [backed up](https://lbry.io/faq/how-to-backup-wallet) accordingly. + +We’ve also added FAQs which detail LBRY’s [content policy](https://lbry.io/faq/content) and [acceptable use policy](https://lbry.io/faq/acceptable-use-policy). Thanks to @julie for her hard work on these! + +Have an idea for a FAQ or want to help us improve the current ones, check out the code on our [GitHub page](https://github.com/lbryio/lbry.io/tree/master/content/faq) for the lbry.io website. + +### Spee.ch Biz Dev +LBRY is actively looking for file sharing websites which could potentially build upon spee.ch’s codebase or be developed alongside it. We have reached out to numerous candidates, held introductory meetings and will continue to research additional potential partnerships. We are looking for developers who share a vision that is culturally aligned with ours: supporting free speech and decentralized technology. Are you interested or know anyone that is? Feel free to reach out to Bill (@billbit on Discord) or via [email](mailto:bill@lbry.io). + +We are also actively looking for communities or websites that could make use of spee.ch’s image sharing features. This includes researching plugins to applications like Wordpress that would make such an integration easier for users. + +### Babson College Update +On February 22, LBRY CEO Jeremy Kauffman and Growth Director Natalie Mitchell gave a business focused presentation on LBRY and blockchain technology to a group of college students in Professor [Steven Gordon](http://www.babson.edu/Academics/faculty/profiles/Pages/gordon-steven.aspx)’s class at Babson College, a business school in Massachusetts. Natalie shared this feedback with the team: + +"The presentation was really fantastic - which is to say, it turned into a conversation with the students, as well as some Babson faculty who were in attendance. All in attendance kept the very thoughtful questions flowing, which always makes for a fun time if you're the presenters! I'm happy to say that our time there sparked conversations with a few very bright minds who are interested in participating in our fledgling internship program, so that felt like a definite win. + +The take-away, for me, was clear: Students of business/economics are taking note of what is happening in the blockchain space, and they want to be a part of it. Higher education is following suit, moving quickly to offer coursework to prepare future business leaders for the work of further progressing the decentralized business model. It is an understatement to say that this is an exciting time to be working in tech. I can't wait to see what these students, and others, will end up contributing to the space." + +[Back to **Development Updates**](#dev-updates) + +Thanks for supporting LBRY - stay tuned for more news and updates! And if you haven’t downloaded the [LBRY app](https://lbry.io/get?auto=1) yet, what are you waiting for? + diff --git a/content/news/18-its-time-to-liberate-anne-franks-diary.md b/content/news/18-its-time-to-liberate-anne-franks-diary.md index 5c221aad..c94862a9 100644 --- a/content/news/18-its-time-to-liberate-anne-franks-diary.md +++ b/content/news/18-its-time-to-liberate-anne-franks-diary.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: It’s Time To Liberate Anne Frank’s Diary date: '2015-11-18 14:27:39' cover: 'anne-frank-diary.jpg' diff --git a/content/news/19-free-lbry-credits-come-and-get-em.md b/content/news/19-free-lbry-credits-come-and-get-em.md index 72b6f86b..e3804ffb 100644 --- a/content/news/19-free-lbry-credits-come-and-get-em.md +++ b/content/news/19-free-lbry-credits-come-and-get-em.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: 'Free LBRY Credits: Come and Get ‘Em!' date: '2015-11-24 19:43:59' --- diff --git a/content/news/20-open-a-valve-to-gush-classic-movies.md b/content/news/20-open-a-valve-to-gush-classic-movies.md index 78ca4602..52d568a0 100644 --- a/content/news/20-open-a-valve-to-gush-classic-movies.md +++ b/content/news/20-open-a-valve-to-gush-classic-movies.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: Open a Valve to Gush Classic Movies date: '2015-12-02 19:04:36' --- diff --git a/content/news/21-gmu-economist-alex-tabarrok-joins-lbry.md b/content/news/21-gmu-economist-alex-tabarrok-joins-lbry.md index 3b36bab0..6fa2c5af 100644 --- a/content/news/21-gmu-economist-alex-tabarrok-joins-lbry.md +++ b/content/news/21-gmu-economist-alex-tabarrok-joins-lbry.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: GMU Economist Alex Tabarrok Joins LBRY date: '2015-12-07 17:33:37' --- diff --git a/content/news/22-building-the-web-3-0-decentralizing-content-in-an-age-of-centralization.md b/content/news/22-building-the-web-3-0-decentralizing-content-in-an-age-of-centralization.md index f0a2eb00..0bb1783e 100644 --- a/content/news/22-building-the-web-3-0-decentralizing-content-in-an-age-of-centralization.md +++ b/content/news/22-building-the-web-3-0-decentralizing-content-in-an-age-of-centralization.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: 'Web 3.0 with Albert K Lu: Movies, Songs, and Books with No Gatekeepers (Sorry iTunes)' date: '2015-12-09 16:38:00' --- diff --git a/content/news/23-bravenewcoin.md b/content/news/23-bravenewcoin.md index b14f23bc..c7d4a7a5 100644 --- a/content/news/23-bravenewcoin.md +++ b/content/news/23-bravenewcoin.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: 'BraveNewCoin Compares LBRY to Alexandria: Who Will Be the First to Supplant BitTorrent?' date: '2015-12-17 21:55:57' --- diff --git a/content/news/25-huemer-joins-lbry-ethical-advisor.md b/content/news/25-huemer-joins-lbry-ethical-advisor.md index 155e0671..b3398c84 100644 --- a/content/news/25-huemer-joins-lbry-ethical-advisor.md +++ b/content/news/25-huemer-joins-lbry-ethical-advisor.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: LBRY Blockchain App Can Now Tell Right From Wrong date: '2015-12-30 14:59:29' --- diff --git a/content/news/26-jack-robison-escaped-60-years-in-prison-now-hes-revolutionizing-the-internet.md b/content/news/26-jack-robison-escaped-60-years-in-prison-now-hes-revolutionizing-the-internet.md index da32a32b..840b8397 100644 --- a/content/news/26-jack-robison-escaped-60-years-in-prison-now-hes-revolutionizing-the-internet.md +++ b/content/news/26-jack-robison-escaped-60-years-in-prison-now-hes-revolutionizing-the-internet.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: Jack Robison Escaped 60 Years in Prison; Now He’s Revolutionizing the Internet date: '2015-12-31 17:10:59' --- diff --git a/content/news/27-lbry-adds-chief-growth-officer-josh-finer.md b/content/news/27-lbry-adds-chief-growth-officer-josh-finer.md index 309eaab8..9d09428e 100644 --- a/content/news/27-lbry-adds-chief-growth-officer-josh-finer.md +++ b/content/news/27-lbry-adds-chief-growth-officer-josh-finer.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: LBRY Means Business With Addition of Josh Finer, MBA date: '2016-01-06 15:11:11' --- diff --git a/content/news/29-lbry-app-sneak-peak-big-questions-answered-lbry-on-blocktalk-last-night.md b/content/news/29-lbry-app-sneak-peak-big-questions-answered-lbry-on-blocktalk-last-night.md index 800c7fe3..b5053376 100644 --- a/content/news/29-lbry-app-sneak-peak-big-questions-answered-lbry-on-blocktalk-last-night.md +++ b/content/news/29-lbry-app-sneak-peak-big-questions-answered-lbry-on-blocktalk-last-night.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: 'LBRY App Sneak Peak + Big Questions Answered - LBRY on #Blocktalk Last Night' date: '2016-01-15 19:17:12' --- diff --git a/content/news/30-try-lbry-on-os-x-el-capitan.md b/content/news/30-try-lbry-on-os-x-el-capitan.md index 5d49f961..3c1d7ce4 100644 --- a/content/news/30-try-lbry-on-os-x-el-capitan.md +++ b/content/news/30-try-lbry-on-os-x-el-capitan.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: Try LBRY's Graphical Interface On OS X El Capitan date: '2016-01-23 00:15:31' --- diff --git a/content/news/31-annefrank2.md b/content/news/31-annefrank2.md index 868c25d2..3d757bff 100644 --- a/content/news/31-annefrank2.md +++ b/content/news/31-annefrank2.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: Wikimedia Forced to Remove Anne Frank's Diary date: '2016-02-12 19:21:53' cover: 'anne-frank-2.png' diff --git a/content/news/32-if-lbry-succeeds-humanity-wins-lbry-ceo-on-lions-of-liberty-podcast.md b/content/news/32-if-lbry-succeeds-humanity-wins-lbry-ceo-on-lions-of-liberty-podcast.md index e1330aae..3227920f 100644 --- a/content/news/32-if-lbry-succeeds-humanity-wins-lbry-ceo-on-lions-of-liberty-podcast.md +++ b/content/news/32-if-lbry-succeeds-humanity-wins-lbry-ceo-on-lions-of-liberty-podcast.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: 'If LBRY Succeeds, Humanity Wins: LBRY CEO on Lions of Liberty Podcast' date: '2016-02-17 17:45:37' --- diff --git a/content/news/33-zarghamjoins.md b/content/news/33-zarghamjoins.md index 9763623c..26d53bfa 100644 --- a/content/news/33-zarghamjoins.md +++ b/content/news/33-zarghamjoins.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: LBRY Exposes Itself to World; Adds Mad Scientist to Team date: '2016-03-02 18:12:13' cover: 'zargham-joins.jpg' diff --git a/content/news/35-why-doesnt-lbry-just-use-bitcoin.md b/content/news/35-why-doesnt-lbry-just-use-bitcoin.md index fead20d5..2031e5c2 100644 --- a/content/news/35-why-doesnt-lbry-just-use-bitcoin.md +++ b/content/news/35-why-doesnt-lbry-just-use-bitcoin.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: Why Doesn’t LBRY Just Use Bitcoin? date: '2016-03-17 13:31:10' cover: 'why-not-bitcoin2.jpg' diff --git a/content/news/36-built-for-artists-by-autists-lbry-takes-autism-personally.md b/content/news/36-built-for-artists-by-autists-lbry-takes-autism-personally.md index d24b8fa6..bc20bc8c 100644 --- a/content/news/36-built-for-artists-by-autists-lbry-takes-autism-personally.md +++ b/content/news/36-built-for-artists-by-autists-lbry-takes-autism-personally.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: 'Built for Artists by Autists: LBRY Takes Autism Personally' date: '2016-03-21 20:06:18' --- diff --git a/content/news/38-information-gatekeepers-make-our-culture-sick.md b/content/news/38-information-gatekeepers-make-our-culture-sick.md index 368d56d6..58764204 100644 --- a/content/news/38-information-gatekeepers-make-our-culture-sick.md +++ b/content/news/38-information-gatekeepers-make-our-culture-sick.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: 'Information Gatekeepers Make Our Culture Sick' date: '2016-04-26 10:06:18' cover: 'gatekeepers.png' diff --git a/content/news/39-bandcamp-cool-growing-but-still-take-15-percent.md b/content/news/39-bandcamp-cool-growing-but-still-take-15-percent.md index 8e1d4e14..6a8c950d 100644 --- a/content/news/39-bandcamp-cool-growing-but-still-take-15-percent.md +++ b/content/news/39-bandcamp-cool-growing-but-still-take-15-percent.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: Bandcamp Is Cool & Growing – But They Still Take 15% date: '2016-05-06 12:11:11' --- diff --git a/content/news/40-tipping-in-LBC.md b/content/news/40-tipping-in-LBC.md index d0a670f1..83d17268 100644 --- a/content/news/40-tipping-in-LBC.md +++ b/content/news/40-tipping-in-LBC.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: 'Tipping In LBC' date: '2016-05-12 00:06:18' --- diff --git a/content/news/41-apple-lost-my-music.md b/content/news/41-apple-lost-my-music.md index ac07cd1a..3efa6596 100644 --- a/content/news/41-apple-lost-my-music.md +++ b/content/news/41-apple-lost-my-music.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: 'Apple Lost My Music!' date: '2016-05-20 00:06:18' --- diff --git a/content/news/42-bittorrents-new-streaming-service.md b/content/news/42-bittorrents-new-streaming-service.md index 4eb73d0c..0f3e3a36 100644 --- a/content/news/42-bittorrents-new-streaming-service.md +++ b/content/news/42-bittorrents-new-streaming-service.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: 'BitTorrent’s New Streaming Service: Close but No Cigar' date: '2016-05-25 00:06:18' --- diff --git a/content/news/43-ultimate-wizard-meet-alex-grin.md b/content/news/43-ultimate-wizard-meet-alex-grin.md index ea67e03e..8bb8aceb 100644 --- a/content/news/43-ultimate-wizard-meet-alex-grin.md +++ b/content/news/43-ultimate-wizard-meet-alex-grin.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: 'New Core Teammate Is An Ultimate Wizard: Meet Grin' date: '2016-06-07 00:06:18' --- diff --git a/content/news/44-meet-reilly-smith-storyteller.md b/content/news/44-meet-reilly-smith-storyteller.md index 02942988..e812f363 100644 --- a/content/news/44-meet-reilly-smith-storyteller.md +++ b/content/news/44-meet-reilly-smith-storyteller.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: 'LBRY’s Content Curator Is An Indie Kid Who Will Show You What’s Good' date: '2016-06-21 00:06:18' --- diff --git a/content/news/45-lbry-blockchain-live-mine-lbc-now.md b/content/news/45-lbry-blockchain-live-mine-lbc-now.md index 5dc891da..aa8f3cfd 100644 --- a/content/news/45-lbry-blockchain-live-mine-lbc-now.md +++ b/content/news/45-lbry-blockchain-live-mine-lbc-now.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: 'Come and Get ‘Em! LBRY Credits Now Available to Mine' date: '2016-06-29 00:09:00' --- diff --git a/content/news/46-lbry-at-porcfest-first-public-screening-film-via-blockchain.md b/content/news/46-lbry-at-porcfest-first-public-screening-film-via-blockchain.md index 75ab9f99..6107cc30 100644 --- a/content/news/46-lbry-at-porcfest-first-public-screening-film-via-blockchain.md +++ b/content/news/46-lbry-at-porcfest-first-public-screening-film-via-blockchain.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: 'History Is Made - First Public Film Screenings via Blockchain at PorcFest XIII' date: '2016-06-30 00:09:00' --- diff --git a/content/news/47-beta-live-declare-independence-big-media.md b/content/news/47-beta-live-declare-independence-big-media.md index 09136769..b5f5495c 100644 --- a/content/news/47-beta-live-declare-independence-big-media.md +++ b/content/news/47-beta-live-declare-independence-big-media.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: 'LBRY Beta Goes Live! A Declaration of Independence from Big Media' date: '2016-07-04 00:00:01' --- diff --git a/content/news/48-lbry-credits-on-bittrex.md b/content/news/48-lbry-credits-on-bittrex.md index 9d424b6b..5c20fdc6 100644 --- a/content/news/48-lbry-credits-on-bittrex.md +++ b/content/news/48-lbry-credits-on-bittrex.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: 'LBRY Credits Listed on First Exchange! Liquidity Ensues!' date: '2016-07-06 00:06:18' --- diff --git a/content/news/49-mysterious-100k-lbc-revealed.md b/content/news/49-mysterious-100k-lbc-revealed.md index cc84044b..9908162e 100644 --- a/content/news/49-mysterious-100k-lbc-revealed.md +++ b/content/news/49-mysterious-100k-lbc-revealed.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: 'The Mysterious 100K LBC Transaction: Revealed!' date: '2016-07-11 00:06:18' --- diff --git a/content/news/51-launch-a-disaster.md b/content/news/51-launch-a-disaster.md index 37930363..e7a47530 100644 --- a/content/news/51-launch-a-disaster.md +++ b/content/news/51-launch-a-disaster.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: 'LBRY Launch A Disaster' date: '2016-07-20 00:06:18' --- diff --git a/content/news/52-day-in-shoes-venezuelan.md b/content/news/52-day-in-shoes-venezuelan.md index 4bb1deab..9a7f1922 100644 --- a/content/news/52-day-in-shoes-venezuelan.md +++ b/content/news/52-day-in-shoes-venezuelan.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: 'Walking a Day in Venezuelan Shoes' date: '2016-07-26 00:09:18' cover: 'venezuela.jpg' diff --git a/content/news/53-publish-tools-live-earn-1000-dollars.md b/content/news/53-publish-tools-live-earn-1000-dollars.md index 345db523..b69680c1 100644 --- a/content/news/53-publish-tools-live-earn-1000-dollars.md +++ b/content/news/53-publish-tools-live-earn-1000-dollars.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: 'You Can Now Publish on LBRY (& Earn $1,000)' date: '2016-08-04 00:09:00' --- diff --git a/content/news/54-shapeshift-adds-lbc.md b/content/news/54-shapeshift-adds-lbc.md index 7711f7f4..14d42dc8 100644 --- a/content/news/54-shapeshift-adds-lbc.md +++ b/content/news/54-shapeshift-adds-lbc.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: 'ShapeShift Adds LBRY Credits! Instant Conversion to Bitcoin, Ethereum, and More' date: '2016-08-08 00:06:18' --- diff --git a/content/news/55-fight-of-century.md b/content/news/55-fight-of-century.md index c7bbbac0..282081f6 100644 --- a/content/news/55-fight-of-century.md +++ b/content/news/55-fight-of-century.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: 'LBRY Brings You the Fight of the Century' date: '2016-08-10 00:06:18' --- diff --git a/content/news/56-mde-on-lbry.md b/content/news/56-mde-on-lbry.md index d613702c..80e0f90e 100644 --- a/content/news/56-mde-on-lbry.md +++ b/content/news/56-mde-on-lbry.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: 'Adult Swim's Million Dollar Extreme Joins LBRY' date: '2016-08-11 00:06:18' cover: 'mde.jpg' diff --git a/content/news/57-lbry-bounties.md b/content/news/57-lbry-bounties.md index bf081cd2..a13df9b0 100644 --- a/content/news/57-lbry-bounties.md +++ b/content/news/57-lbry-bounties.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: 'Be Like Boba Fett – Earn Bounties for Helping LBRY Grow' date: '2016-08-18 00:06:18' cover: 'boba-fett.png' diff --git a/content/news/58-reweighting-wait-list.md b/content/news/58-reweighting-wait-list.md index 55bea993..daa34801 100644 --- a/content/news/58-reweighting-wait-list.md +++ b/content/news/58-reweighting-wait-list.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: 'LBRY Re-Weighting Massive Beta Waiting List' date: '2016-08-22 00:06:18' --- diff --git a/content/news/59-ui-publishing-tools-upgrades.md b/content/news/59-ui-publishing-tools-upgrades.md index 71231798..b13dd392 100644 --- a/content/news/59-ui-publishing-tools-upgrades.md +++ b/content/news/59-ui-publishing-tools-upgrades.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: 'UI & Publishing Tools Upgrade with Reflector' date: '2016-08-25 00:06:18' --- diff --git a/content/news/60-heckbender-charney-on-lbry.md b/content/news/60-heckbender-charney-on-lbry.md index d118f10e..8acfe0d2 100644 --- a/content/news/60-heckbender-charney-on-lbry.md +++ b/content/news/60-heckbender-charney-on-lbry.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: 'Kinda Sketchy, Totally Legit' date: '2016-08-26 00:06:18' cover: 'heckbendercover.png' diff --git a/content/news/61-nsfw-lbry-settings.md b/content/news/61-nsfw-lbry-settings.md index 4fa4ce73..23117745 100644 --- a/content/news/61-nsfw-lbry-settings.md +++ b/content/news/61-nsfw-lbry-settings.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: 'NSFW: LBRY Bares All (Then Quickly Covers Up)' date: '2016-08-29 00:06:18' cover: 'nude.png' diff --git a/content/news/62-content-without-borders.md b/content/news/62-content-without-borders.md index 8d79192c..331148be 100644 --- a/content/news/62-content-without-borders.md +++ b/content/news/62-content-without-borders.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: 'Content Without Borders' date: '2016-08-31 00:06:18' cover: 'berlinwall.png' diff --git a/content/news/63-joaquin-pixan-singleton-band.md b/content/news/63-joaquin-pixan-singleton-band.md index 4a4045ca..5428031e 100644 --- a/content/news/63-joaquin-pixan-singleton-band.md +++ b/content/news/63-joaquin-pixan-singleton-band.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: '#NewKidsOnTheBlockchain Thursday: Indie Rockers from Ukraine & Classical Singing de la Spain' date: '2016-09-01 00:06:18' cover: 'joaquin-pixan2.jpg' diff --git a/content/news/64-500k-vc-funds-pillar.md b/content/news/64-500k-vc-funds-pillar.md index 9f692d51..579c05ff 100644 --- a/content/news/64-500k-vc-funds-pillar.md +++ b/content/news/64-500k-vc-funds-pillar.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: '$500K in VC Funds from Pillar et al' date: '2016-09-07 00:06:18' --- diff --git a/content/news/67-ray-carballada-media-advisor.md b/content/news/67-ray-carballada-media-advisor.md index 88a4eb78..fbb05b1c 100644 --- a/content/news/67-ray-carballada-media-advisor.md +++ b/content/news/67-ray-carballada-media-advisor.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: 'LBRY’s New Media Advisor: An Artist, A Businessman, A Gentleman' date: '2016-09-20 00:06:18' --- diff --git a/content/news/71-credit-policy-third-quarter-report.md b/content/news/71-credit-policy-third-quarter-report.md index 6002baff..082024f5 100644 --- a/content/news/71-credit-policy-third-quarter-report.md +++ b/content/news/71-credit-policy-third-quarter-report.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: 'Credit Policy and 3rd Quarter Credit Report' date: '2016-10-05 00:06:18' cover: 'lbry-3d-1000.png' diff --git a/content/news/73-alex-liebowitz.md b/content/news/73-alex-liebowitz.md index 27d36f8a..672ee976 100644 --- a/content/news/73-alex-liebowitz.md +++ b/content/news/73-alex-liebowitz.md @@ -1,5 +1,5 @@ --- -author: lbry +author: samuel-lbryian title: 'Meet the Least Interesting Guy on the LBRY Team' date: '2016-10-10 00:06:18' --- diff --git a/controller/Controller.class.php b/controller/Controller.class.php index 5a978a86..ef84209d 100644 --- a/controller/Controller.class.php +++ b/controller/Controller.class.php @@ -138,6 +138,7 @@ class Controller '/art' => '/what', '/why' => '/learn', '/feedback' => '/learn', + '/joinus' => '/join-us', '/faq/when-referral-payouts' => '/faq/referrals', '/faq/why-care-about-lbry' => '/get', '/news/meet-the-lbry-founders' => '/team', diff --git a/data/i18n/en.yaml b/data/i18n/en.yaml index aac26d2f..44e9b735 100644 --- a/data/i18n/en.yaml +++ b/data/i18n/en.yaml @@ -20,6 +20,7 @@ description: home: Meet LBRY, a content sharing and publishing platform that is decentralized and owned by its users. join: Follow along and receive updates about LBRY via email. learn: Learn more about LBRY, the technology that puts you back in control of the internet. + meetup: LBRY is looking for ambassadors to spread the word to College campuses and Meetup groups worldwide! news: Access information and content in ways you never dreamed possible. Earn credits for your unused bandwidth and diskspace. no-os: Download or install the latest version of LBRY. press: LBRY Press Kit. Information and media for those who want to report on LBRY. @@ -84,6 +85,7 @@ learn: explorer: Block Explorer how: Learn how LBRY will forever improve how we create and share with one another. join: Join Us + contact: Contact Us nerd: Nerd Out rebels: Learn more about the relentless rebels changing the internet. team: About The Team @@ -247,7 +249,7 @@ title: publish: Publish refer: Share and Earn what: "Art in the Internet Age: An Introduction to LBRY" - meetup: Let LBRY Join Your Group + meetup: Have LBRY Join Your Next Meetup! roadmap: title: LBRY Roadmap description: See past and future progress on development of LBRY, the world's first user-controlled digital marketplace. @@ -265,4 +267,4 @@ dmca: rightsholder: The name of the entity that owns the rights to the infringing content email: All communication regarding this claim will be sent to this address identifier: Name, claim ID, or another way for us to identify the infringing content - form_submit: Submit Report \ No newline at end of file + form_submit: Submit Report diff --git a/dev.sh b/dev.sh index 6d144815..06fe5fb4 100755 --- a/dev.sh +++ b/dev.sh @@ -1,5 +1,7 @@ #!/bin/bash +PHPBIN=php7.0 + DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" @@ -7,4 +9,8 @@ if [ ! -e "data/config.php" ]; then cp "$DIR/data/config.php.example" "$DIR/data/config.php" fi -php --server localhost:8000 --docroot "$DIR/web" "$DIR/web/index.php" +if ! which $PHPBIN 2>/dev/null; then + PHPBIN=php +fi + +$PHPBIN --server localhost:8000 --docroot "$DIR/web" "$DIR/web/index.php" diff --git a/docker.sh b/docker.sh index 2a2d9ab6..7bf021df 100755 --- a/docker.sh +++ b/docker.sh @@ -13,4 +13,4 @@ docker run --rm -it --name "dev.lbry.io" \ -p "127.0.0.1:8000:8000" \ -u "$(id -u):$(id -g)" \ php:7-alpine \ - php --server "0.0.0.0:8000" --docroot "web/" "index.php" + php --server "0.0.0.0:8000" --docroot "web/" "web/index.php" diff --git a/view/Response.class.php b/view/Response.class.php index 1862f6c1..c4abdf94 100644 --- a/view/Response.class.php +++ b/view/Response.class.php @@ -21,7 +21,7 @@ class Response $jsCalls = [], $assets = [ 'js' => [ - '/js/jquery-2.1.3.min.js', + '/js/jquery-3.3.1.min.js', '/js/global.js' ], 'css' => ['/css/all.css'] @@ -32,7 +32,8 @@ class Response $contentSent = false, $isHeadersOnly = false, $gzipResponseContent = true, - $metaImages = []; + $metaImages = [], + $facebookAnalyticsType = "PageView"; public static function setMetaDescription($description) { @@ -365,6 +366,14 @@ class Response return $statusTexts[$code] ?? null; } + public static function setFacebookPixelAnalyticsType($type){ + static::$facebookAnalyticsType = $type; + } + + public static function getFacebookPixelAnalyticsType(){ + return static::$facebookAnalyticsType; + } + protected static function normalizeHeaderName($name): string { return preg_replace_callback( diff --git a/view/template/acquisition/youtube.php b/view/template/acquisition/youtube.php index bd20f625..f3e4c707 100644 --- a/view/template/acquisition/youtube.php +++ b/view/template/acquisition/youtube.php @@ -75,7 +75,7 @@

I Have Questions

Have a big audience? Let Reilly know how we can support you - by emailing him directly. + by emailing him directly.

- 'reilly-smith-youtube']) ?> + 'reilly-smith']) ?> diff --git a/view/template/acquisition/yt2.php b/view/template/acquisition/yt2.php index f9db23a4..fc1cb28d 100644 --- a/view/template/acquisition/yt2.php +++ b/view/template/acquisition/yt2.php @@ -145,7 +145,8 @@ $reward = LBRY::youtubeReward();

LBRY Credits and Your Channel

-

Be compensated for your value to your audience and the network, not what advertisers think you're worth.

+

After you sync, receive LBRY Credits every month for one year based on your current subscriber count.

+

The more you give to the network, the more it gives back.

Partner Programs

LBC (0.3267 USD)

diff --git a/view/template/layout/_analytics.php b/view/template/layout/_analytics.php index 45234b75..14d2e189 100644 --- a/view/template/layout/_analytics.php +++ b/view/template/layout/_analytics.php @@ -16,18 +16,10 @@ h.end=i=function(){s.className=s.className.replace(RegExp(' ?'+y),'')}; ga('require', 'GTM-NT8579P'); ga('send', 'pageview'); - + !function(f,b,e,v,n,t,s) {if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)}; if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t,s)}(window,document,'script', 'https://connect.facebook.net/en_US/fbevents.js'); - !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod? - n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n; - n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0; - t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, - document,'script','//connect.facebook.net/en_US/fbevents.js'); - - fbq('init', '1618717031725766'); - fbq('track', 'PageView'); - - + fbq('init', '1618717031725766'); + fbq('track', ''); diff --git a/view/template/mail/_contact-us.php b/view/template/mail/_contact-us.php new file mode 100644 index 00000000..185d5260 --- /dev/null +++ b/view/template/mail/_contact-us.php @@ -0,0 +1,3 @@ + diff --git a/view/template/mail/_subscribeForm.php b/view/template/mail/_subscribeForm.php index dedbd15b..9a9068e5 100644 --- a/view/template/mail/_subscribeForm.php +++ b/view/template/mail/_subscribeForm.php @@ -1,7 +1,7 @@ -
+
@@ -19,5 +19,10 @@
{{email.disclaimer}}
+ + $("#mail_form").submit(function() { + fbq('track', 'Lead'); + }); +
\ No newline at end of file diff --git a/view/template/nav/_globalItems.php b/view/template/nav/_globalItems.php index e6218669..a2c7ac80 100644 --- a/view/template/nav/_globalItems.php +++ b/view/template/nav/_globalItems.php @@ -8,19 +8,19 @@
diff --git a/view/template/nav/_learnFooter.php b/view/template/nav/_learnFooter.php index f27ffa59..60d4720b 100644 --- a/view/template/nav/_learnFooter.php +++ b/view/template/nav/_learnFooter.php @@ -15,9 +15,10 @@
@@ -32,8 +33,11 @@
  • Check out the latest news.
  • + +
  • Read our Frequently Asked Questions.
  • +
    - \ No newline at end of file + diff --git a/view/template/page/college.php b/view/template/page/college.php index f069edc6..57333fe1 100644 --- a/view/template/page/college.php +++ b/view/template/page/college.php @@ -2,7 +2,7 @@ true, 'isAbsolute' => true]) ?>
    -
    +

    Wanna Meet Up? diff --git a/view/template/page/join-us.php b/view/template/page/join-us.php index 0def0d6e..d24e42ad 100644 --- a/view/template/page/join-us.php +++ b/view/template/page/join-us.php @@ -70,35 +70,36 @@

    Positions

    + If a position is marked paused, you are still welcome to contact us. For blockchain, protocol, and application engineers, we will be hiring regularly throughout 2018. +
    +

    Blockchain Engineer Active

    +

    + This position involves working directly on the LBRY blockchain, written in C++. +

    +

    + Competence with cryptography, security, and networks is mandatory. Experience with blockchain is beneficial but not required. +

    +

    + Blockchain work is like being a goalkeeper: good work goes under-appreciated, but mistakes are catastrophic. You must be the kind of masochist that enjoys this. +

    +

    Protocol Engineers Paused

    +

    + The LBRY protocol consists of a set of APIs provided via a daemon. This daemon is comprised of several sub-components, and interacts with the blockchain, wallet, and other remote daemons that constitute the LBRY data network. +

    +

    + The LBRY daemon and wallet are both written in Python, but maybe you're the one to rewrite them in Go (we're kidding) (probably). +

    +

    Competence with security, operating systems, and networks is mandatory. Experience with peer-to-peer technology is beneficial but not required.

    -

    Blockchain Engineer

    -

    - This position involves working directly on the LBRY blockchain, written in C++. -

    -

    - Competence with cryptography, security, and networks is mandatory. Experience with blockchain is beneficial but not required. -

    -

    - Blockchain work is like being a goalkeeper: good work goes under-appreciated, but mistakes are catastrophic. You must be the kind of masochist that enjoys this. -

    -

    Protocol Engineers

    -

    - The LBRY protocol consists of a set of APIs provided via a daemon. This daemon is comprised of several sub-components, and interacts with the blockchain, wallet, and other remote daemons that constitute the LBRY data network. -

    -

    - The LBRY daemon and wallet are both written in Python, but maybe you're the one to rewrite them in Go (we're kidding) (probably). -

    -

    Competence with security, operating systems, and networks is mandatory. Experience with peer-to-peer technology is beneficial but not required.

    - -

    Web Developer

    -

    - We're seeking someone to manage this very website, as well as other LBRY web properties and projects. -

    -

    - This position involves both design and programming elements and is good for someone with a mix of creativity and logic. - The LBRY website currently uses a moderate amount of PHP, but you be the product owner and have full control over the implementation. -

    - +

    Web Developer Paused

    +

    + We're seeking someone to manage this very website, as well as other LBRY web properties and projects. +

    +

    + This position involves both design and programming elements and is good for someone with a mix of creativity and logic. + The LBRY website currently uses a moderate amount of PHP, but you be the product owner and have full control over the implementation. +

    +

    Applying

    How To Apply

    @@ -135,7 +136,7 @@ lbry-app Application or UX Engineer - good first issues (coming 1/17) + good first issues lbrycrd diff --git a/view/template/page/learn.php b/view/template/page/learn.php index 6aaa2551..ff623649 100644 --- a/view/template/page/learn.php +++ b/view/template/page/learn.php @@ -57,8 +57,11 @@

    {{learn.join}}

    +

    {{learn.contact}}

    +
    -
    + + diff --git a/view/template/page/meet.php b/view/template/page/meet.php new file mode 100644 index 00000000..33a5155c --- /dev/null +++ b/view/template/page/meet.php @@ -0,0 +1,34 @@ + + + true, 'isAbsolute' => true]) ?> +
    +
    +
    +

    + Wanna Meet Up? +

    +

    + LBRY is looking for ambassadors to spread the word to College campuses and Meetup groups worldwide! +

    + +
    +
    +
    +
    +

    Interested in bringing LBRY to your local college campus or Meetup group?

    +

    We're looking for folks to demonstrate our platform and latest technologies. What's in it for you? We'll provide you with LBRY credits for your group, LBRY swag, and presentation resources.

    +

    Okay. How do I get involved?

    +

    Enter your email below and we'll tell you more.

    + 'meetup', + 'submitLabel' => 'Sign me up', + 'hideDisclaimer' => true, + 'largeInput' => true, + 'btnClass' => 'btn-alt btn-large', + ]) ?> +
    +
    +
    + diff --git a/view/template/page/press-kit.php b/view/template/page/press-kit.php index 98c5afae..37711873 100644 --- a/view/template/page/press-kit.php +++ b/view/template/page/press-kit.php @@ -32,7 +32,7 @@

    {{press.team}}

    - +
    diff --git a/view/template/page/team.php b/view/template/page/team.php index 70fe4789..acc1cce2 100644 --- a/view/template/page/team.php +++ b/view/template/page/team.php @@ -19,7 +19,7 @@

    Technical

    -
    $bioSlug]) ?> diff --git a/view/template/social/_list.php b/view/template/social/_list.php index b9df1085..52425ff5 100644 --- a/view/template/social/_list.php +++ b/view/template/social/_list.php @@ -1,12 +1,12 @@ diff --git a/view/template/social/_listDev.php b/view/template/social/_listDev.php index 6a55b972..fd933b32 100644 --- a/view/template/social/_listDev.php +++ b/view/template/social/_listDev.php @@ -10,11 +10,11 @@ The API
    diff --git a/web/img/blog-covers/nickatnyte-banner.jpg b/web/img/blog-covers/nickatnyte-banner.jpg new file mode 100644 index 00000000..c575d86f Binary files /dev/null and b/web/img/blog-covers/nickatnyte-banner.jpg differ diff --git a/web/img/blog-covers/srod-banner.png b/web/img/blog-covers/srod-banner.png new file mode 100644 index 00000000..f76072a3 Binary files /dev/null and b/web/img/blog-covers/srod-banner.png differ diff --git a/web/img/table2.jpg b/web/img/table2.jpg new file mode 100644 index 00000000..0be3490f Binary files /dev/null and b/web/img/table2.jpg differ diff --git a/web/js/jquery-2.1.3.min.js b/web/js/jquery-2.1.3.min.js deleted file mode 100644 index 25714ed2..00000000 --- a/web/js/jquery-2.1.3.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery v2.1.3 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ -!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.3",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=hb(),z=hb(),A=hb(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},eb=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fb){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function gb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+rb(o[l]);w=ab.test(a)&&pb(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function hb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ib(a){return a[u]=!0,a}function jb(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function kb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function lb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function nb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function ob(a){return ib(function(b){return b=+b,ib(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pb(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=gb.support={},f=gb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=gb.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",eb,!1):e.attachEvent&&e.attachEvent("onunload",eb)),p=!f(g),c.attributes=jb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=jb(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=jb(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(jb(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),jb(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&jb(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return lb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?lb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},gb.matches=function(a,b){return gb(a,null,null,b)},gb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return gb(b,n,null,[a]).length>0},gb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},gb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},gb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},gb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=gb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=gb.selectors={cacheLength:50,createPseudo:ib,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||gb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&gb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=gb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||gb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ib(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ib(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ib(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ib(function(a){return function(b){return gb(a,b).length>0}}),contains:ib(function(a){return a=a.replace(cb,db),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ib(function(a){return W.test(a||"")||gb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:ob(function(){return[0]}),last:ob(function(a,b){return[b-1]}),eq:ob(function(a,b,c){return[0>c?c+b:c]}),even:ob(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:ob(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:ob(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:ob(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function sb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function tb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ub(a,b,c){for(var d=0,e=b.length;e>d;d++)gb(a,b[d],c);return c}function vb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wb(a,b,c,d,e,f){return d&&!d[u]&&(d=wb(d)),e&&!e[u]&&(e=wb(e,f)),ib(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ub(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:vb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=vb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=vb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sb(function(a){return a===b},h,!0),l=sb(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sb(tb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wb(i>1&&tb(m),i>1&&rb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xb(a.slice(i,e)),f>e&&xb(a=a.slice(e)),f>e&&rb(a))}m.push(c)}return tb(m)}function yb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=vb(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&gb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ib(f):f}return h=gb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,yb(e,d)),f.selector=a}return f},i=gb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&pb(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&rb(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&pb(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=jb(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),jb(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||kb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&jb(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||kb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),jb(function(a){return null==a.getAttribute("disabled")})||kb(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),gb}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){return M.access(a,b,c) -},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthx",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]*)\/>/gi,bb=/<([\w:]+)/,cb=/<|&#?\w+;/,db=/<(?:script|style|link)/i,eb=/checked\s*(?:[^=]|=\s*.checked.)/i,fb=/^$|\/(?:java|ecma)script/i,gb=/^true\/(.*)/,hb=/^\s*\s*$/g,ib={option:[1,""],thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};ib.optgroup=ib.option,ib.tbody=ib.tfoot=ib.colgroup=ib.caption=ib.thead,ib.th=ib.td;function jb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function kb(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function lb(a){var b=gb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function mb(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function nb(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function ob(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pb(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=ob(h),f=ob(a),d=0,e=f.length;e>d;d++)pb(f[d],g[d]);if(b)if(c)for(f=f||ob(a),g=g||ob(h),d=0,e=f.length;e>d;d++)nb(f[d],g[d]);else nb(a,h);return g=ob(h,"script"),g.length>0&&mb(g,!i&&ob(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(cb.test(e)){f=f||k.appendChild(b.createElement("div")),g=(bb.exec(e)||["",""])[1].toLowerCase(),h=ib[g]||ib._default,f.innerHTML=h[1]+e.replace(ab,"<$1>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=ob(k.appendChild(e),"script"),i&&mb(f),c)){j=0;while(e=f[j++])fb.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(ob(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&mb(ob(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(ob(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!db.test(a)&&!ib[(bb.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(ab,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ob(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(ob(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&eb.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(ob(c,"script"),kb),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,ob(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,lb),j=0;g>j;j++)h=f[j],fb.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(hb,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qb,rb={};function sb(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function tb(a){var b=l,c=rb[a];return c||(c=sb(a,b),"none"!==c&&c||(qb=(qb||n("