diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..56cbb6e --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,6 @@ +module.exports = { + extends: 'kswedberg/es5', + rules: { + 'comma-dangle': ['warn', 'never'] + } +}; diff --git a/.jscsrc b/.jscsrc new file mode 100644 index 0000000..d458b8c --- /dev/null +++ b/.jscsrc @@ -0,0 +1,88 @@ +{ + "requireCurlyBraces": [ + "if", + "else", + "for", + "while", + "do", + "try", + "catch" + ], + "requireSpaceAfterKeywords": [ + "if", + "else", + "for", + "while", + "do", + "switch", + "case", + "return", + "try", + "catch", + "typeof" + ], + "requireSpaceBeforeBlockStatements": true, + "requireParenthesesAroundIIFE": true, + "requireSpacesInConditionalExpression": true, + "disallowSpacesInNamedFunctionExpression": { + "beforeOpeningRoundBrace": true + }, + "disallowSpacesInFunctionDeclaration": { + "beforeOpeningRoundBrace": true + }, + "requireSpaceBetweenArguments": true, + "requireBlocksOnNewline": true, + "disallowEmptyBlocks": true, + "disallowSpacesInsideArrayBrackets": true, + "disallowSpacesInsideParentheses": true, + "disallowDanglingUnderscores": true, + "requireCommaBeforeLineBreak": true, + "disallowSpacesInCallExpression": true, + "disallowSpaceAfterPrefixUnaryOperators": true, + "disallowSpaceBeforePostfixUnaryOperators": true, + "disallowSpaceBeforeBinaryOperators": [ + "," + ], + "requireSpacesInForStatement": true, + "requireSpaceBeforeBinaryOperators": true, + "requireSpaceAfterBinaryOperators": true, + "disallowKeywords": [ + "with" + ], + "disallowMixedSpacesAndTabs": true, + "disallowTrailingWhitespace": true, + "disallowKeywordsOnNewLine": [ + "else" + ], + "requireLineFeedAtFileEnd": true, + "requireCapitalizedConstructors": true, + "requireDotNotation": true, + "disallowNewlineBeforeBlockStatements": true, + "disallowMultipleLineStrings": true, + "requireSpaceBeforeObjectValues": true, + "validateQuoteMarks": "'", + "requireSpaceAfterLineComment": true, + "validateIndentation": 2, + "validateLineBreaks": "LF", + "disallowSpacesInFunction": { + "beforeOpeningRoundBrace": true + }, + "requireSpacesInFunction": { + "beforeOpeningCurlyBrace": true + }, + "disallowMultipleLineBreaks": true, + "disallowYodaConditions": true, + "disallowFunctionDeclarations": true, + "disallowMultipleVarDecl": "exceptUndefined", + "requirePaddingNewlinesBeforeKeywords": [ + "do", + "for", + "if", + "switch", + "try", + "void", + "while", + "return" + ], + "excludeFiles": ["**/node_modules/**", "**/min/**", "**/*.min.js"] +} diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..b6a7d89 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +16 diff --git a/Gruntfile.js b/Gruntfile.js index 6e3e44e..9a733e6 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -1,16 +1,13 @@ -/*global module:false*/ - module.exports = function(grunt) { - + var pkg = grunt.file.readJSON('package.json'); var marked = require('marked'); var hl = require('node-syntaxhighlighter'); marked.setOptions({ highlight: function(code, lang) { - lang = lang || 'javascript'; - lang = hl.getLanguage(lang); + var language = hl.getLanguage(lang || 'javascript'); - return hl.highlight(code, lang); + return hl.highlight(code, language); }, gfm: true }); @@ -18,8 +15,7 @@ module.exports = function(grunt) { // Project configuration. grunt.initConfig({ pluginName: 'smooth-scroll', - bower: './bower.json', - pkg: grunt.file.readJSON('package.json'), + pkg: pkg, meta: { banner: '/*!<%= "\\n" %>' + ' * <%= pkg.title %> - v<%= pkg.version %> - ' + @@ -27,12 +23,11 @@ module.exports = function(grunt) { '<%= pkg.homepage ? " * " + pkg.homepage + "\\n" : "" %>' + ' * Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>' + '<%= "\\n" %>' + - ' * Licensed <%= _.pluck(pkg.licenses, "type").join(", ") %>' + - ' (<%= _.pluck(pkg.licenses, "url").join(", ") %>)' + + ' * Licensed <%= pkg.license %>' + '<%= "\\n" %>' + ' */' + '<%= "\\n\\n" %>' }, - concat: { + concat: { all: { src: ['src/jquery.<%= pluginName %>.js'], dest: 'jquery.<%= pluginName %>.js' @@ -41,14 +36,14 @@ module.exports = function(grunt) { stripBanners: true, banner: '<%= meta.banner %>', process: function(src) { - var umdHead = grunt.file.read('lib/tmpl/umdhead.tpl'), - umdFoot = grunt.file.read('lib/tmpl/umdfoot.tpl'); + var umdHead = grunt.file.read('lib/tmpl/umdhead.tpl'); + var umdFoot = grunt.file.read('lib/tmpl/umdfoot.tpl'); - src = src + var ret = src .replace('(function($) {', umdHead) .replace('})(jQuery);', umdFoot); - return src; + return ret; } } }, @@ -58,7 +53,8 @@ module.exports = function(grunt) { 'jquery.<%= pluginName %>.min.js': ['<%= concat.all.dest %>'] }, options: { - preserveComments: 'some' + banner: '<%= meta.banner %>' + // preserveComments: /\/\*[\s\S]*/ } } }, @@ -77,6 +73,7 @@ module.exports = function(grunt) { all: ['Gruntfile.js', 'src/**/*.js'], options: { curly: true, + devel: true, eqeqeq: true, unused: true, immed: true, @@ -94,77 +91,71 @@ module.exports = function(grunt) { } } }, + eslint: { + target: ['Gruntfile.js', 'src/**/*.js', 'test/**/*.js'], + options: { + fix: true + // configFile: '.eslintrc.js', + } + }, version: { - patch: { + src: { + src: ['src/jquery.<%= pluginName %>.js'] + }, + banners: { + pkg: pkg, src: [ - 'package.json', - '<%= pluginName %>.jquery.json', - 'src/jquery.<%= pluginName %>.js', - 'jquery.<%= pluginName %>.js' + 'jquery.<%= pluginName %>.js', + 'jquery.<%= pluginName %>.min.js' ], options: { - release: 'patch' + prefix: '- v' } }, - same: { - src: ['package.json', 'src/jquery.<%= pluginName %>.js', 'jquery.<%= pluginName %>.js'] - }, - bannerPatch: { - src: ['jquery.<%= pluginName %>.js'], - options: { - prefix: '- v', - release: 'patch' - } + package: { + src: ['package.json'] } } }); - grunt.registerTask( 'configs', 'Update json configs based on package.json', function() { - var pkg = grunt.file.readJSON('package.json'), - pkgBasename = grunt.config('pluginName'), - bowerFile = grunt.config('bower'), - bower = grunt.file.readJSON(bowerFile), - jqConfigFile = pkgBasename + '.jquery.json', - jqConfig = grunt.file.readJSON(jqConfigFile); - - ['main', 'version', 'dependencies', 'keywords'].forEach(function(el) { - bower[el] = pkg[el]; - jqConfig[el] = pkg[el]; - }); - - ['author', 'repository', 'homepage', 'docs', 'bugs', 'demo', 'licenses'].forEach(function(el) { - jqConfig[el] = pkg[el]; - }); + grunt.registerTask('docs', 'Convert readme.md to html and concat with header and footer for index.html', function() { + var readme = grunt.file.read('readme.md'); + var head = grunt.template.process(grunt.file.read('lib/tmpl/header.tpl')); + var foot = grunt.file.read('lib/tmpl/footer.tpl'); + var doc = marked(readme); - jqConfig.keywords.shift(); + grunt.file.write('index.html', head + doc + foot); + }); - jqConfig.name = pkgBasename; - bower.name = 'jquery-' + pkgBasename; + grunt.registerTask('updateBower', 'Update bower.json to match package.json', function() { + var pkg = require('./package.json'); + var props = ['name', 'main', 'homepage', 'version', 'repository', 'dependencies', 'keywords', 'license']; + var json = { + description: 'Easy implementation of smooth scrolling for same-page links' + }; - grunt.file.write( bowerFile, JSON.stringify(bower, null, 2) + '\n'); - grunt.log.writeln( 'File "' + bowerFile + '" updated."' ); + props.forEach(function(item) { + if (pkg[item]) { + json[item] = pkg[item]; + } + }); - while ( /jquery/i.test(jqConfig.keywords[0]) ) { - jqConfig.keywords.shift(); - } + json.authors = [pkg.author]; + json.moduleType = ['amd', 'node']; + json.ignore = ['demo/', 'lib/', 'src/', 'test/', '**/.*', 'Gruntfile.js', 'package.json']; - grunt.file.write( jqConfigFile, JSON.stringify(jqConfig, null, 2) + '\n'); - grunt.log.writeln( 'File "' + jqConfigFile + '" updated."' ); + grunt.file.write('bower.json', JSON.stringify(json, null, 2)); }); - grunt.registerTask('docs', 'Convert readme.md to html and concat with header and footer for index.html', function() { - var readme = grunt.file.read('readme.md'), - head = grunt.template.process( grunt.file.read('lib/tmpl/header.tpl') ), - foot = grunt.file.read('lib/tmpl/footer.tpl'), - doc = marked(readme); + grunt.registerTask('lint', ['eslint']); + grunt.registerTask('build', ['lint', 'concat', 'version', 'updateBower', 'uglify', 'docs']); + grunt.registerTask('default', ['build']); - grunt.file.write('index.html', head + doc + foot); + ['patch', 'minor', 'major'].forEach(function(release) { + grunt.registerTask(release, ['lint', 'version:src:' + release, 'concat', 'uglify', 'version:banners:' + release, 'version:package:' + release, 'updateBower']); }); - grunt.registerTask('build', ['jshint', 'concat', 'version:same', 'configs', 'uglify', 'docs']); - grunt.registerTask('patch', ['jshint', 'concat', 'version:bannerPatch', 'version:patch', 'configs', 'uglify']); - grunt.registerTask('default', ['build']); - + grunt.loadNpmTasks('grunt-eslint'); grunt.loadNpmTasks('grunt-contrib-jshint'); grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-contrib-concat'); diff --git a/bower.json b/bower.json index 46ac35e..e8a5183 100644 --- a/bower.json +++ b/bower.json @@ -1,20 +1,41 @@ { + "description": "Easy implementation of smooth scrolling for same-page links", "name": "jquery-smooth-scroll", + "main": "jquery.smooth-scroll.js", + "homepage": "https://github.com/kswedberg/jquery-smooth-scroll", + "version": "2.2.0", + "repository": { + "type": "git", + "url": "https://github.com/kswedberg/jquery-smooth-scroll" + }, "dependencies": { - "jquery": ">=1.3" + "jquery": ">=1.7.0" }, - "main": "jquery.smooth-scroll.js", + "keywords": [ + "jQuery", + "jquery-plugin", + "scroll", + "animation" + ], + "license": "MIT", + "authors": [ + { + "name": "Karl Swedberg", + "email": "kswedberg@gmail.com", + "url": "https://karlswedberg.com/" + } + ], + "moduleType": [ + "amd", + "node" + ], "ignore": [ "demo/", "lib/", "src/", + "test/", + "**/.*", "Gruntfile.js", - "package.json", - "smooth-scroll.jquery.json" - ], - "keywords": [ - "jquery-plugin", - "scroll", - "animation" + "package.json" ] -} +} \ No newline at end of file diff --git a/demo/bbq.html b/demo/bbq.html index af2bb2c..439bc51 100644 --- a/demo/bbq.html +++ b/demo/bbq.html @@ -2,62 +2,62 @@
-p1 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
-p2 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
- back to nav -p3 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
- back to nav -p4 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
- back to nav -p5 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
- back to nav -p6 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
- back to nav +p1 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+p2 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+ back to nav +p3 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+ back to nav +p4 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+ back to nav +p5 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+ back to nav +p6 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+ back to nav + +Scroll the Document to one of the following paragraphs:
- -Or, try it with hashchange support
-Toggle scrolling speed for the p1 link
- - +View GitHub Repo
+Try it with jQuery BBQ hashchange support or native hashchange support (IE9+)
+Scroll the Document to one of the following paragraphs:
+Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -
-Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. -
-Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -
-Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. -
-YOU FOUND ME! Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -
-Toggle scrolling speed for the p1 link
+ +Scrollable div
+Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. +
+Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +
+Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. +
+Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +
+YOU FOUND ME! Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. +
+Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +
+Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. +
+Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. -
-Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -
-Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. -
+p1 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+p2 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+p3 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+p4 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+p5 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+p6 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+p1 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
-p2 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
-p3 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
-p4 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
-p5 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
-p6 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
- -