Question:
Hello, On Firefox 34 on a Windows 7 32-bit PC, the link to download Google Chrome on challenge 14 is not working.
Nice catch! Yes, I simply neglected to add the link. I've it to and re-seeded the database. It now works. Thanks!

{ <del> "node": true </del> <ins> /* * ENVIRONMENTS * ================= */ // Define globals exposed by Node.js. "node": true, /* * ENFORCING OPTIONS * ================= */ // Force all variable names to use either camelCase style or UPPER_CASE // with underscores. "camelcase": true, // Prohibit use of == and != in favor of === and !==. "eqeqeq": true, // Suppress warnings about == null comparisons. "eqnull": true, // Enforce tab width of 2 spaces. "indent": 2, // Prohibit use of a variable before it is defined. "latedef": true, // Require capitalized names for constructor functions. "newcap": true, // Enforce use of single quotation marks for strings. "quotmark": "single", // Prohibit trailing whitespace. "trailing": true, // Prohibit use of explicitly undeclared variables. "undef": true, // Warn when variables are defined but never used. "unused": true, // Enforce line length to 80 characters "maxlen": 80 </ins> }

<ins> { /* * ENVIRONMENTS * ================= */ // Define globals exposed by modern browsers. "browser": true, // Define globals exposed by jQuery. "jquery": true, /* * ENFORCING OPTIONS * ================= */ // Force all variable names to use either camelCase style or UPPER_CASE // with underscores. "camelcase": true, // Prohibit use of == and != in favor of === and !==. "eqeqeq": true, // Suppress warnings about == null comparisons. "eqnull": true, // Enforce tab width of 2 spaces. "indent": 2, // Prohibit use of a variable before it is defined. "latedef": true, // Require capitalized names for constructor functions. "newcap": true, // Enforce use of single quotation marks for strings. "quotmark": "single", // Prohibit trailing whitespace. "trailing": true, // Prohibit use of explicitly undeclared variables. "undef": true, // Warn when variables are defined but never used. "unused": true, // Enforce line length to 80 characters "maxlen": 80, // Enforce placing 'use strict' at the top function scope "strict": true' } </ins>


Question:
Hello, On Firefox 34 on a Windows 7 32-bit PC, the link to download Google Chrome on challenge 14 is not working.
Nice catch! Yes, I simply neglected to add the link. I've it to and re-seeded the database. It now works. Thanks!

"Smallest Common Multiple": "https://www.mathsisfun.com/least-common-multiple.html", "Permutations": "https://www.mathsisfun.com/combinatorics/combinations-permutations.html", "HTML Entities": "http://dev.w3.org/html5/html-author/charref", <ins> "Symmetric Difference": "https://www.youtube.com/watch?v=PxffSUQRkG4", </ins> // ========= GLOBAL OBJECTS "Global Array Object" : "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array",

"assert.deepEqual(sym([1, 1]), [1], 'should return an array of unique values');" ], "MDNlinks": [ <del> "Array.reduce()" </del> <ins> "Array.reduce()", "Symmetric Difference" </ins> ], "challengeType": 5, "nameCn": "",


Question:
Hello, On Firefox 34 on a Windows 7 32-bit PC, the link to download Google Chrome on challenge 14 is not working.
Nice catch! Yes, I simply neglected to add the link. I've it to and re-seeded the database. It now works. Thanks!

], "tests": [ "assert(editor.match(/json.map/gi), 'The message box should have something in it.')" <del> ], </del> <ins> ], </ins> "challengeSeed": [ "fccss", "  $(document).ready(function() {",

"id": "bb000000000000000000004", "title":  "Render Images from Data Sources", "description": [  "In the JSON that we receive from Free Code Camp's Cat Photo API, each object has an attribute called "imageLink".", "When we're looping through these objects, let's check whether an object attribute (key) is imageLink. If it is, instead of outputing the image link, let's render the image.",   "In the JSON that we receive data from Free Code Camp's Cat Photo API.", "When we're looping through these strings, let's check whether they are links. If it is, instead of outputing the image link, let's render the image.",  "Here's the code that does this:", "if(val.match("http")) {", "  html = html + '<img src = "' + val + '">';", "}" ], "tests": [  "assert(editor.match(/val.match/gi), 'You should have accessed the imageLink of each cat object.')"   "assert(editor.match(/val.match/gi), 'You should have checked whether the strings contain links.')"  ], "challengeSeed": [ "fccss",


Question:
It flashes the form fields for a second and then is blank between "Update your profile here:" and "Actions" headings. Here's the console error: TypeError: Cannot read property 'toLowerCase' of undefined at at at at l.$eval () at l.$digest () at l.$apply () at l () at O () at () That looks like it's on the $() on line 49. The JSON from my /account/api doesn't have a user.profile.username key. Maybe it would be a simple fix of piping? () '';
Which method did you use to sign up for freecodecamp? It's an issue of your username not existing.
Signed up with email.
How long ago did you sign up for FCC? On Mon Jan 12 2015 at 11:40:50 AM Justin Rogers wrote:
Around December 8th. Am I the only document without a username in the db?

User Story #14: My legend should contain rect elements. User Story #15: The rect elements in the legend should use at least 4 different fill colors. User Story #16: I can mouse over an area and see a tooltip with a corresponding id="tooltip" which displays more information about the area.  User Story #16: My tooltip should have a data-year property that corresponds to the data-year of the active area.   User Story #17: My tooltip should have a data-year property that corresponds to the data-year of the active area.  Here is the dataset you will need to complete this project: https://raw.githubusercontent.com/freeCodeCamp/ProjectReferenceData/master/global-temperature.json You can build your project by forking this CodePen pen. Or you can use this CDN link to run the tests in any environment you like: https://cdn.freecodecamp.org/testable-projects-fcc/v1/bundle.js Once you're done, submit the URL to your working project with all its tests passing.


Question:
If I try to view a FCC user by entering a URL () and the user isn't found, an error is displayed when I return to the FCC page ("We couldn't find a Code Camper with that username."). The error bubble pushes down the "Fork me on GitHub" ribbon so that it isn't flush with the top navbar of the page. !
Thanks for bringing this to our attention, we'll get a fix in shortly. On Mon Jan 12 2015 at 9:58:52 AM Adam Hollett wrote:
The fix would involve moving the ribbon into and conditionally showing it on the view (otherwise we'd have to move the flash notification element down into each individual view). But we've decided to remove this element from our forthcoming simplified landing page.

# --description-- <del> Your first building looks pretty good now. Let's make some more! Nest three new `div` elements in the `background-buildings` container and give them the classes of `bb2`, `bb3`, and `bb4` in that order. These will be three more buildings for the background. </del> <ins> Your first building looks pretty good now. Nest three new `div` elements in the `background-buildings` container and give them the classes of `bb2`, `bb3`, and `bb4` in that order. These will be three more buildings for the background. </ins> # --hints--


Question:
When opening in chrome, the "update your profile" section does not load any fields underneath. !
Database merge resolved the issue.

الآن ، كيف تخبر كمبيوتر للعثور عليه. <del> لا يمكن للكمبيوتر النظر إلى أكثر من القيمة في وقت محدد من الوقت. لذلك يأخذ عنصر واحد من الصفيف والتحقق مما إذا كان هو نفسه ما كنت أبحث عنه. </del> <ins> لا يمكن للكمبيوتر النظر إلى أكثر من قيمة في نفس الوقت. لذلك يأخذ عنصر واحد من الصفيف والتحقق مما إذا كان هو نفسه ما كنت أبحث عنه. </ins> ![بحث خطي 3](https://i.imgur.com/ZOSxeZD.jpg) العنصر الأول لم يتطابق. لذلك انتقل إلى المرحلة التالية. <ins> الوقت </ins> ![بحث خطي 4](https://i.imgur.com/SwKsPxD.jpg) وما إلى ذلك وهلم جرا…

#### موارد آخرى <del> [بحث خطي - CS50](https://www.youtube.com/watch?v=vZWfKBdSgXI) </del>  No newline at end of file <ins> [بحث خطي - CS50](https://www.youtube.com/watch?v=vZWfKBdSgXI) </ins>


Question:
When opening in chrome, the "update your profile" section does not load any fields underneath. !
Database merge resolved the issue.

```javascript if (process.env.VAR_NAME === "allCaps") { <del> resonse = "Hello World".toUpperCase(); </del> <ins> response = "Hello World".toUpperCase(); </ins> } else { response = "Hello World"; }


Question:
Last paragraph - 'persevere' is spelled incorrectly as 'perservere' !
Good catch, thanks! I've gone ahead and committed a fix correcting the typo. In the future, if you notice something small like this you can actually find the file in our repository (in this case it was in ) click the little icon in the top right of the window that looks like a pencil, and fix it yourself. Then just click on commit changes and submit a pull request.
Thanks Nathan I did fork the repo and tried to submit a pull request, but could not figure out how. Will save that for another day. Curious question (because I am interested in general in business models): How will freecodecamp make money? Or is it just pure open source all the way through to the business model? At first I thought perhaps the non profits were being charged something. Darren
You will have to ask Quincy that question, I don't really feel at liberty sharing the planning details. On Wed Jan 14 2015 at 10:58:23 AM Darren Burgess wrote:
Hi Darren, you can read about our plans here:

وهي مقسمة إلى الفئات التالية: *   الأعداد الصحيحة <del> *   أرقام النقطة العائمة *   الشخصيات *   اكتب منطقي </del> <ins> *   الاعداد العشرية *   الرموز *   القيم المنطقية </ins> تفاصيل كل نوع من أنواع البيانات مذكورة أدناه: ## الأعداد الصحيحة: <del> هذه هي من أربعة أنواع: `byte` ، `short` ، `int` ، `long` . من المهم ملاحظة أن هذه القيم موجبة وسالبة. يتم تخزين الأعداد الصحيحة في جهاز الكمبيوتر باستخدام [مكمل 2](http://www.ele.uri.edu/courses/ele447/proj_pages/divid/twos.html) . ويتكون من قيم سلبية وإيجابية ولكن بصيغ مختلفة مثل `(-1 to -128)` أو `(0 to +127)` . يمكن أن يحتوى عدد صحيح غير موقعة على قيمة موجبة أكبر ، ولا توجد قيمة سالبة مثل `(0 to 255)` . على عكس C ++ لا يوجد عدد صحيح غير موقعة في Java. </del> <ins> هذه هي من أربعة أنواع: `byte` ، `short` ، `int` ، `long` . من المهم ملاحظة أن هذه القيم موجبة وسالبة. يتم تخزين الأعداد الصحيحة في جهاز الكمبيوتر باستخدام [مكمل 2](http://www.ele.uri.edu/courses/ele447/proj_pages/divid/twos.html) . ويتكون من قيم سالبة وموجبة ولكن بصيغ مختلفة مثل `(-1 to -128)` أو `(0 to +127)` . يمكن أن يحتوى عدد صحيح غير موقعة على قيمة موجبة أكبر ، ولا توجد قيمة سالبة مثل `(0 to 255)` . على عكس C ++ لا يوجد عدد صحيح غير موقعة في Java. </ins> <del> ### بايت: </del> <ins> ### بايت (byte): </ins> نوع البيانات بايت هو عدد صحيح مكمل 8 بت موقعة اثنين. <del> `Wrapper Class: Byte </del> <ins> `Wrapper Class (الفئة): Byte </ins> <del> Minimum value: -128 (-2^7) </del> <ins> Minimum value (القيمة الاصغر): -128 (-2^7) </ins> <del> Maximum value: 127 (2^7 -1) </del> <ins> Maximum value (القيمة القصوى): 127 (2^7 -1) </ins> <del> Default value: 0 </del> <ins> Default value (القيمة الافتراضية): 0 </ins> <del> Example: byte a = 10 , byte b = -50; </del> <ins> Example (مثال): byte a = 10 , byte b = -50; </ins> ` <del> ### قصيرة: </del> <ins> ### قصيرة (short): </ins> نوع البيانات القصير هو عدد صحيح مكمل من 16 بت موقعة اثنين. <del> `Wrapper Class: Short </del> <ins> `Wrapper Class (الفئة): Short </ins> <del> Minimum value: -32,768 (-2^15) </del> <ins> Minimum value (القيمة الصغرى): -32,768 (-2^15) </ins> <del> Maximum value: 32,767 (2^15 -1) </del> <ins> Maximum value (القيمة القصوى): 32,767 (2^15 -1) </ins> <del> Default value: 0. </del> <ins> Default value (القيمة الافتراضية): 0. </ins> <del> Example: short s = 10, short r = -1000; </del> <ins> Example (مثال): short s = 10, short r = -1000; </ins> ` <del> ### الباحث: </del> <ins> ### العدد الصحيح (integer): </ins> نوع البيانات IN هو عدد صحيح مكمل 32 بت موقعة اثنين. يتم استخدامه بشكل عام كنوع بيانات افتراضي للقيم المتكاملة إلا إذا كان هناك قلق حول الذاكرة. <del> `Wrapper Class: Integer </del> <ins> `Wrapper Class (الفئة): Integer </ins> <del> Minimum value: (-2^31) </del> <ins> Minimum value (القيمة الصغرى): (-2^31) </ins> <del> Maximum value: (2^31 -1) </del> <ins> Maximum value (القيمة القصوى): (2^31 -1) </ins> <del> The default value: 0. </del> <ins> The default value (القيمة الافتراضية): 0. </ins> <del> Example: int a = 50000, int b = -20 </del> <ins> Example (مثال): int a = 50000, int b = -20 </ins> ` <del> ### طويل: </del> <ins> ###  طويل (long): </ins> نوع بيانات طويل هو عدد صحيح مكمل 64 بت موقعة اثنين. <del> `Wrapper Class: Long </del> <ins> `Wrapper Class (الفئة): Long </ins> <del> Minimum value: (-2^63) </del> <ins> Minimum value (القيمة الصغرى): (-2^63) </ins> <del> Maximum value: (2^63 -1) </del> <ins> Maximum value (القيمة القصوى): (2^63 -1) </ins> <del> Default value: 0L. </del> <ins> Default value (القيمة الافتراضية): 0L. </ins> <del> Example: long a = 100000L, long b = -600000L; </del> <ins> Example (مثال): long a = 100000L, long b = -600000L; </ins> By default all integer type variable is "int". So long num=600851475143  will give an error. But it can be specified as long by appending the suffix L (or l) ` <del> ## نقطة عائمة: </del> <ins> ## اعداد عشرية: </ins> تسمى هذه أيضًا أرقامًا حقيقية وتستخدم للتعبيرات التي تتضمن دقة كسرية. هذه من نوعين: `float` ، `double` . يتم تجنب Float فعليًا في حالة البيانات الدقيقة مثل بيانات العملات أو الأبحاث. <del> ### تطفو: </del> <ins> ### تطفو (float): </ins> نوع بيانات عائم عبارة عن [نقطة عائمة IEEE 754](http://steve.hollasch.net/cgindex/coding/ieeefloat.html) ذات دقة واحدة 32 بت. <del> `Wrapper Class: Float </del> <ins> `Wrapper Class (الفئة): Float </ins> Float is mainly used to save memory in large arrays of floating point numbers. <ins> اساسا تستخدم لحفظ الذاكرة في المصفوفات المكونة من الارقام العشرية ذات دقة واحدة(float) </ins> <del> Default value: 0.0f. </del> <ins> Default value (القيمة الافتراضية): 0.0f. </ins> <del> Example: float f1 = 24.5f; </del> <ins> Example (مثال): float f1 = 24.5f; The default data type of floating-point number is double. So float f = 24.5 will introduce an error. نوع القيمة الافتراضية للارقام العشرية ذات دقة واحدة هو مزدوج. مثال: float f = 24.5 ستظهر خطا للمستخدم However, we can append the suffix F (or f) to designate the data type as float. لكن, بامكاننا استخدام F(or f) لتعيين توع البيانات كرقم عشري ذات دقة واحدة (float) </ins> <del> The default data type of floating-point number is double. So float f = 24.5 will introduce an error. However, we can append the suffix F (or f) to designate the data type as float. ` ### مزدوج: </del> <ins> ### مزدوج (double): </ins> نوع بيانات مزدوج هو [نقطة عائم IEEE 754](http://steve.hollasch.net/cgindex/coding/ieeefloat.html) مزدوجة الدقة 64 بت. عادةً ما يكون نوع البيانات هذا هو الخيار الافتراضي. يجب عدم استخدام نوع البيانات هذا مطلقًا للقيم الدقيقة ، مثل العملة.

``` 10198442 <del> ``` </del>  No newline at end of file <ins> ``` </ins>


Question:
None of the FCC pages (logged in or out) has a footer bar or footer menu with relevant links for users to follow. Adding a footer bar with links to more info about FCC: Blog link (currently no link anywhere), Creative Commons/ Open Source License/ Copyright, Github and Social Media links, Privacy Policy, Forum and Chat links Not only will this make exploring FCC much easier but will be great for SEO as well.
I agree but only on the logged in page, we don't want any distractions from our conversions.
Good point
Closing this as the footer is now integrated, and all links can be found either there or in the header. Please open a new issue to suggest changes to those elements.

## Byzantine Fault Tolerance Imagine the scenario where there is an empire and there are three generals with their respective armies at different positions. All of them must attack in order to win the fight or they can choose to retreat. Their only means of communications are through pigeon posts. But there is a problem, the generals can't trust each other or ensure that the message has not been corrupted along the way. How do they solve this problem? Blockchain essentially does so by listening to information broadcasted by other people, reaching to a consensus of which information is deemed true. As such, this model asssumes that the amount of "traitors" do not exceed more than 1/3 of the entire network. <ins> ## Modern Use Cases of Blockchain - Asset Tokenization : Using blockchain technology, previously illiquid assets can now be converted into its tokenized form and cheaply and efficiently fractionalized, traded and settled on chain (rather than go through the lengthy process of clearing and settlement process through third parties like clearing houses) - Supply Chain Management : Blockchains allow multiple parties to access a database to act as the single source of truth. Recorded transactions are immutable, are append only and provide a time stamped audit trail. - Digital Identity : A self sovereign ID can be used to verify identity without needing an individual to produce numerous documents and paperwork each time they need their identity verified. This could be done with a single key that can be matched against an immutable ledger. The digital ID can also collect other online information about a user’s identity like social security information, medical records and social media credentials and have that stored securely on the blockchain. - Energy Market : Blockchain technology can enable the smart metering of electricity generated through an individual’s solar panels to be recorded, traded and settled on a ledger. - Healthcare : Using blockchain technology to record patient information on a distributed ledger can allow different stakeholders conditional access to a single source of truth where each interaction with a patient’s health data can be recorded on a ledger as a transaction with a time stamped audit trail. </ins> ## Issues Whilst blockchain technology is undoubtedly elegant, there are several problems that its presence brings, the main one being use my malicious third parties. Due to the extremely secure nature of blockchain, its technologies are often used by criminals to carry out transactions, which are impossible for governments to track.


Question:
originally reported: Each time I log in with Twitter, I still have to authorize the app to allow FCC access to my profile.
PR resolves this issue successfully.
Twitter API documentation for GET oauth/authenticate distinguishes the difference between authorize and authenticate in paragraph four .
I believe this is still an issue. I've already authorized FCC to interact with my twitter account, yet every time I attempt sign-in with twitter it still wants permission to authorize account interaction. Rather than just logging in.
Angelica, The pull request hasn't been merged into the main branch and pushed live to the servers. As soon as the team has a chance to review my changes we'll get it going live for you to enjoy the ease of use! On Sat Jan 17 2015 at 6:07:48 PM Angelica Ferdinand < :

The positive aspect is that you don't have to limit your moodboard to images in magazine. The negative aspect is that it might be hard to find the right images, since you have all internet to search from. The places to start look for images and ideas:  - google. Goole Images can be chosen according to colour, shape or form, so if you can search it, then it is possible that you find it.   - google. Google Images can be chosen according to colour, shape or form, so if you can search it, then it is possible that you find it.  - Pinterest. Same as for google, yet different. - free images. Such as Pixabay, Pexels, or free images sites, you can find tons of inspiration already in one picture. - go outside with a camera. There might be the exact item for your moodboard waiting for you to take that picture.


Question:
I've had to reenter many of the challenges after pressing 'Take me to the next challenge.' Also, on several of the challenges the test console output show errors (e.g. Unexpected Token) with no output concerning the test, but it still passes. I'll get a screenshot shot the next time it happens.
Thanks for the report. This is caused by the user not entering a test correctly. We'll work on hardening it up.
I don't believe I changed test text provided, but I could be wrong. But now that you mention that, if I change the test text I get the 'is not defined' error. It still gives the 'Take me to my next challenge' modal, but it will bring me back to the same challenge. If I do the same thing once more, it brings me to the next challenge.
Both of these issues have been addressed in pull request .

To learn more about installation, see the [Installation Appendix](./src/articles/typescript/appendix-installation/index.md).  In case you need just a type checker and don't want to compile your programm, read about Flux.   In case you need just a type checker and don't want to compile your program, read about Flux.  - Quick Start - Documentation


Question: In the following test-case expected ['TWENTY', 80.00], but only ['TWENTY', 60.00] available. I'm going to fix it and make a pull request.


Question:
On first render, camper see's an unstyled textarea. After, codemirror takes over and hides textarea and adds it's own box. This initial flash is hideous and makes puppies cry.
This has not been fixed on the Reactify branch. And I would prefer styling to be to match codemirror instead of just hiding the text area, as this does not prevent flash to the user.
Does styling it like that really not stop the flash? Everything I'm seeing online says it should. I'm only an amateur though. My thought process on the fix was that codemirror is hiding the textarea through javascript and that the flash is be caused by the script running late/slow/delayed/ and is hiding it after the page has already displayed. So I thought since codemirror is hiding it anyway, why not just hide it from the start to prevent the flash.
There are really two flashes, first the text area is shown then hidden by codemirror. The second flash is happening because codemirror does not render until it is loading in the DOM, which is intentional as codemirror relies heavily on DOM manipulation. While hiding the textarea does stop it from showing to the user on initial load, codemirror still needs to load and the user will see codemirror appear from nowhere, ie flash. After thinking about it, hiding the text area might be the best route on the reactify branch as well. If we were to add classes to mimic the styling of codemirror in the text box, the text box is not codemirror and React will still need to re-render that section of the view which will cause a flash. Ultimately what I would like to get done is to completely rewrite codemirror into a self contained React component so that it can pre-render on the server. But that is neither here nor there. I am willing to close this issue when the same styling is applied to the reactify branch that is currently on master. Would you like to give it a try? You can get some exposure to React at the same time. We are all amateurs until we are not. My philosophy is
Just to make sure, this is the branch your referring to? I tried to edit the .jade files in server/views/bonfire/ but nothing happened. Finally found that changes were being done from common/components/bonfires/ so it looks like the easiest way would just be to apply the style in under bonfire styling? I don't want to submit anything because I'm not sure if I would be submitting changes to the correct file.
Yes I think that should work just fine. Test locally to make sure it is hidden then submit the PR.
I messed up and commited directly to the repo. Sorry about that. Tested code locally and it worked.
Looks like the text area hide is working! Thanks.

#mainEditorPanel form.code .form-group.codeMirrorView <del> textarea#codeEditor(autofocus=true) </del> <ins> textarea#codeEditor(autofocus=true, style='display: none;') </ins> script(src='/js/lib/bonfire/bonfireFramework_v0.1.2.js')


Question:
When FreeCodeCamp/freecodecamp was closed by updating the link from Trello to the text of the next sentence wasn't updated on
Thanks for point that out. Would you like to create a PR?
Thanks for pointing this out. I fixed and merged.

We welcome pull requests from Free Code Camp "campers" (our students) and seasoned JavaScript developers alike! 1) Check our [public Waffle Board](https://waffle.io/freecodecamp/freecodecamp) <del> 2) If your issue or feature isn't on the board, either open an issue on this GitHub repo or message Quincy Larson to request to be added to the Trello board. </del> <ins> 2) If your issue or feature isn't on the board, open an issue and if you think you can fix it yourself, start working on it. </ins> 3) Once your code is ready, submit the pull request. We'll do a quick code review and give you feedback, and iterate from there. <del> This project uses [Airbnb JavaScript Style Guide](https://github.com/airbnb/javascript) with a few minor exceptions. If you are submitting a pull request that involves Jade templates, please make sure you are using *spaces*, not tabs. </del> License -------


Question:
! In Firefox 36.0.1 on OS X 10.9.5 Link:
Firefox appears to be jamming the comment-list on top of the display area for the main story.
Those elements are floating left because of .col-xs-12 on the h3.

var image = !{JSON.stringify(image)}; .spacer <del> h3.row.col-xs-12 </del> <ins> h3.row </ins> .row.text-left.negative-10 .col-xs-3.col-sm-1.text-center .row.negative-5


Question:
Creating a new account via email you can enter an email such as mrrenter This should be checked for a .com/org/etc Also once this account is created it is bricked as well. If you log out of it you cannot log back in because the server says its not a valid email address. There is still an entry in the table Solution: Update the regex used for email validation
The decision was made to allow this behavior if a user so desired. Unless Quincy wants to enforce valid emails (through confirmation, not regex imo) I'm going to close this.
If the user uses this type of email though they will not be able to log back in. This will just fill the database with unusable accounts. If this an accepted format I suggest changing the login to accept this format as well
Ideally we should verify that it conforms to a legal email address pattern. I can't remember why we didn't do this originally (I'm sure we discussed it). I think Angular validation didn't allow for it.
The sign up form checks /api/checkUniqueEmail/[email-text-typed] to see if the email is unique. If the client side validation doesn't work couldn't we use checkUniqueEmail to validate the email server side?
I've fixed this. It will now send the user back to the form with a flash notification upon submission of an invalid email. I tested it and it will accept good emails. I'm using , which was already included, to do this.

*/ exports.postEmailSignup = function(req, res, next) { <del> var errors = req.validationErrors(); </del> <ins> req.assert('email', 'valid email required').isEmail(); var errors = req.validationErrors(); </ins> if (errors) { req.flash('errors', errors); return res.redirect('/email-signup');


Question:
Bonfires show completely done, but not all points were accounted for. This could have stemmed from using Bonfires when it was first live and the bug at and fixed in . I doubt this is a pervasive issue. It could just be isolated to me.
There's a good chance this is already fixed on our UX-improvement branch. There were a number of issues with our old point system that we've since remedied.

} ]); <ins> profileValidation.controller('nonprofitFormController', ['$scope', function($scope) { } ]); </ins> profileValidation.directive('uniqueUsername', function($http) { return { restrict: 'A',

li &#8226 Understand that they will build your project using JavaScript frameworks (as opposed to older or proprietary tools) li &#8226 Keep your expectations high. Our students' goal is to produce work that's up to your standards h3 If you're OK with these terms, great! We'd love to help you! Fill in this form and we'll get right back to you. <del> form.form-horizontal(role='form', action="/nonprofits/", method='POST') </del> <ins> form.form-horizontal(role='form', action="/nonprofits/", method='POST', novalidate='novalidate', name='nonprofitForm') </ins> input(type='hidden', name='_csrf', value=_csrf) .form-group <del> label(class='col-sm-2 control-label', for='name') Your name </del> <ins> label(class='col-sm-2 control-label', for='name') Your name * </ins> .col-sm-8 <del> input.form-control(type='text', name='name', id='name') </del> <ins> input.form-control(type='text', name='name', id='name', autocomplete="off", ng-model='name', required='required') .col-sm-8.col-sm-offset-2(ng-show="nonprofitForm.name.$invalid && nonprofitForm.name.$error.required && !nonprofitForm.name.$pristine") alert(type='danger') span.ion-close-circled(id='#name-error') |  Your name is required. </ins> .form-group <del> label(class='col-sm-2 control-label', for='email') Your email </del> <ins> label(class='col-sm-2 control-label', for='email') Your email * </ins> .col-sm-8 <del> input.form-control(type='text', name='email', id='email') </del> <ins> input.form-control(type='text', name='email', id='email', autocomplete="off", ng-model='email', required='required') .col-sm-8.col-sm-offset-2(ng-show="nonprofitForm.email.$invalid && nonprofitForm.email.$error.required && !nonprofitForm.email.$pristine") alert(type='danger') span.ion-close-circled(id='#email-error'). Your email is required. </ins> .form-group <del> label(class='col-sm-2 control-label', for='message') Briefly describe what problem you need to solve, and for whom. </del> <ins> label(class='col-sm-2 control-label', for='message') Briefly describe what problem you need to solve, and for whom. * </ins> .col-sm-8 <del> textarea.form-control(type='text', name='message', id='message', rows='7') </del> <ins> textarea.form-control(type='text', name='message', id='message', rows='7', autocomplete="off", ng-model='message', required='required') .col-sm-8.col-sm-offset-2(ng-show="nonprofitForm.message.$invalid && nonprofitForm.message.$error.required && !nonprofitForm.message.$pristine") alert(type='danger') span.ion-close-circled(id='#message-error') | Your message is required. </ins> .form-group .col-sm-offset-2.col-sm-8 <del> button.btn.btn-primary(type='submit') </del> <ins> button.btn.btn-primary(type='submit', ng-disabled='nonprofitForm.$invalid') </ins> span.ion-paper-airplane <del> | Submit </del> <ins> | Submit </ins>  No newline at end of file


Question:
Bonfires show completely done, but not all points were accounted for. This could have stemmed from using Bonfires when it was first live and the bug at and fixed in . I doubt this is a pervasive issue. It could just be isolated to me.
There's a good chance this is already fixed on our UX-improvement branch. There were a number of issues with our old point system that we've since remedied.

transform: translateY(-50%); } <ins> .landing-skill-icon { color: #215f1e; font-size: 150px; } .black-text { color: #333; font-weight: 400; font-size: 40px; } .font-awesome-padding { margin-top: 45px; margin-bottom: 20px; } </ins> .background-svg { width: 220px; height: 220px;

background-position: center; } <ins> .testimonial-image { border-radius: 5px; height: 200px; width: 200px; } .testimonial-copy { font-size: 20px; text-align: center; @media (min-width: 991px) and (max-width: 1199px) { height: 120px; } @media (min-width: 1200px) { height: 90px; } } </ins> //uncomment this to see the dimensions of all elements outlined in red //* { //  border-color: red;

extends layout block content <del> .hidden-xs a(href='https://github.com/freecodecamp/freecodecamp') img(style='position: absolute; top: 40; right: 0; border: 0; margin-top: -30px;', src='https://camo.githubusercontent.com/e7bbb0521b397edbd5fe43e7f760759336b5e05f/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f677265656e5f3030373230302e706e67', alt='Fork me on GitHub', data-canonical-src='https://s3.amazonaws.com/github/ribbons/forkme_right_green_007200.png') </del> .jumbotron .text-center h1.hug-top Code with Us

br br a.btn.nonprofit-cta.btn-success(href="/nonprofits") I'm with a nonprofit and want help coding something <del> include partials/about include partials/faq </del>  No newline at end of file <ins> .big-break h2 Campers you'll hang out with: .row .col-xs-12.col-sm-12.col-md-4 img.img-responsive.testimonial-image.img-center(src="https://s3.amazonaws.com/freecodecamp/testimonial-jen.jpg", alt="@jenthebest's testimonial image") .testimonial-copy Getting back on track with Free Code Camp and committing to a new career in 2015! h3 - @jenthebest .col-xs-12.col-sm-12.col-md-4 img.img-responsive.testimonial-image.img-center(src="https://s3.amazonaws.com/freecodecamp/testimonial-tate.jpg", alt="@TateThurston's testimonial image") .testimonial-copy Just built my company's website with skills I've learned from Free Code Camp! h3 - @TateThurston .col-xs-12.col-sm-12.col-md-4 img.img-responsive.testimonial-image.img-center(src="https://s3.amazonaws.com/freecodecamp/testimonial-cynthia.jpg", alt="@cynthialanel's testimonial image") .testimonial-copy  I'm currently working through Free Code Camp to improve my JavaScript. The community is very welcoming! h3 - @cynthialanel .big-break h2 Skills you'll learn: .text-center .col-xs-12.col-sm-12.col-md-3 .landing-skill-icon.ion-social-html5 .black-text HTML5 .col-xs-12.col-sm-12.col-md-3 .landing-skill-icon.ion-social-css3 .black-text CSS3 .col-xs-12.col-sm-12.col-md-3 .landing-skill-icon.ion-social-javascript .black-text JavaScript .col-xs-12.col-sm-12.col-md-3 .landing-skill-icon.fa.fa-database.font-awesome-padding .black-text Databases .col-xs-12.col-sm-12.col-md-3 .landing-skill-icon.ion-social-chrome .black-text DevTools .col-xs-12.col-sm-12.col-md-3 .landing-skill-icon.ion-social-nodejs .black-text Node.js .col-xs-12.col-sm-12.col-md-3 .landing-skill-icon.ion-social-angular .black-text Angular.js .col-xs-12.col-sm-12.col-md-3 .landing-skill-icon.ion-ios-loop-strong .black-text Agile .big-break h2   h2 Fast facts about our community: h3.col-xs-offset-0.col-sm-offset-1.col-md-offset-2 ul.text-left li.ion-code   We're 100% free and open source li.ion-code   We're thousands of professionals who are learning to code li.ion-code   We're building projects for dozens of nonprofits li.ion-code   We share one goal: to boost our careers with code .big-break a.btn.btn-cta.signup-btn(href="/login") Start learning to code (it's free) </ins>  No newline at end of file


Question:
Bonfires show completely done, but not all points were accounted for. This could have stemmed from using Bonfires when it was first live and the bug at and fixed in . I doubt this is a pervasive issue. It could just be isolated to me.
There's a good chance this is already fixed on our UX-improvement branch. There were a number of issues with our old point system that we've since remedied.

failureRedirect: '/login' }; <del> app.get('/auth/twitter', passport.authenticate('twitter')); </del> <ins> app.get('/auth/twitter', passport.authorize('twitter')); </ins> app.get( '/auth/twitter/callback', passport.authenticate('twitter', {

); }; <del> // prepares the string to be printed on the terminal var escape = function(msg) { return msg. replace(/&/g,'&'). replace(/</g,'<'). replace(/>/g,'>'). replace(/n/g, '<br/>'). replace(/ /g, ' '); }; </del> // puts the message on the terminal var print = function(cls, msg) { codeOutput.setValue(msg);

// interface provided to the plugin var api = { output: function(data) { <del> if (!--requests) { endLoading(); } // print('separator'); print('input', data.input); if (data.error) { print('message', data.error); } else { print('output', data.output); } </del> <ins> endLoading(); print('input', data.input); if (data.error) { print('message', data.error); } else { print('output', data.output); } </ins> } };

setTimeout( function() { endLoading(); codeOutput.setValue('Infinite loop detected!'); <del> // print('message', 'Your code took too long to execute. Check for an infinite loop or recursion.'); //            console.log('infinite loop'); //          $('#codeOutput.setValue('Infinite loop detected')') </del> reset(); }, 10); });

var editor = myCodeMirror; myCodeMirror.setValue('2*2'); myCodeMirror.setSize("100%", 500); var codeOutput = CodeMirror.fromTextArea(document.getElementById("codeOutput"), { lineNumbers: false,


Question:
In the ux-improvements branch: Looks like this is an issue with the seed data here:
Thanks! I've fixed the copy for all of these waypoints.
No problem. You may already know this, but it's still showing the Mongo video...

"Return the provided string with the first letter of each word capitalized.", "For the purpose of this exercise, you should also capitalize connecting words like 'the' and 'of'." ], <del> "challengeEntryPoint": "titleCase("I'm a little tea pot")", </del> <ins> "challengeEntryPoint": "titleCase("I'm a little tea pot");", </ins> "challengeSeed": "function titleCase(str) {n  return str;rn}", "tests": [ "expect(titleCase("I'm a little tea pot")).to.be.a('String');",


Question:
It would be really helpful for each bonfire solution on a user's profile to include a link to the original exercise, esp. for non-FCC users.
Great point. I'm doing so. Thanks!

"Return the provided string with the first letter of each word capitalized.", "For the purpose of this exercise, you should also capitalize connecting words like 'the' and 'of'." ], <del> "challengeEntryPoint": "titleCase("I'm a little tea pot")", </del> <ins> "challengeEntryPoint": "titleCase("I'm a little tea pot");", </ins> "challengeSeed": "function titleCase(str) {n  return str;rn}", "tests": [ "expect(titleCase("I'm a little tea pot")).to.be.a('String');",


Question:
One of the tests for that bonfire is : , which is supposed to give : . And another test is the same bonfire is : , which is supposed to give : . This doesn't make sense. If it can be inferred, based on the difference being one month apart, that it's the next year, for the second case, then it should also be possible for the first case too. March and May are one month apart, so the output should be just like the second case.
We're a little backlogged right now so if you can submit a PR to clean this up it would be much appreciated.

"assert.deepEqual(friendly(['2015-07-01', '2015-07-04']), ['July 1st','4th'], 'ending month should be omitted since it is already mentioned');", "assert.deepEqual(friendly(['2015-12-01', '2016-02-03']), ['December 1st','February 3rd'], 'two months apart can be inferred if it is the next year');", "assert.deepEqual(friendly(['2015-12-01', '2017-02-03']), ['December 1st, 2015','February 3rd, 2017']);", <del> "assert.deepEqual(friendly(['2016-03-01', '2016-05-05']), ['March 1st','May 5th, 2016']);", </del> <ins> "assert.deepEqual(friendly(['2016-03-01', '2016-05-05']), ['March 1st','May 5th'], 'one month apart can be inferred it is the same year');", </ins> "assert.deepEqual(friendly(['2017-01-01', '2017-01-01']), ['January 1st, 2017'], 'since we do not duplicate only return once');", "assert.deepEqual(friendly(['2022-09-05', '2023-09-04']), ['September 5th, 2022','September 4th, 2023']);" ],


Question: The description does not specify to preserve the title case of the word replaced. Although the tests somehow expect the title case to be preserved if the word is getting replaced. We should either: A. change the test B. Add a note in the description about this quirk.

"Return the provided string with the first letter of each word capitalized.", "For the purpose of this exercise, you should also capitalize connecting words like 'the' and 'of'." ], <del> "challengeEntryPoint": "titleCase("I'm a little tea pot")", </del> <ins> "challengeEntryPoint": "titleCase("I'm a little tea pot");", </ins> "challengeSeed": "function titleCase(str) {n  return str;rn}", "tests": [ "expect(titleCase("I'm a little tea pot")).to.be.a('String');",


Question: The copy here seems misleading especially for those coming from no knowledge of javascript. It looks as though jQuery isn't also Javascript. ! [] 1) jQuery is a powerful tool for manipulating HTML elements. 2) It's a lot easier to use than JavaScript itself, so we'll learn it first. 1) jQuery is a powerful javascript framework for manipulating HTML elements. 2) It's a lot easier to use than plain JavaScript itself, so we'll learn it first.

"difficulty": 0.13, "challengeSeed": "125671865", "description": [  "jQuery is a powerful tool for manipulating HTML elements.", "It's a lot easier to use than JavaScript itself, so we'll learn it first.",   "jQuery is a powerful library built in Javascript for manipulating HTML elements.", "It's a lot easier to use than Javascript itself, so we'll learn it first.",  "It's also extremely popular with employers, so we're going to learn it well.", "Codecademy has an excellent free course that will walk us through the basics of jQuery.", "Go to http://www.codecademy.com/courses/web-beginner-en-bay3D/0/1 and complete the first section."


Question:
for step 38 here: the new user needs to set up an SSH key to push to github. the key is given by C9, but it's not clear to me how to add it to github, a simple copy /paste to my SSH keys in my account isn't working. This should be clarified for new users of c9. Not sure if it's needed for every c9 workspace or just once, but I guess github is seeing c9 as a new computer?
Here is a set of instructions that worked for me: In the bottom left of your C9 dashboard is a section called “Add-on Services”. Click “activate” next to the “GitHub” icon (if you haven’t already). When the pop up appears, tell it to allow access to your account. This should complete the link between GitHub account and your C9 account. While still on the dashboard, look to the right under “Account Settings” for the link “Show your SSH key”. Click on it, and copy the value which appears. Go to the GitHub SSH settings page, and click “Add SSH Key” Enter the title “C9″, paste the SSH Key into the “Key” box, and click “Add Key”.
Excellent. Thank you for pointing this out. I'll add this.

"Return the provided string with the first letter of each word capitalized.", "For the purpose of this exercise, you should also capitalize connecting words like 'the' and 'of'." ], <del> "challengeEntryPoint": "titleCase("I'm a little tea pot")", </del> <ins> "challengeEntryPoint": "titleCase("I'm a little tea pot");", </ins> "challengeSeed": "function titleCase(str) {n  return str;rn}", "tests": [ "expect(titleCase("I'm a little tea pot")).to.be.a('String');",


Question: One of the requirements are not fulfilled (Wrap your all of your checkboxes inside one div with the class "row".) even though the codes have fulfilled the requirement. Per checking my code 3 times, I know I have fulfilled the requirement. Kindly check and see if this is just an error on my part. Thank you. <link href='' rel='stylesheet' type='text/css'

"Add them as a new contact in Screen Hero, then click the monitor-looking button to attempt to share your screen with them.", "Once the Screen Hero session starts, your screen's margins will glow orange. You are now sharing your screen.", "Your pair will have their own cursor, and will be able to type text on his or her and keyboard.",  "Now it's time to tackle our Bonfires.", "Go to http://freecodecamp.com/bonfires and start working through our Bonfire challenges.",   "Now it's time to tackle our Bonfires. You can begin them by advancing to the next challenge.",  "Once you you finish pair programming, end the session in Screen Hero session.", "Congratulations! You have completed your first pair programming session.", "Pair program as much as possible with different campers until you've completed all the Bonfire challenges. This is a big time investment, but the JavaScript practice you get will be well worth it!",

"tests": [ "assert($('ul').length > 0, 'You should have an ul element on your webpage.')", "assert($('ol').length > 0, 'You should have an ol element on your webpage.')",  "assert($('li').length > 5, 'You should have three li elements on within your ul element.')", "assert($('li').length > 5, 'You should have three li elements on within your ol element.')"   "assert($('li').length > 5, 'You should have three li elements within your ul element.')", "assert($('li').length > 5, 'You should have three li elements within your ol element.')"  ], "challengeSeed": [ "<link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'>",

"For example, if you wanted to make a text input field required, you can just add the word "required" within your input element use: <input type='text' required>" ], "tests": [  "assert($('input').prop('required'), 'Your text field have the property of being required.')", "assert($('[placeholder]').length > 0, 'Your text field should have the placeholder text of "cat photo URL".')"   "assert($('input').prop('required'), 'Your text field should have the property of being required.')", "assert(new RegExp('cat photo URL').test($('input').prop('placeholder')), 'Your text field should have the placeholder text of "cat photo URL".')"  ], "challengeSeed": [ "<link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'>",

"Put the "like", "Info" and "Delete" buttons side-by-side by wrapping all three of them within one <div class="row"> element, then each of them within a <div class="col-xs-4"> element.", "Bootstrap uses a responsive grid system, which makes it easy to put elements into rows and specify each element's relative width. Most of Bootstrap's classes can be applied to a div element.", "Here's a diagram of how Bootstrap's 12-column grid layout works:",  "",   "",  "Note that in this illustration, we use the col-md-* class. Here, "md" means "medium", and "*" is a number specifying how many columns wide the element should be. In this case, we're specifying how many columns wide an element should be on a medium-sized screen, such as a laptop.", "In the Cat Photo App that we're building, we'll use col-xs-*, where "*" is the number of columns wide the element should be, and "xs" means "extra small", like an extra-small mobile phone screen.", "The row class is applied to a div, and the buttons themselves can be wrapped within it."

"name": "Waypoint: Line up Form Elements Responsively with Bootstrap", "difficulty" : 0.062, "description": [ <del> "Wrap both your form's text input field and submit button within a div with the class "row". Wrap your form's text input field within a div with the class of "col-xs-7". Wrap your form's submit button the in a div with the class "col-xs-5".", </del> "Now let's get your form input and your submission button on the same line. We'll do this the same way we have previously: by using a "row" element with "col-xs-*" elements withing it.", <ins> "Wrap both your form's text input field and submit button within a div with the class "row". Wrap your form's text input field within a div with the class of "col-xs-7". Wrap your form's submit button the in a div with the class "col-xs-5".", </ins> "This is the last challenge we'll do for our Cat Photo App for now. We hope you've enjoyed learning Font Awesome, Bootstrap, and responsive design!" ], "tests": [ <del> "assert($('.row').length > 4, 'Wrap your all of your checkboxes inside one div with the class "row".')", </del> <ins> "assert($('.row').length > 4, 'Wrap your form submission button and text area in a div with class "row".')", </ins> "assert($('.col-xs-5').length > 0, 'Wrap your form submission button in a div with the class "col-xs-5".')", "assert($('.col-xs-7').length > 0, 'Wrap your form text area in a div with the class "col-xs-7".')" ],


Question: Spelling error: The waypoint requirements say, "You should have three li elements on within your ol element." I think "within" is the better choice here.

"Add them as a new contact in Screen Hero, then click the monitor-looking button to attempt to share your screen with them.", "Once the Screen Hero session starts, your screen's margins will glow orange. You are now sharing your screen.", "Your pair will have their own cursor, and will be able to type text on his or her and keyboard.",  "Now it's time to tackle our Bonfires.", "Go to http://freecodecamp.com/bonfires and start working through our Bonfire challenges.",   "Now it's time to tackle our Bonfires. You can begin them by advancing to the next challenge.",  "Once you you finish pair programming, end the session in Screen Hero session.", "Congratulations! You have completed your first pair programming session.", "Pair program as much as possible with different campers until you've completed all the Bonfire challenges. This is a big time investment, but the JavaScript practice you get will be well worth it!",

"tests": [ "assert($('ul').length > 0, 'You should have an ul element on your webpage.')", "assert($('ol').length > 0, 'You should have an ol element on your webpage.')",  "assert($('li').length > 5, 'You should have three li elements on within your ul element.')", "assert($('li').length > 5, 'You should have three li elements on within your ol element.')"   "assert($('li').length > 5, 'You should have three li elements within your ul element.')", "assert($('li').length > 5, 'You should have three li elements within your ol element.')"  ], "challengeSeed": [ "<link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'>",

"For example, if you wanted to make a text input field required, you can just add the word "required" within your input element use: <input type='text' required>" ], "tests": [  "assert($('input').prop('required'), 'Your text field have the property of being required.')", "assert($('[placeholder]').length > 0, 'Your text field should have the placeholder text of "cat photo URL".')"   "assert($('input').prop('required'), 'Your text field should have the property of being required.')", "assert(new RegExp('cat photo URL').test($('input').prop('placeholder')), 'Your text field should have the placeholder text of "cat photo URL".')"  ], "challengeSeed": [ "<link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'>",

"Put the "like", "Info" and "Delete" buttons side-by-side by wrapping all three of them within one <div class="row"> element, then each of them within a <div class="col-xs-4"> element.", "Bootstrap uses a responsive grid system, which makes it easy to put elements into rows and specify each element's relative width. Most of Bootstrap's classes can be applied to a div element.", "Here's a diagram of how Bootstrap's 12-column grid layout works:",  "",   "",  "Note that in this illustration, we use the col-md-* class. Here, "md" means "medium", and "*" is a number specifying how many columns wide the element should be. In this case, we're specifying how many columns wide an element should be on a medium-sized screen, such as a laptop.", "In the Cat Photo App that we're building, we'll use col-xs-*, where "*" is the number of columns wide the element should be, and "xs" means "extra small", like an extra-small mobile phone screen.", "The row class is applied to a div, and the buttons themselves can be wrapped within it."

"name": "Waypoint: Line up Form Elements Responsively with Bootstrap", "difficulty" : 0.062, "description": [ <del> "Wrap both your form's text input field and submit button within a div with the class "row". Wrap your form's text input field within a div with the class of "col-xs-7". Wrap your form's submit button the in a div with the class "col-xs-5".", </del> "Now let's get your form input and your submission button on the same line. We'll do this the same way we have previously: by using a "row" element with "col-xs-*" elements withing it.", <ins> "Wrap both your form's text input field and submit button within a div with the class "row". Wrap your form's text input field within a div with the class of "col-xs-7". Wrap your form's submit button the in a div with the class "col-xs-5".", </ins> "This is the last challenge we'll do for our Cat Photo App for now. We hope you've enjoyed learning Font Awesome, Bootstrap, and responsive design!" ], "tests": [ <del> "assert($('.row').length > 4, 'Wrap your all of your checkboxes inside one div with the class "row".')", </del> <ins> "assert($('.row').length > 4, 'Wrap your form submission button and text area in a div with class "row".')", </ins> "assert($('.col-xs-5').length > 0, 'Wrap your form submission button in a div with the class "col-xs-5".')", "assert($('.col-xs-7').length > 0, 'Wrap your form text area in a div with the class "col-xs-7".')" ],


Question: i am suspecting another small bug, the next challenge after succesful code run in Bonfire: Chunky Monkey actually points to itself

'*.ionicframework.com', 'https://syndication.twitter.com', '*.youtube.com', <ins> 'cdn.jsdelivr.net/' </ins> ]; app.use(helmet.contentSecurityPolicy({

// (re)initializes the plugin var reset = function() { requests = 0; <del> plugin = new jailed.Plugin(path+'plugin_v0.1.2.js', api); </del> <ins> plugin = new jailed.Plugin(path+'plugin_v0.1.3.js', api); </ins> plugin.whenDisconnected( function() { // give some time to handle the last responce setTimeout( function() {

<del> // executes the given code and handles the result var run = function(code) { var result = { input: code, output: null, error: null, type: null }; try { var codeExec = runHidden(code); result.type = typeof codeExec; result.output = stringify(codeExec); } catch(e) { result.error = e.message; } application.remote.output(result); }; // protects even the worker scope from being accessed var runHidden = function(code) { var indexedDB = null; var location = null; var navigator = null; var onerror = null; var onmessage = null; var performance = null; var self = null; var webkitIndexedDB = null; var postMessage = null; var close = null; var openDatabase = null; var openDatabaseSync = null; var webkitRequestFileSystem = null; var webkitRequestFileSystemSync = null; var webkitResolveLocalFileSystemSyncURL = null; var webkitResolveLocalFileSystemURL = null; var addEventListener = null; var dispatchEvent = null; var removeEventListener = null; var dump = null; var onoffline = null; var ononline = null; var importScripts = null; return eval(code); } // converts the output into a string var stringify = function(output) { var result; if (typeof output == 'undefined') { result = 'undefined'; } else if (output === null) { result = 'null'; } else { result = JSON.stringify(output) || output.toString(); } return result; } application.setInterface({run:run}); </del>

<ins> // executes the given code and handles the result var run = function(code) { var result = { input: code, output: null, error: null, type: null }; try { var codeExec = runHidden(code); result.type = typeof codeExec; result.output = stringify(codeExec); } catch(e) { result.error = e.message; } application.remote.output(result); }; // protects even the worker scope from being accessed var runHidden = function(code) { var importScript = function(url) { var error = null; try { importScripts(url); } catch (e) { error = e; console.log('Unable to load ramda!'); } }; var indexedDB = null; var location = null; var navigator = null; var onerror = null; var onmessage = null; var performance = null; var self = null; var webkitIndexedDB = null; var postMessage = null; var close = null; var openDatabase = null; var openDatabaseSync = null; var webkitRequestFileSystem = null; var webkitRequestFileSystemSync = null; var webkitResolveLocalFileSystemSyncURL = null; var webkitResolveLocalFileSystemURL = null; var addEventListener = null; var dispatchEvent = null; var removeEventListener = null; var dump = null; var onoffline = null; var ononline = null; importScript("https://cdn.jsdelivr.net/ramda/0.10.0/ramda.min.js"); var _ = R; return eval(code); } // converts the output into a string var stringify = function(output) { var result; if (typeof output == 'undefined') { result = 'undefined'; } else if (output === null) { result = 'null'; } else { result = JSON.stringify(output) || output.toString(); } return result; } application.setInterface({run:run}); </ins>

<ins> /** * Created by nathanleniz on 2/21/15. */ var R = require('ramda'); </ins>  No newline at end of file

<ins> //  Ramda v0.10.0 //  https://github.com/ramda/ramda //  (c) 2013-2015 Scott Sauyet and Michael Hurley //  Ramda may be freely distributed under the MIT license. (function(){"use strict";var n={ramda:"placeholder"},t=function(n,t){return n+t},r=function(n,t){for(var r=-1;++r<t.length;)if(!n(t[r]))return!1;return!0},e=function(n,t){for(var r=-1;++r<t.length;)if(n(t[r]))return!0;return!1},u=function(n,t){return function(){return n.call(this,t.apply(this,arguments))}},i=function(n,t){n=n||[],t=t||[];var r,e=n.length,u=t.length,i=new Array(e+u);for(r=-1;++r<e;)i[r]=n[r];for(r=-1;++r<u;)i[e+r]=t[r];return i},o=function(n,t,r){for(var e=-1,u=r.length;++e<u;)if(n(t,r[e]))return!0;return!1},c=function(n){return function(t,r){if(r&&r.length>0){for(var e,u=0,i=r[u],o=t(i);++u<r.length;)e=t(r[u]),n(e,o)&&(o=e,i=r[u]);return i}}},a=function(n,t){for(var r=-1,e=t.length,u=[];++r<e;)n(t[r])&&(u[u.length]=t[r]);return u},f=function(n,t){for(var r=-1,e=t.length,u=[];++r<e;)n(t[r],r,t)&&(u[u.length]=t[r]);return u},l=function(n,t){for(var r=-1,e=t.length;++r<e;)n(t[r]);return t},s=function(n){return function(t){return a(function(n){return"function"==typeof t[n]},n(t))}},h=function(n,t){return n>t},g=function(n,t,r){var e=0,u=n.length;for("number"==typeof r&&(e=0>r?Math.max(0,u+r):r);u>e;){if(n[e]===t)return e;++e}return-1},p=Array.isArray||function(n){return null!=n&&n.length>=0&&"[object Array]"===Object.prototype.toString.call(n)},m=Number.isInteger||function(n){return n<<0===n},y=function(n){return null!=n&&n===Object(n)&&"function"==typeof n.then},v=function(n,t,r){var e=n.length;for("number"==typeof r&&(e=0>r?e+r+1:Math.min(e,r+1));--e>=0;)if(n[e]===t)return e;return-1},d=function(n,t){return t>n},w=function(n,t){for(var r=-1,e=t.length,u=new Array(e);++r<e;)u[r]=n(t[r]);return u},b=function(n,t){return n*t},O=function(){return new TypeError("Function called with no arguments")},j=function(n,t){return 0>n?t[t.length+n]:t[n]},x=function(n){return function(t){return w(function(n){return[n,t[n]]},n(t))}},A=function(n,t){var r,e=-1,u=n.length;if(null!=t){for(r=t;null!=r&&++e<u;)r=r[n[e]];return r}},I=function(n,t){var r={};return l(function(n){r[n]=t[n]},n),r},E=function(n,t){return i([n],t)},k=function(n,t,r){for(var e=-1,u=r.length;++e<u;)t=n(t,r[e]);return t},M=function(n,t,r){if(n===r)return!0;if(null==r)return!1;t.fn=t.fn||[],t.obj=t.obj||[];for(var e,u,i=-1,o=t.fn.length,c=-1,a=t.obj.length;++i<o;){if(e=t.fn[i],u=n[e],!(e in r))return!1;if(!u(r[e],r))return!1}for(;++c<a;)if(e=t.obj[c],n[e]!==r[e])return!1;return!0},P=function qu(n,t,r){switch(arguments.length){case 0:throw O();case 1:return qu(n,0,n.length);case 2:return qu(n,t,n.length);default:for(var e=Math.max(0,r-t),u=new Array(e),i=-1;++i<e;)u[i]=n[t+i];return u}},T=function(n){return function(){return n}},S=function(n,t){switch(n){case 0:return function(){return t.apply(this,arguments)};case 1:return function(n){return t.apply(this,arguments)};case 2:return function(n,r){return t.apply(this,arguments)};case 3:return function(n,r,e){return t.apply(this,arguments)};case 4:return function(n,r,e,u){return t.apply(this,arguments)};case 5:return function(n,r,e,u,i){return t.apply(this,arguments)};case 6:return function(n,r,e,u,i,o){return t.apply(this,arguments)};case 7:return function(n,r,e,u,i,o,c){return t.apply(this,arguments)};case 8:return function(n,r,e,u,i,o,c,a){return t.apply(this,arguments)};case 9:return function(n,r,e,u,i,o,c,a,f){return t.apply(this,arguments)};case 10:return function(n,r,e,u,i,o,c,a,f,l){return t.apply(this,arguments)};default:throw new Error("First argument to arity must be a non-negative integer no greater than ten")}},W=function(n){return n.apply(this,P(arguments,1))},N=function(n){return function(t,r){return n(t,r)?-1:n(r,t)?1:0}},R=function(){var n=arguments;return function(){for(var t=-1;++t<n.length;)if(n[t][0].apply(this,arguments))return n[t][1].apply(this,arguments)}},q=function(n){var t=P(arguments,1);return function(){var r=arguments;return n.apply(this,w(function(n){return n.apply(this,r)},t))}},C=function(n){return function(t,r){switch(arguments.length){case 0:throw O();case 1:return function(r){return n.apply(this,[r,t].concat(P(arguments,1)))};default:return n.apply(this,i([r,t],P(arguments,2)))}}},L=function(n){for(var t=-1,r=n.length,e={};++t<r;)p(n[t])&&n[t].length&&(e[n[t][0]]=n[t][1]);return e},B=function(n,t){switch(arguments.length){case 0:throw O();case 1:return function(t){return t[n].apply(t,P(arguments,1))};default:return t[n].apply(t,P(arguments,2))}},F=function(n){return n},z=function(n){return p(n)?!0:n?"object"!=typeof n?!1:n instanceof String?!1:1===n.nodeType?!!n.length:0===n.length?!0:n.length>0?n.hasOwnProperty(0)&&n.hasOwnProperty(n.length-1):!1:!1},D=function(n){return 0===Object(n).length},U=function(n){return null==n},_=function(n){for(var t=n.length,r=-1;++r<t;)if(g(n,n[r],r+1)>=0)return!1;return!0},$=function(n){var t,r=[];for(t in n)r[r.length]=t;return r},G=function(n,t){switch(n){case 0:return function(){return t.call(this)};case 1:return function(n){return t.call(this,n)};case 2:return function(n,r){return t.call(this,n,r)};case 3:return function(n,r,e){return t.call(this,n,r,e)};case 4:return function(n,r,e,u){return t.call(this,n,r,e,u)};case 5:return function(n,r,e,u,i){return t.call(this,n,r,e,u,i)};case 6:return function(n,r,e,u,i,o){return t.call(this,n,r,e,u,i,o)};case 7:return function(n,r,e,u,i,o,c){return t.call(this,n,r,e,u,i,o,c)};case 8:return function(n,r,e,u,i,o,c,a){return t.call(this,n,r,e,u,i,o,c,a)};case 9:return function(n,r,e,u,i,o,c,a,f){return t.call(this,n,r,e,u,i,o,c,a,f)};case 10:return function(n,r,e,u,i,o,c,a,f,l){return t.call(this,n,r,e,u,i,o,c,a,f,l)};default:throw new Error("First argument to nAry must be a non-negative integer no greater than ten")}},H=function(n){return function(){return!n.apply(this,arguments)}},J=function(n){return function(){return j(n,arguments)}},K=function(n){return[n]},Q=function(n){var t,r=!1;return function(){return r?t:(r=!0,t=n.apply(this,arguments))}},V=C(E),X=function(n,t){switch(arguments.length){case 0:throw O();case 1:return function(t){return t[n]}}return t[n]},Y=C(X),Z=function(n){return P(n).reverse()},nt=x($),tt=function(){var n="	nfr                　u2028u2029",t="",r="function"==typeof String.prototype.trim;return r&&!n.trim()&&t.trim()?function(n){return n.trim()}:function(t){var r=new RegExp("^["+n+"]["+n+"]*"),e=new RegExp("["+n+"]["+n+"]*$");return t.replace(r,"").replace(e,"")}}(),rt=function(n){return null===n?"Null":void 0===n?"Undefined":Object.prototype.toString.call(n).slice(8,-1)},et=function(n){if(0===arguments.length)throw O();return function(){return n(P(arguments))}},ut=function(n){return G(1,n)},it=function(n){var t,r=[];for(t in n)r[r.length]=n[t];return r},ot=T(!1),ct=F,at=T(!0),ft=function(n,t){return i(t,[n])},lt=function Cu(n,t,r){var e=function(e){for(var u=t.length,i=-1;++i<u;)if(n===t[i])return r[i];t[t.length]=n,r[r.length]=e;for(var o in n)e[o]=Cu(n[o],t,r);return e};switch(rt(n)){case"Object":return e({});case"Array":return e([]);case"Date":return new Date(n);default:return n}},st=function(n,t){return function(r,e,u){var i=arguments.length,o=arguments[i-1],c=o&&!p(o)&&"function"==typeof o[n];switch(arguments.length){case 0:return t();case 1:return c?o[n]():t(r);case 2:return c?o[n](r):t(r,e);case 3:return c?o[n](r,e):t(r,e,u)}}},ht=function(n,t){return function(){var r=this,e=t.apply(this,arguments);return y(e)?e.then(function(t){return n.call(r,t)}):n.call(this,e)}},gt=function(n,t){return g(t,n)>=0},pt=function(n){return function(){switch(arguments.length){case 0:throw O();case 1:return arguments[0];default:for(var t=arguments.length-1,r=arguments[t],e=r.length;t--;)r=n(arguments[t],r);return S(e,r)}}},mt=function(n,t){return function(r){if(0===arguments.length)throw O();for(var e,u=-1,i=t;++u<r.length;)e=+r[u],n(e,i)&&(i=e);return i}},yt=function(n){return function(t){var r=P(arguments,1);return S(Math.max(0,t.length-r.length),function(){return t.apply(this,n(r,arguments))})}},vt=function(n){return function(t,r){switch(arguments.length){case 0:throw O();case 1:return function(r){return n(t,r)};default:return n(t,r)}}},dt=function(n){return function(t,r,e){switch(arguments.length){case 0:throw O();case 1:return vt(function(r,e){return n(t,r,e)});case 2:return function(e){return n(t,r,e)};default:return n(t,r,e)}}},wt=function(n,t){return null!=t&&!p(t)&&"function"==typeof t[n]},bt=function(n){return function t(r){for(var e,u,i,o=[],c=-1,a=r.length;++c<a;)if(z(r[c]))for(e=n?t(r[c]):r[c],u=-1,i=e.length;++u<i;)o[o.length]=e[u];else o[o.length]=r[c];return o}},Ot=function(n,t){for(var r,e={},u=$(t),i=u.length,o=-1;++o<i;)r=u[o],n(t[r],r,t)&&(e[r]=t[r]);return e},jt=function(n,t){return w(X(n),t)},xt=vt(t),At=vt(r),It=vt(function(n,t){return function(){return n.apply(this,arguments)&&t.apply(this,arguments)}}),Et=vt(e),kt=vt(ft),Mt=C(ft),Pt=vt(function(n,t){return n.apply(this,t)}),Tt=function(n){return G(2,n)},St=vt(function(n,t){return function(){return n.apply(t,arguments)}}),Wt=function(n){return lt(n,[],[])},Nt=pt(u),Rt=pt(ht),qt=dt(o),Ct=vt(function(n,t){var r={};return r[n]=t,r}),Lt=vt(function(n,t){return function r(e){return S(Math.max(n-(e&&e.length||0),0),function(){if(0===arguments.length)throw O();var u=i(e,arguments);return u.length>=n?t.apply(this,u):r(u)})}([])}),Bt=xt(-1),Ft=vt(function(n,t){return null==t?n:t}),zt=vt(function(n,t){for(var r=[],e=-1,u=n.length;++e<u;)gt(n[e],t)||gt(n[e],r)||(r[r.length]=n[e]);return r}),Dt=dt(function(n,t,r){for(var e=[],u=-1,i=t.length,o=qt(n);++u<i;)o(t[u],r)||o(t[u],e)||(e[e.length]=t[u]);return e}),Ut=vt(function(n,t){return Ot(function(t,r){return r!==n},t)}),_t=vt(st("drop",function(n,t){return n<t.length?P(t,n):[]})),$t=vt(function(n,t){for(var r=-1,e=t.length;++r<e&&n(t[r]););return P(t,r)}),Gt=function(n){return wt("empty",n)?n.empty():[]},Ht=vt(function(n,t){return 0===n?1/n===1/t:n===t||n!==n&&t!==t}),Jt=dt(function(n,t,r){return t[n]===r[n]}),Kt=vt(st("filter",a)),Qt=vt(f),Vt=vt(function(n,t){for(var r=-1,e=t.length;++r<e;)if(n(t[r]))return t[r]}),Xt=vt(function(n,t){for(var r=-1,e=t.length;++r<e;)if(n(t[r]))return r;return-1}),Yt=vt(function(n,t){for(var r=t.length;r--;)if(n(t[r]))return t[r]}),Zt=vt(function(n,t){for(var r=t.length;r--;)if(n(t[r]))return r;return-1}),nr=bt(!0),tr=vt(l),rr=vt(function(n,t){for(var r=-1,e=t.length;++r<e;)n(t[r],r,t);return t}),er=s($),ur=X,ir=vt(function(n,t){return k(function(t,r){var e=n(r);return t[e]=ft(r,t[e]||(t[e]=[])),t},{},t)}),or=vt(function(n,t){return Object.prototype.hasOwnProperty.call(t,n)}),cr=vt(function(n,t){return n in t}),ar=dt(function(n,t,r){return function(){return n.apply(this,arguments)?t.apply(this,arguments):r.apply(this,arguments)}}),fr=xt(1),lr=vt(function(n,t){return g(t,n)}),sr=dt(function(n,t,r){return n=n<r.length&&n>=0?n:r.length,i(ft(t,P(r,0,n)),P(r,n))}),hr=dt(function(n,t,r){return n=n<r.length&&n>=0?n:r.length,i(i(P(r,0,n),t),P(r,n))}),gr=function(n,t){var r=P(arguments,2),e=n-r.length;return Lt(e+1,function(){var n=arguments[e],u=r.concat(P(arguments,0,e));return n[t].apply(n,u)})},pr=vt(function(n,t){return null!=t&&t.constructor===n||t instanceof n}),mr=gr(1,"join"),yr=function(){var n=!{toString:null}.propertyIsEnumerable("toString"),t=["constructor","valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"];return function(r){if(Object(r)!==r)return[];if(Object.keys)return Object.keys(r);var e,u,i=[];for(e in r)or(e,r)&&(i[i.length]=e);if(n)for(u=t.length;u--;)e=t[u],or(e,r)&&!gt(e,i)&&(i[i.length]=e);return i}}(),vr=vt(function(n,t){return v(t,n)}),dr=function(n){return null!=n&&pr(Number,n.length)?n.length:0/0},wr=vt(function(n,t){var r=function(t){return n(t)};return r.set=vt(t),r.map=vt(function(r,e){return t(r(n(e)),e)}),r}),br=vt(st("map",w)),Or=dt(function(n,t,r){for(var e=-1,u=r.length,i=new Array(u),o=[t];++e<u;)o=n(o[0],r[e]),i[e]=o[1];return[o[0],i]}),jr=dt(function(n,t,r){for(var e=r.length,u=r.length,i=new Array(u),o=[t];e--;)o=n(o[0],r[e]),i[e]=o[1];return[o[0],i]}),xr=vt(function(n,t){for(var r=-1,e=t.length,u=new Array(e);++r<e;)u[r]=n(t[r],r,t);return u}),Ar=vt(function(n,t){return k(function(r,e){return r[e]=n(t[e]),r},{},yr(t))}),Ir=vt(function(n,t){return k(function(r,e){return r[e]=n(t[e],e,t),r},{},yr(t))}),Er=gr(1,"match"),kr=mt(h,-1/0),Mr=vt(c(h)),Pr=function(){var n=function(n){return n+"::"+Object.prototype.toString.call(n)},t=function(t){return t.length+":{"+w(n,t).join(",")+"}"};return function(n){var r={};return function(){var e=t(arguments);return or(e,r)||(r[e]=n.apply(this,arguments)),r[e]}}}(),Tr=mt(d,1/0),Sr=vt(c(d)),Wr=vt(b),Nr=Wr(-1),Rr=vt(j),qr=vt(function(n,t){return Ot(function(t,r){return!gt(r,n)},t)}),Cr=vt(function(n,t){return function(){return n.apply(this,arguments)||t.apply(this,arguments)}}),Lr=yt(i),Br=yt(C(i)),Fr=vt(function(n,t){return k(function(t,r){return t[n(r)?0:1].push(r),t},[[],[]],t)}),zr=dt(function(n,t,r){return A(n.split("."),r)===t}),Dr=dt(function(n,t,r){return A(t.split(n),r)}),Ur=vt(function(n,t){return Ot(function(t,r){return gt(r,n)},t)}),_r=vt(I),$r=vt(Ot),Gr=function(){return Nt.apply(this,Z(arguments))},Hr=function(){return Rt.apply(this,Z(arguments))},Jr=vt(jt),Kr=vt(E),Qr=dt(function(n,t,r){return r[n]===t}),Vr=dt(function(n,t,r){return or(t,r)?r[t]:n}),Xr=vt(function(n,t){for(var r=n.length,e=new Array(r),u=-1;++u<r;)e[u]=t[n[u]];return e}),Yr=vt(function(n,t){if(n>=t)return[];for(var r=0,e=new Array(Math.floor(t)-Math.ceil(n));t>n;)e[r++]=n++;return e}),Zr=dt(k),ne=dt(function(n,t,r){for(var e=-1,u=r.length;++e<u;)t=n(t,r[e],e,r);return t}),te=dt(function(n,t,r){for(var e=r.length;e--;)t=n(t,r[e]);return t}),re=dt(function(n,t,r){for(var e=r.length;e--;)t=n(t,r[e],e,r);return t}),ee=vt(function(n,t){return Kt(H(n),t)}),ue=vt(function(n,t){return f(H(n),t)}),ie=dt(function(n,t,r){return i(P(r,0,Math.min(n,r.length)),P(r,Math.min(r.length,n+t)))}),oe=dt(function(n,t,r){return r.replace(n,t)}),ce=dt(function(n,t,r){var e=0,u=r.length+1,i=new Array(u);for(i[e]=t;++e<u;)t=n(t,r[e-1]),i[e]=t;return i}),ae=gr(2,"slice"),fe=vt(function(n,t){return Wt(t).sort(n)}),le=vt(function(n,t){return P(t).sort(function(t,r){var e=n(t),u=n(r);return u>e?-1:e>u?1:0})}),se=gr(1,"split"),he=vt(function(n,t){return t.indexOf(n)}),ge=vt(function(n,t){return t.lastIndexOf(n)}),pe=gr(2,"substring"),me=C(pe)(void 0),ye=pe(0),ve=Zr(t,0),de=st("tail",function(n){return P(n,1)}),we=vt(st("take",function(n,t){return P(t,0,Math.min(n,t.length))})),be=vt(st("takeWhile",function(n,t){for(var r=-1,e=t.length;++r<e&&n(t[r]););return P(t,0,r)})),Oe=vt(function(n,t){return n(t),t}),je=vt(function(n,t){for(var r=new Array(Number(t)),e=r.length,u=-1;++u<e;)r[u]=n(u);return r}),xe=gr(0,"toLowerCase"),Ae=x(yr),Ie=gr(0,"toUpperCase"),Ee=vt(function(n,t){for(var r=n(t),e=[];r&&r.length;)e[e.length]=r[0],r=n(r[1]);return e}),ke=function(n){for(var t,r=-1,e=n.length,u=[];++r<e;)t=n[r],gt(t,u)||(u[u.length]=t);return u},Me=vt(function(n,t){for(var r,e=-1,u=t.length,i=[];++e<u;)r=t[e],o(n,r,i)||(i[i.length]=r);return i}),Pe=bt(!1),Te=function(n){for(var t=yr(n),r=t.length,e=new Array(r),u=-1;++u<r;)e[u]=n[t[u]];return e},Se=function(n,t){var r=ir(function(t){return"function"==typeof n[t]?"fn":"obj"},yr(n));switch(arguments.length){case 0:throw O();case 1:return function(t){return M(n,r,t)}}return M(n,r,t)},We=function(n,t){return Lt(n.length,function(){return t.apply(this,i([n],arguments))})},Ne=vt(function(n,t){for(var r,e=-1,u=n.length,i=t.length,o=[];++e<u;)for(r=-1;++r<i;)o[o.length]=[n[e],t[r]];return o}),Re=vt(function(n,t){for(var r=[],e=-1,u=Math.min(n.length,t.length);++e<u;)r[e]=[n[e],t[e]];return r}),qe=vt(function(n,t){for(var r=-1,e=n.length,u={};++r<e;)u[n[r]]=t[r];return u}),Ce=dt(function(n,t,r){for(var e=[],u=-1,i=Math.min(t.length,r.length);++u<i;)e[u]=n(t[u],r[u]);return e}),Le=function(n,t){return wt("ap",n)?n.ap(t):k(function(n,r){return i(n,w(r,t))},[],n)},Be=function Lu(n,t,r,e){var u=rt(n);if(u!==rt(t))return!1;if(Ht(n,t))return!0;if("RegExp"==u)return n.source===t.source&&n.global===t.global&&n.ignoreCase===t.ignoreCase&&n.multiline===t.multiline&&n.sticky===t.sticky&&n.unicode===t.unicode;if(Object(n)===n){if("Date"===u&&n.getTime()!=t.getTime())return!1;var i=yr(n);if(i.length!==yr(t).length)return!1;for(var o=r.length;o--;)if(r[o]===n)return e[o]===t;for(r.push(n),e.push(t),o=i.length;o--;){var c=i[o];if(!or(c,t)||!Lu(t[c],n[c],r,e))return!1}return r.pop(),e.pop(),!0}return!1},Fe=function(n,t){for(var r=yr(t),e=-1,u=r.length;++e<u;)n[r[e]]=t[r[e]];return n},ze=function(n){return function(t){var r=function(){var r=arguments;return n(function(n){return n.apply(null,r)},t)};return arguments.length>1?r.apply(null,P(arguments,1)):S(kr(jt("length",t)),r)}},De=ze(r),Ue=ze(e),_e=vt(Le),$e=dt(function(n,t,r){return Fe(L(w(function(n){return[n,r[n]]},$(r))),Ct(n,t))}),Ge=function(){var n=function(t,r,e){if(1===t.length)return $e(t[0],r,e);var u=e[t[0]];return $e(t[0],n(P(t,1),r,pr(Object,u)?u:{}),e)};return function(t,r,e){var u=arguments.length;if(0===u)throw O();var i=se(".",t),o=vt(function(t,r){return n(i,t,r)});switch(u){case 1:return o;case 2:return o(r);default:return o(r,e)}}}(),He=vt(st("chain",function(n,t){return Pe(w(n,t))})),Je=gr(1,"charAt"),Ke=gr(1,"charCodeAt"),Qe=dt(function(n,t,r){function e(t,r){return Le(w(kt,n(r)),t)}return k(e,t([]),r)}),Ve=vt(function(n,t){for(var r={},e=t.length,u=-1;++u<e;){var i=n(t[u]);r[i]=(or(i,r)?r[i]:0)+1}return r}),Xe=function(n){return Lt(n.length,n)},Ye=vt(function(n,t){return Be(n,t,[],[])}),Ze=vt(function(n,t){return Fe(Fe({},t),Ir(function(n,r){return n(t[r])},n))}),nu=s(yr),tu=Rr(0),ru=ae(0,-1),eu=function(n){return Fe(n,Ru)},uu=vt(function(n,t){return ke(a(C(gt)(n),t))}),iu=dt(function(n,t,r){for(var e=[],u=-1;++u<t.length;)o(n,t[u],r)&&(e[e.length]=t[u]);return Me(n,e)}),ou=function(n){for(var t=yr(n),r=t.length,e=-1,u={};++e<r;){var i=t[e],o=n[i];or(o,u)||(u[o]=[]),u[o].push(i)}return u},cu=function(n){for(var t=yr(n),r=t.length,e=-1,u={};++e<r;){var i=t[e];u[n[i]]=i}return u},au=Rr(-1),fu=vt(function(n,t){var r=Lt(n,t);if(0===arguments.length)throw O();return Lt(n,function(){return k(Le,br(r,arguments[0]),P(arguments,1))})}),lu=function(t){if(2!==t.length)throw new Error("Expected binary function.");return function r(e,u){switch(arguments.length){case 0:throw O();case 1:return e===n?C(r):Lr(t,e);default:return e===n?C(t)(u):t(e,u)}}},su=Dr("."),hu=Zr(b,1),gu=vt(function(n,t){return je(T(n),t)}),pu=lu(function(n,t){return n-t}),mu=vt(Nt(ke,i)),yu=dt(function(n,t,r){return Me(n,i(t,r))}),vu=function(n){var t=P(arguments,1),r=t.length;return Xe(S(r,function(){for(var e=[],u=-1;++u<r;)e[e.length]=t[u](arguments[u]);return n.apply(this,e.concat(P(arguments,r)))}))},du=Qe(br(F)),wu=lu(function(n,t){if(p(t))return i(n,t);if(wt("concat",n))return n.concat(t);throw new TypeError("can't concat "+typeof n)}),bu=vt(function(n,t){if(n>10)throw new Error("Constructor with greater than ten arguments");return 0===n?function(){return new t}:Xe(G(n,function(n,r,e,u,i,o,c,a,f,l){switch(arguments.length){case 1:return new t(n);case 2:return new t(n,r);case 3:return new t(n,r,e);case 4:return new t(n,r,e,u);case 5:return new t(n,r,e,u,i);case 6:return new t(n,r,e,u,i,o);case 7:return new t(n,r,e,u,i,o,c);case 8:return new t(n,r,e,u,i,o,c,a);case 9:return new t(n,r,e,u,i,o,c,a,f);case 10:return new t(n,r,e,u,i,o,c,a,f,l)}}))}),Ou=lu(gt),ju=lu(function(n,t){return n/t}),xu=lu(h),Au=lu(function(n,t){return n>=t}),Iu=function(n){if(0===arguments.length)throw O();return fu(n.length,n)},Eu=lu(d),ku=lu(function(n,t){return t>=n}),Mu=lu(function(n,t){return m(n)?!m(t)||1>t?0/0:(n%t+t)%t:0/0}),Pu=lu(function(n,t){return Fe(Fe({},n),t)}),Tu=Zr(Pu,{}),Su=lu(function(n,t){return n%t}),Wu=vu(w,_r,F),Nu=function(n){return bu(n.length,n)},Ru={F:ot,I:ct,T:at,__:n,add:xt,all:At,allPass:De,always:T,and:It,any:Et,anyPass:Ue,ap:_e,append:kt,appendTo:Mt,apply:Pt,arity:S,assoc:$e,assocPath:Ge,binary:Tt,bind:St,call:W,chain:He,charAt:Je,charCodeAt:Ke,clone:Wt,commute:du,commuteMap:Qe,comparator:N,compose:Nt,composeP:Rt,concat:wu,cond:R,construct:Nu,constructN:bu,contains:Ou,containsWith:qt,converge:q,countBy:Ve,createMapEntry:Ct,curry:Xe,curryN:Lt,dec:Bt,defaultTo:Ft,difference:zt,differenceWith:Dt,dissoc:Ut,divide:ju,drop:_t,dropWhile:$t,empty:Gt,eq:Ht,eqDeep:Ye,eqProps:Jt,evolve:Ze,filter:Kt,filterIndexed:Qt,find:Vt,findIndex:Xt,findLast:Yt,findLastIndex:Zt,flatten:nr,flip:C,forEach:tr,forEachIndexed:rr,fromPairs:L,func:B,functions:nu,functionsIn:er,get:ur,groupBy:ir,gt:xu,gte:Au,has:or,hasIn:cr,head:tu,identity:F,ifElse:ar,inc:fr,indexOf:lr,init:ru,insert:sr,insertAll:hr,installTo:eu,intersection:uu,intersectionWith:iu,invert:ou,invertObj:cu,invoker:gr,is:pr,isArrayLike:z,isEmpty:D,isNil:U,isSet:_,join:mr,keys:yr,keysIn:$,last:au,lastIndexOf:vr,length:dr,lens:wr,lift:Iu,liftN:fu,lt:Eu,lte:ku,map:br,mapAccum:Or,mapAccumRight:jr,mapIndexed:xr,mapObj:Ar,mapObjIndexed:Ir,match:Er,mathMod:Mu,max:kr,maxBy:Mr,memoize:Pr,merge:Pu,mergeAll:Tu,min:Tr,minBy:Sr,modulo:Su,multiply:Wr,nAry:G,negate:Nr,not:H,nth:Rr,nthArg:J,of:K,omit:qr,once:Q,op:lu,or:Cr,partial:Lr,partialRight:Br,partition:Fr,path:su,pathEq:zr,pathOn:Dr,pick:Ur,pickAll:_r,pickBy:$r,pipe:Gr,pipeP:Hr,pluck:Jr,prepend:Kr,prependTo:V,product:hu,project:Wu,prop:X,propEq:Qr,propOf:Y,propOr:Vr,props:Xr,range:Yr,reduce:Zr,reduceIndexed:ne,reduceRight:te,reduceRightIndexed:re,reject:ee,rejectIndexed:ue,remove:ie,repeat:gu,replace:oe,reverse:Z,scan:ce,slice:ae,sort:fe,sortBy:le,split:se,strIndexOf:he,strLastIndexOf:ge,substring:pe,substringFrom:me,substringTo:ye,subtract:pu,sum:ve,tail:de,take:we,takeWhile:be,tap:Oe,times:je,toLower:xe,toPairs:Ae,toPairsIn:nt,toUpper:Ie,trim:tt,type:rt,unapply:et,unary:ut,unfold:Ee,union:mu,unionWith:yu,uniq:ke,uniqWith:Me,unnest:Pe,useWith:vu,values:Te,valuesIn:it,where:Se,wrap:We,xprod:Ne,zip:Re,zipObj:qe,zipWith:Ce};"object"==typeof exports?module.exports=Ru:"function"==typeof define&&define.amd?define(function(){return Ru}):this.R=Ru}).call(this); </ins>  No newline at end of file

script(src='/js/lib/codemirror/mode/javascript/javascript.js') script(src='/js/lib/jailed/jailed.js') script(src='/js/lib/bonfire/bonfireInit.js') <ins> script(src="https://cdn.jsdelivr.net/ramda/0.10.0/ramda.min.js") </ins> .row

var passedBonfireHash = !{JSON.stringify(bonfireHash)}; var challengeName = !{JSON.stringify(name)}; var started = Math.floor(Date.now() / 1000); <ins> var _ = R; </ins> .col-xs-12.col-sm-12.col-md-8 #mainEditorPanel form.code


Question:
There's a minor, minor typo in the title of this waypoint: "Waypoint: Responsively Style a Radio Buttons" should be "Waypoint: Responsively Style Radio Buttons"
Thanks, commit addresses this

} ]); <ins> profileValidation.controller('nonprofitFormController', ['$scope', function($scope) { } ]); </ins> profileValidation.directive('uniqueUsername', function($http) { return { restrict: 'A',

li &#8226 Understand that they will build your project using JavaScript frameworks (as opposed to older or proprietary tools) li &#8226 Keep your expectations high. Our students' goal is to produce work that's up to your standards h3 If you're OK with these terms, great! We'd love to help you! Fill in this form and we'll get right back to you. <del> form.form-horizontal(role='form', action="/nonprofits/", method='POST') </del> <ins> form.form-horizontal(role='form', action="/nonprofits/", method='POST', novalidate='novalidate', name='nonprofitForm') </ins> input(type='hidden', name='_csrf', value=_csrf) .form-group <del> label(class='col-sm-2 control-label', for='name') Your name </del> <ins> label(class='col-sm-2 control-label', for='name') Your name * </ins> .col-sm-8 <del> input.form-control(type='text', name='name', id='name') </del> <ins> input.form-control(type='text', name='name', id='name', autocomplete="off", ng-model='name', required='required') .col-sm-8.col-sm-offset-2(ng-show="nonprofitForm.name.$invalid && nonprofitForm.name.$error.required && !nonprofitForm.name.$pristine") alert(type='danger') span.ion-close-circled(id='#name-error') |  Your name is required. </ins> .form-group <del> label(class='col-sm-2 control-label', for='email') Your email </del> <ins> label(class='col-sm-2 control-label', for='email') Your email * </ins> .col-sm-8 <del> input.form-control(type='text', name='email', id='email') </del> <ins> input.form-control(type='text', name='email', id='email', autocomplete="off", ng-model='email', required='required') .col-sm-8.col-sm-offset-2(ng-show="nonprofitForm.email.$invalid && nonprofitForm.email.$error.required && !nonprofitForm.email.$pristine") alert(type='danger') span.ion-close-circled(id='#email-error'). Your email is required. </ins> .form-group <del> label(class='col-sm-2 control-label', for='message') Briefly describe what problem you need to solve, and for whom. </del> <ins> label(class='col-sm-2 control-label', for='message') Briefly describe what problem you need to solve, and for whom. * </ins> .col-sm-8 <del> textarea.form-control(type='text', name='message', id='message', rows='7') </del> <ins> textarea.form-control(type='text', name='message', id='message', rows='7', autocomplete="off", ng-model='message', required='required') .col-sm-8.col-sm-offset-2(ng-show="nonprofitForm.message.$invalid && nonprofitForm.message.$error.required && !nonprofitForm.message.$pristine") alert(type='danger') span.ion-close-circled(id='#message-error') | Your message is required. </ins> .form-group .col-sm-offset-2.col-sm-8 <del> button.btn.btn-primary(type='submit') </del> <ins> button.btn.btn-primary(type='submit', ng-disabled='nonprofitForm.$invalid') </ins> span.ion-paper-airplane <del> | Submit </del> <ins> | Submit </ins>  No newline at end of file


Question:
Adding placeholder tag to the <imgelement rather than the <inputelement validates the "Your text field should have a placeholder attribute." checkbox incorrectly.
Could you provide a screenshot? I'm not quite following "Adding a placeholder tag to the element rather than the element...."
Sorry spaced out and wrote the wrong thing. If you add placeholder tag to the img element rather than the text field the waypoint will say it's correct.

"For example: <input type='text' placeholder='this is placeholder text'>" ], "tests": [  "assert($('[placeholder]').length > 0, 'Your text field should have a placeholder attribute.')", "assert(/url/gi.test($('input').attr('placeholder')), 'Your placeholder field should have the value of "cat photo URL".')"   "assert($('input[placeholder]').length > 0, 'Your text field should have a placeholder attribute.')", "assert($('input').attr('placeholder') === 'cat photo URL', 'Your placeholder field should have the value of "cat photo URL".')"  ], "challengeSeed": [ "<link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'>",


Question: This challenge has the additional requirement of "Your text field should have the placeholder text of "cat photo URL".", when this placeholder text was before, then removed again arbitrarily in this lesson. Assuming this is a bug since it doesn't match the tutorial flow.

"For example, if you wanted to make a text input field required, you can just add the word "required" within your input element use: <input type='text' required>" ], "tests": [  "assert($('input').prop('required'), 'Your text field should have the property of being required.')", "assert(new RegExp('cat photo URL').test($('input').prop('placeholder')), 'Your text field should have the placeholder text of "cat photo URL".')"   "assert($('input').prop('required'), 'Your text field should have the property of being required.')"  ], "challengeSeed": [ "<link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'>",

"
other cats
", "
", "<form action="/submit-cat-photo">",  "  <input type='text'>",   "  <input type='text' placeholder='cat photo URL'>",  "  <button type='submit'>Submit</button>", "</form>" ],


Question:
Challenge: Just for reference, I am using Firefox 38 and Windows 8.1, without additional fonts or MS Office installed. As such, the font does not render in the exercise. Instead, it produces Serif. Interestingly enough, the dev tools show the correct font family. (See attached screenshot) In my Firefox settings, I have the default monospace font as "Lucida Console", so I am not sure why that font is not displaying, in place of "Monospace" !
Which version of Firefox are you running? Have you tried just refreshing the page? I've seen a lot of issues caused by the browser that got "blamed" on FCC itself.
That's likely because you have the font-family surrounded in quotes. Monospace isn't an actual font-family, it's a keyword that represents the browser's default monospaced font (as you point out, Lucida Console in your case). When you surround the font-family value in quotes, the browser is attempting to load a font actually called "Monospace" and failing since that doesn't exist on your system. Try the following code and see if it's fixed:
The instructions are as follows: Maybe, the lesson should be changed to ask for the family ? Beause I see family as a type (monospace, sans-serif, etc), or a group of fonts ("Sans-Serif, Arial, Helvetica") EDIT: Your suggestion of changing to the type monospace worked. It renders as the default monospace set by my browser
UPDATE - I am noticing that when you begin a new exercise, the code changes slightly to show best practices and ideal answer. This is what FCC considered to be correct: Notice the capitalized "Monospace", without quotes. In my opinion, when FCC refers to a phrase to enter, it should wrap it in a code tag, as I assumed the quotation marks to be included.
The issue seems to be that I originally put the example in quotes. I'm going to fix that. Thanks for catching this,
Thank you for such a quick response!

} ]); <ins> profileValidation.controller('nonprofitFormController', ['$scope', function($scope) { } ]); </ins> profileValidation.directive('uniqueUsername', function($http) { return { restrict: 'A',

li &#8226 Understand that they will build your project using JavaScript frameworks (as opposed to older or proprietary tools) li &#8226 Keep your expectations high. Our students' goal is to produce work that's up to your standards h3 If you're OK with these terms, great! We'd love to help you! Fill in this form and we'll get right back to you. <del> form.form-horizontal(role='form', action="/nonprofits/", method='POST') </del> <ins> form.form-horizontal(role='form', action="/nonprofits/", method='POST', novalidate='novalidate', name='nonprofitForm') </ins> input(type='hidden', name='_csrf', value=_csrf) .form-group <del> label(class='col-sm-2 control-label', for='name') Your name </del> <ins> label(class='col-sm-2 control-label', for='name') Your name * </ins> .col-sm-8 <del> input.form-control(type='text', name='name', id='name') </del> <ins> input.form-control(type='text', name='name', id='name', autocomplete="off", ng-model='name', required='required') .col-sm-8.col-sm-offset-2(ng-show="nonprofitForm.name.$invalid && nonprofitForm.name.$error.required && !nonprofitForm.name.$pristine") alert(type='danger') span.ion-close-circled(id='#name-error') |  Your name is required. </ins> .form-group <del> label(class='col-sm-2 control-label', for='email') Your email </del> <ins> label(class='col-sm-2 control-label', for='email') Your email * </ins> .col-sm-8 <del> input.form-control(type='text', name='email', id='email') </del> <ins> input.form-control(type='text', name='email', id='email', autocomplete="off", ng-model='email', required='required') .col-sm-8.col-sm-offset-2(ng-show="nonprofitForm.email.$invalid && nonprofitForm.email.$error.required && !nonprofitForm.email.$pristine") alert(type='danger') span.ion-close-circled(id='#email-error'). Your email is required. </ins> .form-group <del> label(class='col-sm-2 control-label', for='message') Briefly describe what problem you need to solve, and for whom. </del> <ins> label(class='col-sm-2 control-label', for='message') Briefly describe what problem you need to solve, and for whom. * </ins> .col-sm-8 <del> textarea.form-control(type='text', name='message', id='message', rows='7') </del> <ins> textarea.form-control(type='text', name='message', id='message', rows='7', autocomplete="off", ng-model='message', required='required') .col-sm-8.col-sm-offset-2(ng-show="nonprofitForm.message.$invalid && nonprofitForm.message.$error.required && !nonprofitForm.message.$pristine") alert(type='danger') span.ion-close-circled(id='#message-error') | Your message is required. </ins> .form-group .col-sm-offset-2.col-sm-8 <del> button.btn.btn-primary(type='submit') </del> <ins> button.btn.btn-primary(type='submit', ng-disabled='nonprofitForm.$invalid') </ins> span.ion-paper-airplane <del> | Submit </del> <ins> | Submit </ins>  No newline at end of file


Question:
! This effects longer lines of codes by making it impossible to select code when trying to insert the cursor with the mouse. I saw where a commit to make the iphone stand out over footer by adding a z-index of 9999 but 9999 is too high. I'm doing a pull request right now that fixes the cover up issue on the code editor and still keeps the iphone above the footer as Quincy wanted. Thanks, Charles
Thanks, I didn't even think about the modal when I set the z-index that high. I'm taking a look at your pull request now.

.iframe-scroll { position: fixed !important; margin-top: 75px; <del> z-index: 9999; </del> <ins> z-index: 1; </ins> } } @media only screen and (max-width: 992px) {


Question: Challenge has an issue. Please describe how to reproduce it, and include links to screen shots if possible. I passed the test, but I should not, because I did not wrapped all my buttons within the same div element with the class "row". Screenshot:

"The "row" class is applied to a div, and the buttons themselves can be wrapped within it." ], "tests": [  "assert($('div.row:has(button)'), 'Your buttons should all be wrapped within the same div element with the class "row".')",   "assert($('div.row:has(button)').length > 0, 'Your buttons should all be wrapped within the same div element with the class "row".')",  "assert($('div.col-xs-4:has(button)').length > 2, 'Each of your Bootstrap buttons should be wrapped within its own a div element with the class "col-xs-4".')", "assert(editor.match(/</button>/g) && editor.match(/<button/g) && editor.match(/</button>/g).length === editor.match(/<button/g).length, 'Make sure each of your button elements has a closing tag.')", "assert(editor.match(/
/g) && editor.match(/<div/g) && editor.match(/
/g).length === editor.match(/<div/g).length, 'Make sure each of your div elements has a closing tag.')"


Question:
There is a bug in the test, I wrote the code to check the string palindrome or not like this. function palindrome(str) { // Good luck! var i, j; for (i = 0,j = ( -1) ; i < j; i++,j--){ if(str[i].toLowerCase() !== str[j].toLowerCase()) return false; else return true; } } If you see this program it looks correct. yes this is correct to check the string palindrome or not. but this is wrong in returning. it wont loop entire string, With this code all the tests are passing, but it should not pass any test, at least 2 test should fail.
Pleese close this and take an extra look at your if-statement. The #help channel on Slack is a great resource if you can't figure it out, or you can @ me on there and I'll help you out.
Hi I know my program is wrong. That's what I am mentioning with this program all test cases are passing, and it allowed me to go to next exercise. Regards Namitha On Saturday, June 13, 2015, Anton Strömkvist wrote:
Oh, sorry, my bad! Should be fixed with

"assert.deepEqual(palindrome("not a palindrome"), false);", "assert.deepEqual(palindrome("A man, a plan, a canal. Panama"), true);", "assert.deepEqual(palindrome("never odd or even"), true);", <del> "assert.deepEqual(palindrome("nope"), false);" </del> <ins> "assert.deepEqual(palindrome("nope"), false);", "assert.deepEqual(palindrome("almostomla"), false);" </ins> ], "challengeSeed": [ "function palindrome(str) {",


Question:
Challenge has an issue. Please describe how to reproduce it, and include links to screen shots if possible. This bonfire seems to be missing assertion tests for all the different test cases outlined in the instructions. It currently is only testing the case of the ampersand (&) and is leaving out the <, , ', and " cases. Suggest adding another assertion or assertions to test the rest of these cases.
Just for logging purposes, this was discussed in . I'm currently not at a computer, but if someone wants to assign me, I could fix this as soon as I can, which /should/ be tonight.

], "tests": [ "assert.strictEqual(convert('Dolce & Gabbana'), 'Dolce & Gabbana', 'should escape characters');", <ins> "assert.strictEqual(convert('Hamburgers < Pizza < Tacos'), 'Hamburgers < Pizza < Tacos', 'should escape characters');", "assert.strictEqual(convert('Sixty > twelve'), 'Sixty > twelve', 'should escape characters');", "assert.strictEqual(convert('Stuff in "quotation marks"'), 'Stuff in "quotation marks"', 'should escape characters');", "assert.strictEqual(convert("Shindler's List"), 'Shindler's List', 'should escape characters');", </ins> "assert.strictEqual(convert('abc'), 'abc', 'should handle strings with nothing to escape');" ], "MDNlinks": [


Question: The first test to pass for this Bonfire is that the function returns a number. However, if I run the code without changing anything (so the function simply returns the string argument), the test still claims to pass.

"permAlone('aab');" ], "tests": [ <del> "expect(permAlone('aab')).to.be.a.number;", </del> <ins> "expect(permAlone('aab')).to.be.a('number');", </ins> "expect(permAlone('aab')).to.equal(2);", "expect(permAlone('aaa')).to.equal(0);", "expect(permAlone('aabb')).to.equal(8);",


Question:
Challenge has an issue. Please describe how to reproduce it, and include links to screen shots if possible. This passes when there are more than 2 arguments after the array, even if it doesn't actually delete those arguments from the array.
What code makes the test cases pass incorrectly?
Here's an example of one that passed, but the returned array is [1, 1] instead of an empty array: function destroyer(arr) { // Remove all the values // for each element in arr, remove each element in args that // is args[0] var args = (arguments); var holder = []; var filtered = (destroy); // function for above function destroy(value) { for (i = 1; i < ; i++) { return value !== args[i] && value !== args [i + 1]; } } return filtered; } destroyer([1, 2, 3, 1, 2, 3], 2, 3, 1); // returned arr is [1, 1] instead of [ ].

], "tests": [ "assert.deepEqual(destroyer([1, 2, 3, 1, 2, 3], 2, 3), [1, 1], 'should remove correct values from an array');", <del> "assert.deepEqual(destroyer([1, 2, 3, 5, 1, 2, 3], 2, 3), [1, 5, 1], 'should remove correct values from an array');" </del> <ins> "assert.deepEqual(destroyer([1, 2, 3, 5, 1, 2, 3], 2, 3), [1, 5, 1], 'should remove correct values from an array');", "assert.deepEqual(destroyer([3, 5, 1, 2, 2], 2, 3, 5), [1], 'should accept more than two additional arguments');", "assert.deepEqual(destroyer([2, 3, 2, 3], 2, 3), [], 'should remove correct values from an array');", "assert.deepEqual(destroyer(['tree', 'hamburger', 53], 'tree', 53), ['hamburger'], 'should handle NaN-elements');" </ins> ], "MDNlinks": [ "Arguments object",


Question:
When registering a new account using my email address, I get this error after hitting submit: ! {"error":{"name":"Error","status":500,"message":"Timeout in connecting after 5000 ms"}} Ubuntu 14.04, Chrome browser
Not sure if this is the same as so I am going to keep this open for now.
Looks like this issue might of be resolved with I will keep an I on this to see if it rears its head again! Thanks for your help!

failureRedirect: '/login' }; <del> app.get('/auth/twitter', passport.authenticate('twitter')); </del> <ins> app.get('/auth/twitter', passport.authorize('twitter')); </ins> app.get( '/auth/twitter/callback', passport.authenticate('twitter', {

); }; <del> // prepares the string to be printed on the terminal var escape = function(msg) { return msg. replace(/&/g,'&'). replace(/</g,'<'). replace(/>/g,'>'). replace(/n/g, '<br/>'). replace(/ /g, ' '); }; </del> // puts the message on the terminal var print = function(cls, msg) { codeOutput.setValue(msg);

// interface provided to the plugin var api = { output: function(data) { <del> if (!--requests) { endLoading(); } // print('separator'); print('input', data.input); if (data.error) { print('message', data.error); } else { print('output', data.output); } </del> <ins> endLoading(); print('input', data.input); if (data.error) { print('message', data.error); } else { print('output', data.output); } </ins> } };

setTimeout( function() { endLoading(); codeOutput.setValue('Infinite loop detected!'); <del> // print('message', 'Your code took too long to execute. Check for an infinite loop or recursion.'); //            console.log('infinite loop'); //          $('#codeOutput.setValue('Infinite loop detected')') </del> reset(); }, 10); });

var editor = myCodeMirror; myCodeMirror.setValue('2*2'); myCodeMirror.setSize("100%", 500); var codeOutput = CodeMirror.fromTextArea(document.getElementById("codeOutput"), { lineNumbers: false,


Question:
Challenge has an issue. This bonfire needs more tests. It's too easy to get them passed. Now it checks only &. I would add tests for <, , ", '.
Agreed. I can add more tests to this one. However, we also need to properly display the test cases so that the user understands what the test is asking. Currently, the test case reads like this: whereas what we need is something like this: ! Anyone have ideas on how to accomplish this?
This was solved in a recent commit. This issue should be closed.
Thank you for your help! We've now fixed this in production as well!

], "tests": [ "assert.strictEqual(convert('Dolce & Gabbana'), 'Dolce & Gabbana', 'should escape characters');", <ins> "assert.strictEqual(convert('Hamburgers < Pizza < Tacos'), 'Hamburgers < Pizza < Tacos', 'should escape characters');", "assert.strictEqual(convert('Sixty > twelve'), 'Sixty > twelve', 'should escape characters');", "assert.strictEqual(convert('Stuff in "quotation marks"'), 'Stuff in "quotation marks"', 'should escape characters');", "assert.strictEqual(convert("Shindler's List"), 'Shindler's List', 'should escape characters');", </ins> "assert.strictEqual(convert('abc'), 'abc', 'should handle strings with nothing to escape');" ], "MDNlinks": [