SlideShare a Scribd company logo
1 of 75
Download to read offline
Do your best to make
your webpage accessible
Boštjan Kovač - @boshtian
THANKS!
@drupaldevdays #drupaldevdays
ABOUT THE SPEAKER
● Boštjan Kovač
● Technical director @
● @boshtian on drupal.org, Twitter …
@drupaldevdays #drupaldevdays
● Working on couple of projects where
accessibility was a demand
● Went on Eric Eggert’s session in Drupal
Camp Vienna in 2015
● Really figured out how ignorant I was
● I don’t want to be ignorant
INSPIRATION AND MOTIVATION
@drupaldevdays #drupaldevdays
TODAY WEBPAGES ARE
@drupaldevdays #drupaldevdays
AWESOME UI
@drupaldevdays #drupaldevdays
BEAUTIFUL DESIGN
@drupaldevdays #drupaldevdays
LIGHTNING SPEED
@drupaldevdays #drupaldevdays
WHAT ABOUT ACCESSIBILITY?
@drupaldevdays #drupaldevdays
SO, CAN YOU DO IT?
@drupaldevdays #drupaldevdays
@drupaldevdays #drupaldevdays
FACTS
@drupaldevdays #drupaldevdays
15%
of the world's population (>1 billion of people), have some form of disability.
– WHO, November 2016
110 - 190
million adults have significant difficulties in functioning.
– WHO, November 2016
8%
of men have some form of color blindness.
– NEI (National eye institute), February 2015
● Broken arm
● Lost eyeglasses
● Looking a video in a noisy room
SITUATIONAL DISABILITIES
@drupaldevdays #drupaldevdays
@drupaldevdays #drupaldevdays
● Responsive webpages for mobile devices
● Multi-lingual webpages
● Google is the biggest blind user of the
web
THIS IS ALSO ACCESSIBILITY
@drupaldevdays #drupaldevdays
● Zoom
● Screen readers
● Browser configuration
● Captions
● Braile keyboard
● Mouth mouse
ASSISTIVE TECHNOLOGY
@drupaldevdays #drupaldevdays
“The power of the Web is in its universality.
Access by everyone regardless of disability is an
essential aspect.”
- Tim Berners-Lee, W3C Director and inventor of the World Wide Web
@drupaldevdays #drupaldevdays
● Designing for web accessibility
● Creating content for web accessibility
● Developing for web accessibility
HOW TO START?
@drupaldevdays #drupaldevdays
● Guidelines for creating accessible
webpages
● Developed by WAI under W3C
● Three levels of conformance:
○ Level A
○ Level AA
○ Level AAA
WCAG
@drupaldevdays #drupaldevdays
● Level A
○ Provide text alternatives for non-text content
○ Provide a ‘Skip to Content’ link
○ Accessible by keyboard only (unplug mouse)
○ Logical order
○ Don’t trap keyboard users
○ Helpful and clear page title
○ Every link’s purpose is clear from its context
WCAG 2.0
@drupaldevdays #drupaldevdays
● Level AA
○ Contrast ratio between text and background is
at least 4.5:1 (talk with the designers)
○ Text can be resized to 200% without loss of
content or function
○ Keyboard focus is visible and clear
○ Don’t use images of text
○ Use menus consistently
WCAG 2.0
@drupaldevdays #drupaldevdays
● Level AAA
○ Contrast ratio between text and background is
at least 7:1 (again, for designers)
○ Offer users a range of presentation options
○ Don’t interrupt users
○ Don’t change elements until users ask
○ Provide a text alternative to videos
WCAG 2.0
@drupaldevdays #drupaldevdays
● Public Working Draft
(comment by 31 March 2017)
● Attention being given to three areas
○ Small-screen and touch mobile devices
○ Users with low vision
○ Users with cognitive or learning disabilities
WCAG 2.1
@drupaldevdays #drupaldevdays
● 3 Succes Criterias formally accepted
● 25 other Success Criterias suggestions
● https://www.w3.org/TR/WCAG21/
WHAT’S NEW IN WCAG 2.1
@drupaldevdays #drupaldevdays
SIMPLE EXAMPLES I LIKE TO SHOW
@drupaldevdays #drupaldevdays
SCREEN READER EXAMPLES
@drupaldevdays #drupaldevdays
<button><i class="fa fa-pencil fa-2x"></i></button>
<button><i class="fa fa-remove fa-2x"></i></button>
<button title="Edit"><i class="fa fa-pencil fa-2x"></i></button>
<button title="Remove"><i class="fa fa-remove fa-2x"></i></button>
SCREEN READER EXAMPLES
@drupaldevdays #drupaldevdays
<button title="Edit"><i class="fa fa-pencil-broken fa-2x"></i></button>
<button title="Delete"><i class="fa fa-delete-broken fa-2x"></i></button>
SCREEN READER EXAMPLES
@drupaldevdays #drupaldevdays
<button title="Edit"><i class="fa fa-pencil fa-2x"></i> Edit</button>
<button title="Edit"><i class="fa fa-pencil-broken fa-2x"></i> Edit</button>
SCREEN READER EXAMPLES
@drupaldevdays #drupaldevdays
<img src="images/marvin.jpg" alt="Marvin the robot">
<a href="print.html">
<img src="images/printer.png" alt="Print document">
</a>
Informative images
<img src="images/agiledrop.png" alt="Agiledrop logo"></a>
Images of text
Functional images
DRUPAL & ACCESSIBILITY
@drupaldevdays #drupaldevdays
● HTML5 tags <article>, <section>,
<header>, <aside>, <mark> and <nav>
● WAI-ARIA markup out of the box
○ <role=”main”> for main content
○ <role=”complementary”> for sidebars
HTML5 & IMPROVED SEMANTIC
@drupaldevdays #drupaldevdays
● ARIA properties:
aria-required="true", aria-live, aria-label,
aria-labelledby, aria-describedby
● ARIA states:
aria-disabled="true", aria-checked,
aria-invalid
HTML5 & IMPROVED SEMANTIC
@drupaldevdays #drupaldevdays
REMEMBER!
Google likes semantic markup.
HTML5 & Improved Semantics
@drupaldevdays #drupaldevdays
● This is more for designers
● Drupal core developers do care
COLOR CONTRAST
@drupaldevdays #drupaldevdays
● Alternative text (alt) required by default
● User image also has alt text required
IMAGES
@drupaldevdays #drupaldevdays
● Drupal.announce() is now part of core
● Drupal.tabbingManager is also in core
● Fieldsets for radios and checkboxes in
Form API
Other things that improve accessibility
@drupaldevdays #drupaldevdays
● jQuery UI used for autocomplete and
dialogs
● Inline Form Errors added in core as an
experimental module
Other things that improve accessibility
@drupaldevdays #drupaldevdays
MOST COMMON MISTAKES DEVELOPERS MAKE
@drupaldevdays #drupaldevdays
MARKUP
@drupaldevdays #drupaldevdays
<header id="header" class="header" role="banner" aria-label="{{ 'Site header'|t }}">
<div class="section layout-container clearfix">
{{ page.secondary_menu }}
{{ page.header }}
{{ page.primary_menu }}
</div>
</header>
Bartik theme (page.html.twig)
MARKUP
@drupaldevdays #drupaldevdays
<header role="banner">
{{ page.header }}
</header>
Classy theme (page.html.twig)
REMEMBER THEM?
@drupaldevdays #drupaldevdays
MARKUP
@drupaldevdays #drupaldevdays
<div class="main-header">
<div class="col-sm-12 clearfix">
{{ page.header }}
</div>
</div>
Ignorant theme
MARKUP
@drupaldevdays #drupaldevdays
{% if page.sidebar_first %}
<div id="sidebar-first" class="column sidebar">
<aside class="section" role="complementary">
{{ page.sidebar_first }}
</aside>
</div>
{% endif %}
Bartik theme (page.html.twig)
MARKUP
@drupaldevdays #drupaldevdays
{% if page.sidebar_first %}
<aside class="layout-sidebar-first" role="complementary">
{{ page.sidebar_first }}
</aside>
{% endif %}
Classy theme (page.html.twig)
MARKUP
@drupaldevdays #drupaldevdays
{% if page.sidebar_first %}
<div class="sidebar-first">
{{ page.sidebar_first }}
</div>
{% endif %}
Ignorant theme
SKIP LINK
@drupaldevdays #drupaldevdays
<a href="#main-content" class="visually-hidden focusable">
{{ 'Skip to main content'|t }}
</a>
Don’t remove this (html.html.twig)
<a id="main-content" tabindex="-1"></a>
And this (page.html.twig)
IMAGES
@drupaldevdays #drupaldevdays
<img class="special-class" src={{ file_url(node.field_test_image.entity.fileuri) }}>
Writing own markup for fields
● So many better ways of doing this
● Create your own twig file, preprocess ...
FORMS
● Form API will do most of the work for you
so use it!
● Use #title property on every element
● Use #title_display if you want to hide it
from display
● #description property is also highly
advisable
@drupaldevdays #drupaldevdays
FORMS
● Use fieldsets to group elements which
belong together logically
○ Radio buttons, Checkboxes, Date elements
● Giving initial focus fo input field is almost
always a bad thing to do
@drupaldevdays #drupaldevdays
AJAX
● Dynamic changes on the page are tricky
for screenreaders
● Also scrolling can add additional content
● Use Drupal.announce() in Drupal 8
@drupaldevdays #drupaldevdays
Drupal.announce()
@drupaldevdays #drupaldevdays
$('#search-list')
.on('itemInsert', function (event, data) {
// Insert the new items.
$(data.container.el).append(data.items.el);
// Announce the change to the page contents.
Drupal.announce(Drupal.t('@count items added to @container',
{'@count': data.items.length, '@container': data.container.title}
));
});
Example from announce.js
CSS
● Help yourself
● Example: use role attributes for styling
@drupaldevdays #drupaldevdays
[role*=banner] a {
border-bottom: none;
}
Bartik theme
CSS
@drupaldevdays #drupaldevdays
[role*=complementary] h2 {
font-size: 2rem;
color: #3b3b3b;
border-bottom: 1px solid #d6d6d6;
}
H2 in sidebar
CSS
@drupaldevdays #drupaldevdays
[role*=main] p {
color: #3b3b3b;
}
Paragraph in main content
DRUPAL CONTRIB MODULES
@drupaldevdays #drupaldevdays
BLOCK ARIA LANDMARK ROLES
● Drupal 7 & Drupal 8
● Extra block setting to add ARIA role
@drupaldevdays #drupaldevdays
<div id="block-tags" class="..."
role="contentinfo">
...
</div>
SWITCHTHEME
● Only Drupal 7
● New block available to switch theme
● Custom links by using url parameter
@drupaldevdays #drupaldevdays
<a href="http://d7.dev/?theme=garland" … >
Switch to Garland theme
</a>
HIGH CONTRAST
● Drupal 7 & Drupal 8
● New block available to switch color scheme
● Toggle high contrast after skip link (D7 only)
@drupaldevdays #drupaldevdays
HIGH CONTRAST
@drupaldevdays #drupaldevdays
ACCESSIBLE FORMS
● Only drupal 7 (Drupal 8 actually has most of
this out of the box)
● It adds:
○ required attribute to required fields
○ required label to required fields (instead of asterix
*)
○ aria-invalid to form fields with errors
@drupaldevdays #drupaldevdays
OTHER TOOLS TO HELP YOU OUT
@drupaldevdays #drupaldevdays
BROWSER EXTENSIONS
● Accessibility Developer Tools (Chrome)
@drupaldevdays #drupaldevdays
BROWSER EXTENSIONS
● Siteimprove Accessibility Checker (Chrome)
@drupaldevdays #drupaldevdays
BROWSER EXTENSIONS
● WAVE Accessibility Extension
(Chrome & Firefox)
● aXe (Chrome)
● WCAG Contrast checker (Firefox) or Color
Contrast Analyzer (Chrome)
● Web Accessibility Toolbar for IE
@drupaldevdays #drupaldevdays
WEB-BASED TOOLS
● https://achecker.ca/checker/
● http://www.508checker.com/
● http://www.cynthiasays.com/
● http://ffoodd.github.io/a11y.css/
@drupaldevdays #drupaldevdays
BOOK(S)
● https://www.wuhcag.com/wcag/
@drupaldevdays #drupaldevdays
RESOURCES
● How people with disabilities use web:
○ https://www.w3.org/WAI/intro/people-use-web
● Tips for getting started:
○ https://www.w3.org/WAI/gettingstarted/tips/
● Tutorials for different elements:
○ https://www.w3.org/WAI/tutorials/
● Before and after demo:
○ https://www.w3.org/WAI/demos/bad/
@drupaldevdays #drupaldevdays
ACCESSIBILITY IS NOT AN AFTERTHOUGHT
@drupaldevdays #drupaldevdays
MAKES YOUR WEBSITE EASIER TO UNDERSTAND
(to people and to search engines)
@drupaldevdays #drupaldevdays
ACCESSIBILITY IS AN OPPORTUNITY
@drupaldevdays #drupaldevdays
THANK YOU
@drupaldevdays #drupaldevdays
BOŠTJAN KOVAČ
@boshtian / bostjan.kovac@agiledrop.com
THANKS!
@drupaldevdays #drupaldevdays

More Related Content

Similar to Do your best to make your webpage accessible

Drupal south 2014 - bootstrap vs foundation deathmatch - v.1.1
Drupal south 2014 - bootstrap vs foundation deathmatch - v.1.1Drupal south 2014 - bootstrap vs foundation deathmatch - v.1.1
Drupal south 2014 - bootstrap vs foundation deathmatch - v.1.1Vladimir Roudakov
 
Web Accessibility in Drupal 8
Web Accessibility in Drupal 8Web Accessibility in Drupal 8
Web Accessibility in Drupal 8AGILEDROP
 
DrupalCon Austin 2014 Review
DrupalCon Austin 2014 ReviewDrupalCon Austin 2014 Review
DrupalCon Austin 2014 ReviewDaniel Stout
 
Drupal migrations in 2018 - presentation at DrupalCon in Nashville
Drupal migrations in 2018 - presentation at DrupalCon in NashvilleDrupal migrations in 2018 - presentation at DrupalCon in Nashville
Drupal migrations in 2018 - presentation at DrupalCon in NashvilleIrina Zaks
 
Drupal Association Q3 Supporter Update
Drupal Association Q3 Supporter UpdateDrupal Association Q3 Supporter Update
Drupal Association Q3 Supporter UpdateDocker, Inc
 
[HKDUG] #20151017 - BarCamp 2015 - Drupal 8 is Coming! Are You Ready?
[HKDUG] #20151017 - BarCamp 2015 - Drupal 8 is Coming! Are You Ready?[HKDUG] #20151017 - BarCamp 2015 - Drupal 8 is Coming! Are You Ready?
[HKDUG] #20151017 - BarCamp 2015 - Drupal 8 is Coming! Are You Ready?Wong Hoi Sing Edison
 
Spark: Authoring Experience++ in Drupal 7, 8, and Beyond
Spark: Authoring Experience++ in Drupal 7, 8, and BeyondSpark: Authoring Experience++ in Drupal 7, 8, and Beyond
Spark: Authoring Experience++ in Drupal 7, 8, and BeyondAngela Byron
 
[Srijan Wednesday Webinars] Breaking Limitations using Drupal 8
[Srijan Wednesday Webinars] Breaking Limitations using Drupal 8[Srijan Wednesday Webinars] Breaking Limitations using Drupal 8
[Srijan Wednesday Webinars] Breaking Limitations using Drupal 8Srijan Technologies
 
Responsive testing in Drupal - Drupal Developer Days
Responsive testing in Drupal - Drupal Developer DaysResponsive testing in Drupal - Drupal Developer Days
Responsive testing in Drupal - Drupal Developer DaysLa Drupalera
 
Starting a Drupal 8 Project? Let’s do a Technical Discovery - DrupalConAsia 2...
Starting a Drupal 8 Project? Let’s do a Technical Discovery - DrupalConAsia 2...Starting a Drupal 8 Project? Let’s do a Technical Discovery - DrupalConAsia 2...
Starting a Drupal 8 Project? Let’s do a Technical Discovery - DrupalConAsia 2...Ravindra Singh
 
Decoupled drupal DcRuhr
Decoupled drupal DcRuhrDecoupled drupal DcRuhr
Decoupled drupal DcRuhrAhmad Hassan
 
Advantages of using drupal 8
Advantages of using drupal 8Advantages of using drupal 8
Advantages of using drupal 8NeilWilson2015
 
Backend accessible
Backend accessibleBackend accessible
Backend accessibleMark Casias
 
Drupal7 Theming session on the occassion of Drupal7 release party in Delhi NCR
Drupal7 Theming session on the occassion of  Drupal7 release party in Delhi NCRDrupal7 Theming session on the occassion of  Drupal7 release party in Delhi NCR
Drupal7 Theming session on the occassion of Drupal7 release party in Delhi NCRGaurav Mishra
 
Drupal content editing ux
Drupal content editing uxDrupal content editing ux
Drupal content editing uxSergei Sorokin
 
Backing yourself into an Accessible Corner
Backing yourself into an Accessible CornerBacking yourself into an Accessible Corner
Backing yourself into an Accessible CornerMark Casias
 

Similar to Do your best to make your webpage accessible (20)

Drupal south 2014 - bootstrap vs foundation deathmatch - v.1.1
Drupal south 2014 - bootstrap vs foundation deathmatch - v.1.1Drupal south 2014 - bootstrap vs foundation deathmatch - v.1.1
Drupal south 2014 - bootstrap vs foundation deathmatch - v.1.1
 
Web Accessibility in Drupal 8
Web Accessibility in Drupal 8Web Accessibility in Drupal 8
Web Accessibility in Drupal 8
 
DrupalCon Austin 2014 Review
DrupalCon Austin 2014 ReviewDrupalCon Austin 2014 Review
DrupalCon Austin 2014 Review
 
Drupal migrations in 2018 - presentation at DrupalCon in Nashville
Drupal migrations in 2018 - presentation at DrupalCon in NashvilleDrupal migrations in 2018 - presentation at DrupalCon in Nashville
Drupal migrations in 2018 - presentation at DrupalCon in Nashville
 
Drupal Association Q3 Supporter Update
Drupal Association Q3 Supporter UpdateDrupal Association Q3 Supporter Update
Drupal Association Q3 Supporter Update
 
[HKDUG] #20151017 - BarCamp 2015 - Drupal 8 is Coming! Are You Ready?
[HKDUG] #20151017 - BarCamp 2015 - Drupal 8 is Coming! Are You Ready?[HKDUG] #20151017 - BarCamp 2015 - Drupal 8 is Coming! Are You Ready?
[HKDUG] #20151017 - BarCamp 2015 - Drupal 8 is Coming! Are You Ready?
 
Spark: Authoring Experience++ in Drupal 7, 8, and Beyond
Spark: Authoring Experience++ in Drupal 7, 8, and BeyondSpark: Authoring Experience++ in Drupal 7, 8, and Beyond
Spark: Authoring Experience++ in Drupal 7, 8, and Beyond
 
[Srijan Wednesday Webinars] Breaking Limitations using Drupal 8
[Srijan Wednesday Webinars] Breaking Limitations using Drupal 8[Srijan Wednesday Webinars] Breaking Limitations using Drupal 8
[Srijan Wednesday Webinars] Breaking Limitations using Drupal 8
 
Responsive testing in Drupal - Drupal Developer Days
Responsive testing in Drupal - Drupal Developer DaysResponsive testing in Drupal - Drupal Developer Days
Responsive testing in Drupal - Drupal Developer Days
 
Starting a Drupal 8 Project? Let’s do a Technical Discovery - DrupalConAsia 2...
Starting a Drupal 8 Project? Let’s do a Technical Discovery - DrupalConAsia 2...Starting a Drupal 8 Project? Let’s do a Technical Discovery - DrupalConAsia 2...
Starting a Drupal 8 Project? Let’s do a Technical Discovery - DrupalConAsia 2...
 
Decoupled drupal DcRuhr
Decoupled drupal DcRuhrDecoupled drupal DcRuhr
Decoupled drupal DcRuhr
 
Advantages of using drupal 8
Advantages of using drupal 8Advantages of using drupal 8
Advantages of using drupal 8
 
Backend accessible
Backend accessibleBackend accessible
Backend accessible
 
Drupal7 Theming session on the occassion of Drupal7 release party in Delhi NCR
Drupal7 Theming session on the occassion of  Drupal7 release party in Delhi NCRDrupal7 Theming session on the occassion of  Drupal7 release party in Delhi NCR
Drupal7 Theming session on the occassion of Drupal7 release party in Delhi NCR
 
Drupal content editing ux
Drupal content editing uxDrupal content editing ux
Drupal content editing ux
 
Forensic Theming - DrupalCon London
Forensic Theming - DrupalCon LondonForensic Theming - DrupalCon London
Forensic Theming - DrupalCon London
 
Drupal
DrupalDrupal
Drupal
 
Backing yourself into an Accessible Corner
Backing yourself into an Accessible CornerBacking yourself into an Accessible Corner
Backing yourself into an Accessible Corner
 
Our encounter with d8
Our encounter with d8Our encounter with d8
Our encounter with d8
 
Drupal Flyover, CMS Expo
Drupal Flyover, CMS ExpoDrupal Flyover, CMS Expo
Drupal Flyover, CMS Expo
 

Recently uploaded

GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark WebGDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark WebJames Anderson
 
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts serviceChennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts servicevipmodelshub1
 
How is AI changing journalism? (v. April 2024)
How is AI changing journalism? (v. April 2024)How is AI changing journalism? (v. April 2024)
How is AI changing journalism? (v. April 2024)Damian Radcliffe
 
VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130  Available With RoomVIP Kolkata Call Girl Dum Dum 👉 8250192130  Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Roomdivyansh0kumar0
 
VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...
VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...
VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...aditipandeya
 
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779Best VIP Call Girls Noida Sector 75 Call Me: 8448380779
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779Delhi Call girls
 
Low Rate Call Girls Kolkata Avani 🤌 8250192130 🚀 Vip Call Girls Kolkata
Low Rate Call Girls Kolkata Avani 🤌  8250192130 🚀 Vip Call Girls KolkataLow Rate Call Girls Kolkata Avani 🤌  8250192130 🚀 Vip Call Girls Kolkata
Low Rate Call Girls Kolkata Avani 🤌 8250192130 🚀 Vip Call Girls Kolkataanamikaraghav4
 
VIP Kolkata Call Girl Salt Lake 👉 8250192130 Available With Room
VIP Kolkata Call Girl Salt Lake 👉 8250192130  Available With RoomVIP Kolkata Call Girl Salt Lake 👉 8250192130  Available With Room
VIP Kolkata Call Girl Salt Lake 👉 8250192130 Available With Roomishabajaj13
 
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts serviceChennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts servicesonalikaur4
 
VIP Kolkata Call Girls Salt Lake 8250192130 Available With Room
VIP Kolkata Call Girls Salt Lake 8250192130 Available With RoomVIP Kolkata Call Girls Salt Lake 8250192130 Available With Room
VIP Kolkata Call Girls Salt Lake 8250192130 Available With Roomgirls4nights
 
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...Diya Sharma
 
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...SofiyaSharma5
 
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
AlbaniaDreamin24 - How to easily use an API with Flows
AlbaniaDreamin24 - How to easily use an API with FlowsAlbaniaDreamin24 - How to easily use an API with Flows
AlbaniaDreamin24 - How to easily use an API with FlowsThierry TROUIN ☁
 
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort ServiceEnjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort ServiceDelhi Call girls
 
On Starlink, presented by Geoff Huston at NZNOG 2024
On Starlink, presented by Geoff Huston at NZNOG 2024On Starlink, presented by Geoff Huston at NZNOG 2024
On Starlink, presented by Geoff Huston at NZNOG 2024APNIC
 
Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝soniya singh
 

Recently uploaded (20)

GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark WebGDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
 
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts serviceChennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts service
 
How is AI changing journalism? (v. April 2024)
How is AI changing journalism? (v. April 2024)How is AI changing journalism? (v. April 2024)
How is AI changing journalism? (v. April 2024)
 
VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130  Available With RoomVIP Kolkata Call Girl Dum Dum 👉 8250192130  Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Room
 
VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...
VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...
VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...
 
Call Girls In South Ex 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SERVICE
Call Girls In South Ex 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SERVICECall Girls In South Ex 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SERVICE
Call Girls In South Ex 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SERVICE
 
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779Best VIP Call Girls Noida Sector 75 Call Me: 8448380779
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779
 
Model Call Girl in Jamuna Vihar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in  Jamuna Vihar Delhi reach out to us at 🔝9953056974🔝Model Call Girl in  Jamuna Vihar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Jamuna Vihar Delhi reach out to us at 🔝9953056974🔝
 
Low Rate Call Girls Kolkata Avani 🤌 8250192130 🚀 Vip Call Girls Kolkata
Low Rate Call Girls Kolkata Avani 🤌  8250192130 🚀 Vip Call Girls KolkataLow Rate Call Girls Kolkata Avani 🤌  8250192130 🚀 Vip Call Girls Kolkata
Low Rate Call Girls Kolkata Avani 🤌 8250192130 🚀 Vip Call Girls Kolkata
 
VIP Kolkata Call Girl Salt Lake 👉 8250192130 Available With Room
VIP Kolkata Call Girl Salt Lake 👉 8250192130  Available With RoomVIP Kolkata Call Girl Salt Lake 👉 8250192130  Available With Room
VIP Kolkata Call Girl Salt Lake 👉 8250192130 Available With Room
 
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts serviceChennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts service
 
VIP Kolkata Call Girls Salt Lake 8250192130 Available With Room
VIP Kolkata Call Girls Salt Lake 8250192130 Available With RoomVIP Kolkata Call Girls Salt Lake 8250192130 Available With Room
VIP Kolkata Call Girls Salt Lake 8250192130 Available With Room
 
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
 
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
 
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
 
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
 
AlbaniaDreamin24 - How to easily use an API with Flows
AlbaniaDreamin24 - How to easily use an API with FlowsAlbaniaDreamin24 - How to easily use an API with Flows
AlbaniaDreamin24 - How to easily use an API with Flows
 
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort ServiceEnjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
 
On Starlink, presented by Geoff Huston at NZNOG 2024
On Starlink, presented by Geoff Huston at NZNOG 2024On Starlink, presented by Geoff Huston at NZNOG 2024
On Starlink, presented by Geoff Huston at NZNOG 2024
 
Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝
 

Do your best to make your webpage accessible